text:
import socket
import struct
import numpy as np
import string
import json
import requests
import time

from .version import __version__

ConnectionError = requests.ConnectionError

# --------------------------------------------
# HTTP API
# --------------------------------------------

def instrument_status(host):
    status = requests.get('http://{}/api/instruments'.format(host)).json()
    return status

def upload_instrument(host, filename, run=False):
    with open(filename, 'rb') as fileobj:
        url = 'http://{}/api/instruments/upload'.format(host)
        r = requests.post(url, files={filename: fileobj})
    if run:
        name = get_name_version(filename)
        r = requests.get('http://{}/api/instruments/run/{}'.format(host, name))

def run_instrument(host, name=None, restart=False):
    instrument_running = False
    instrument_in_store = False
    status = instrument_status(host)
    instruments = status['instruments']
    live_instrument = status['live_instrument']

    if (name is None) or (live_instrument == name): # Instrument already running
        name = live_instrument
        instrument_running = True

    if not instrument_running: # Find the instrument in the local store:
        if name in instruments:
            instrument_in_store = True
        else:
            raise ValueError('Did not found instrument {}'.format(name))

    if instrument_in_store or (instrument_running and restart):
        r = requests.get('http://{}/api/instruments/run/{}'.format(host, name))

def connect(host, *args, **kwargs):
    run_instrument(host, *args, **kwargs)
    client = KoheronClient(host)
    return client

def load_instrument(host, instrument='blink', always_restart=False):
    print('Warning: load_instrument() is deprecated, use connect() instead')
    run_instrument(host, instrument, restart=always_restart)
    client = KoheronClient(host)
    return client

# --------------------------------------------
# Command decorator
# --------------------------------------------

def command(classname=None, funcname=None):
    def real_command(func):
        def wrapper(self, *args):
            device_name = classname or self.__class__.__name__
            cmd_name = funcname or func.__name__
            device_id, cmd_id, cmd_args = self.client.get_ids(device_name, cmd_name)
            self.client.send_command(device_id, cmd_id, cmd_args, *args)
            self.client.last_device_called = device_name
            self.client.last_cmd_called = cmd_name
            return func(self, *args)
        return wrapper
    return real_command

# --------------------------------------------
# Helper functions
# --------------------------------------------

def make_command(*args):
    buff = bytearray()
    append(buff, 0, 4)        # RESERVED
    append(buff, args[0], 2)  # driver_id
    append(buff, args[1], 2)  # op_id
    # Payload
    if len(args[2:]) > 0:
        buff += build_payload(args[2], args[3:])
    else:
        append(buff, 0, 8)
    return buff

def append(buff, value, size):
    if size <= 4:
        for i in reversed(range(size)):
            buff.append((value >> (8 * i)) & 0xff)
    elif size == 8:
        append(buff, value >> 32, 4)
        append(buff, value, 4)

def append_vector(buff, array, array_params):
    if cpp_to_np_types[array_params['T']] != array.dtype:
        raise TypeError('Invalid array type. Expected {} but received {}.'
                        .format(cpp_to_np_types[array_params['T']], array.dtype))

    arr_bytes = bytearray(array)
    append(buff, len(arr_bytes), 4)
    buff += arr_bytes

def append_array(buff, array, array_params):
    if int(array_params['N']) != len(array):
        raise ValueError('Invalid array length. Expected {} but received {}.'
                         .format(array_params['N'], len(array)))

    if cpp_to_np_types[array_params['T']] != array.dtype:
        raise TypeError('Invalid array type. Expected {} but received {}.'
                        .format(cpp_to_np_types[array_params['T']], array.dtype))

    buff += bytearray(array)

# http://stackoverflow.com/questions/14431170/get-the-bits-of-a-float-in-python
def float_to_bits(f):
    return struct.unpack('>l', struct.pack('>f', f))[0]

def double_to_bits(d):
    return struct.unpack('>q', struct.pack('>d', d))[0]

def build_payload(cmd_args, args):
    payload = bytearray()

    if len(cmd_args) != len(args):
        raise ValueError('Invalid number of arguments. Expected {} but received {}.'
                         .format(len(cmd_args), len(args)))

    if len(cmd_args) == 0:
        return payload

    for i, arg in enumerate(cmd_args):
        if arg['type'] in ['uint8_t','int8_t']:
            append(payload, args[i], 1)
        elif arg['type'] in ['uint16_t','int16_t']:
            append(payload, args[i], 2)
        elif arg['type'] in ['uint32_t','int32_t']:
            append(payload, args[i], 4)
        elif arg['type'] in ['uint64_t','int64_t']:
            append(payload, args[i], 8)
        elif arg['type'] == 'float':
            append(payload, float_to_bits(args[i]), 4)
        elif arg['type'] == 'double':
            append(payload, double_to_bits(args[i]), 8)
        elif arg['type'] == 'bool':
            if args[i]:
                append(payload, 1, 1)
            else:
                append(payload, 0, 1)
        elif is_std_array(arg['type']):
            append_array(payload, args[i], get_std_array_params(arg['type']))
        elif is_std_vector(arg['type']):
            append_vector(payload, args[i], get_std_vector_params(arg['type']))
        elif is_std_string(arg['type']):
            append(payload, len(args[i]), 4)
            payload.extend(args[i].encode())
        else:
            raise ValueError('Unsupported type "' + arg['type'] + '"')

    return payload

def is_std_array(_type):
    base_type = _type.split('<')[0].strip()
    return (base_type == 'std::array') or (base_type == 'const std::array')

def is_std_vector(_type):
    base_type = _type.split('<')[0].strip()
    return (base_type == 'std::vector') or (base_type == 'const std::vector')

def is_std_string(_type):
    base_type = _type.split('&')[0].strip()
    return (base_type == 'std::string') or (base_type == 'const std::string')

def is_std_tuple(_type):
    return _type.split('<')[0].strip() == 'std::tuple'

def get_std_array_params(_type):
    templates = _type.split('<')[1].split('>')[0].split(',')
    return {
      'T': templates[0].strip(),
      'N': templates[1].split('u')[0].strip()
    }

def get_std_vector_params(_type):
    return {'T': _type.split('<')[1].split('>')[0].split(',')[0].strip()}

cpp_to_np_types = {
  'bool': 'bool',
  'uint8_t': 'uint8', 'int8_t': 'int8',
  'uint16_t': 'uint16', 'int16_t': 'int16',
  'uint32_t': 'uint32', 'unsigned int': 'uint32',
  'int32_t': 'int32', 'int': 'int32',
  'uint64_t': 'uint64', 'int64_t': 'int64',
  'float': 'float32',
  'double': 'float64'
}

# --------------------------------------------
# KoheronClient
# --------------------------------------------

