text:
#pragma once

#include <assert.h>
#include <ctype.h>
#include <stdbool.h>
#include <stddef.h>
#include <string.h>
#include <errno.h>
#include <stdint.h>
#include <sol-buffer.h>
#include <sol-macros.h>
#include <sol-str-slice.h>
#include <sol-buffer.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @file
 * @brief These are the parser routines that Soletta provides.
 */

/**
 * @defgroup Parsers Parsers
 *
 * @brief Parsers provided by Soletta.
 *
 */

/**
 * @defgroup JSON JSON
 * @ingroup Parsers
 *
 * @brief JSON parser.
 *
 * @{
 */

/**
 * @brief Structure to track a JSON document (or a portion of it) being parsed.
 */
struct sol_json_scanner {
    const char *mem; /**< @brief Start of this portion of the JSON document. */
    const char *mem_end; /**< @brief End of this portion of the JSON document. */
    const char *current; /**< @brief Current point in the JSON document that needs to be processed. */
};

/**
 * @brief Type describing a JSON token
 *
 * Used to point and delimit JSON element while parsing a JSON document.
 */
struct sol_json_token {
    const char *start; /**< @brief Token start */
    const char *end; /**< @brief Token end. Non-inclusive */
};

/**
 * @brief Token type enumeration.
 */
enum sol_json_type {
    SOL_JSON_TYPE_UNKNOWN = 0, /**< @brief Unknown token */
    SOL_JSON_TYPE_OBJECT_START = '{', /**< @brief JSON Object start */
    SOL_JSON_TYPE_OBJECT_END = '}', /**< @brief JSON Object end */
    SOL_JSON_TYPE_ARRAY_START = '[', /**< @brief JSON Array start */
    SOL_JSON_TYPE_ARRAY_END = ']', /**< @brief JSON Array end */
    SOL_JSON_TYPE_ELEMENT_SEP = ',', /**< @brief JSON Element separator */
    SOL_JSON_TYPE_PAIR_SEP = ':', /**< @brief JSON Pair separator */
    SOL_JSON_TYPE_TRUE = 't', /**< @brief 'true' value */
    SOL_JSON_TYPE_FALSE = 'f', /**< @brief 'false' value */
    SOL_JSON_TYPE_NULL = 'n', /**< @brief 'null' value */
    SOL_JSON_TYPE_STRING = '"', /**< @brief JSON string token */
    SOL_JSON_TYPE_NUMBER = '1', /**< @brief JSON number token */
};

/**
 * @brief Return values used by the parser 'loop' macros.
 *
 * Used to inform if the macro successfully parsed the provided content or not.
 * @c Invalid may be returned when an invalid JSON construct is found, but also
 * when what was parsed doesn't match the requirements provided through 'loop'
 * parameters.
 */
enum sol_json_loop_reason {
    SOL_JSON_LOOP_REASON_OK = 0, /**< @brief Content successfully parsed. */
    SOL_JSON_LOOP_REASON_INVALID /**< @brief Failed to parse the content. */
};

/**
 * @brief Helper macro to iterate over the elements of a @b nested array in a JSON document
 *
 * When iterating over nested objects and arrays, you don't want to call
 * @ref sol_json_loop_helper_init, that is why you need to use this macro for
 * nested stuff.
 *
 * @param scanner_ JSON scanner
 * @param token_ Current token on each iteration
 * @param element_type_ Token type of the elements in the array
 * @param end_reason_ Loop exit status
 */
#define SOL_JSON_SCANNER_ARRAY_LOOP_NEST(scanner_, token_, element_type_, end_reason_) \
    for (end_reason_ = SOL_JSON_LOOP_REASON_OK;  \
        sol_json_loop_helper_array(scanner_, token_, &end_reason_, element_type_);)

/**
 * @brief Helper macro to iterate over the elements of an array in a JSON document
 *
 * @param scanner_ JSON scanner
 * @param token_ Current token on each iteration
 * @param element_type_ Token type of the elements in the array
 * @param end_reason_ Loop exit status
 *
 * @see sol_json_scanner_init
 */
#define SOL_JSON_SCANNER_ARRAY_LOOP(scanner_, token_, element_type_, end_reason_) \
    for (end_reason_ = sol_json_loop_helper_init(scanner_, token_, SOL_JSON_TYPE_ARRAY_START); \
        sol_json_loop_helper_array(scanner_, token_, &end_reason_, element_type_);)

/**
 * @brief Helper macro to iterate over the elements of a @b nested array in a JSON document,
 * ignoring the elements type.
 *
 * When iterating over nested objects and arrays, you don't want to call
 * @ref sol_json_loop_helper_init, that is why you need to use this macro for
 * nested stuff.
 *
 * @param scanner_ JSON scanner
 * @param token_ Current token on each iteration
 * @param end_reason_ Loop exit status
 */
#define SOL_JSON_SCANNER_ARRAY_LOOP_ALL_NEST(scanner_, token_, end_reason_) \
    for (end_reason_ = SOL_JSON_LOOP_REASON_OK;  \
        sol_json_loop_helper_generic(scanner_, token_, SOL_JSON_TYPE_ARRAY_END, &end_reason_);)

/**
 * @brief Helper macro to iterate over the elements an array in a JSON document,
 * ignoring the elements type.
 *
 * @param scanner_ JSON scanner
 * @param token_ Current token on each iteration
 * @param end_reason_ Loop exit status
 */
#define SOL_JSON_SCANNER_ARRAY_LOOP_ALL(scanner_, token_, end_reason_) \
    for (end_reason_ = sol_json_loop_helper_init(scanner_, token_, SOL_JSON_TYPE_ARRAY_START); \
        sol_json_loop_helper_generic(scanner_, token_, SOL_JSON_TYPE_ARRAY_END, &end_reason_);)

/**
 * @brief Helper macro to iterate over the elements of a @b nested object in a JSON document
 *
 * When iterating over nested objects and arrays, you don't want to call
 * @ref sol_json_loop_helper_init, that is why you need to use this macro for
 * nested stuff.
 *
 * @param scanner_ JSON scanner
 * @param token_ Current token on each iteration
 * @param key_ Token to the current pair's key on each iteration
 * @param value_ Token to the current pair's value on each iteration
 * @param end_reason_ Loop exit status
 */
#define SOL_JSON_SCANNER_OBJECT_LOOP_NEST(scanner_, token_, key_, value_, end_reason_) \
    for (end_reason_ = SOL_JSON_LOOP_REASON_OK; \
        sol_json_loop_helper_object(scanner_, token_, key_, value_, &end_reason_);)

/**
 * @brief Helper macro to iterate over the elements of an object in a JSON document
 *
 * @param scanner_ JSON scanner
 * @param token_ Current token on each iteration
 * @param key_ Token to the current pair's key on each iteration
 * @param value_ Token to the current pair's value on each iteration
 * @param end_reason_ Loop exit status
 *
 * @see sol_json_scanner_init
 */
#define SOL_JSON_SCANNER_OBJECT_LOOP(scanner_, token_, key_, value_, end_reason_) \
    for (end_reason_ = sol_json_loop_helper_init(scanner_, token_, SOL_JSON_TYPE_OBJECT_START); \
        sol_json_loop_helper_object(scanner_, token_, key_, value_, &end_reason_);)

/**
 * @brief Initializes a JSON scanner.
 *
 * @param scanner JSON scanner
 * @param mem Pointer to the memory containing the JSON document
 * @param size Memory size in bytes
 *
 * @note May or may not be NULL terminated.
 */
static inline void
sol_json_scanner_init(struct sol_json_scanner *scanner, const void *mem, unsigned int size)
{
    scanner->mem = (const char *)mem;
    scanner->mem_end = scanner->mem + size;
    scanner->current = (const char *)mem;
}

/**
 * @brief Initializes a JSON scanner with empty information.
 *
 * @param scanner JSON scanner
 */
static inline void
sol_json_scanner_init_null(struct sol_json_scanner *scanner)
{
    scanner->mem = NULL;
    scanner->mem_end = NULL;
    scanner->current = NULL;
}

/**
 * @brief Initializes a JSON scanner based on the information of a second scanner.
 *
 * Useful to offload some segments of the JSON document to different parser routines.
 *
 * @param scanner JSON scanner
 * @param other Base JSON scanner
 */
static inline void
sol_json_scanner_init_from_scanner(struct sol_json_scanner *scanner,
    const struct sol_json_scanner *other)
{
    scanner->mem = other->mem;
    scanner->mem_end = other->mem_end;
    scanner->current = scanner->mem;
}

/**
 * @brief Initializes a JSON scanner based on the information of a JSON Token.
 *
 * Useful to offload some segments of the JSON document to different parser routines.
 *
 * @param scanner JSON scanner
 * @param token JSON token
 */
static inline void
sol_json_scanner_init_from_token(struct sol_json_scanner *scanner,
    const struct sol_json_token *token)
{
    scanner->mem = token->start;
    scanner->mem_end = token->end;
    scanner->current = scanner->mem;
}

/**
 * @brief Returns the size of the JSON document that wasn't scanned yet.
 *
 * @param scanner JSON scanner
 *
 * @return Remaining size in bytes
 */
static inline unsigned int
sol_json_scanner_get_size_remaining(const struct sol_json_scanner *scanner)
{
    return scanner->mem_end - scanner->current;
}

/**
 * @brief Returns the offset of @c mem in the data managed by @c scanner.
 *
 * Offset relative to the start of the JSON document portion handled by @c scanner.
 *
 * @param scanner JSON scanner
 * @param mem Pointer to JSON Document data
 *
 * @return Offset in bytes, @c -1 in case of error.
 */
static inline unsigned int
sol_json_scanner_get_mem_offset(const struct sol_json_scanner *scanner, const void *mem)
{
    const char *p = (const char *)mem;

    if (p < scanner->mem || p > scanner->mem_end)
        return (unsigned int)-1;
    return p - scanner->mem;
}

/**
 * @brief Returns the type of the token pointed by @c mem.
 *
 * @param mem Pointer to JSON Document data
 *
 * @return JSON type of the token pointed by @c mem
 */
static inline enum sol_json_type
sol_json_mem_get_type(const void *mem)
{
    const char *p = (const char *)mem;

    if (strchr("{}[],:tfn\"", *p))
        return (enum sol_json_type)*p;
    if (isdigit((uint8_t)*p) || *p == '-' || *p == '+')
        return SOL_JSON_TYPE_NUMBER;
    return SOL_JSON_TYPE_UNKNOWN;
}

/**
 * @brief Returns the type of the token pointed by @c token.
 *
 * @param token Token
 *
 * @return JSON type of @c token
 */
static inline enum sol_json_type
sol_json_token_get_type(const struct sol_json_token *token)
{
    return sol_json_mem_get_type(token->start);
}

/**
 * @brief Returns the token size.
 *
 * @param token Token
 *
 * @return Token size in bytes
 */
static inline unsigned int
sol_json_token_get_size(const struct sol_json_token *token)
{
    return token->end - token->start;
}

/**
 * @brief Checks if the string pointed by @c token is equal to the string @c str.
 *
 * @param token Token of type string
 * @param str The string to compare
 * @param len Size of @c str
 *
 * @return @c true if the contents are equal, @c false otherwise
 *
 * @note The JSON string pointed by token may be escaped, so take this into consideration
 * to compare compatible strings.
 */
static inline bool
sol_json_token_str_eq(const struct sol_json_token *token, const char *str, unsigned int len)
{
    unsigned int size;

    assert(sol_json_token_get_type(token) == SOL_JSON_TYPE_STRING);

    size = sol_json_token_get_size(token);
    return (size == len + 2) && memcmp(token->start + 1, str, len) == 0;
}

/**
 * @brief Helper macro to check if the string pointed by @c token_ is equal to a string literal.
 *
 * @param token_ Token of type string
 * @param str_ String literal
 *
 * @return @c true if the contents are equal, @c false otherwise
 *
 * @note The JSON string pointed by token may be escaped, so take this into consideration
 * to compare compatible strings.
 */
#define SOL_JSON_TOKEN_STR_LITERAL_EQ(token_, str_) \
    sol_json_token_str_eq(token_, str_, sizeof(str_) - 1)

/**
 * @brief Get the numeric value of the given token as an 64 bits unsigned integer.
 *
 * @param token the token to convert to number
 * @param value where to return the converted number
 *
 * @return 0 on success, -errno on failure (@c EINVAL or @c
 * ERANGE). On errors @a value will be set to a best-match, such as 0
 * if @c EINVAL or @c UINT64_MAX if @c ERANGE
 *
 * @see sol_json_token_get_int64()
 * @see sol_json_token_get_uint32()
 * @see sol_json_token_get_double()
 */
int sol_json_token_get_uint64(const struct sol_json_token *token, uint64_t *value) SOL_ATTR_WARN_UNUSED_RESULT SOL_ATTR_NONNULL(1, 2);

/**
 * @brief Get the numeric value of the given token as an 64 bits signed integer.
 *
 * @param token the token to convert to number
 * @param value where to return the converted number
 *
 * @return 0 on success, -errno on failure (@c EINVAL or @c
 * ERANGE). On errors @a value will be set to a best-match, such as 0
 * if @c EINVAL, @c INT64_MAX or @c INT64_MIN if @c ERANGE
 *
 * @see sol_json_token_get_uint64()
 * @see sol_json_token_get_int32()
 * @see sol_json_token_get_double()
 */
int sol_json_token_get_int64(const struct sol_json_token *token, int64_t *value) SOL_ATTR_WARN_UNUSED_RESULT SOL_ATTR_NONNULL(1, 2);

/**
 * @brief Get the numeric value of the given token as an 32 bits unsigned integer.
 *
 * @param token the token to convert to number
 * @param value where to return the converted number
 *
 * @return 0 on success, -errno on failure (@c EINVAL or @c
 * ERANGE). On errors @a value will be set to a best-match, such as 0
 * if @c EINVAL or @c UINT32_MAX if @c ERANGE
 *
 * @see sol_json_token_get_uint64()
 * @see sol_json_token_get_int32()
 * @see sol_json_token_get_double()
 */
static inline int
sol_json_token_get_uint32(const struct sol_json_token *token, uint32_t *value)
{
    uint64_t tmp;
    int r = sol_json_token_get_uint64(token, &tmp);

    if (tmp > UINT32_MAX) {
        tmp = UINT32_MAX;
        if (r == 0)
            r = -ERANGE;
    }

    *value = tmp;
    return r;
}

/**
 * @brief Get the numeric value of the given token as an 32 bits signed integer.
 *
 * @param token the token to convert to number
 * @param value where to return the converted number
 *
 * @return 0 on success, -errno on failure (@c EINVAL or @c
 * ERANGE). On errors @a value will be set to a best-match, such as 0
 * if @c EINVAL, @c INT32_MAX or @c INT32_MIN if @c ERANGE
 *
 * @see sol_json_token_get_uint64()
 * @see sol_json_token_get_int32()
 * @see sol_json_token_get_double()
 */
static inline int
sol_json_token_get_int32(const struct sol_json_token *token, int32_t *value)
{
    int64_t tmp;
    int r = sol_json_token_get_int64(token, &tmp);

    if (tmp > INT32_MAX) {
        tmp = INT32_MAX;
        if (r == 0)
            r = -ERANGE;
    } else if (tmp < INT32_MIN) {
        tmp = INT32_MIN;
        if (r == 0)
            r = -ERANGE;
    }

    *value = tmp;
    return r;
}

/**
 * @brief Get the numeric value of the given token as double-precision floating point.
 *
 * @param token the token to convert to number
 * @param value where to return the converted number
 *
 * @return 0 on success, -errno on failure (@c EINVAL or @c
 * ERANGE). On errors @a value will be set to a best-match, such as 0.0
 * if @c EINVAL, @c DBL_MAX or @c -DBL_MAX if @c ERANGE
 *
 * @see sol_json_token_get_uint64()
 * @see sol_json_token_get_int64()
 * @see sol_json_token_get_uint32()
 * @see sol_json_token_get_int32()
 */
int sol_json_token_get_double(const struct sol_json_token *token, double *value) SOL_ATTR_WARN_UNUSED_RESULT SOL_ATTR_NONNULL(1, 2);

/**
 * @brief Converts a JSON token to a string slice.
 *
 * @param token the token to convert to string slice
 *
 * @return A string slice struct
 *
 * @see sol_str_slice
 */
static inline struct sol_str_slice
sol_json_token_to_slice(const struct sol_json_token *token)
{
    return SOL_STR_SLICE_STR(token->start, (size_t)(token->end - token->start));
}

/**
 * @brief Advance the scanner to the next JSON token.
 *
 * @param scanner JSON scanner to advance
 * @param token Current token after the advance
 *
 * @return @c true if successfully advanced, @c false otherwise
 */
bool sol_json_scanner_next(struct sol_json_scanner *scanner,
    struct sol_json_token *token) SOL_ATTR_WARN_UNUSED_RESULT SOL_ATTR_NONNULL(1, 2);

/**
 * @brief Modifies @c scanner to point to @c token end, skipping over the @c token content.
 *
 * If object/array start, it will be the matching end token.
 * otherwise it will be the given token (as there is no nesting).
 *
 * In every case the scanner->current position is reset to given
 * token->end and as it iterates the scanner->position is updated to
 * match the new token's end (@ref sol_json_scanner_next() behavior).
 *
 * @param scanner JSON scanner to advance
 * @param token Current token after the advance
 *
 * @return @c true if successfully skipped the token, @c false otherwise
 */
bool sol_json_scanner_skip_over(struct sol_json_scanner *scanner,
    struct sol_json_token *token) SOL_ATTR_WARN_UNUSED_RESULT SOL_ATTR_NONNULL(1, 2);

/**
 * @brief Retrieve <key, value> pair currently pointed by @c scanner.
 *
 * Retrieve the @c key and @c value tokens from scanner's current position
 * and update the scanner position to point to after the pair.
 *
 * @param scanner JSON scanner
 * @param key Token of the pair's key
 * @param value Token of the pair's value
 *
 * @return @c true if a pair is successfully retrieved, @c false otherwise
 */
bool sol_json_scanner_get_dict_pair(struct sol_json_scanner *scanner,
    struct sol_json_token *key, struct sol_json_token *value) SOL_ATTR_WARN_UNUSED_RESULT SOL_ATTR_NONNULL(1, 2, 3);

/**
 * @brief Function to help iterate over a generic JSON sequence.
 *
 * @param scanner JSON scanner
 * @param token Current token after the iteration
 * @param end_type Token type that ends the sequence
 * @param reason Exit status of an iteration
 *
 * @return @c true if successfully iterated over the sequence, @c false otherwise
 */
static inline bool
sol_json_loop_helper_generic(struct sol_json_scanner *scanner, struct sol_json_token *token,
    enum sol_json_type end_type, enum sol_json_loop_reason *reason)
{
    if (*reason != SOL_JSON_LOOP_REASON_OK)
        return false;

    if (!sol_json_scanner_next(scanner, token)) {
        *reason = SOL_JSON_LOOP_REASON_INVALID;
        return false;
    }

    if (sol_json_token_get_type(token) == end_type) {
        *reason = SOL_JSON_LOOP_REASON_OK;
        return false;
    }

    if (sol_json_token_get_type(token) == SOL_JSON_TYPE_ELEMENT_SEP) {
        if (!sol_json_scanner_next(scanner, token)) {
            *reason = SOL_JSON_LOOP_REASON_INVALID;
            return false;
        }
    }

    return true;
}

/**
 * @brief Function to help iterate over a JSON array.
 *
 * @param scanner JSON scanner
 * @param token Current token after the iteration
 * @param reason Exit status of an iteration
 * @param element_type Token type of the elements in the array
 *
 * @return @c true if successfully iterated over the sequence, @c false otherwise
 */
static inline bool
sol_json_loop_helper_array(struct sol_json_scanner *scanner, struct sol_json_token *token,
    enum sol_json_loop_reason *reason, enum sol_json_type element_type)
{
    if (!sol_json_loop_helper_generic(scanner, token, SOL_JSON_TYPE_ARRAY_END, reason))
        return false;

    if (sol_json_token_get_type(token) == element_type) {
        *reason = SOL_JSON_LOOP_REASON_OK;
        return true;
    }

    *reason = SOL_JSON_LOOP_REASON_INVALID;
    return false;
}

/**
 * @brief Function to help iterate over a JSON object.
 *
 * @param scanner JSON scanner
 * @param token Current token after the iteration
 * @param key Token to the key of the current object pair
 * @param value Token to the value of the current object pair
 * @param reason Exit status of an iteration
 *
 * @return @c true if successfully iterated over the sequence, @c false otherwise
 */
static inline bool
sol_json_loop_helper_object(struct sol_json_scanner *scanner, struct sol_json_token *token,
    struct sol_json_token *key, struct sol_json_token *value, enum sol_json_loop_reason *reason)
{
    if (!sol_json_loop_helper_generic(scanner, token, SOL_JSON_TYPE_OBJECT_END, reason))
        return false;

    *key = *token;
    if (!sol_json_scanner_get_dict_pair(scanner, key, value)) {
        *reason = SOL_JSON_LOOP_REASON_INVALID;
        return false;
    }

    *reason = SOL_JSON_LOOP_REASON_OK;
    return true;
}

/**
 * @brief Function to bootstrap an iteration over a JSON sequence.
 *
 * @param scanner JSON scanner
 * @param token Current token after initialization
 * @param start_type Token type that starts the sequence
 *
 * @return Exit status of the initialization
 */
static inline enum sol_json_loop_reason
sol_json_loop_helper_init(struct sol_json_scanner *scanner, struct sol_json_token *token,
    enum sol_json_type start_type)
{
    if (!sol_json_scanner_next(scanner, token))
        return SOL_JSON_LOOP_REASON_INVALID;
    if (sol_json_token_get_type(token) != start_type)
        return SOL_JSON_LOOP_REASON_INVALID;
    return SOL_JSON_LOOP_REASON_OK;
}

/**
 * @brief Calculate the size in bytes of the escaped version of a string.
 *
 * @param str Input string
 *
 * @return Size necessary to hold the escaped version of @c str
 */
size_t sol_json_calculate_escaped_string_len(const char *str) SOL_ATTR_NONNULL(1);