class KoheronClient:
    def __init__(self, host='', port=36000, unixsock=''):
        ''' Initialize connection with koheron-server

        Args:
            host: A string with the IP address
            port: Port of the TCP connection (must be an integer)
        '''
        if type(host) != str:
            raise TypeError('IP address must be a string')

        if type(port) != int:
            raise TypeError('Port number must be an integer')

        self.host = host
        self.port = port
        self.unixsock = unixsock
        self.is_connected = False

        if host != '':
            try:
                self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

                # Prevent delayed ACK on Ubuntu
                self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 16384)
                so_rcvbuf = self.sock.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)

                #   Disable Nagle algorithm for real-time response:
                self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
                tcp_nodelay = self.sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY)
                assert tcp_nodelay == 1

                # Connect to Kserver
                self.sock.connect((host, port))
                self.is_connected = True
            except BaseException as e:
                raise ConnectionError('Failed to connect to {}:{} : {}'.format(host, port, e))
        elif unixsock != '':
            try:
                self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
                self.sock.connect(unixsock)
                self.is_connected = True
            except BaseException as e:
                raise ConnectionError('Failed to connect to unix socket address ' + unixsock)
        else:
            raise ValueError('Unknown socket type')

        if self.is_connected:
            self.check_version()
            self.load_devices()

    def check_version(self):
        try:
            self.send_command(1, 0)
        except:
            raise ConnectionError('Failed to retrieve the server version')
        server_version = self.recv_string(check_type=False)
        server_version_ = server_version.split('.')
        client_version_ = __version__.split('.')
        if  (client_version_[0] != server_version_[0]) or (client_version_[1] < server_version_[1]):
            print('Warning: your client version {} is incompatible with the server version {}'
                   .format(__version__, server_version))
            print('Upgrade your client with "pip install --upgrade koheron"')

    def load_devices(self):
        try:
            self.send_command(1, 1)
        except:
            raise ConnectionError('Failed to send initialization command')

        self.commands = self.recv_json(check_type=False)
        # pprint.pprint(self.commands)
        self.devices_idx = {}
        self.cmds_idx_list = [None]*(2 + len(self.commands))
        self.cmds_args_list = [None]*(2 + len(self.commands))
        self.cmds_ret_types_list = [None]*(2 + len(self.commands))

        for device in self.commands:
            self.devices_idx[device['class']] = device['id']
            cmds_idx = {}
            cmds_args = {}
            cmds_ret_type = {}
            for cmd in device['functions']:
                cmds_idx[cmd['name']] = cmd['id']
                cmds_args[cmd['name']] = cmd['args']
                cmds_ret_type[cmd['name']] = cmd.get('ret_type', None)
            self.cmds_idx_list[device['id']] = cmds_idx
            self.cmds_args_list[device['id']] = cmds_args
            self.cmds_ret_types_list[device['id']] = cmds_ret_type

    def get_ids(self, device_name, command_name):
        device_id = self.devices_idx[device_name]
        cmd_id = self.cmds_idx_list[device_id][command_name]
        cmd_args = self.cmds_args_list[device_id][command_name]
        return device_id, cmd_id, cmd_args

    def check_ret_type(self, expected_types):
        device_id = self.devices_idx[self.last_device_called]
        ret_type = self.cmds_ret_types_list[device_id][self.last_cmd_called]
        ret_type = ret_type.split('&')[0].strip()
        if ret_type not in expected_types:
            raise TypeError('{}::{} returns a {}.'.format(self.last_device_called, self.last_cmd_called, ret_type))

    def check_ret_array(self, dtype, arr_len):
        device_id = self.devices_idx[self.last_device_called]
        ret_type = self.cmds_ret_types_list[device_id][self.last_cmd_called]
        if not is_std_array(ret_type):
            raise TypeError('Expect call to recv_array [{}::{} returns a {}].'.format(self.last_device_called, self.last_cmd_called, ret_type))
        params = get_std_array_params(ret_type)
        if dtype != cpp_to_np_types[params['T']]:
            raise TypeError('{}::{} expects elements of type {}.'.format(self.last_device_called, self.last_cmd_called, params['T']))
        if arr_len != int(params['N']):
            raise ValueError('{}::{} expects {} elements.'.format(self.last_device_called, self.last_cmd_called, params['N']))

    def check_ret_vector(self, dtype):
        device_id = self.devices_idx[self.last_device_called]
        ret_type = self.cmds_ret_types_list[device_id][self.last_cmd_called]
        if not is_std_vector(ret_type):
            raise TypeError('Expect call to recv_vector [{}::{} returns a {}].'.format(self.last_device_called, self.last_cmd_called, ret_type))
        vect_type = get_std_vector_params(ret_type)['T']
        if dtype != cpp_to_np_types[vect_type]:
            raise TypeError('{}::{} expects elements of type {}.'.format(self.last_device_called, self.last_cmd_called, vect_type))

    # TODO add types check
    def check_ret_tuple(self):
        device_id = self.devices_idx[self.last_device_called]
        ret_type = self.cmds_ret_types_list[device_id][self.last_cmd_called]
        if not is_std_tuple(ret_type):
            raise TypeError('{}::{} returns a {} not a std::tuple.'.format(self.last_device_called, self.last_cmd_called, ret_type))

    # -------------------------------------------------------
    # Send/Receive
    # -------------------------------------------------------

    def send_command(self, device_id, cmd_id, cmd_args=[], *args):
        cmd = make_command(device_id, cmd_id, cmd_args, *args)
        if self.sock.send(cmd) == 0:
            raise ConnectionError('send_command: Socket connection broken')

    def recv_all(self, n_bytes):
        '''Receive exactly n_bytes bytes.'''
        data = []
        BUFF_SIZE = 65535
        n_rcv = 0
        while n_rcv < n_bytes:
            try:
                chunk = self.sock.recv(min(n_bytes - n_rcv, BUFF_SIZE))
                if chunk == '':
                    break
                n_rcv += len(chunk)
                data.append(chunk)
            except:
                raise ConnectionError('recv_all: Socket connection broken.')
        return b''.join(data)

    def recv_dynamic_payload(self):
        reserved, class_id, func_id, length = struct.unpack('>IHHI', self.recv_all(struct.calcsize('>IHHI')))
        assert reserved == 0
        return self.recv_all(length)

    def recv(self, fmt='I'):
        fmt_ = '>IHH' + fmt
        t = struct.unpack(fmt_, self.recv_all(struct.calcsize(fmt_)))[3:]
        if len(t) == 1:
            return t[0]
        else:
            return t

    def recv_uint32(self):
        self.check_ret_type(['uint32_t', 'unsigned int'])
        return self.recv()

    def recv_uint64(self):
        self.check_ret_type(['uint64_t', 'unsigned long'])
        return self.recv(fmt='Q')

    def recv_int32(self):
        self.check_ret_type(['int32_t', 'int'])
        return self.recv(fmt='i')

    def recv_float(self):
        self.check_ret_type(['float'])
        return self.recv(fmt='f')

    def recv_double(self):
        self.check_ret_type(['double'])
        return self.recv(fmt='d')

    def recv_bool(self):
        self.check_ret_type(['bool'])
        return self.recv(fmt='?')

    def recv_string(self, check_type=True):
        if check_type:
            self.check_ret_type(['const std::string', 'std::string', 'const char *', 'const char*'])
        return self.recv_dynamic_payload().decode('utf8')

    def recv_json(self, check_type=True):
        if check_type:
            self.check_ret_type(['const std::string', 'std::string', 'const char *', 'const char*'])
        return json.loads(self.recv_string(check_type=False))

    def recv_vector(self, dtype='uint32', check_type=True):
        '''Receive a numpy array with unknown length.'''
        if check_type:
            self.check_ret_vector(dtype)
        dtype = np.dtype(dtype)
        buff = self.recv_dynamic_payload()
        return np.frombuffer(buff, dtype=dtype.newbyteorder('<'))

    def recv_array(self, shape, dtype='uint32', check_type=True):
        '''Receive a numpy array with known shape.'''
        arr_len = int(np.prod(shape))
        if check_type:
            self.check_ret_array(dtype, arr_len)
        dtype = np.dtype(dtype)
        self.recv(fmt='')
        buff = self.recv_all(dtype.itemsize * arr_len)
        return np.frombuffer(buff, dtype=dtype.newbyteorder('<')).reshape(shape)

    def recv_tuple(self, fmt, check_type=True):
        if check_type:
            self.check_ret_tuple()
        return tuple(self.recv(fmt))

    def __del__(self):
        if hasattr(self, 'sock'):
            self.sock.close()

redpajama_set_name: RedPajamaGithub


text:
namespace TrueSnow.Services.Data
{
    using System.Linq;

    using TrueSnow.Data.Common;
    using TrueSnow.Data.Models;
    using TrueSnow.Services.Data.Contracts;

    public class LikesService : ILikesService
    {
        private readonly IDbRepository<Like> likes;

        public LikesService(IDbRepository<Like> likes)
        {
            this.likes = likes;
        }

        public void Add(Like likeToAdd)
        {
            this.likes.Add(likeToAdd);
            this.likes.Save();
        }

        public void Remove(Like likeToRemove)
        {
            this.likes.Delete(likeToRemove);
            this.likes.Save();
        }

        public IQueryable<Like> GetByPostId(int id)
        {
            return this.likes
                .All()
                .Where(l => l.PostId == id && !l.IsDeleted);
        }

        public Like GetByUserAndPostId(string userId, int postId)
        {
            return this.GetByPostId(postId)
                .FirstOrDefault(l => l.CreatorId == userId);
        }
    }
}