/**
 * @brief Escapes JSON special and control characters from the string content.
 *
 * @param str String to escape
 * @param buf Where to place the escaped string
 * @param len Buffer size in bytes
 *
 * @return The escaped string
 */
char *sol_json_escape_string(const char *str, char *buf, size_t len) SOL_ATTR_NONNULL(1, 2);

/**
 * @brief Helper macro to make easier to escape a string for use in a JSON document
 *
 * @param s String to escape
 */
#define SOL_JSON_ESCAPE_STRING(s) ({ \
        size_t str_len ## __COUNT__  = sol_json_calculate_escaped_string_len(s); \
        sol_json_escape_string(s, alloca(str_len ## __COUNT__), str_len ## __COUNT__); \
    })

/**
 * @brief Converts a double into a string suited for use in a JSON Document
 *
 * @param value Value to be converted
 * @param buf Where to place the converted value
 * @param buf_len Buffer size in bytes
 *
 * @return @c 0 on success, error code (always negative) otherwise
 */
int sol_json_double_to_str(const double value, char *buf, size_t buf_len);

/**
 * @brief Check if @c scanner content is pointing to a valid JSON element of
 * type @c start_type.
 *
 * @note May or may not be NULL terminated.
 *
 * @param scanner JSON scanner
 * @param start_type Token type of the desired JSON element
 *
 * @return @c true if JSON element is valid, @c false otherwise
 */
bool sol_json_is_valid_type(struct sol_json_scanner *scanner, enum sol_json_type start_type) SOL_ATTR_NONNULL(1);

/**
 * @brief Inserts the string @c str in the end of the JSON document contained in @c buffer.
 *
 * @param buffer Buffer containing the new JSON document
 * @param str String to be inserted in the JSON document
 *
 * @return @c 0 on success, error code (always negative) otherwise
 *
 * @note The inserted string may be different of the original since this function
 * will call @ref sol_json_escape_string on it.
 */
int sol_json_serialize_string(struct sol_buffer *buffer, const char *str) SOL_ATTR_NONNULL(1, 2);

/**
 * @brief Inserts the string of the double @c val in the end
 * of the JSON document contained in @c buffer.
 *
 * @param buffer Buffer containing the new JSON document
 * @param val Value to be inserted in the JSON document
 *
 * @return @c 0 on success, error code (always negative) otherwise
 */
int sol_json_serialize_double(struct sol_buffer *buffer, double val) SOL_ATTR_NONNULL(1);

/**
 * @brief Inserts the string of the 32-bit integer @c val in the end
 * of the JSON document contained in @c buffer.
 *
 * @param buffer Buffer containing the new JSON document
 * @param val Value to be inserted in the JSON document
 *
 * @return @c 0 on success, error code (always negative) otherwise
 */
int sol_json_serialize_int32(struct sol_buffer *buffer, int32_t val) SOL_ATTR_NONNULL(1);

/**
 * @brief Inserts the string of the unsigned 32-bit integer @c val in the end
 * of the JSON document contained in @c buffer.
 *
 * @param buffer Buffer containing the new JSON document
 * @param val Value to be inserted in the JSON document
 *
 * @return @c 0 on success, error code (always negative) otherwise
 */
int sol_json_serialize_uint32(struct sol_buffer *buffer, uint32_t val) SOL_ATTR_NONNULL(1);

/**
 * @brief Inserts the string of the 64-bit integer @c val in the end
 * of the JSON document contained in @c buffer.
 *
 * @param buffer Buffer containing the new JSON document
 * @param val Value to be inserted in the JSON document
 *
 * @return @c 0 on success, error code (always negative) otherwise
 */
int sol_json_serialize_int64(struct sol_buffer *buffer, int64_t val) SOL_ATTR_NONNULL(1);

/**
 * @brief Inserts the string of the unsigned 64-bit integer @c val in the end
 * of the JSON document contained in @c buffer.
 *
 * @param buffer Buffer containing the new JSON document
 * @param val Value to be inserted in the JSON document
 *
 * @return @c 0 on success, error code (always negative) otherwise
 */
int sol_json_serialize_uint64(struct sol_buffer *buffer, uint64_t val) SOL_ATTR_NONNULL(1);

/**
 * @brief Inserts the string of the boolean value @c val in the end
 * of the JSON document contained in @c buffer.
 *
 * @param buffer Buffer containing the new JSON document
 * @param val Value to be inserted in the JSON document
 *
 * @return @c 0 on success, error code (always negative) otherwise
 */
int sol_json_serialize_boolean(struct sol_buffer *buffer, bool val) SOL_ATTR_NONNULL(1);

/**
 * @brief Inserts the string "null" in the end of the JSON document contained in @c buffer.
 *
 * @param buffer Buffer containing the new JSON document
 *
 * @return @c 0 on success, error code (always negative) otherwise
 */
static inline int
sol_json_serialize_null(struct sol_buffer *buffer)
{
    static const struct sol_str_slice null = SOL_STR_SLICE_LITERAL("null");

    return sol_buffer_append_slice(buffer, null);
}

/**
 *  @brief Copy to a @ref sol_buffer the string pointed by @c token.
 *
 *  If token is of type string, quotes are removed and string is unescaped. If not,
 *  the full token value is returned as a string.
 *
 *  If necessary memory will be allocated to place unescaped string, so
 *  caller is responsible to call @ref sol_buffer_fini after using the buffer
 *  content.
 *
 *  @note @ref sol_buffer_init will be called internally to initialize the buffer.
 *
 *  @param token Token to get the string from
 *  @param buffer Uninitialized buffer
 *
 *  @return @c 0 on success, a negative error code on failure
 */
int sol_json_token_get_unescaped_string(const struct sol_json_token *token, struct sol_buffer *buffer);

/**
 *  @brief Creates a copy of the unescaped and no-quotes string
 *  produced by @ref sol_json_token_get_unescaped_string.
 *
 *  Caller is responsible to free the string memory.
 *
 *  @param value A string type token
 *
 *  @return A copy of the unescaped string on success, @c NULL otherwise
 */
char *sol_json_token_get_unescaped_string_copy(const struct sol_json_token *value);

/**
 * @brief Get the value of the JSON Object child element referenced by
 * @a key_slice.
 *
 * @param scanner An initialized scanner, which is pointing to a JSON Object.
 * @param key_slice The key of the desired element.
 * @param value A pointer to the structure that will be filled with the value
 *        of the element referenced by @a key_slice.
 *
 * @return If any parameter is invalid, or if @a scanner is not pointing to a
 *         JSON Object, return -EINVAL. If @a key_slice is not present in the
 *         JSON Object, -ENOENT. If @a key was found, and @a value was update
 *         successfully with the value referenced by @a key, return 0.
 *
 * @see sol_json_array_get_at_index()
 */
int sol_json_object_get_value_by_key(struct sol_json_scanner *scanner, const struct sol_str_slice key_slice, struct sol_json_token *value);

/**
 * @brief Get the element in position @a i in JSON Array contained in @a scanner
 *
 * @param scanner An initialized scanner, which is pointing to a JSON Array.
 * @param value A pointer to the structure that will be filled with the value
 *        of the element at position @a i.
 * @param i The position of the desired element.
 *
 * @return If any parameter is invalid, or if @a scanner is not pointing to a
 *         JSON Array, return -EINVAL. If @a i is larger than the array's
 *         length, -ENOENT. If @a value was updated successfully with the value
 *         in position @a i, return 0.
 *
 * @see sol_json_object_get_value_by_key()
 */
int sol_json_array_get_at_index(struct sol_json_scanner *scanner, uint16_t i, struct sol_json_token *value);

/**
 * @struct sol_json_path_scanner
 *
 * @brief Scanner used to go through segments of a JSON Path.
 *
 * @note JSONPath syntax is available at http://goessner.net/articles/JsonPath/.
 *
 * @see sol_json_path_scanner_init()
 * @see sol_json_path_get_next_segment()
 * @see SOL_JSON_PATH_FOREACH()
 */
struct sol_json_path_scanner {
    const char *path; /**< @brief The JSONPath string. */
    const char *end; /**< @brief Points to last character from path. */
    /**
     * @brief Points to last visited position from path and the beginning of
     * next segment.
     */
    const char *current;
};

/**
 * @brief Get the element referenced by the JSON Path @a path in a JSON Object
 * or Array.
 *
 * @param scanner An initialized scanner, which is pointing to a JSON Object
 *        or a JSON Array.
 * @param path The JSON Path of the desired element.
 * @param value A pointer to the structure that will be filled with the value
 *        of the element referenced by @a path.
 *
 * @return If any parameter is invalid, or if @a scanner is not pointing to a
 *         JSON Object or JSON Array, or if @a path is not a valid JSON Path,
 *         return -EINVAL. If @a path is pointing to an invalid position in a
 *         JSON Object or in a JSON Array, -ENOENT. If @a value was
 *         successfully updated with the value of the element referenced by @a
 *         path, return 0.
 *
 * @see sol_json_path_scanner
 */
int sol_json_get_value_by_path(struct sol_json_scanner *scanner, struct sol_str_slice path, struct sol_json_token *value);

/**
 * @brief Initialize a JSON Path @a scanner with @a path.
 *
 * JSON path scanner can be used to go through segments of a JSON Path using
 * SOL_JSON_PATH_FOREACH() or sol_json_path_get_next_segment() functions.
 *
 * @param scanner An uninitialized JSON Path scanner.
 * @param path A valid JSON Path string.
 *
 * @return 0 on success, -EINVAL if scanner is NULL.
 *
 * @see sol_json_path_scanner
 */
int sol_json_path_scanner_init(struct sol_json_path_scanner *scanner, struct sol_str_slice path) SOL_ATTR_NONNULL(1);

/**
 * @brief Get next segment from JSON Path in @a scanner.
 *
 * Update @a slice with the next valid JSON Path segment in @a scanner.
 *
 * @param scanner An initialized JSON Path scanner.
 * @param slice A pointer to the slicer structure to be filled with next
 *        JSON Path segment.
 * @param end_reason A pointer to the field to be filled with the reason this
 *        function termination. SOL_JSON_LOOP_REASON_INVALID if an error
 *        occured when parsing the JSON Path. SOL_JSON_LOOP_REASON_OK if the
 *        next segment was updated in @a slice or if there is no more segments
 *        in this JSON Path.
 *
 * @return True if next segment was updated in @a value. False if an error
 *         ocurred or if there is no more segments available.
 */
bool sol_json_path_get_next_segment(struct sol_json_path_scanner *scanner, struct sol_str_slice *slice, enum sol_json_loop_reason *end_reason) SOL_ATTR_NONNULL(1, 2, 3);

/**
 * @brief Get the integer index from a JSON Path array segment.
 *
 * This function expects a valid JSON Path segment with format: [NUMBER],
 * where NUMBER is an integer and returns NUMBER converted to an integer
 * variable.
 *
 * @param key The key to extract the integer index.
 *
 * @return If key is a valid array segment in the format expecified,
 *         returns the converted index. If key is invalid, returns
 *         -EINVAL and if number is out of range, returns -ERANGE.
 *
 * @see SOL_JSON_PATH_FOREACH()
 */
int32_t sol_json_path_array_get_segment_index(struct sol_str_slice key);

/**
 * @brief Check if @a slice is a valid JSON Path array segment.
 *
 * @param slice A JSON Path segment.
 *
 * @return True if @a slice is a valid JSON Path array segment. False
 *         otherwise.
 *
 * @see SOL_JSON_PATH_FOREACH()
 */
static inline bool
sol_json_path_is_array_key(struct sol_str_slice slice)
{
    return slice.data && slice.len >= 2 &&
           slice.data[0] == '[' &&  //is between brackets or
           slice.data[1] != '\''; //index is not a string
}

/**
 * @def SOL_JSON_PATH_FOREACH(scanner, key, end_reason)
 *
 * @brief Go through all segments of a JSON Path.
 *
 * Macro used to visit all segments of a JSON Path. If the need of visiting a
 * JSON Path is accessing JSON Objects or JSON Array elements, prefer using
 * function @ref sol_json_get_value_by_path().
 *
 * @param scanner An initialized struct sol_json_path_scanner.
 * @param key A pointer to struct sol_str_slice, that is going to be filled
 *        with the current key being visited.
 * @param end_reason A pointer to the field to be filled with the reason this
 *        macro termination. SOL_JSON_LOOP_REASON_INVALID if an error
 *        occured when parsing the JSON Path. SOL_JSON_LOOP_REASON_OK if
 *        we reached the end of the JSON Path.
 *
 * Usage example:
 * @code
 *
 * const char *path = "$.my_key[3].other_key"; //Replace path here
 * struct sol_json_path_scanner path_scanner;
 * enum sol_json_loop_reason reason;
 * struct sol_str_slice key_slice;
 *
 * sol_json_path_scanner_init(&path_scanner, path);
 * SOL_JSON_PATH_FOREACH(path_scanner, key_slice, reason) {
 *     printf("%*s\n", SOL_STR_SLICE_PRINT(key_slice));
 *     //Do something else
 * }
 *
 * if (end_reason != SOL_JSON_LOOP_REASON_OK) {
 *     //Error Handling
 * }
 *
 * @endcode
 *
 * For the path in example, we would print:
 * @code
 * my_key
 * [3]
 * other_key
 * @endcode
 */
#define SOL_JSON_PATH_FOREACH(scanner, key, end_reason) \
    for (end_reason = SOL_JSON_LOOP_REASON_OK; \
        sol_json_path_get_next_segment(&scanner, &key_slice, &end_reason);)

/**
 * @}
 */

#ifdef __cplusplus
}
#endif


This deserves it's own thread!
Sarah will be a Bison!
Just saw this! Very exciting!
Can this day get any better???
Congrats to Sarah and the coaching staff.
In other breaking news: the sun will rise in the east tomorrow. This was about as sure thing of a commitment as you can get. Still awesome though.
I'll take it! Very exciting!


The Search is a peaceful, imaginative and emotional work of interactive storytelling, out now on Steam and Itch.io!
"...as a puzzle game and a solo-venture at that, there is an incredible and impressive amount of love and polish in every moment. I was surprised, repeatedly, by several clever twists and turns...I could easily and gladly exist in The Search's liminality for hours longer, in its lovingly designed and beautifully rendered levels, its gorgeous, thoughtful soundtrack, and curious, otherworldly atmosphere."
"If you're looking for a incredibly well crafted game that gets your brain moving, challenges the way you think about art and creative pursuits, and takes you for a heartfelt hour long journey, you'd be hard pressed to find something better than The Search."
"The game is short, about an hour or two. But it was enough to impress me. It knows what it is, and executes that well. Pleasing visuals, good music/sound, an intriguing setting/story and fresh puzzles round out this surprising little gem."


text:
Greenville, Pennsylvania Ghost Pictures
<<<< Greenville MAIN PAGE
MORE GHOST PHOTOS
I live in an apartment building on South Mercer Street in Greenville, PA. I was told it used to be one big house. I was told by that it was a one big house and had a big family of children. That was what the maintenance man told me anyway. There are four apartments, two upstairs and two downstairs. I've lived in two out of the four. I lived first in the one downstairs which is beautiful. The kitchen has a huge wooden bar. I still do love that place. After we moved out I became friends on Facebook with the people that moved in.
When I lived there I felt an over whelming presence. I always felt I was being watched. I would see a little girl's face like she was hiding and looking at us around the corner of the bar. In the mudroom the lights would flicker, and it looked like a child messing with us. It was hard to ignore, but I tried to ignore or try to logically explain what I was seeing, but how can you? Also my kids' shoes would go missing. I was told by the upstairs neighbor at the time that the people before us experienced the same things, so I didn't feel like it was just my imagination. When I was in the kitchen alone at night I felt very uneasy.
One night around midnight I was making a snack for my boyfriend, and I hated going to the kitchen alone at night, but I put on my big girl panties and went in the kitchen. I was making peanut butter toast. With my back to the living room, I started hearing footsteps. I ignored it, telling myself ''it's just an old house, or I'm hearing the neighbors''. I went about my business, and I kept hearing it getting closer until it was or felt like it was behind me. Then I heard this demonic sounding growl. I froze then ran as fast as I could back to our bedroom. I was terrified.
My boyfriend just looked at me like ''are you crazy?'' I told him I would never go out there alone at night again. I told him what happened, but of course he didn't believe me. He hadn't seen the things I've head or felt, so he told me it was just me being paranoid because it was a new place. After that I kind of was getting used to things. I was able to be alone without having to leave or go outside. Then one day I was taking selfies on my phone. I was going through them and I froze. I caught what looked like an old woman or man in the kitchen. It looked like another they were together. There were other faces and a little girl as well that I didn't notice. Everyone that saw my picture noticed something new. They pointed faces and other ghost. To say the least it was creepy, and I couldn't explain it.
That place amazed me. I didn't mention the one bedroom that had wooden shelves all around it. There were plenty of outlets also in the room. There was one rectangular black window. It wasn't a window to outside if you looked through you could see another room with boxes piled up, but there was no way to get in inside or out. A blocked of room? Also there was a hidden room you can get in. It looks like a wall, but it's a door to where the water tank and breaker box are. There's a crawl space probably leading to that secret room. I didn't know that until the people that live there now showed me. Speaking of the woman that moved in after we left that I was friend with on facebook, I had to ask if she experienced anything. It was weird, and her answer was yes. She wasn't even a believer in those things, but that place changed her mind. She caught a picture too, so the place made her believe in spirits, I guess. I wasn't the only one; she was the second or third person that experienced things.
Four years later the place we lived at the time caught fire, and we lost pretty much everything. We ended up moving back to this the same building as before, but now we live upstairs. Instead of our old apartment there were two big apartments and two smaller ones. We moved to the bigger one, and this place was crazy too. It was like a maze at first. It was a two-bedroom, but it was huge. The back room was like its own apartment with a bathroom and huge walk in closet. We made that the kids' room. There was plenty of space for them. There were eight closets in total; why so many? Who knows. Closets in closets?
Our bedroom we call the roof room. I had never seen a room like it. It was what looks like shingles like a roof but inside around the wall it makes the ceiling look higher. Then there was this weird room in the middle of the apartment with a huge vanity looking mirror with bright lights like a dressing room, like people did makeup or got ready for a show. It was off the kitchen, and there was a big glass mirror, but the other side was not a mirror but what looks like a wall with marble looking swirls. It was black, but you can see a reflection. I'm not sure how to explain, it but it was not a big room with no door. It was just off the kitchen and hallway. This room makes no sense, but it was cool.
When I first moved in I felt a little weird, but I didn't feel like I did when I lived downstairs even though I loved living there. It was nice, the nicest place I've ever lived. In one closet there was green wallpaper that was soft. You can tell it was old just so odd. In that closet was another closet. It was weird, and I wasn't complaining. I was happy to have a place to live after the fire, so we ended up becoming friends with the downstairs neighbors that lived in our old place. Of course I asked the question, and you bet that they too had seen and felt things downstairs where we used to live. They would be the third family that I've heard experienced the same things. It was haunted; it had to be. The neighbors and I became close; we have the same name, by the way. Both of our brothers are named Nathaniel also. We both spent a lot of time in the bathroom. It was like we both hung out a lot in there. I used to spend most of my time in there. It felt safe. There are two bathrooms, so if someone had to go, I told them to use the small one, which was creepy. There are a lot of similarities between us. It was strange. Certain members of our families shared the same birthdays, and we had a lot in common.
We felt like we were meant to be here. It felt like we were supposed to do something why else would we both be there and all the similarities? And we both felt a little girl was stuck. We wanted to help anything that maybe couldn't move on. Now we've been on a mission to find more out about the house who lived here? Who was the original owner? How old was this place? It's unknown when you look it up. Our landlord has cancer and is trying to sell all his properties, which is a lot, so we have tried to find the date this place was built and who was the original owner. We have to pay to get information which I plan on doing since the historical society isn't open until June or August, and we want answers now.
I just need to wait to get the extra money. I'm obsessing over it, and I can't stop thinking about it. I feel like I'm crazy. Something came over me one day up in my apartment. Something told me to invite any spirits good or bad. Why I would invite anything bad? I don't know. I feel I was tricked. I thought I was helping. I thought I could get rid of the bad thing keeping the kids here because we all thought maybe kids were trapped and couldn't move on. That's what we decided that something was keeping souls hostage. I was wrong. I'm not strong enough to fight whatever I invited. Ever since I said that we've been catching things in pictures and videos every time we take one.
I hear whispers and see faces everywhere. It's so strange upstairs never felt so creepy before maybe a feeling or a glimpse of a shadow but not like downstairs when I lived there. I was always freaked out now. Up here feels worse than it did down there. We think maybe we're on top of a burial of some kind. It would explain all the faces in the pictures. We tried debunking and explored all explanations for our pictures and videos, but there's too much evidence to say it's just dust or lighting or the camera is messing up.
I'm convinced it's trapped souls. The stories I've heard about this place are that people did satanic rituals, had orgies, and performed sacrifices. They said all the little closets and rooms were for the kids, so you wouldn't hear their cries for help while they were being abused, so a lot of doors were opened. If we are on top of a graveyard, then everything makes. Since pictures we have of spirits of children and the clearest picture I have of an old man and another man, it looks like they're holding down or torturing a little boy with amputated arms. It was the first picture I got after I invited things in.
The picture is terrifying more so because in it it looks like my son, and it's not him. He's beside me in the picture, and what's scarier is he looks mutilated. His face looks like it was cut then stitched back up like the ghost messed with the picture of him. He was in the dressing room or whatever you want to call it with me. Everyone else was outside or downstairs. I felt the need to take a picture in the mirror facing down the hallway towards the kids' room, but my son was beside me. I didn't think anything of him until I saw how he looked in the picture. It was like his face was deformed. He looked messed up. Something made him look like that. It threatened my child is what it seemed like. I couldn't explain it.
Nothing has happened. Thank god. We got sage, and we prayed and told the bad spirits they are not welcome, but I can still feel something bad. It feels heavy; it comes and goes. Some days you can feel more than others, but it's always there. My boyfriend believes me now. He's seen it with his own eyes. Pictures don't lie, and they can't be faked. You can tell when it's faked. It's so obvious.
We want to help them if they are trapped, but we know we can't handle this thing that seems possibly demonic. It's too strong for us. We have tried asking if they needed help but got no answer. I started thinking whatever is here made us think it was a kid needing help to move on because nothing moved on or tried communicating. I'm scared every time I'm alone for long periods. Now I feel like the whispers start, and I feel really like not threatened but intimidated. - Ghost picture submitted by Hl
BIGGER SIZE PICTURE HERE
Categories: satanic_rituals, rituals, basement, mirror, eyes
All haunted towns and cities in Pennsylvania
Lies about Greenville