text:
CA Supreme Ct.
IN RE: Johnny LIRA on Habeas Corpus.
Supreme Court of California.
No. S204582.
Decided: February 03, 2014
Steve M. Defilippis, under appointment by the Supreme Court, for Petitioner Johnny Lira. Edmund G. Brown, Jr., and Kamala D. Harris, Attorneys General, Dane R. Gillette, Chief Assistant Attorney General, Susan Duncan Lee, Acting State Solicitor General, Donald E. de Nicola, Deputy State Solicitor General, Julie L. Garland and Jennifer A. Neill, Assistant Attorneys General, Anya M. Binsacca, Jessica N. Blonen, Phillip J. Lindsay and Brian C. Kinney, Deputy Attorneys General, for Respondent The People.
A life inmate is found suitable for parole and given a parole date by the Board of Parole Hearings (the Board). The Governor reverses the grant of parole, the inmate challenges the reversal by petition for writ of habeas corpus, and while the petition is pending the Board again finds the inmate suitable and sets another parole date. The Governor does not review the second decision, and the inmate is released from prison, subject to a maximum five-year parole term under the applicable statute. If the court subsequently grants relief on the inmate's habeas corpus petition and overturns the Governor's earlier reversal for want of supporting evidence, is the inmate entitled to credit against his parole term for the time he spent in prison between the erroneous reversal and his eventual release? We conclude he is not.
I. FACTUAL AND PROCEDURAL BACKGROUND
Because the circumstances of the underlying offense are not relevant to the issue before us, we summarize them only briefly. Lira was convicted of second degree murder for the 1980 shooting death of his estranged wife. He was sentenced in 1981 to an indeterminate term of 15 years to life in prison, consecutive to a two-year firearm use enhancement, and was subject to a parole term not to exceed five years upon his release. (Pen.Code, former §§ 3000, subd. (b), 3001, subd. (b); Stats.1978, ch. 582, §§ 1, 2, pp.2003, 2004.1 )
In December 2005, the Board denied Lira parole for the ninth time, a denial Lira successfully challenged by filing a petition for writ of habeas corpus in superior court. The superior court, in an order affirmed on appeal, ordered a new parole hearing, which the Board conducted in November 2008. At the new hearing the Board found Lira suitable for parole, a decision then-Governor Schwarzenegger reversed in April 2009. Lira challenged the Governor's reversal by filing a second habeas corpus petition in superior court. While that petition was pending, at a regularly scheduled parole hearing on November 3, 2009, the Board again found Lira suitable for parole, a decision the Governor declined to review. Lira was paroled on April 8, 2010.
Lira then filed a supplemental habeas corpus petition, arguing that his release did not moot the pending petition challenging the Governor's reversal of the Board's 2008 finding of suitability, and seeking credit against his parole term for all the time he spent in prison after the Board's deficient 2005 unsuitability finding. The superior court granted relief, finding the Board and the Governor had each acted unlawfully in denying Lira parole and ordering that he receive credit against his parole term for the period spanning the date on which a favorable 2005 parole decision by the Board would have been effective to the date of Lira's actual release from prison. The Attorney General, on behalf of respondent, appealed.
The Court of Appeal rejected Lira's argument that he was entitled to credit for the entire period he spent in prison following the Board's deficient 2005 suitability finding, but affirmed the superior court's conclusion that the Governor's reversal of the Board's 2008 parole grant was not supported by "some evidence" as required by law. (See In re Lawrence (2008) 44 Cal.4th 1181, 1220–1221, 82 Cal.Rptr.3d 169, 190 P.3d 535; In re Rosenkrantz (2002) 29 Cal.4th 616, 677, 128 Cal.Rptr.2d 104, 59 P.3d 174.) The court modified the order granting relief to provide credit only for the yearlong period between the Governor's 2009 reversal and Lira's actual 2010 release on parole.
We granted the Attorney General's petition for review, which raised only the credit issue.2
No statute governing sentence credit specifically authorizes credit against a parole term under the present set of facts, but Lira argues sections 2900 and 2900.5 together provide the foundation for his claim. Section 2900, subdivision (c), provides that all time served in custody is to be credited as service of the term of imprisonment, which in turn is defined in section 2900.5, subdivision (c), to include any period of imprisonment and parole. Lira argues his confinement beyond the date on which the Board's suitability decision would have become effective, but for the Governor's reversal, was unlawful and, as such, should be credited not against his term of imprisonment but against his term of parole.3
The Attorney General contends there was nothing unlawful about Lira's confinement, and that all of the time he spent in custody was properly credited to his life term of imprisonment. The Attorney General argues, as well, that recognition of a credit against Lira's parole period would conflict with former section 3001, subdivision (b), which she contends should be read as providing that the period of parole begins only after release from prison and not on some theoretical retrospective date, such as the date the Board's decision would have taken effect.
We first summarize the statutes that are most relevant to the issues presented in this case.
Sections 3000 and 3001, in the Penal Code chapter entitled "Length of Term of Imprisonment and Paroles," set forth the general requirement of a period of parole and its length, respectively. At the time of Lira's crime and thus as applicable here, section 3000 provided in pertinent part: "The Legislature finds and declares that the period immediately following incarceration is critical to successful reintegration of the offender into society and to positive citizenship. It is in the interest of public safety for the state to provide for the supervision of and surveillance of parolees and to provide educational, vocational, family and personal counseling necessary to assist parolees in the transition between imprisonment and discharge. A sentence pursuant to Section 1168 [providing for indeterminate sentencing] ․ shall include a period of parole, unless waived, as provided in this section."4 Subdivision (b) of the statute provided for a maximum parole period of five years for an inmate, like Lira, who was imprisoned for second degree murder committed before 1983. (Stats.1978, ch. 582, § 1, p.2003.)
Section 3001, subdivision (b), at the time of Lira's crime and as relevant here, provided: "Notwithstanding any other provision of law, when any person referred to in subdivision (b) of Section 3000 has been released on parole from the state prison, and has been on parole continuously for three years since release from confinement, the board shall, within 30 days, discharge such person from parole, unless the board, for good cause, determines that such person will be retained on parole." (Stats.1978, ch. 582, § 2, p.2004.) Thus, although the maximum period of parole under the version of section 3000 applicable here is five years, a parolee will be discharged after service of three years' continuous parole unless the Board makes the requisite good-cause finding.5 (See Cal.Code Regs., tit. 15, § 2535 et seq. [timing of and criteria to be employed in Board's parole discharge review]; see generally In re Carr (1995) 38 Cal.App.4th 209, 45 Cal.Rptr.2d 34.)
Sections 2900 and 2900.5, comprising part of article 1, "Commencement of Term," in the chapter entitled "Execution of Sentences of Imprisonment," require that time served in custody be credited against the sentence fixed by the judgment in a criminal action. Subdivision (c) of section 2900 states that, with exceptions not relevant here, "all time served in an institution designated by the Director of Corrections shall be credited as service of the term of imprisonment." Section 2900.5, subdivision (a), provides in relevant part: "In all felony ․ convictions, ․ when the defendant has been in custody, including, but not limited to, any time spent in a ․ prison ․, all days of custody of the defendant ․ shall be credited upon his or her term of imprisonment․" Subdivision (c) of section 2900.5 in turn provides: "For the purposes of this section, 'term of imprisonment' includes any period of imprisonment imposed as a condition of probation or otherwise ordered by a court in imposing or suspending the imposition of any sentence, and also includes any term of imprisonment, including any period of imprisonment prior to release on parole and any period of imprisonment and parole, prior to discharge․"
Lira contends the Court of Appeal correctly concluded that his term of imprisonment properly ended on the date when he would have been released pursuant to the Board's 2009 parole grant but for the Governor's unsupported reversal, that the days he spent in custody between that date and the date of his eventual release constituted unlawful imprisonment, and that this period of assertedly unlawful imprisonment must be credited against his parole term under sections 2900 and 2900.5. In support, he cites In re Bush (2008) 161 Cal.App.4th 133, 74 Cal.Rptr.3d 256 (Bush ), but that case does not assist him.
In Bush, a life prisoner claimed he was entitled to have his parole period reduced by time he spent in custody in excess of the base term ultimately set by the Board. In rejecting the claim, the court observed that the California Code of Regulations provides that a prisoner who has served more time in custody than the base term is entitled to immediate release, but is silent regarding any credit against the inmate's parole term. (Bush, supra, 161 Cal.App.4th at p. 142, 74 Cal.Rptr.3d 256, citing Cal.Code Regs., tit. 15, § 2289.) Contrary to the prisoner's argument, the court held that California Code of Regulations, title 15, section 2345, providing that " '[i]f any custody credit remains after deducting it from the offense to which it applies, the remaining credit shall be deducted from the parole period,' " did not dictate recognition of such credit in the case of a life prisoner. That section, the court reasoned, applies to determinate-term prisoners whose presentence custody credit exceeds the sentence imposed, and results not only in the prisoners' not having to serve any prison time but in reduction of the parole period. (Bush, supra, at p. 143, 74 Cal.Rptr.3d 256.) For life prisoners, the court noted, preprison credits are taken into account when the Board sets the base term, being applied to the base term itself to reduce its length. (Ibid., citing Cal.Code Regs., tit. 15, § 2289.)
The Bush court further rejected the prisoner's contention that section 2900.5, subdivision (c)'s definition of "term of imprisonment," relating to the term against which custody must be credited, should be understood as limited to the base term ultimately set by the Board. The court construed section 2900.5, subdivision (c) to mean " 'any period of imprisonment lawfully served,' " including the time a prisoner "lawfully spends in prison custody awaiting a determination of suitability for parole, a construction of the statute that is consistent with the statutory scheme and promotes public policy." (Bush, supra, 161 Cal.App.4th at p. 143, 74 Cal.Rptr.3d 256.) True, as Lira argues, the superior court in Bush had ordered that the prisoner receive credit against his parole period for time spent in prison custody after the last date he could have been lawfully held (the date his suitability determination became final), a four-month period attributable to the Governor's belated and ineffective request for en banc review of the Board's suitability determination. (Id. at pp. 139, 143, fn. 4, 74 Cal.Rptr.3d 256.) But because the Attorney General did not challenge that order, the Court of Appeal had no occasion to address its propriety; Bush therefore is not authority for the proposition that a parolee is entitled to credit against his or her parole term for excess time in custody.
Lira nevertheless focuses on the Bush court's reference to the time a prisoner lawfully spends in prison custody as being credited against the prisoner's term of imprisonment, inferring that time unlawfully spent in custody must be credited against the parole period. He contends the period at issue in the present case was time unlawfully spent in custody because a court later determined the Governor's reversal was unsupported.
Lira's argument overlooks the significance of the Governor's independent constitutional authority to review parole suitability determinations. (Cal. Const., art. V, § 8, subd. (b); see § 3041.2.) "The Governor has the authority to weigh suitability factors differently from the Board: 'Although "the Governor's decision must be based upon the same factors that restrict the Board in rendering its parole decision" [citation], the Governor undertakes an independent, de novo review of the inmate's suitability for parole. [Citation.] Accordingly, the Governor has discretion to be "more stringent or cautious" in determining whether a defendant poses an unreasonable risk to public safety.' [Citation.]" (In re Prather (2010) 50 Cal.4th 238, 257, 112 Cal.Rptr.3d 291, 234 P.3d 541, fn. 12 (Prather ).) The Governor's suitability review process takes time and, like other official duties, is presumed to be correctly carried out unless the contrary is established in appropriate proceedings. (Evid.Code, § 664.) The normal functioning of the Board's periodic parole hearing process likewise takes time. Moreover, even when a court determines that a gubernatorial reversal of a parole decision is unsupported, the remedy is not an order for the inmate's immediate release; rather, the court vacates the Governor's reversal, reinstates the Board's grant of parole, and directs the Board to conduct its usual proceedings for a release on parole. This allows the Board to account for any recent developments reflecting on the inmate's suitability for parole, and to rescind its grant if appropriate. (In re Twinn (2010) 190 Cal.App.4th 447, 473–474, 118 Cal.Rptr.3d 399; cf. Prather, supra, at p. 258, 112 Cal.Rptr.3d 291, 234 P.3d 541.) There is, thus, little room for Lira to argue that the Governor's reversal, later judicially determined to be unsupported, somehow retroactively rendered unlawful the period of his continued incarceration during the pendency of these processes.
We therefore agree with the Attorney General that Lira was lawfully imprisoned during this period until the day he was released, and that he received credit against his term of life imprisonment for all such days and is not entitled to any credit against his parole term.
Lira relies on certain decisions in which courts ordered that credits be applied to shorten the inmate's parole term. Those cases are distinguishable as involving ministerial application of various types of sentence credits earned by determinate-term prisoners, not discretionary decisions by the executive branch regarding parole of life prisoners. (E.g., In re Randolph (1989) 215 Cal.App.3d 790, 795, 263 Cal.Rptr. 768 [credits for time out-to-court]; In re Anderson (1982) 136 Cal.App.3d 472, 476, 186 Cal.Rptr. 269 [presentence custody and conduct credits]; In re Ballard (1981) 115 Cal.App.3d 647, 650, 171 Cal.Rptr. 459 [same]; In re Carter (1988) 199 Cal.App.3d 271, 273, 244 Cal.Rptr. 648 [worktime credits]; In re Reina (1985) 171 Cal.App.3d 638, 642, 217 Cal.Rptr. 535 [day-for-day custody credits] .) The considerations informing the sentence credit decisions Lira cites are inapplicable here. For the reasons previously discussed (see ante, at pp. 7–8, 217 Cal.Rptr. 535), Lira's reliance on Bush, supra, 161 Cal.App.4th at page 143, footnote 4, 74 Cal.Rptr.3d 256, is likewise misplaced.
Lira's effort to shorten his parole term based on the asserted unlawfulness of the portion of his term of imprisonment that followed the Governor's 2009 reversal also runs afoul of the rule that a parole term begins only after release from prison. In In re Chaudhary (2009) 172 Cal.App.4th 32, 90 Cal.Rptr.3d 678, a life prisoner sentenced after 1983 was subject under section 3000.1 to a lifetime parole term, with eligibility for discharge " 'when [he] has been released on parole from the state prison, and has been on parole continuously for ․ five years ․ since release from confinement․' " (In re Chaudhary, supra, at p. 37, 90 Cal.Rptr.3d 678, quoting § 3000.1, subd. (b).) As in this case, the prisoner's release was delayed while the Governor's reversal of the parole grant was being litigated; the reversal was eventually set aside on appeal, leading to the prisoner's release on parole. The prisoner claimed credit against his parole term for the period between when his parole grant would have taken effect and his actual release date. The Court of Appeal rejected the claim, noting that "[s]ection 3000.1's five-year parole discharge eligibility requirement is expressly limited to the period of time after the parolee 'has been released on parole' and requires that the parolee serve five continuous years on parole 'since [the parolee's] release from confinement.' " (In re Chaudhary, supra, at p. 37, 90 Cal.Rptr.3d 678.) The court added: "By placing these explicit limitations on the parole discharge eligibility requirement, the Legislature made unmistakably clear that a parolee must first have 'been released on parole' and must then complete five continuous years on parole after the parolee's 'release from confinement.' This intent explicitly precludes the application of any time spent in custody prior to release to satisfy any part of section 3000.1's five-year parole discharge eligibility requirement." (Ibid.; see also In re Gomez (2010) 190 Cal.App.4th 1291, 1310, 118 Cal.Rptr.3d 900.)
Although this case does not involve section 3000.1's five-year minimum parole discharge eligibility requirement in the context of a potential lifetime parole period, the language of the portion of former section 3001, subdivision (b) pertinent to this case is similar, and the Chaudhary court's analysis is therefore relevant and persuasive. In our view, Lira's argument (that a court's subsequent decision that the Governor's reversal was unsupported by some evidence rendered unlawful his custody during the intervening period, retroactively necessitating a credit against his parole term) would undermine the Legislature's intent in requiring the service of three continuous years of parole after release from confinement and therefore must be rejected. (Former § 3001, subd. (b).)
Lira also overlooks the significant separation of powers issues the rule he asks us to adopt would raise. " 'The separation of powers principle is embodied in the California Constitution, which provides as follows in article III, section 3: "The powers of state government are legislative, executive, and judicial. Persons charged with the exercise of one power may not exercise either of the others except as permitted by this Constitution." " 'The separation of powers doctrine limits the authority of one of the three branches of government to arrogate to itself the core functions of another branch. [Citations.]' [Citation.]" [Citation .] Although the doctrine is not intended to prohibit one branch from taking action that might affect those of another branch, the doctrine is violated when the actions of one branch "defeat or materially impair the inherent functions of another branch." [Citation.] [Citation.] Intrusions by the judiciary into the executive branch's realm of parole matters may violate the separation of powers.' " (Prather, supra, 50 Cal.4th at pp. 254–255, 112 Cal.Rptr.3d 291, 234 P.3d 541.)
As the applicable statutes make clear, whether a period of parole is to be required and, if so, its duration and conditions are matters for the Board. (§§ 3000, 3001, subd. (b); see also People v. McMillion (1992) 2 Cal.App.4th 1363, 1368–1369, 3 Cal.Rptr.2d 821.) The Legislature has decreed that "the period immediately following incarceration is critical to successful reintegration of the offender into society and to positive citizenship." (§ 3000, subd. (a)(1).) This remains true even when the Governor's reversal of a Board decision is unsupported and delays the prisoner's release from prison. Such circumstances, while unfortunate, do not diminish the Board's responsibility to decide, based on the factors it has identified as relevant, whether to retain a parolee on parole for as long as the law permits. (See Cal.Code Regs., tit. 15, § 2535, subd. (d) [retention criteria include nature of commitment offense, institutional adjustment, parole adjustment, whether the parolee has been returned to custody for controlled substance or psychiatric treatment, and special need for continued supervision for the safety of the parolee or the public].) A court's general authority, on habeas corpus, to craft a remedy " 'as the justice of the case may require' " (In re Crow (1971) 4 Cal.3d 613, 619, 94 Cal.Rptr. 254, 483 P.2d 1206, quoting § 1484) cannot license it to interfere with the Board's control over the length of a prisoner's parole term in the absence of specific statutory authorization not present here.
Lira contends he is entitled to the credit he seeks as a matter of fundamental fairness, founded in substantive due process. He points to language in In re Lawrence, supra, 44 Cal.4th 1181, 82 Cal.Rptr.3d 169, 190 P.3d 535, and In re Rosenkrantz, supra, 29 Cal.4th 616, 128 Cal.Rptr.2d 104, 59 P.3d 174, acknowledging that, in light of the constitutional liberty interest at stake, a court's review of parole suitability decisions encompasses more than "a purely procedural standard of review," and is "sufficiently robust to reveal and remedy any evident deprivation of constitutional rights." (In re Lawrence, supra, at p. 1211, 82 Cal.Rptr.3d 169, 190 P.3d 535, citing In re Rosenkrantz, supra, at p. 664, 128 Cal.Rptr.2d 104, 59 P.3d 174.) In that context, we held that, "when a court reviews a decision of the Board or the Governor, the relevant inquiry is whether some evidence supports the decision of the Board or the Governor that the inmate constitutes a current threat to public safety, and not merely whether some evidence confirms the existence of certain factual findings." (In re Lawrence, supra, at p. 1212, 82 Cal.Rptr.3d 169, 190 P.3d 535, italics omitted.) But nothing in our disavowal of a purely formal or procedural standard of review of executive parole suitability decisions can be extrapolated to the present context to support a remedy that would effectively impose judicial control over the length of a parole term based on a parolee's claim that a suitability decision later judicially determined to be unsupported somehow rendered his confinement retroactively unlawful.
As the Attorney General correctly observes, the United States Supreme Court's substantive due process jurisprudence "forbids the government to infringe certain 'fundamental' liberty interests at all, no matter what process is provided, unless the infringement is narrowly tailored to serve a compelling state interest." (Reno v. Flores (1993) 507 U.S. 292, 302, 113 S.Ct. 1439, 123 L.Ed.2d 1.) Substantive due process analysis begins with a " 'careful description' of the asserted fundamental liberty interest." (Washington v. Glucksberg (1997) 521 U.S. 702, 721, 117 S.Ct. 2258, 138 L.Ed.2d 772.) This "careful description" must be concrete and particularized, rather than abstract and general. (Dawn D. v. Superior Court (1998) 17 Cal.4th 932, 940, 72 Cal.Rptr.2d 871, 952 P.2d 1139.)
Lira fails to propose such a description of the interest he asserts here. A life prisoner " ' "has no 'vested right' to have his sentence fixed at the term first prescribed by the [parole authority] 'or any other period less than the maximum sentence provided by statute.' " ' " (In re Dannenberg (2005) 34 Cal.4th 1061, 1097, 23 Cal.Rptr.3d 417, 104 P.3d 783; see Swarthout v. Cooke (2011) 562 U.S. –––– [178 L.Ed.2d 732, 736, 131 S.Ct. 859, 862] [there is no right under the federal Const. to conditional release before the expiration of a valid sentence]; Greenholtz v. Nebraska Penal Inmates (1979) 442 U.S. 1, 7, 99 S.Ct. 2100, 60 L.Ed.2d 668.) While a life prisoner like Lira surely has a right to parole proceedings that comply with procedural due process, to a factually supported suitability decision, and to timely release from imprisonment upon a final determination of suitability, Lira fails to show he has a fundamental right to credit against a legislatively prescribed period of parole supervision as a judicial remedy for a temporary infringement of his right to a factually supported suitability decision by the executive branch. (Cf. § 3000.1, subd. (a)(1) [life parole period for persons convicted of first or second degree murder]; In re Chaudhary, supra, 172 Cal.App.4th at p. 38, 90 Cal.Rptr.3d 678 ["There is no way to apply 'credits' to a lifetime parole period."].)6
III. DISPOSITION
The judgment of the Court of Appeal is reversed, and the matter is remanded to that court with directions to order the superior court to vacate its judgment, discharge the order to show cause, and deny the petition for habeas corpus.
WERDEGAR, J.
WE CONCUR: CANTIL–SAKAUYE, C.J., BAXTER, CHIN, CORRIGAN, LIU, JJ.

redpajama_set_name: RedPajamaCommonCrawl


A good decal job can really make a model – and a bad decal job can – well it can make you want to file it in the wastebasket. Doing a good job in applying decals is something everyone can learn. Here are some tips I've picked up over the years.
I like to give the model (or at least the area where the decals are to be applied) a coat of Future Floor Polish. You can airbrush it on – or brush it on. When that's dry you apply the decals – when they are dry cover the decal with another coat of Future. You can also put the decals on when the Future is wet but placement is more difficult because the Future hampers your ability to slide the decal around. This technique will give you a decal finish that looks painted on. Use of Future is really helpful on dull surfaces as it will make the surface shiny. Placement of the decal on a shiny surface helps to prevent what's called silvering. Silvering has to do with the reflections of light at odd angles as you look at the decal. Silvering is not good – it really detracts from the scale appearance of the decal. You want it to look painted on just like the real thing.
After you put the decal on and before you paint over it with Future you want to be sure it snuggles down to the surface and the contours of the model. To you this I use two products from Microscale – Micro-set and Micro-sol.
Micro-set helps the decal to snuggle down to the surface – and Micro-sol actually slightly dissolves the decal and makes it look wrinkled. Not to worry – as the decal dries the wrinkles disappear and the decal will look much better. I really like these products and use them with almost all of my decals. Be careful tho – the bottles are really tippy – I've knocked them over more than once.
Another tip in applying decals is to use really warm water to dip the decal in. This loosens the decal quickly and also softens the decal so it will lay down onto the surface better.
On two occasions I've had decals that I had problems with. The first was the Tamiya 1/48 Spitfire Mk Vb. The wing roundels just wouldn't snuggle down properly – being the wild and crazy guy that I am I tried applying Tamiya liquid thin cement to the decals. I don't recommend this as it will really dissolve the decals quickly – but it did the trick for me. Check out the writeup on this model to see the pics. The other occasion was just recently on the Trumpeter 1/16 T-34/85 Russian tank. Some decals on the turret had some silvering problems that I couldn't get rid of. This was probably my own fault as I applied the decals to a pebbly flat turret surface in wet Future. I should have waited for it to dry so I could have a shiny surface for the decal to lay on. Well what's done is done – so I applied Tamiya liquid thin cement to the silvered areas and that got rid of the problem. You have to just dab the cement on – don't disturb the decal or you will really distort it as the cement will dissolve it quickly. And that's not a good thing.
If your decals are yellowed – you can remove some of the yellowing by putting the decal sheet in a zip lok bag and taping it to a window with a southern exposure. The sunlight will help to remove the yellowing. I had this problem with the Tamiya 1/12 Ferrari 312T race car. I ended up buying a new set of decals as I couldn't get the yellowing out – I guess they were too old. just one problem in buying an old kit.
1 – Microscale set before laying down the decals – the surface is Alclad covered by Future.
5 – paint thinner – this in conjunction with the above seemed to do it.


Fantasy Football Week Eight- Start 'em Up!!!
QB- Derek Carr, Oakland Raiders, at Cleveland Browns (Fanduel Price: $6600)- The rookie from the Raiders is having the typical up-and-down season you would expect from a first year player on a bad team, but he is only two weeks removed from his four touchdown showing against the Chargers. And while he had a poor showing last week against the Cardinals, he did manage to avoid any turnovers, and the Browns defense did give up over 20 points to the Jaguars last week. Carr could easily have 200 yards and two touchdowns. Put him in.
QB- Alex Smith, Kansas City Chiefs, vs. St. Louis Rams ($7200)- The Rams defense can't stop the quarterback right now, and while Smith is no Russell Wilson, but he's been very efficient this season, completing 64 percent of his passes this season, while having eight touchdowns against only one interception in his last four games. In Kansas City, expect Smith to come close to 300 yards, and at least two touchdowns as the Chiefs handily beat St. Louis.
RB- Shane Vereen, New England Patriots, vs. Chicago Bears ($6800)- With Steven Ridley out, Vereen wasted no time in taking hold of the extra carries with his 118 total yard, two touchdown performance against the Jets. While Bill Belichek tends to favor the Shanahan philosophy at running back (multiple backs getting carries and just when it looks like one is pulling ahead he goes in another direction), Vereen is the most talented option, with Jonas Grey, Brandon Bolden, and James White all looming. Grey was the only of the three to receive a carry in week seven, but against the Bears Vereen's pass-catching abilities with be heavily utilized, and its possible he duplicates last week's numbers.
RB- Ahmad Bradshaw, Indianapolis Colts, at Pittsburgh Steelers ($7000)- Bradshaw is on pace to break the running-back record for reception touchdowns in a season with six thus far, and the time-share between him and Trent Richardson has actually benefitted them both. While the Steelers defense isn't entirely a cake-walk, Bradshaw's versatility is going to be on display through the contest, and he should continue his march towards history, as he scores at least one time in Pittsburgh.
WR- Doug Baldwin, Seattle Seahawks, at Carolina Panthers ($6800)- I had Baldwin as a sleeper in the offseason, and while he hasn't justified it thus far, with Percy Harvin in New York he had a huge game last week, with seven catches for 123 yards and a touchdown. Now he faces one of the worst passing defenses in the league. He's shown flashes of potential over his career, despite his constant low placement on the depth chart. If he's available on the waiver wire pick him up, because it's finally his time to shine.
WR- Mike Evans, Tampa Bay Buccaneers, vs. Minnesota Vikings ($5900)- The rookie hasn't exactly had a banner year, but with Mike Glennon at the helm the Bucs offense has looked improved over the Josh McCown-era. Evans also has scored in his last two games, and the Vikings defense has been generous at times this season. It's an exploitable matchup for a great, low cost.
WR- Michael Floyd, Arizona Cardinals, vs. Philadelphia Eagles ($6500)- I traded for Michael Floyd in my keeper league a little while ago, and with Carson Palmer now healthy, I'm expecting big things. He has four games of over double-digit fantasy points as it is, and against the susceptible Eagles defense in the desert, expect at least five catches for 70+ yards, and his third straight game with a touchdown catch.
TE_ Jace Amaro, New York Jets, vs. Buffalo Bills ($5300)- Amaro is actually starting for me this week in my 14-team league, and the arrival of Percy Harvin could be a good thing for the entire Jets offense, with defenses turning their attention to stopping the speedster. Amaro could wind up taking advantage against a beatable Bills defense, as he has been a larger part of the offensive game plan even before the Harvin trade.
Helu hasn't exactly done much this season, and the Cowboys defense should continue its surprisingly strong play on Monday night, but Dallas' defense isn't unbreakable. Given that, his versatility could come into play with Colt McCoy expected to start and Alfred Morris nursing a minor injury from last week's game, with my expectation being that he breaks off a short pass for a 20-30 yard run in the first half. And Morris hasn't exactly impressed over the last few weeks anyway, so that will probably entice the change-of-pace Helu to be utilized that much more. As for Bryant, the fourth-round draft pick finally debuted against the Texans, and in limited action he caught a 35-yard touchdown pass in the Steelers victory. Indy is another defense that has played above expectations, but isn't exactly a behemoth. Expect another long strike, and with Markus Wheaton disappointing, it could be much more as Bryant looks to become the number two receiver for Ben Roethlisburger.


text:
class LiveEndpointsMixin:
    """
    For endpoints in */api/live/*
    """
    def bradaru_texts(self, room_id):
        """
        Returns a list of canned responses, e.g.:
        [
            {"text":"Bravo time will end in 30 seconds!","id":1},
            {"text":"How did you like the performance?","id":2}, ...
        ]

        :param room_id: numerical room_id (either as a str or an int)
        :return:
        """
        endpoint = "/api/live/bradaru_texts"
        results = self._api_get(endpoint, params={"room_id": room_id})
        return results.get('texts')

    def comment_log(self, room_id, is_delay=None):
        """
        Get a live room's comment log

        :param room_id:
        :param is_delay:
        :return: a list of comment dicts
        """
        endpoint = "/api/live/comment_log"
        # TODO: test whether is_delay is valid (should be an int, not sure otherwise)
        # default is {"comment_log":[]}, if this returns None there was an error
        results = self._api_get(endpoint, params={"room_id": room_id, "is_delay": is_delay})
        return results.get('comment_log')

    def onlives(self):
        endpoint = "/api/live/onlives"
        results = self._api_get(endpoint)
        # TODO: helper method to make this simpler to use?
        return results.get("onlives")

    def onlive_num(self):
        endpoint = "/api/live/onlive_num"
        results = self._api_get(endpoint)
        return results.get("num")

    def telop(self, room_id):
        """
        Get a live room's current telop

        :param room_id:
        :return: the telop as a string
        """
        endpoint = "/api/live/telop"
        results = self._api_get(endpoint, params={"room_id": room_id})
        return results.get('telop')

    def streaming_url(self, room_id):
        endpoint = "/api/live/streaming_url"
        results = self._api_get(endpoint, params={"room_id": room_id})
        return results.get('streaming_url_list')

    def current_user(self, room_id):
        endpoint = "/api/live/current_user"
        results = self._api_get(endpoint, params={"room_id": room_id})
        return results.get('streaming_url_list')

    def gift_list(self, room_id):
        endpoint = "/api/live/gift_list"
        results = self._api_get(endpoint, params={"room_id": room_id})
        # TODO: are there other names for the top field? e.g. performance_time, enquete_time
        return results.get("bravo_time")

    def gift_log(self, room_id):
        endpoint = "/api/live/gift_log"
        results = self._api_get(endpoint, params={"room_id": room_id})
        # TODO: are there other names for the top field? e.g. performance_time, enquete_time
        return results.get("gift_log")

    def summary_ranking(self, room_id):
        endpoint = "/api/live/summary_ranking"
        results = self._api_get(endpoint, params={"room_id": room_id})
        # TODO: are there other names for the top field? e.g. performance_time, enquete_time
        return results.get("ranking")

    def live_info(self, room_id):
        endpoint = "/api/live/live_info"
        results = self._api_get(endpoint, params={"room_id": room_id})
        # TODO: helper methods to get specific fields from this
        # TODO: document fields, e.g. what do the different values of live_status mean
        return results

    def stage_user_list(self, room_id):
        endpoint = "/api/live/stage_user_list"
        results = self._api_get(endpoint, params={"room_id": room_id})
        return results.get('stage_user_list')

    def stage_gift_list(self, room_id):
        endpoint = "/api/live/stage_gift_list"
        results = self._api_get(endpoint, params={"room_id": room_id})
        return results.get('stage_gift_list')

    def polling(self, room_id):
        endpoint = "/api/live/polling"
        results = self._api_get(endpoint, params={"room_id": room_id})
        return results.get('stage_gift_list')

    def enquete_result(self, room_id):
        endpoint = "/api/live/enquete_result"
        results = self._api_get(endpoint, params={"room_id": room_id})
        # TODO: make this human readable (need to find a recent poll)
        # {"l":[],"v":"v1","i":"https://image.showroom-live.com/showroom-prod/assets/img/gift"}
        return results

    def poll_result(self, room_id):
        return self.enquete_result(room_id)

    def upcoming(self, genre_id):
        # TODO: helper methods for getting specific genre
        endpoint = "/api/live/upcoming"
        results = self._api_get(endpoint, params={"genre_id": genre_id})
        return results.get('upcomings')

    def verify_age(self):
        # does this require auth?
        endpoint = "/api/live/age_verification"
        result = self._api_post(endpoint, data=dict(
            room_id=int,
            year=int,
            month=int,
            day=int,
            csrf_token=self._csrf_token
        ))
        return result

    def send_free_gift(self, gift_id, live_id, num, is_delay=None, latitude=None, longitude=None, radius=None):
        """
        Requires auth

        valid free gift_ids = 1, 2, 1001, 1002, 1003

        TODO: are there other valid gift ids? e.g. for amateur rooms?
        :return:
        """

        if int(gift_id) not in (1, 2, 1001, 1002, 1003):
            raise ValueError("Invalid Free Gift ID")
        if not (0 <= int(num) <= 10):
            raise ValueError("Invalid Free Gift Count")

        endpoint = "/api/live/gifting_free"
        result = self._api_post(endpoint, data=dict(
            gift_id=gift_id,
            live_id=live_id,
            num=num,
            is_delay=is_delay,
            lat=latitude,
            lon=longitude,
            rad=radius,
            csrf_token=self._csrf_token
        ))
        return result

    def send_paid_gift(self, gift_id, live_id, num, is_delay=None, latitude=None, longitude=None, radius=None):
        """
        Requires auth

        :return:
        """
        endpoint = "/api/live/gifting_point_use"
        result = self._api_post(endpoint, data=dict(
            gift_id=gift_id,
            live_id=live_id,
            num=num,  # TODO: bounds check
            is_delay=is_delay,
            lat=latitude,
            lon=longitude,
            rad=radius,
            csrf_token=self._csrf_token
        ))
        return result

    def send_comment(self, live_id, comment, is_delay=None, latitude=None, longitude=None, radius=None):
        """
        Requires auth

        :return:
        """
        endpoint = "/api/live/post_live_comment"

        result = self._api_post(endpoint, data=dict(
            live_id=live_id,
            comment=comment,  # TODO: character limit ?
            is_delay=is_delay,
            lat=latitude,
            lon=longitude,
            rad=radius,
            csrf_token=self._csrf_token
        ))
        return result


Lenovo hopes that its S860, S850 and S660 smartphones will appeal not only to business users, but the fashionable and those on a budget.
At Mobile World Congress 2014, hosted in Barcelona, mobile devices are being announced thick and fast.
Lenovo's new devices being showcased at the event include the next generation of smartphones within the S-series: the S860, S850 and S660.
The S860, encased within a metal exterior and sporting a 5.3-inch HD screen is aimed towards the business user. Lenovo says the phone has a standby time of up to 40 days, and talk time of up to 24 hours on a 3G connection. The S860 is based on quad-core processors and features 2GB of RAM.
Lenovo's S850 is focused less on productivity and more on design. Lenovo says that the thin and lightweight all-glass exterior of the phone -- available in white or pink -- will appeal to "fashion-conscious" users, and for selfie lovers, the smartphone has 13 MP rear and 5 MP front cameras. In addition, the S850 is powered by a MTK quad core processor and sports a 5-inch screen.
Finally, the 4.7-inch S660 is aimed towards those on a budget. A phone suitable for multitasking, the smartphone sports a metal casing, has a long battery life, reasonable price and the potential for up to 32GB expandable storage via microSD cards.
All of the smartphones come with dual-SIM capability.
"The new S860, S850 and S660 smartphones perfectly complement the full range of mobile devices available to consumers around the world, letting consumers easily pick the Lenovo smartphone that's right for them," said Liu Jun, executive vice president of Lenovo's Mobile Business Group. "Customers told us they wanted a great user experience without sacrificing performance, so we built these new smartphones for style, blazing fast processing speeds, and integrated Lenovo apps."
The Lenovo S860, S850 and S660 start at $349, $269 and $229 respectively, and will be available in online and from some retailers starting June 2014.


We published the following article on April 21, 2008 and find it worth a re-print.
Geico entered the Massachusetts auto insurance market in May of 2009. They spent over a billion dollars on advertising in 2015 and they are a marketing force.
However, almost seven years after their Massachusetts auto insurance market launch, this independent insurance agent's fear of the little green lizard is gone.
We compete against them and we've taken business from them.
Never in the history of the Massachusetts Professional, Independent Insurance Agent community, have five letters been so feared.
Not since my childhood Godzilla days, have I been so scared of a lizard.
Nationally they don't use Independent Agents, either.
They use call centers and service centers and they don't write home insurance.
When you work with an Independent, Professional Insurance Agent you are working with someone who who has your best interest in mind. You are working with someone who will shop your insurance with many different companies to get you the best rate. You are working with someone who is your advocate at claim time. Who, at GEICO, works as your advocate? Who, at GEICO, sells multi-lines of insurance and shops your insurances with many different companies?
Like the chilly winds of our Massachusetts' autums, it seems inevitable that GEICO is coming. When? I don't know. 2009? 2010 at the latest, is my guess.
For now, it is up to the Independent Insurance Agent, to get the best rates for our clients, to package policies and to round accounts. It is time to save our clients money. It is time to advise and to advocate. It is time to demonstrate our value.
With oil and natural gas prices heating up, we offer the following tips to save you money.
Check your heating system before you turn it on for the winter. Keeping your furnace clean, lubricated, and properly adjusted can save about 5 percent on your heating bill.
Consider replacing an old furnace. Today's furnaces are about 25 percent more efficient than they were in the 1980s.
Seal up the leaks. Sealing and insulating duct systems can cut heating costs by as much as 40 percent.
Add insulation to your home's attic. Even if your attic floor already has a couple of inches of insulation, another six inches can help.
Wrap an insulation blanket around your hot water pipes and tank. This is especially valuable for older water heaters and can save up to 10 percent on water-heating costs.
Don't use an open-hearth fireplace for heat. The heated air that's drawn from your home and up the chimney offsets almost all the warmth that a fire provides.
Keep your fireplace damper closed when you don't have a fire burning. This will prevent up to 8 percent of your furnace-heated air from going up the chimney home for free.
Turn down the thermostat a little. For every two degrees you lower the thermostat, you'll save about 4 percent on heating bills. Consider a programmable thermostat. One of these can help you cut heating costs as much as 20%.
Reduce hot water temperature. Save 7 to 11 percent of water-heating costs by keeping your water heater at the "normal" setting or 120º.
Shorten showers. Showers account for two-thirds of your water-heating costs, so even shaving off a few minutes can help.
There are two terrific endorsements that some insurance companies in Massachusetts offer: Disappearing Deductible and Accident Forgiveness.
Safety Insurance, for example, offers a nifty endorsement called the "Shield Plus" endorsement.
It's only available if you're a "99" or "98" driver (violation and accident free for at least 5 years) and costs $35 annually, per vehicle.
Often we recommend this endorsement. If you presently carry a $500 Collision deductible, you can typically save between $100 – $400 annually by carrying a $1,000 Collision deductible.
The Safety Shield Plus endorsement, with it's -$500 disappearing deductible feature, lowers the $1,000 deductible to $500.
Even better than the deductible is Accident Forgiveness.
If you have Accident Forgiveness, your insurance premium won't increase because of an at-fault accident. This will save you thousands of dollars over the term of the surcharge.
Give us a call or click to find out more.
Thank you for insuring with Johnson & Rohan Insurance.
Following please find some measures that can be taken to lessen the possibility of home insurance losses which will ensure greater insurability and more affordable premiums down the road.
Replace washing machine hoses when they show signs of deterioration. Consider replaceing them with stainless steel hoses. Hoses should not rub against the wall. In addition, turn off the washing machine water faucet when the appliance is not in use to help prevent leaks.
If you suffer a water leak, make sure it is properly repaired and promptly remediated. This will reduce the possibility of hazardous and expensive mold losses down the road. Mold or rot is typically excluded, or extremely limited on the standard home insurance policy.
Consider installing an automatic water shut-off system for your home. These systems have sensors that detect water leaks. Sensors send a wireless signal that interacets with the shut-off valve to turn off the water to the home.
Maintain your roof. A qualifty roof inspection on a periodic basis can identify sections that need repair or replacement which help prevent water losses.


Guitar Hero World Tour Microphone PS3 / Wii / Xbox 360-FREE SHIP DISPLAY/DEMO!!!
Guitar Hero Microphone E-UR20 - USB Wired - Red Octane - Tested And Works.
Guitar Hero Microphone RedOctane USB E-UR20 PS2 PS3 Wii U Xbox 360 - Free Ship!


Brand Custodian for Hero Motocorp Pleasure & Maestro and Godfrey Phillips India Was responsible for ideation and implementation of the launch campaign for Hero Maestro, Four Square Kings and 64 MM Cigarettes launch | Was involved in successfully mapping the future communication and business strategy for Hero Pleasure and Hero Maestro | Successfully coordinated and managed three films and photo shoots and various radio recording.
Worked on the Brand Hindustan Times Was involved in generation of ideas at the ground level, consumer interactive activity and rolling out of the final artworks for campaigns like NO TV DAY and Annual Leadership Summit.
Studied Effectiveness of Sales Promotion and analyzed Sales Satisfaction Index in Lucknow.
Assisted KDM meeting division team in conducting a successful 8th and 9th Non Resident India Day in New Delhi.


text:
Pritzker issues disaster proclamation for 9 Illinois counties; 250 more National Guard members activated
Published: Jun. 1, 2020 at 5:44 PM CDT
A disaster proclamation is issued for nine Illinois counties to give them access to state resources, personnel and equipment to keep people safe from looting and violence going on across the state.
Those counties are Champaign, Cook, DuPage, Kane, Kendall, Macon, Madison, Sangamon and Will.
In addition, 250 more Illinois National Guard members will be activated to give support to affected counties. Pritzker also ordered the Illinois State Police to provide an additional 300 troopers to municipalities.
"We have to take care of our communities and our people, and for that reason, we will continue to strategically deploy Illinois State Police and National Guard as work to protect Illinoisans and the First Amendment rights of peaceful protesters," said Governor Pritzker. "We can't allow those who have taken advantage of this moment to loot and smash to also steal the voices of those peacefully expressing a need for real, meaningful change. This anger doesn't come out of nowhere - it's born of decades and centuries of systemic racism and injustice. That's what all of us have to recognize and that's where our work begins."


text:
{% extends 'leprikon/default.html' %}
{% load i18n cms_tags leprikon_tags %}

{% block content %}

{% block title %}{% trans 'Summary' %}{% endblock %}

{% static_placeholder "summary" %}

{% trans 'Payments overview' %}

    {% if payment_status.overdue %}

    {% blocktrans with overdue=payment_status.overdue|currency %}You have overdue of {{ overdue }}.{% endblocktrans %}

    {% endif %}
    {% if payment_status.amount_due %}

    {% blocktrans with amount_due=payment_status.amount_due|currency %}Your current amount due is {{ amount_due }}.{% endblocktrans %}

    {% else %}
    {% trans 'All Your receivables have been paid.' %}
    {% endif %}
    {% if payment_status.overpaid %}
    {% blocktrans with overpaid=payment_status.overpaid|currency %}You have overpaid {{ overpaid }}.{% endblocktrans %}
    {% endif %}

{% if payment_status.overpaid %}

        {% trans 'Registration' %}
        {% trans 'Overpaid amount' %}
        {% trans 'Refund options' %}

    {% for registration in overpaid_registrations %}

            {{ registration.subject.subject_type.name | first_upper }}: {{ registration.subject.name }}

            {% if registration.subject.registration_type_participants %}
                {% if registration.all_participants|length > 1 %}{% trans 'Participants' %}{% else %}{% trans 'Participant' %}{% endif %}:
                {{ registration.all_participants|comma_separated }}

            {% elif registration.subject.registration_type_groups %}
                {% trans 'Contact person' %}: {{ registration.group.full_name }}
                {% if registration.group.name %}
{% trans 'Group name' %}: {{ registration.group.name }}{% endif %}
            {% endif %}

        {{ registration.payment_status.overpaid|currency }}

            {% if registration.refund_bank_account %}
                {% trans 'You have requested a refund to the bank account:' %}

                {{ registration.refund_bank_account }}

                    {% trans 'change account number' %}

                    {% trans 'cancel refund request' %}

            {% else %}

                    {% trans 'request refund to a bank account' %}

                    {% trans 'transfer to a payment' %}

                    {% trans 'donate' %}

            {% endif %}

    {% endfor %}

{% endif %}

{% trans 'New messages' %}

{% if new_messages.count %}
{% include 'leprikon/messages_table.html' with object_list=new_messages %}
{% else %}

{% trans 'You have no new messages.' %}

{% endif %}

{% endblock %}


Up until Bernanke opened his mouth the market was having a generally positive day. Despite the late sell off, markets were able to retain the bulk of yesterday's gains and sold off on modest (i.e. lighter) volume. The concern for tomorrow is whether the afternoon sell off follows through tomorrow morning.
The S&P is well positioned to push higher, assuming it can stay close to 1,290. However, additional selling that undercut Tuesday's low would favor a new test of the 200-day MA - and likely worse.
The Nasdaq held a former important support level at 2,670 and is close to a MACD trigger 'buy'.
While the Russell 2000 was pegged by 810 resistance, it was able to retain 20-day MA support.
The first 30 minutes of Thursday's trading will likely set the tone for the entire day. Any sell off will have to be quickly recovered as bulls don't have much room to work with; all it will take is one more >1% loss to have markets looking at breaks of 200-day MA support. However, if Wednesday's highs are broken it will confirm the June reaction low as a bottom and sets a retest of the late May reaction high as an upside target. In such a case, stops would be placed on a loss of the Wednesday low.
Dr. Declan Fallon is the Senior Market Technician and Community Director for Zignals.com. I offer a range of stock trading strategies for global markets which can be Previewed for Free with delayed trade signals. You can also view the top-10 best trading strategies for the US, UK, Europe and Rest-of-the-World in the Zignals Trading Strategy Leaderboard. The Leaderboard also supports advanced search capability so you can tailor your strategies to suit your individual requirements.
Zignals offers a full suite of FREE financial services including price and fundamental stock alerts, stock charts for Indian, Australian, Frankfurt, Euronext, UK, Ireland and Canadian stocks, tabbed stock quote watchlists, multi-currency portfolio manager, active stock screener with fundamental trading strategy support and trading system builder. Forex, precious metal and energy commodities too. Build your own trading system and sell your trading strategy in our MarketPlace to earn real cash.


We're happy that you have chosen our portal site to acquire a premium quality 7 Wonders Of The World comparison. With us you have the option to compare different versions of 7 Wonders Of The World, and finally to discover your desired product. |That is 7 Wonders Of The World, where you have the option to compare a number of products. It has become more challenging to discover a suitable item. } As it becomes increasingly more complex to filter out exactly the best 7 Wonders Of The World, we have created this portal. The sector of 7 Wonders Of The World is becoming bigger and bigger, and the number of producers is climbing steadily. We can recommend review reports from various regions to you. Trustedreviews.com we could recommend as a stage for actual reviews. Below we offer you a summary that can allow you to recognize the most important purchase criteria when it comes to the 7 Wonders Of The World buying. If you buy this product, our recommendation is: Learn about the products which are currently on the market to find your perfect product.
We have created a summary, for some purchase criteria to store them a bad buy. Products shouldn't just be priced and selected by price. Pay attention to some particulars of the goods. The following is a concise overview of the key factors to think about before purchasing a product. Even though the price plays an important role in product choice, other aspects must also be considered! By comparing the features of the various products, you will determine which article is appropriate for your purpose. User experience is among the criteria that must be considered before buying the product. These include the measurements of the product and the handling. Are function, characteristics, quality, price and design coherent, purchase. Thus, there is the possibility to recognize properties of the product which you didn't understand before. As soon as they have determined and they are really sure, then they can purchase the chosen product. A retailer would also be an alternative if the item is available there. For example, they would get faster delivery times without additional costs if they are a customer of Amazone-Prime.
Quality and workmanship: Read the 7 Wonders Of The World reviews of the product thoroughly, as it shows important details about the quality and workmanship of the goods. Also on the images you can already guess the caliber. Even on product photographs, the quality might often already be realized if they are not too heavily processed.
Field of application: Before buying the product, you must be aware of the particular field of application for which it ought to be utilized. You need to compare the various features of these products here in order to find precisely the item that satisfies your application.
Expertise of other clients: A very important criterion is also the expertise that other customers have made with the product. Reviews or product evaluations by consumers are suitable for this. Read them carefully and take note of positive and negative experiences. Are you still not sure which 7 Wonders Of The World you ought to purchase? Our recommendation is that you read and compare remarks and 7 Wonders Of The World reviews on various portals. There are still undiscovered advantages and disadvantages of a product that you may not have seen yet. You've already made an option and would like to purchase the item? Then our recommendation is to buy the product suburb from a specialist retailer to find an extensive appointment there. Otherwise, you might also buy the item online at Ebay or Amazon.
If you are not certain whether to purchase the item, do not hesitate to visit other product pages and read 7 Wonders Of The World reviews. It is necessary that you're satisfied with your selection and can be sure that you've made a good decision. If you've decided to purchase, the item can be purchased on popular platforms such as Amazon or Ebay, but obviously also on smaller specialist providers. Large platforms like Amazon often offer benefits to members, such as shorter delivery times or free delivery.
Buy 7 Wonders Of The World in the shop or online?
We allow you convenient purchasing from home. Many buyers accept the deal and order online. The reasons speak for themselves the price is inexpensive and you get your order the next day in the door. You are able to stay at home. Although there is no demand for information from the seller, the detailed product description and the 7 Wonders Of The World tests are sufficient.Often, online shops are more affordable, the assortment of merchandise is larger and the search effort is a lot lower than in stores. One disadvantage that's frequently discussed is the absence of advice. However, this can be paid by portals like this, or 7 Wonders Of The World review pages. However, one should be careful to be sufficiently informed and not just to utilize reviews of companies in their own products, since they are often glossed over. But you will not receive full advice from a vendor when purchasing online. That leaves you the chance to find out more about a portal site, for example here. Make sure you consume only real 7 Wonders Of The World test and reviews. Overall, we recommend the products which you find on our portal, because we filter out the top products. The product can be sent back to the vendor within the deadline, even if unsatisfied.
Please do not rely just on customer opinions, but also examine teviews for 7 Wonders Of The World. It provides you with a complete summary of the item and offers you a broad opinion based on the reviews and tests. Make sure the reviews of 7 Wonders Of The World are reliable! You will recognize this by how a review has self-shot images and is altogether realistic. trustedreviews.com or even bestproducts.com are recognized reviewing institutes and can provide significant support in buying decisions.
These tests are extremely serious and assist you in making a buy decision. Questions about handling and durability will be answered . Experience proves that no further questions remain open .
How good a product is regarding quality and features, consumer tests on 7 Wonders Of The World are extremely significant. The writers write about their experience in dealing with the goods. Because of this, it is hard to research everything. It is crucial to read not just exceptionally rated reviews but also those with a very low score, as these can provide information about any flaws in the item. Additionally, the number of reviews which were composed to your product should be considered. Thus, a product might easily get 100% satisfaction if it was rated by only two people. When available, you may even pay a visit to a professional from the city to ask him for the opinion. There they could also take the product in their hands and make their own opinion on 7 Wonders Of The World. When there's absolutely no shop, they should just follow our guidance. You are going to realize they will not regret the purchase. The claims can subsequently be satisfied if they look carefully at the 7 Wonders Of The World review. You always need to take a good look in the positive and the negative rating before purchasing. So you find the benefits and drawbacks of the goods. This makes the purchase decision easier for them. It is also crucial the number of individuals rated the product. Make sure you include numerous resources to receive all the views of users and buyers of the item. Thus, a product might be perfectly acceptable for you, which was rated by others rather negative.
Top 5 checklist: What to look for in 7 Wonders Of The World?
How do products differ in the affordable alternatives?
How do those who've bought and tried the item rate its own functions?
How does the product function in the review?
What extra services does the producer / vendor offer?
How long can you've got guarantee on the item?
All goods presented here are advocated. Here we show you bestsellers of the spouse store.Additionally, we reveal the bestsellers of the various shops. With this you make everything right with your merchandise purchase!
The question of what a excellent 7 Wonders Of The World may cost, is asked. We feel that the less costly it is, the better it's for your wallet. Often it is worthwhile to take a little more money into your hands and purchase something which gives you pleasure over many years, instead of one which is divided after half a year. Of course you need to be careful here, because not everything which is more expensive is better! You must always compare and attempt to determine how the higher 7 Wonders Of The World price justifies. Here it's worth to consult customer reviews or inspection reports to help.
Tips associated with this purchase of 7 Wonders Of The World are manifold. A technical device must do the job. The cost is immaterial. An inexpensive product has to fulfill its task as well as a costly one. The main reason behind the big 7 Wonders Of The World price difference is such as in the brand. In order to ascertain where the differences between the devices are, it might be well worth reading the judgment of other buyers. Look at other portal sites and compare the 7 Wonders Of The World purchase price or rating. Buyers also report encounters with defective goods. In such cases it is important to understand how the manufacturer functions. In the event you receive a guarantee, the item is going to be ruined or you are going to receive the cost back. As a buyer, you have rights and obligations. The 7 Wonders Of The World prices in online stores are extremely different, because big chains offer promotions. This way it's likely to pay less for a high excellent merchandise than is normal. An inexpensive product can be just like an expensive one. The contrast of 7 Wonders Of The World with different shops online is advisable or offline in shops.
If your ordered product doesn't suit your needs, then you certainly have the right to return in 14 days following receipt of the merchandise. With Amazon-prime they generally get the product delivered the very next day. There they save on transport expenses. Of course, that's a big advantage because naturally you want to maintain your new product in your hands as quickly as possible.
Ultimately , we can assure you once again that the purchase of 7 Wonders Of The World is definitely worthwhile for you! It is advantageous to look at the conclusions of other buyers. However, make up your own mind whether you're buying a product.


text:
1 Comment | share
Science of Climate Change Briefing – watch online
(l to r) Vice-Chancellor, Professor Sir Howard Newby, Lawrence McGinty (BSc Zoology 1969), Andrew Miller MP for Ellesmere Port and Neston, Professor Sir David King, Professor Matthew Baylis, Oxenhale Chair of Veterinary Epidemiology, Professor Ric Williams, Professor Jon Saunders, Deputy Vice-Chancellor, Professor Philip Woodworth, NOC and Visiting Professor at the University, Professor Andrew Wilmott, Director of Science and Technology, NOC, and presenting but not pictured, Professor Timothy Greenshaw, School of Physical Sciences
Staff are now able to watch the webcast of a high profile lecture which was given to a packed auditorium in the Sherrington Building.
Scientists from the University of Liverpool and the National Oceanography Centre (NOC) welcomed guest speakers, including Andrew Miller MP, Chair of the Science and Technology Select Committee, ITN's Health and Science Editor, Lawrence McGinty and Chancellor, Professor Sir David King, former Government Chief Scientific Officer, who joined them in delivering the Science of Climate Change Briefing.
The seven speakers' presentations, to local and regional decision makers, scientific peers, alumni, staff and students, highlighted the strength of research being carried out in this field. They were followed by questions from the audience which stimulated further debate that continued later amongst those attending a networking reception at the Victoria Gallery & Museum.
This briefing was a joint venture developed by the Research Centre for Marine Sciences and Climate Change, a group comprising representatives from the Natural Environment Research Council's National Oceanography Centre (NOC) and the University, whose role it is to co-ordinate research initiatives in marine sciences and communicate their work on how the climate system operates.
Professor Ric Williams, Chair in Ocean Dynamics and Biogeochemistry, said: "The event was well received, the variety and strength of the presentations applauded and it is hoped it will encourage further engagement and debate with local and regional decision makers as well as a broader scientific community, and members of the public. The briefing coincided with the University's first research theme launch – Living with Environmental Change, staged the day before."
To facilitate maximum impact of the briefing, continued communication of the issues, and potential for engagement, the Science of Climate Change webcast is available to watch online and it is also possible to download selected presentation slides.
Epidemiology and Population Health
Faculty of Health and Life Sciences
Institute of Infection and Global Health
Oceans and Ecosystems
Professor Matthew Baylis
School of Environmental Sciences
Victoria Gallery & Museum
One thought on "Science of Climate Change Briefing – watch online"
Terry Bucknell February 25, 2011 at 4:09 pm
The online version of the book mentioned by Professor Phil Woodworth is Understanding Sea-Level Rise and Variability at http://onlinelibrary.wiley.com.ezproxy.liv.ac.uk/book/10.1002/9781444323276


stargrabs.com 9 out of 10 based on 772 ratings. 1,917 user reviews.
Buy Sofa Online for Living room Furniture. We offer wide range of Sofas at best price with Free Shipping.Check out our vast collection of Sofa Furniture Online.
Brad Brown Sofa Table .199.99. 50L x 20W x 29H. Find affordable Sofa Tables for your home that will complement the rest of your furniture.
Sean Brown Sofa Table .299.99. 52L x 20W x 29H. Find affordable Sofa Tables for your home that will complement the rest of your furniture.
Modular fabric sofas: for your comfort and support. You probably like to spend at least some your time at home relaxing in your living room, so comfort and the correct support for your body should be vital considerations when choosing your sofa.
I love your table. I think you woul have been dissapointed if you had made it longer to fit the window. You would have needed to finish that piece across the front where it would have ben exposed at the arm of the sofa.
Entryway Table Coffee, Console, Sofa & End Tables : Accent your living room with a coffee, console, sofa or end table. Add style to your home, with pieces that add to your decor while providing hidden storage. Overstock Your Online Living Room Furniture Store! Get 5% in rewards with Club O!
Looking for cheap furniture in the UK? Msofas offers you a wide range of home furniture whether you're looking furniture for a living room, bedroom or dining room. Visit us now & have a look at our vast collection!
OM Home takes pride in its collection of designer leather sofa, beds, dining chairs and home furniture by an International cast of designers.


text:
Print Technique
Fine Art Photos
Terms, Conditions and Copyright
Hendrickson Fine Art Photo - Irish Landscape Photos / Print Technique
Barry Hendrickson's much acclaimed series of portfolios: "Ireland in Black & White" is a stunning and breathtaking look at the vast and surreal landscapes of Ireland. His dramatic black-and-white images of thought-provoking and starkly beautiful panoramas reveal the rich and tragic history of Ireland. These interpretations of Irish landscapes are luminous in nature, and rarely seen in this light.
"Ireland in Black & White" is an extensive body of work, with each subsequent series having a unique geographical or cultural focus.
Influenced heavily by the legacy of the Zone System, Barry's work began at exposure with a pre-visualization of the image in black and white and how he would render this impression in the dark room. In the tradition of the fine print, he worked to develop print contrast with rich velvety blacks and an emphasis on relative tonal range. He transferred to the digital darkroom and embraced the lush carbon pigment inks to create his work. Nancy Wojack Hendrickson works in this medium as well. And her work is inspired by these techniques as well.
Read about our black and white print techniques by Nancy Wojack Hendrickson, and her inspiration from an exhibit of Ansel Adams HERE >.
Add individual prints, framed photographs, or a series of images to your collection.
I create and sell emotive and luminous fine art photographs of Irish landscapes, inspired by my Irish ancestors.
Minneapolis, Minnesota USA
Receive Hendrickson Fine Art Photography special offers, news and exhibitions.
Please fill out this form >
Don't worry, we hate spam too! We promise that we will not sell or share your email ever. You can unsubscribe at anytime.
© 2003-2021 Hendrickson Fine Art Photography | Ireland in Black & White series


Stunning Oasis Style Unit in a Great Location!
Come and inspect this great 2 bedroom, 2 bathroom property in a luxury oasis setting. This property is located on the lower floor so there's no need to climb any stairs. It is ideal living being conveniently located close to shops and public transport, with New Farm Park right across the road and Fortitude Valley not too far away- experience the Brisbane nightlife and clubs!


text:
GitHub – A Home For Open Source
By Kevin O'Keefe on March 7, 2013
When people think open source software development, GitHub will soon be the first thought through their mind (if it's not already). This collaborative software-development tool is quickly becoming the standard for friends, companies, teams, communities, and groups of strangers to build software together. The open source community has always represented collaboration and contributing to something bigger than themselves. GitHub excels by combining these elements and enabling brilliant developers around the world to collaborate and develop at a breakneck speed.
"If the barrier to collaboration is too high, then you're not gonna do it," says GitHub co-founder Tom Preston-Werner. "But once you get that barrier low enough, once you pass a certain threshold, everybody's contributing."
I'll do my best to breakdown how GitHub works. A developer can create a repository for their project; which is the home for development and management of the code. Other developers can contribute to the repository by creating a "fork" off of the source and add to, yet not change the original, code. This fork can remain a different version or eventually be inherited/adopted in the source, but the decision is up to the owner. There are places for community discussion and other collaborative tools that make the project easy to review, maintain and update.
Why GitHub? Why open source? When someone decides to create software, they never have to start from scratch when using open source. Developers can use other open source projects to build on top of their own project and create software much quicker (someone has already done the work for you). Or, developers can request collaboration from the community to contribute to their project(s). This new opportunity for scaling rapidly by leveraging existing projects and other talented developers is another reason the open source solution is becoming more appealing to companies everywhere. GitHub provides a platform where developers can do all of this in one place!
"The network effect is awesome," Preston-Werner says, "There are standards now based on GitHub, so everybody can come in to a new project and immediately know how to get the code, how to contribute code, how to review the code, how to submit issues to the code base…. The more people do that, the stronger the effects and the gains from having a uniform, well-known, standardized system. And that's happening really, really rapidly."
SmartFile's software is built on an open source API hosted on GitHub. SmartFile embraces the open source community with open arms and continues to contribute locally through open source programming competitions. SmartFile believes that its contribution, participation, and hosting on GitHub will only make the software bigger, better, and stronger. Check SmartFile out and create a fork for yourself!
How to Keep Work Moving Forward
How SmartFile Supports the Benefits of Content Col...
How Hosted File Sharing & FTP Help You Scale ...
Related Topics & Tags: API / Platform Industry Thoughts
Collaboration GitHub open source SmartFile API Software Development
About Kevin O'Keefe
I am the Creative Director at SmartFile. My job is to manage marketing on the internet for all things SmartFile. I maintain the design and development of SmartFile's website along with other social profiles. I love design and analytics, deadly combination but enjoyable nonetheless.
View all posts by Kevin O'Keefe
1 thought on "GitHub – A Home For Open Source"
GitHub is awesome! It's not just for open source though, I do know Microsoft and other big companies use their paid service to manage development.
Previous Previous post: Meet the Bake-Off Judges: Round 4 with Michael Coffey
Next Next post: 3 Ways to Improve Your Thoughts and Ideas


Saturday, 15 April 2017 : Donald found the hole on a short pitch shot, nipping the ball off the grass short of the green into a mound and making it pause after one big bounce before the ball trickled into the cup for birdie at the last to complete a four-under 67.
That tied the English former world number one with early starter DeLaet, who holed out a wedge shot from 109 yards to eagle the par-four ninth on his way to 67 on the Harbour Town layout.
European Ryder Cup stalwart Ian Poulter of England and 2012 U.S. Open winner Webb Simpson were two shots back at eight-under 134, one stroke better than five players including first-round leader Bud Cauley, who followed an opening 63 with 72.
Donald leaned heavily on his short game as he lost control off the tee, hitting just seven fairways yet grabbing a share of the lead in his quest to take the next step after four runner-up finishes here.
"It was a little bit of a struggle today, but my short game certainly bailed me out," Donald, 39, told Golf Channel.
DeLaet, seeking his first PGA Tour victory after three second-place finishes and three thirds, vaulted up the leaderboard with a red-hot run around the turn.
"I had a nice little stretch in the middle of my round. I birdied eight, then there was the ninth. At 10, I missed an eight-footer for birdie, and I birdied 11 and 12," he said.
DeLaet is one of eight players to have accumulated $10 million in earnings without a victory.
Donald said winning on Sunday would bring vindication.


text:
Samsung to build hi-tech factory in Ho Chi Minh City
The Republic of Korea's Samsung Group will invest over 1 billion USD in the construction of an electronics production factory in Ho Chi Minh City' Saigon Hi-tech Park.
Friday, June 06, 2014 11:03
Vice Chairman of the municipal People's Committee Le Manh Ha said that this is a positive signal following recent disturbances in several localities, which took place during demonstrations against China's act of illegally stationing its oil rig in Vietnam's waters.
Samsung's decision shows that investors still retain their confidence in the city's efforts to promote administrative reform and offer preferential policies to foreign businesses, he added.
Entering Vietnam in 1995, Samsung is running two mobile-phone factories in the north of the country, namely Samsung Electronics Vietnam (SEV) in Bac Ninh and Samsung Electronics Vietnam Thai Nguyen (SEVT).
In March 2013, the group began the construction of a second hi-tech complex in Thai Nguyen, at a cost of 2 billion USD, which will house the largest Samsung mobile phone factory in the world.-VNA
Party, State leader holds Tet meeting with senior officials, veterans
Party General Secretary and President Nguyen Phu Trong chairs a get-together on the occasion of the traditional Lunar New Year on January 22 with veteran revolutionaries, current and former leaders of the Party, State, Vietnam Fatherland Front, and overseas Vietnamese.
Retail giant Masan's after-tax profit hits 274.62 million USD in 2019
Retail giant Masan Group posted an after-tax profit of more than 6.36 trillion VND (274.62 million USD) last year, a year-on-year rise of 13.2 percent.
Ministry completes dossier for ratification of EVFTA
The Vietnamese Ministry of Industry and Trade (MoIT) has completed a dossier for the ratification of the EU-Vietnam Free Trade Agreement (EVFTA) since early January, and will submit it to the Prime Minister for decision.
Twelve SOEs report losses in 2019
The Ministry of Finance has revealed that twelve out of 136 wholly state-owned enterprises had posted losses of 720 billion VND in total (31 million USD) in the first half of last year, and six others faced warnings regarding financial security.
The Vietnamese real estate market at all segments continues showing its appeal to foreign investors, and hundreds of millions of USD are waiting to be poured into the market, according to a research conducted by property and investment management services firm Jones Lang LaSalle (JLL).
Japanese investment in Vietnam has strongly developed in both quality and quantity as investors are applying the most advanced technologies in production, experts have said.