redpajama_set_name: RedPajamaCommonCrawl


To request a free visitor guide from Frisco-Dillon, Colorado - Weather, please fill out the form below and click "Submit".
Weather information for the Frisco-Dillon area is provided below. Average temperatures, climate details and current forecasts are included.
At over 9,000 feet above sea level, the Frisco-Dillon area has a chilly climate. Summer temperatures are often high, but cold spells dropping into the 40s can happen even in July. Winter nights can sometimes drop well below zero. Dressing in layers is recommended.


Looking back at the secondary leading men of the series I blogged in 2018, I decided to assign an empirical score. How did they rack and stack?
What did I consider salient points about each secondary leading man?
I'm not generally drawn to characters that have a streak of antagonism against the protagonist. I found myself wobbling on this point during the crop of 2018 dramas. I kept forgetting about Mr Sunshine's Goo Dong Mae's 🗡 shades of gray (brutality) and rooting for him to survive. More 🎊surprising🎉 to me was being drawn to Lawless Lawyer's extremely evil An Oh Joo 📿, hitman and all-around minion of the chief antagonist,Judge Cha 👩⚖. Despite his evil deeds, Oh Joo had amazing charisma that took him a long way. My favorite scene was when Oh Joo 📿 came to antagonize the hospitalized Bong Sang Pil 💼👊 and ended up helping his enemy Bong Sang Pil 💼👊 escape the gang of men sent to murder Bong Sang Pil 💼👊.
Mr Sunshine's Kim Hee Sung 🃏 and Criminal Minds' Kang Ki Hyung made MAJOR contributions to their dramas. All of the featured second leads did make a difference (for better or worse) in their dramas.
Hwayugi's Woo Hwi Chul 🐂 was the biggest disappointment … the late-blooming bromance 💙 was TOO LONG in the making. I wanted a Goblin-esque bromance 💙, where they could be at odds with each other, but the brotherhood would win. Did the writer try to avoid copying Goblin❓⁉. Maybe not … pretty much ALL of the demons were written as VERY SELFISH characters.
not generally drawn to characters that have a streak of antagonism …Oh Joo had amazing charisma that took him a long way. My favorite scene was when Oh Joo 📿 came to antagonize the hospitalized Bong Sang Pil 💼👊 and ended up helping his enemy Bong Sang Pil 💼👊 escape the gang of men sent to murder Bong Sang Pil 💼👊.
Oh Joo stole the scene many times. Your favorite scene was one of my favorites too.
There is NO DOUBT that these second leads…made MAJOR contributions to their dramas.
Agree, those in your list were impact players.
Alas, the Goblin bromance was not to be. Missed opportunity.
There are 4 pages, you have to scroll down to bottom on each page and click on the page numbers in the boxes to move to the next page.
Thank you for sharing the link! Interesting how the wedding pics on the third page, her face is artfully not fully shown. I like the story of how they met too.
I suspect hiding her face was to protect Hyukie's non-celebrity wife. I imagine it would be hard to be married to a celebrity; anonymity would offer a bit of a reprieve.


text:
The Provocateur
The podcast for groundbreaking ideas from emerging thinkers
Browse Episodes A-Z by Title
Browse Episodes A-Z by Expert
Browse Episodes by Category
Sciences & Engineering
Tag Archives: poetry
Jason Rudy: Imagined Homelands: Australian Poetry in the 19th Century
Posted on February 20, 2018 by Gah-Kai Leung
Australia is a vast and diverse country, with a culture to match, but its literature has traditionally been underrepresented in academic institutions and it remains marginal to the literary canon. When Australian literature is studied, it typically tends to date from the mid-20th century onwards, not from before the country's federation in 1901. However, in order to get a fuller sense of the modern Australian condition, it may be valuable – or indeed necessary – to turn to the culture of the pre-federation era, such as early Australian poetry. In the writings of Eliza Hamilton Dunlop, Henry Kendall and their contemporaries, we can trace themes which continue to preoccupy Australian writers and artists today, such as the tension between civilisation and wilderness, the horrors of colonialism and the dispossession of Indigenous peoples, and the search for a uniquely Australian mode of cultural expression.
This week, The Provocateur is joined by Jason Rudy, associate professor of English at the University of Maryland, College Park, to discuss the history of Australian poetry in the 19th century. We pick up some of the themes of his book Imagined Homelands, discuss a selection of the major writers of the pre-federation period and uncover what 19th-century Australian literature can offer to readers of contemporary writing.
You can listen to the podcast here: https://provocateurpodcast.files.wordpress.com/2018/02/jason-rudy.m4a
Primary texts:
Eliza Hamilton Dunlop, "The Aboriginal Woman"
Adam Lindsay Gordon, "From the Wreck"
Charles Harpur, various poems
Henry Kendall, "The Wail in the Native Oak"
Henry Lawson, various poems
Banjo Paterson, various poems
Secondary reading:
Ackland, M. (1994) That Shining Band: A Study of Australian Colonial Verse Tradition. Brisbane: University of Queensland Press.
Belich, J. (2009) Replenishing the Earth: The Settler Revolution and the Rise of the Anglo-World, 1783-1939. Oxford: Oxford University Press.
Huggan, G. (2007) Australian Literature: Postcolonialism, Racism, Transnationalism. Oxford: Oxford University Press.
McQueen, H. (1976) A New Britannia: An argument concerning the social origins of Australian radicalism and nationalism, rev. ed. Sydney and Melbourne: Penguin.
Rudy, J. R. (2017) Imagined Homelands: British Poetry in the Colonies. Baltimore, MD: Johns Hopkins University Press.
Wright, J. (1965) Preoccupations in Australian Poetry. Oxford: Oxford University Press.
Posted in Cultures	| Tagged 19th century, Australia, colonialism, empires, history, immigration, Jason Rudy, literature, poetry, postcolonialism, Romanticism, transnationalism, University of Maryland, Victorian	| Leave a comment
James Corke-Webster: The Persecution of Christians in the Ancient World: From the Ground Up (50th Episode)
Nick Jones: The Aesthetics of 3D Cinema
Seth Bernstein: Across the Iron Curtain: The Repatriation of Soviet Citizens After WWII
Robin Hamon: Paradise Revisited: Ecocriticism and the Eden Narrative
Fiona Malone: Atrial Fibrillation: The Silent Killer
Marcello Francioni: Masculinities and Sexuality in Contemporary Urban Japan (LGBT History Month Miniseries 2018)
Subscribe to New Episodes via Email
Enter your email address to subscribe to the podcast and receive notifications of new episodes by email.
Subscribe to New Episodes via RSS
Justice Everywhere
Northern Slant
Follow The Provocateur on WordPress.com


text:
Texas Man with Multiple Sclerosis seeks Legalization of Medical Marijuana
Posted by hempnewstv under Uncategorized | Tags: Legalization, Marinol, Medical Marijuana, Multiple Sclerosis, Texas |
GARLAND, Texas – For 22 years, Tim Timmons has fought the pain of multiple sclerosis.
Prescribed medicine couldn't stop the spasms or help him sleep, he said. Ultimately, Timmons said, relief came in the form of illegal marijuana, which is why he is now pushing for the drug to be legalized.
While 13 states have legalized medical marijuana, Texas isn't one of them. Timmons said he wants that to change since he feels like he's been forced to support organized crime.
"I have to support black market crime, but they're the ones forcing me to do it," he said. "I don't want to support organized crime more than anyone would."
Studies have shown that marijuana can ease muscle spasms and numb pain.
The Texas legislature voted down the last three medical marijuana bills that would have given doctors the authority to prescribe the drug.
In the past, lawmakers defended the ban on medical marijuana by citing the American Medical Associations' position on the topic. But, after 72 years, that position may be changing. The AMA announced last Tuesday that it's reversing its policy of classifying the drug as a Schedule 1 narcotic, stating that the issue needs to be reviewed. The announcement was in response to a new medical report by the AMA's Council on Science and Public Health, which detailed various medical benefits.
Many pharmacists and doctors argue that those benefits can be obtained through legalized drugs that contain the active ingredient in marijuana, THC.
"What they fail to understand is there is THC available in a legal dose called Marinol," said Donna Barsky, a Plano pharmacist. "It's a prescription item. All a doctor has to do is write a prescription for it."
Opponents of medical marijuana say it's healthier because smoking the drug can pull unhealthy substances into the lungs.
"Marinol just plain doesn't work, or causes worse situations than you had starting off," Timmons said.
Another medical marijuana bill is expected to be filled in the Texas legislature in 2011. by Steve Stoler Source.
Tags: Legalization, Marinol, Medical Marijuana, Multiple Sclerosis, Texas


text:
What is the meaning of Memorial Day?
05/30/2011 Wintery Knight	1 Comment
Arlington National Cemetary
What is Memorial Day? It's the day that we remember all those brave men and women who have sacrificed to protect our liberties and our lives so that we could be safe from harm.
This video may help you to understand.
From Hot Air, a quote from Ronald Reagan.
Memorial Day is an occasion of special importance to all Americans, because it is a day sacred to the memory of all those Americans who made the supreme sacrifice for the liberties we enjoy. We will never forget or fail to honor these heroes to whom we owe so much. We honor them best when we resolve to cherish and defend the liberties for which they gave their lives. Let us resolve to do all in our power to assure the survival and the success of liberty so that our children and their children for generations to come can live in an America in which freedom's light continues to shine.
The Congress, in establishing Memorial Day, called for it to be a day of tribute to America's fallen, and also a day of national prayer for lasting peace. This Nation has always sought true peace. We seek it still. Our goal is peace in which the highest aspirations of our people, and people everywhere, are secure: peace with freedom, with justice, and with opportunity for human development. This is the permanent peace for which we pray, not only for ourselves but for all generations.
The defense of peace, like the defense of liberty, requires more than lip service. It requires vigilance, military strength, and the willingness to take risks and to make sacrifices. The surest guarantor of both peace and liberty is our unflinching resolve to defend that which has been purchased for us by our fallen heroes.
On Memorial Day, let us pray for peace — not only for ourselves, but for all those who seek freedom and justice.
And check some of my Medal of Honor posts:
Navy SEAL Michael Murphy awarded Medal of Honor
How Sal Giunta earned a Medal of Honor and lived to tell about it
What can Christians learn from Rob Miller's Medal of Honor story?
If you want to help out our troops, you can send them things through Soldier's Angels.
God Bless Our Troops!
UPDATE: I am listening to this podcast from the Heritage Foundation about the origin and meaning of Memorial Day.
For more reading, why not check out some of the military bloggers?
Froggy Ruminations
Adventures of Chester
Air ForceAll Gave SomeArmyBraveryFreedomGratefulGratitudeHonorLibertyMarinesMedal of HonorMemorial DayMilitaryNavyProtectRangersRememberRemembranceRightsSacrificeSelf-sacrificeSome Gave AllSpecial ForcesTroopsUSAValor
Previous PostRepublicans respond to pro-lifers desire to cut UN abortion fundingNext PostRepublican Allen West debates economic policy on Fox News Sunday
One thought on "What is the meaning of Memorial Day?"
Glenn E. Chatfield says:
The problem is that nowadays it has become pretty much a day to honor ALL dead people. Too many people are forgetting the importance of days like this.


text:
Pickering Football Club, commonly known as Pickering FC, is a Canadian semi-professional soccer club based in Pickering, Ontario that plays in League1 Ontario. The club is currently on hiatus for the 2023 season. The club was founded in 1984 as a youth soccer club and added its semi-professional club in League1 Ontario in 2014. The team plays home games at Kinsmen Park.

The club was one of the ten original founding men's teams in League1 Ontario, which was established in 2014, as well as one of eight original founding women's teams of the League1 Ontario women's division which was established in 2015.  The semi-professional team was originally known as Durham United FC from 2014 until 2015, and then Durham United FA from 2016 until 2019, when they re-branded as Pickering FC. Also until 2019, their youth OPDL teams were known simply as United FA.

History

In 2014, the semi-professional club was established by Pickering Soccer Club to play in the newly formed League1 Ontario as one of the founding members, with a placeholder name of Durham Power FC, referencing their youth competitive teams which went by the name Pickering Power, whose nickname references the Pickering Power Plant in the city. However, in an effort to be inclusive of the larger region beyond Pickering, the club was ultimately named Durham United FC.  This inclusivity allowed the club to form working relationships with other local clubs - Oshawa Kicks SC and West Rouge SC - to participate in the club, although Oshawa Kicks later formed their own club in 2019. To recognize this partnership, in 2016, the club changed the FC to FA to be known as Durham United Football Alliance. Durham United played their first home match against Internacional de Toronto at Kinsmen Park in Pickering, Ontario on June 8, 2014, defeating the visitors 2–0.

In 2015, they added a women's club to participate in the inaugural season of the League1 Ontario women's division. The women's team won the inaugural 2015 league championship. After playing in the league's first four seasons, the men's team went on hiatus for the 2018 season (while the women's club remained active in their division), before returning to the league in 2019. In 2018, the women's team once again won the league championship, after winning the league playoffs.

For the 2020 season, the club re-branded as Pickering Football Club, matching the name of the youth club, who changed their name from Pickering Soccer Club. After opting out of the 2021 seasons, following the COVID-19 pandemic, it was announced that the club would return to both the male and female divisions, under a new ownership group led by led by principal investors Ritchie Jeune and Chris Rivett, who co-own USL League Two side South Bend Lions FC (Jeune also owns English sixth tier side Kettering Town F.C. and Chinese club Shantou Lions).

In 2023, the club withdrew from the Premier Division in both the men's and women's divisions in League1 Ontario, after being unable to find a club partner to operate the team, although they will continue to field teams in the reserve division for each gender, with the hope of returning to the top division in 2024.

Seasons

Men

Women

Notable former players
The following players have either played at the professional or international level, either before or after playing for the League1 Ontario team:

Men

Women

References

External links

Soccer clubs in Ontario
League1 Ontario teams
Pickering, Ontario

redpajama_set_name: RedPajamaWikipedia


We are familiar with many local jurisdiction's building and planning departments, as well as processing of plans through the Division of State Architect, California Department of Education, and the Office of Public School Construction.
COPYRIGHT 2018. TAM+CZ ARCHITECTS, INC.


The Swan With Two Necks in Blackbrook, Staffordshire, reopens on Friday 15 February following a major makeover.
Owned by the Parogon Group, the gastro pub on Nantwich Road is having its interior completely redesigned.
It will feature a new bar, sliding doors, booth seating and a more enclosed fireplace area to accommodate private parties of up to 30 people. A 'small plates' section is being added to the menu.


text:
The Lovable Mrs. Bennet Of Pride And Prejudice
The general impression of Austen's novels, which critic D. W. Harding says relieved him of any desire to read them, is that they offer readers a humorous refuge from an uncertain world. In his article "'Regulated Hatred': An Aspect in the Work of Jane Austen," Harding claims that this impression is misleading and that Jane Austen is actually very critical of her society, covertly expressing downright hatred for certain members of it by means of caricature. Mrs. Bennet, from Austen's Pride and Prejudice, is one of these "comic monster[s]". Harding claims that in order to view Mrs. Bennet as anything other than utterly detested by Austen one must ignore this Austen's summary of her at the end of Chapter One: "She was a woman of mean understanding, little information, and an uncertain temper."1 Actually, Austen's Mrs. Bennet is much more complex than Harding acknowledges. Austen's initial summary notwithstanding, Pride and Prejudice even looks at Mrs. Bennet forgivingly. Her behavior is often provoked by her environment: both her society and her family. Because she helps, or tries to help, her family, Mrs. Bennet's ludicrous actions can even be seen as lovable.
Mrs. Bennet's society and family condemn her to a series of conventional roles. Mrs. Bennet snags a husband by playing the role of the good-humored, pretty young woman. Mr. Bennet also believes that good looks will make a good wife, and he marries her. However, once she and Mr. Bennet take off their courting masks and Mr. Bennet discovers her "weak understanding and illiberal mind, [which] had very early in their marriage put an end to all real affection for her" (155), the marriage turns sour.2 Initially, this description may seem to support Harding's point of view: we could safely blame Mrs. Bennet for the failures of her marriage. But if we view the beginning of her marriage in Mrs. Bennet's terms, Mr. Bennet turns out to be as disappointing a husband as she is a wife. Unlike her husband, Mrs. Bennet was not looking for strong understanding or a liberal mind in her partner. She was looking for affection and financial security; she has been denied both. Mr. Bennet has chosen to withdraw his affection (Mrs. Bennet likely does not understand his reasons) and, the family lacking sons and his estate being entailed to the nearest male relative, he cannot promise his wife permanent security.
Mrs. Bennet is not one to hold back her feelings. Mr. Bennet even makes sport of her ever-present nerves: "They are my old friends. I have heard you mention them with consideration these twenty years at least" (4). Yet, Mrs. Bennet's society pressures women to be emotionally effusive. It is self-control that almost costs daughter Jane Bennet her marriage. While Jane remains unsure of her feelings for Bingley, she holds back-"as yet, she cannot even be certain...
Find Another Essay On The Lovable Mrs. Bennet of Pride and Prejudice
The Ways the Theme of Pride and Prejudice is Revealed Through the Characters of Elizabeth Bennet and Darcy
1393 words - 6 pages The Ways the Theme of Pride and Prejudice is Revealed Through the Characters of Elizabeth Bennet and Darcy In Austen's time it was typical of people of a higher status to look down on people below them; to be totally blinded by pride and to be prejudiced against those who have less wealth, connections and social status than them. People of a lower status also were prejudice against those higher than themselves. This is
Comparing Elizabeth Bennet and Charlotte Lucas in Pride and Prejudice
1509 words - 6 pages her physical appearance. She is referred to as plain by Mrs. Bennet and even her own mother views her as such, which can be seen when Mrs. Bennet states, 'she is very plain. Lady Lucas herself has often said so, and envied me Jane's beauty. ' Charlotte is aware that she is not the most beautiful woman, and she states this when she describes herself as having never been handsome . These physical attributes of both characters, do indeed affect their
"Pride and Prejudice" - discusses the difference between Lady Catherine and Elizabeth Bennet
583 words - 2 pages against each other. Most noticeable to the novel is that Lady Catherine seems to completely lack the capacity for reflection and self-awareness, while Elizabeth masters these traits and is able to use them to strengthen her personal traits. The two personalities of Lady Catherine and Elizabeth are so offset that it creates a feel of constant hostility between the two characters. Jane Austen's novel, Pride and Prejudice, represents the qualities of independence and lack of self-awareness between the two characters, Lady Catherine and Elizabeth Bennet, who differ completely.
Analysis of passage of Jane Austen's Pride and Prejudice, particularly the characterisation of Elizabeth Bennet as well as the major concerns of the novel
1870 words - 7 pages whole letter, though scarcely knowing any thing of the last page or two, put it hastily away, protesting that she would not regard it, that she would never look in it again.The passage under scrutiny occurs more than half way through Pride and Prejudice and so follows a good deal of previous development of the character of Elizabeth Bennet. The major themes of the novel outlined in its title, accompanied by romance, society, and the overwhelming
Social Status in Mrs. Dalloway and Pride and Prejudice
1646 words - 7 pages Social class is one of the main topics that are examined in both Pride and Prejudice and Mrs. Dalloway. Both Jane Austen and Virginia Woolf look at how it affects the characters and their views of each other. In Pride and Prejudice, social class is very pronounced, throughout the entire book. Looking at the Bennet family. They are considered middle class, because of this they are still able to socialize with the upper-class Darcy's and
Elizabeth Bennet vs. Catherine Earnshaw in Pride and PRejudice and Wuthering Heights
1380 words - 6 pages Main female characters always have a distinct personality that affects their choices and the outcome of their lives. Strong, independent, sarcastic, and witty are all what comes to mind when having to describe Elizabeth Bennet from Pride and Prejudice, the second of five daughters in a middle class family. She is a very intellectual individual who attempts to find romance although surrounded by the limitations and prejudice of social classes
Essay on Mr. and Mrs. Bennet's Parenting in Pride and Prejudice
1494 words - 6 pages Analysis of Mr. and Mrs. Bennet's Parenting in Pride and Prejudice The roles of Mr. and Mrs. Bennet in Jane Austen's novel Pride and Prejudice are contrasted between a father who cares about what's inside of people and a mother who only worries about vanity and appearance. Mr. and Mrs. Bennet's parental guidance is unique to their personalities. Because of their two opposing personas, Mr. and Mrs. Bennet's ideas of marriage are
Contrast and compare the two marriage proposals made to Elizabeth Bennet in the novel "Pride and Prejudice" by Jane Austin: Mr Collins' proposal to Elizabeth and Darcy's proposal to Elizabeth
4647 words - 19 pages Hannah GethinContrast and compare the two marriage proposals made to Elizabeth Bennet in the novel: Mr Collins' proposal to Elizabeth and Darcy's proposal to ElizabethJane Austen lived in a mercenary world and this is reflected in her novel. In "Pride and Prejudice" no secret is made of the need to marry for money. Jane Austen reflects different types of marriage in her novel. There is mercenary marriage, brought about solely for economic
The roles of pride and prejudice in Pride and Prejudice
1413 words - 6 pages Becoming an immediate success in the contemporary novel public in early nineteenth century, Pride and Prejudice has proved to be the most popular of Jane Austen's novels and remains a classic masterpiece two centuries later. The title itself describes the underlying theme of the book. Pride and prejudice, intimately related in the novel, serve as challenges to the cherished love story of Darcy and Elizabeth. It is interesting to see how these
Pride and the Prejudice
1537 words - 6 pages "The power of doing anything with quickness is always prized much by the possessor, and often without any attention to the imperfection of the performance." (1) Said Mr Darcy. This is one of the world's most popular novels, Jane Austen's Pride and Prejudice has charmed readers since its publication of the story of the amusing Elizabeth Bennet and her relationship with the aristocrat Fitzwilliam Darcy. During this essay it will explore the
Exploring the Theme of Pride and Prejudice
2400 words - 10 pages their social connections. Austen subtly mocks people who act like this, and some original readers, with mothers like Mrs Bennet or uncles like Mr Collins would have been able to relate to Elizabeth's feelings of embarrassment about her mothers behaviour in public, or her uncles vain pride in his social connections. Original readers may also have been able to relate to the strict codes of social conduct in early nineteenth century Britain
Mrs. Bennet: Pride And Prejudice Essay
1900 words - 8 pages In Jane Austen's novel, Pride and Prejudice, Mrs. Bennet, the mother of the protagonist, Elizabeth, is generally portrayed as a buffoon who is an adversary for he daughter that is trying to force her into a marriage she does not want. One may wonder how she can be justified in any way, considering that she is known to embarrass her family members and behave idiotically. However, in the time period they live in, a marriage is necessary for all of
Elizabeth Bennet In Pride And Prejudice
1703 words - 7 pages . However, Jane Austen does in fact present a character that ultimately triumphed over the particular stereotype of women in pursuit of her own ideals. Elizabeth Bennet, the protagonist and heroine of Pride and Prejudice, conveys a powerful sense of independence, remains very outspoken of her views, and a reason for marrying which all contradict the stereotypical woman of the time. Elizabeth is an extremely atypical female for her time, for she
Pride And Prejudice By Lydia Bennet
1283 words - 5 pages Elizabeth RussellAssignment 1: Pride and PrejudiceJune 16, 2014I am Miss Lydia Bennet. I am fifteen years old and the youngest sister to Jane, Elizabeth, Mary, and Kitty. I quite like to shop for beautiful things like bonnets and ribbon, and I know all the best ways to get the attentions of young men. Recently, a most handsome and wealthy gentleman by the name of Charles Bingley had come to live at the manor of Netherfield Park. His arrival
'pride And Prejudice' Essay Mrs. Bennet Is Right To Think She Can Influence Her Daughters In Whom They Should Marry
616 words - 2 pages In Jane Austen's 'Pride and Prejudice', the character of Mrs. Bennet is seen as a rather bothersome mother desperately trying to marry her daughters off. However, her concern of her daughters' marriages is within reason in the restricted and patriarchal society they live in. Being their mother, Mrs. Bennet has the right to think that her wishes would be respected. Not only would her daughters' future dignity and status be at risk if they do not
Idealism in Let America Be America Again by Langston Hughes
Symbolism in A Doll's House by Henrik Ibsen
Stereotypes and Stereotyping of Native American in The Pioneers
Exemplification Essay: Welfare, A Vicious Circle
A Comparison of Homeric Formalism in The Iliad and The Odyssey
Comparing The Indian to His Love and The Hosting of the Sidhe
Existentialism in Franz Kafka's The Metamorphosis and The Hunger Artist
The Greatest Tunnel Ever! Essay


text:
Q: How to improve the accuracy on this ios app that uses a coreml model I am trying to build an app that uses a keras, mnist trained model as the backend that recognises digits in the app.
Here is the app:
https://github.com/LOLIPOP-INTELLIGENCE/iOS-coreml
Try to run the app and see the results
I just need help to improve the accuracy in the app
Try digits like 9, 6 and 1
Thanks

A: That question is extremely broad. Plus you're not making it easy to look at the code. I suggest you compute the precision and recall for all the digits to see how well the model works on each digit.

redpajama_set_name: RedPajamaStackExchange


text:
Q: Lemma to prove Poincaré-Bendixson theorem I'm trying to understand the following proof of the lemma used as a part of Poincaré-Bendixson Theorem, but I don't get it the blue equality in the proof. Can someone explain it?
Lemma. If $p \in \Sigma \cap \omega(\gamma)$, where $\Sigma$ is a transversal line of $X$ and $\gamma = \{\varphi(t)\}$ an orbit of $X$, then $p$ can be expressed as a limit of a sequence of points $\varphi(t_n) \in \Sigma$, where $t \to +\infty$.
Proof. Let $\gamma = \{\varphi(t)\} = \{\varphi(t,q)\}$  and $p \in \Sigma \cap \omega(\gamma)$. Consider a neighborhood $V$ and the function $\tau:V \to \mathbb{R}$ given by the theorem below. By definition we know that exists a sequence $(\bar{t}_n)$ such that $\bar{t}_n \to \infty$ and $\varphi(\bar{t}_n) \to p$ when $n \to \infty$.
Illustration of the situation
Then exists $n_0 \in \mathbb{N}$ such that $\varphi(\bar{t}_n) \in V, \forall n\geq n_0$. Let $t_n = \bar{t}_n + \tau(\varphi(\bar{t}_n))$ for $n \geq n_0$, then
\begin{equation}
\varphi(t_n) = \color{blue}{\varphi(\bar{t}_n + \tau(\varphi(\bar{t}_n)),q) = \varphi(\tau(\varphi(\bar{t}_n)),\varphi(\bar{t}_n))}.
\end{equation}
By defition of $\tau$ we obtain that $\varphi(t_n) \in \Sigma$. As $\tau$ is continuous and $\tau(\varphi(\bar{t}_n)) \to \tau(p) = 0$,
\begin{equation}
\lim \varphi(t_n) = \lim \varphi(\tau(\varphi(\bar{t}_n)),\varphi(\bar{t}_n)) = \varphi(0,p) = p.
\end{equation}
Theorem. Let $\Sigma$ be a transversal section of $X$. For any $p \in \Sigma$ exists a $\epsilon = \epsilon(p)$, a neighborhood $V$ of $p$ in $\mathbb{R}^n$ and a function $\tau: V \to \mathbb{R}$ such that $\tau(V\cap \Sigma) = 0$ and

*

*for all $q \in V$, the solution $\varphi(t,q)$ of $X|_V$ is defined and 1-1 in $J_q = (-\epsilon+\tau(q), \epsilon + \tau(q))$;

*$\xi(q) = \varphi(\tau(q),q) \in \Sigma$ is the only point where $\varphi(\cdot,q)|_{J_q}$ intercept $\Sigma$. In particular, $q \in \Sigma \cap V \iff \tau(q)=0$;

*$\xi: V \to \Sigma$ is $C^k$ and $D\xi(q)$ is surjective for any $q \in V$.
Notes.

*

*$X: \Delta \subset \mathbb{R}^n \to \mathbb{R}^n$ is the vector field associate with the ode $x'=X(x)$;

*$\varphi(t, q)$ is the solution the ode above that passes through the point $q$.


text:
NFL Midseason Report: The Storylines We Got Wrong
2017 Midseason
Remember when the Raiders and Bucs were scorching hot, the Jets were tanking, the Giants were going to rule and the Pats would be undefeated? In hindsight, our foresight regarding the season could have used some corrective lenses
By Conor Orr
Digesting football content anytime between May and August is like being a lightly filled balloon in a windstorm. The momentum of certain gusts can take you places you never thought you could reasonably go—like picking the Tampa Bay Buccaneers to win the NFC—and push you away from the common-sense thoughts that often yield the most accurate forecasts of the upcoming season.
After a scroll through my own summer of content, as well as those of some contemporaries in the field, here are a few of the storylines we trumpeted this offseason that seem a little ridiculous now. May it serve as a reminder for all of us to stop, look and listen before we hit "publish."
The Patriots will go undefeated
A favorite of mine during the offseason. With Ryan Tannehill getting injured, the Jets purging their roster of valuable veterans and the Bills changing coaches, it felt like a path was being machine-tamped all the way to the playoffs for the Patriots … and then they lost the season-opener to a stunningly efficient Chiefs team, 42-27. Don't get me wrong—I still believe the Patriots will win the Super Bowl, but they won't reach the game in 2007 juggernaut fashion. Losing the opener on purpose to motivate his team throughout the remainder of the regular season could go down as one of Bill Belichick's craftiest maneuvers yet.
The Jets are tanking
As it turns out, cutting underperforming high-salary vets isn't that bad an idea. General manager Mike Maccagnan was throttled by the local and national press for about four months after leaving his team without the services of Brandon Marshall, Darrelle Revis, Nick Mangold, Antonio Cromartie, Eric Decker and David Harris. (I personally argued this was bad for Christian Hackenberg's development—double points!) So far, it the Jets have missed out on 26 receptions for 247 yards and a touchdown from Decker. Marshall is out for the season with an ankle injury. Mangold is still a free agent, as are Cromartie and Revis. Harris has played in five games, logging two tackles. While I eventually warmed to the idea, my reasoning was because the Browns are doing something similar in Cleveland and seem to be finally trending upward. Which brings me to my next point …
The Browns have finally turned the corner
I think there are a lot of forces in and around the NFL working against the Browns' unorthodox executive team. Think of what would happen if a Harvard-educated trio lifted Cleveland from despair, and only one of them had a traditional football scouting background. It would produce a Major League Baseball-like upheaval of front offices everywhere. That being said, the Browns aren't helping their case much. After DeShone Kizer took the starting quarterback job from Brock Osweiler in the preseason and Cleveland played Pittsburgh tough in the opener, visions of 6-10 danced in the heads of Browns fans everywhere. Alas, Kizer has been benched twice since. The team denies botching a deal for Cincinnati backup A.J. McCaron at the trade deadline. The Browns are still winless, and I cannot imagine coach Hue Jackson is interested in staying much longer.
The Raiders and Buccaneers will emerge as the teams of 2017
In the case of Tampa Bay, this is the "Hard Knocks" effect. We're conditioned by HBO to fall in love with characters during training camp every summer, and sometimes it leads us astray. You mean to tell me, they're adding Ryan Fitzpatrick and a 30-year-old DeSean Jackson to a roster that missed the playoffs last year?! Where do I sign up!? In the case of Oakland, this is a genuine surprise. The Raiders can still make the playoffs (in our midseason picks, I predict them to do so), but it does serve as a cautionary tale to anyone who assumes any team but New England can pick up where it left off the year before.
Tom Savage and Mike Glennon will play all of 2017
It seems that we all turn in to Ted Thompson sometime between the end of a season and the start of the next draft and bet that our team can neatly select a rookie quarterback high in the draft, not play him for three years and assume he'll soak up all the necessary skills and knowledge with little to no practice time like some kind of football Thuja tree. Then, when (insert placeholder veteran here) underperforms in the first preseason game, we suddenly realize why the team drafted a rookie in the first place. At the same time, shame on the NFL teams that continue to insist this is a realistic possibility anymore. Alex Smith holding off Patrick Mahomes is a minor miracle to this point. The rest of the coaches who pound the table insisting (Veteran placeholder) knows the offense! (Veteran placeholder) is going to surprise some people! (Hotshot rookie) will watch and learn! have to feel as crazy as the fans who sit there trying to understand it.
The Giants will roll to the NFC East title
Buying into the Giants this year was like purchasing a mansion with water damage. Any brief peeks beyond the grand façade should have scared people away. New York scored fewer than 20 points in more than half of its games last year with Odell Beckham. The Giants didn't upgrade the offensive line. Eli Manning got a year older. While there is still half a season remaining, and time for coach Ben McAdoo to show the fan base that he can pick himself—and a team—up off the ground, this is looking like one of the most stunning misfires in recent prediction history. Sunday's 51-17 home drubbing by the Rams was a lesson to anyone who tries to make a living forecasting what an NFL season will look like.
Speed round…
And with a nod to my former workplace, some headlines I find funny in hindsight: Are the Lions talking extension with Eric Ebron? … The 49ers insist they aren't shopping NaVorro Bowman … Adrian Peterson on Saints offense: What will opposing defenses do to stop us? … The Browns could end up using the versatile Jabrill Peppers on offense … Eli Manning says Brandon Marshall is similar to Plaxico Burress … Kony Ealy is super excited to team up with Trey Flowers in New England … Sammy Watkins: My goal is to stay in Buffalo forever … Emmanuel Sanders says new Broncos offense has us 'really throwing the ball around.
Anyone else think we should just all take May through July off?
SIGN UP FOR THE MMQB NEWSLETTER. Get "The Morning Huddle" delivered to your inbox first thing each weekday, by going here and checking The MMQB newsletter box. Start your day with the best of the NFL, from The MMQB.
Question or comment? Email us at talkback@themmqb.com.
2017 midseason report


text:
var lightResource,
	onRequestCalls = 0,
	uuid = process.argv[ 2 ],
	utils = require( "../../assert-to-console" ),
	device = require( "../../../index" )(),
	settings = {
		role: "server",
		connectionMode: "acked"
	};

console.log( JSON.stringify( { assertionCount: 5 } ) );

function cleanup() {
	utils.assert( "ok", onRequestCalls > 0, "Server: device.server.onrequest has been called" );
	utils.assert( "strictEqual", lightResource.properties.increment, 11,
		"Exactly 11 notifications were delivered (the last one with noObservers)" );
	console.log( JSON.stringify( { killPeer: true } ) );
	process.exit( 0 );
}

function lightResourceOnRequest( request ) {
	if ( request.type === "retrieve" || request.type === "observe" ) {
		request.sendResponse( null );
	}
}

function testOnRequest() {
	onRequestCalls++;
}

// After we've sent out ten notifications, we wait for the client to remove itself from the list of
// observers, and then we send out a final notification which we expect to fail in a certain way.
function assertNotifyFailure() {
	var waitForObserverListToEmpty = setInterval( function() {
		if ( device.server._interestedObservers.length === 0 ) {
			clearInterval( waitForObserverListToEmpty );
			lightResource.properties.increment++;
			device.server.notify( lightResource.id, "update", [ "increment" ] ).catch(
				function( error ) {
					utils.assert( "strictEqual", error.noObservers, true,
						"Server: device.server.notify() fails with noObservers when there are " +
						"no observers" );
					cleanup();
				} );
		}
	}, 500 );
}

device.configure( settings ).then(
	function() {
		utils.assert( "ok", true, "device.configure() successful" );

		device.server.registerResource( {
			url: "/a/" + uuid,
			deviceId: uuid,
			connectionMode: device.settings.connectionMode,
			resourceTypes: [ "core.light" ],
			interfaces: [ "oic.if.baseline" ],
			discoverable: true,
			observable: true,
			properties: { increment: 0 }
		} ).then(
			function( resource ) {
				utils.assert( "ok", true, "registerResource() successful" );
				lightResource = resource;
				device.server.addEventListener( "request", lightResourceOnRequest );
				device.server.onrequest = testOnRequest;
				console.log( JSON.stringify( { ready: true } ) );
			},
			function( error ) {
				utils.die( "registerResource() failed with " + error +
					" and result " + error.result );
			} );
	},
	function( error ) {
		utils.assert( "ok", false,
			"device.configure() failed with " + error + " and result " + error.result );
	} );

// Notify ten times and then stop this interval
var notifyIntervalId = setInterval( function() {
	var haveObservers = false;

	if ( !lightResource ) {
		return;
	}

	device.server.notify( lightResource.id, "update", [ "increment" ] ).then(
		function() {

			haveObservers = true;
			lightResource.properties.increment++;
			if ( lightResource.properties.increment === 10 ) {

				// After ten notifications we wait for the list of observers to go empty so we can
				// assert that notify() fails with noObservers: true
				clearInterval( notifyIntervalId );
				assertNotifyFailure();
			}
		},
		function( error ) {
			if ( haveObservers ) {
				utils.die( "notify() failed with " + error + " and result " + error.result );
			}
		} );
}, 1000 );

redpajama_set_name: RedPajamaGithub


We make it simple & convenient for you to cover your storage invoice. You can do it on line or go to our centre and get our payment kiosk at front lobby. It's as simple as 1-2-3!
When you rent a storage device from us you get the additional assurance of 24/7 protection & year-round safety. We guarantee that you possessions will probably remain secure and safe with us!
For your items that need security against Oklahoma's intense summer and harsh winter weather temperatures, we offer climate-controlled features as an added bonus.
Whether you've got a small or a lot to put away our self-storage center offers and broad variety storage units with all the measurements you need to easily store all your precious possessions.
In Self Storage in Bixbywe really do keep things personal. Your own personal code enables you accessibility in our digital gate 24/7/365. The exact same code resets a protective alert in your storage device upon your departure until you return with the identical code. In addition, our center is monitored 24/7 year-round to make sure our customers receive the very best in security & security. We realize the reason you prize your hard-earned possessions and ensure their security while beneath our roof. Safety first!
Convenience also tops our list of innovative capabilities. You are able to arrange your move to one of our components without leaving home. Or choose a brief drive from your home or workplace to the heart of Bixby that brings you to our on-site, self-service kiosk. You can even pay online.


I have a special place in my heart for Christmas stories and this one is no exception. I have not read many of Johanna Lindsey's books and some how I have missed the Malory clan. In my spare time, I am going to dig further into this family of high born scoundrels.
In this installment of the Malorys, there is much tension afoot. James and his wife are experiencing some marital conflict. Of course, James has no idea why. Men are always the last to know, aren't they? Jason, the Marquis of Haverston, is unable to convince the love of his life and the mother of his child to marry him. To top things off, a mysterious present arrives that will affect the lives of the entire family.
This little novella was a quick and enjoyable read. A long time mystery is brought to light and the holiday season will be full of joy and anticipation for the future. If you have lost faith in miracles, you will once again believe after reading this book. My only complaint was the story ended a little too abruptly for my liking. The story line was rolling along nicely and we get to the end and it goes from point A to point B in no time. I prefer a smoother transition for the finish. I would still recommend the book for a nice holiday read or one to read anytime. Check it out for yourself and experience a true miracle of Christmas.


The OPA Board of Directors is pleased to announce that John Viola has been asked and has agreed to serve as General Manager on a temporary basis. John brings a wealth of business, financial and management experience to this role. As GM he will handle the activities required to maintain day-to-day operations of the OPA and the Transition Management Team will continue to be an available resource to him as needed.
The By-Laws of OPA state, "The General Manager serves as manager of the Association including all departments and units and shall organize, consolidate or combine offices, positions, departments, or units as necessary for efficient operations." In that regard John Viola has asked Colby Phillips to become Director of Operations. The Board supports this appointment and believes Colby Phillips, with her experience and gifts, will as Director of Operations, be a significant addition to the senior leadership our association.
Given the temporary nature of the appointment of John as GM, the Board has already issued a Request for Proposal from qualified property management services firms to provide the operational and management leadership for the Association. Additionally, the Board plans to issue a Request for Proposal for an executive search firm to engage in a competitive process for identifying candidates for the GM position.
This entry was posted in Community News and tagged General Manager, Ocean Pines Board of Directors by Ocean Pines Association. Bookmark the permalink.


This chapter provides a policy-based reading of the drivers, processes, and long-term ramifications of the outsourcing of military support services that has thus far been all but absent from the literature. Military support services represent the vast majority of contracts let by the military, so that the findings arrived at here are seen to be representative for the broader issue of military contractorisation. Focusing on the USA and the UK, the chapter will 1) identify the structural, contextual factors that frame defence services acquisition, 2) map the defence services acquisition "policy network", and 3) identify a systemic bias towards contractorisation. Based on these findings, the chapter will 4) conclude with an outlook over the future of military contractorisation within the political context identified earlier.
This is an Accepted Manuscript of a book chapter published by Routledge in The Routledge Research Companion to Security Outsourcing, 2016, , available online: https://www.routledge.com/The-Routledge-Research-Companion-to-Security-Outsourcing/Berndtsson-Kinsey/p/book/9781472426833, ISBN 9781472426833.


Discussion in 'Technique [BG]' started by SlapHappy99, Aug 15, 2012.
Any tubists (tubers?) out there know about this?
FWIW, Wikipedia says "Most music for the tuba is written in bass clef in concert pitch"
Tuba is written in concert pitch. The thing to remember is that bass is actually a transposing instrument as everything is written one octave higher than concert pitch so the tuba part will be written an octave lower than it would be for bass. Your C in the staff is actually the C two lines below the bass clef in concert pitch.
I had to play a tuba part in a show once on elec bass and as was said it's actually the bass thats writen an octave up, I found in the part I played I did not have to play everything an octave up, there were sections that sounded fine when I played them as if I was reading a bass part, there could be a lot of leger lines going down in your part, those you may want to transpose so they are easer to read. In some of the bigger arangements there are usually more than one bass intrument, maybe bass clari, bass trombone, panio part, if they using your bass in place more than one bass instrument to cover the low end, bieng an octave down may not be a bad thing. If you are able to listen to a recording of what you will be playing with tuba that can really help, you can try experiment with pushing the mid to low mid on your eq slightly to get more of a tuba sound, also quater notes are usually played short with quite a bit of accent even if not written that way, a very quick slide into a phrase from a semitone or tone below can help a bit with that feel in the odd place. I hope there is something here that will help you, I have not done a lot of this.
Thanks for all the replies. The gig went well even though the chart was pretty tricky. I have a lot more respect for tuba players now.


Abstract concepts are characterized by their underlying structure rather than superficial features. Variation in the examples used to teach abstract concepts can draw attention towards shared structure and away from superficial detail, but too much variation can inhibit learning. The present study tested the possibility that increasing attention to underlying structural relations could alleviate the latter difficulty and thereby increase the benefits of varied examples. Participants were trained with either varied or similar examples of a mathematical concept, and were then tested on their ability to apply the concept to new cases. Before training, some participants received pretraining aimed at increasing attention to the structural relations underlying the concept. The relative advantage of varied over similar examples was increased among participants who received the pretraining. Thus, preparation that promotes attention to the relations underlying abstract concepts can increase the benefits of learning from varied examples.


Belt drives are now stronger and last much longer and have many advantages over timing chain sets. Today's belt construction and advanced materials improve performance and extend belt life. Many of the top racing teams in the business choose belt drives to deliver accurate timing and easier timing changes without removing the timing cover. Belt drives also eliminate the harmonic vibration that a timing chain or gear drive can create.


Kelly Design produced this elegant (and award-winning) small format annual report for the Greater Hartford Arts Council. The report was printed on a premium uncoated stock and perfect bound.
Photography was provided by noted area photographers Robert Reichert and Jack McConnell.
This unique, square format booklet was designed to promote the full range of products and services offered by Advanced Printing Services. The booklet was printed utilizing metallic inks throughout and featured a matching square, metallic silver envelope for presentation and mailing purposes.