text:
Hy (the language)¶
This is incomplete; please consider contributing to the documentation effort.
Theory of Hy¶
Hy maintains, over everything else, 100% compatibility in both directions with Python itself. All Hy code follows a few simple rules. Memorize this, as it's going to come in handy.
These rules help ensure that Hy code is idiomatic and interfaceable in both languages.
- Symbols in earmuffs will be translated to the upper-cased version of that string. For example,
foowill become
- UTF-8 entities will be encoded using punycode and prefixed with
hy_. For instance,
⚘will become
♥will become
hy_g6h, and
i♥uwill become
- Symbols that contain dashes will have them replaced with underscores. For example,
render-templatewill become
render_template. This means that symbols with dashes will shadow their underscore equivalents, and vice versa.
Notes on Syntax¶
numeric literals¶
In addition to regular numbers, standard notation from Python 3 for non-base 10
integers is used.
0x for Hex,
0o for Octal,
0b for Binary.
(print 0x80 0b11101 0o102 30)
Underscores and commas can appear anywhere in a numeric literal. They have no effect on the value of the literal, but they're useful for visually separating digits.
(print 10,000,000,000 10_000_000_000)
Unlike Python, Hy provides literal forms for NaN and infinity: NaN, Inf, and -Inf.
string literals¶
Unlike Python, Hy allows only double-quoted strings (e.g.,
"hello"). The
single-quote character
' is reserved for preventing the evaluation of a
form (e.g.,
'(+ 1 1)), as in most Lisps.
Python's so-called triple-quoted strings (e.g.,
'''hello''' and
"""hello""") aren't supported. However, in Hy, unlike Python, any string
literal can contain newlines.
Whether running under Python 2 or Python 3, Hy treats string literals as
sequences of Unicode characters by default, and allows you to prefix a literal
b to treat it as a sequence of bytes. So when running under Python 3,
Hy translates
"foo" and
b"foo" to the identical Python code, but when
running under Python 2,
"foo" is translated to
u"foo" and
b"foo" is
translated to
An identifier headed by a colon, such as
:foo, is a keyword. Keywords
evaluate to a string preceded by the Unicode non-character code point U+FDD0,
"\ufdd0:foo", so
:foo and
":foo" aren't equal. However, if a
literal keyword appears in a function call, it's used to indicate a keyword
argument rather than passed in as a value. For example,
(f :foo 3) calls
the function
f with the keyword argument named
foo set to
3. Hence,
trying to call a function on a literal keyword may fail:
(f :foo) yields
the error
Keyword argument :foo needs a value. To avoid this, you can quote
the keyword, as in
(f ':foo), or use it as the value of another keyword
argument, as in
(f :arg :foo).
discard prefix¶
Hy supports the Extensible Data Notation discard prefix, like Clojure.
Any form prefixed with
#_ is discarded instead of compiled.
This completely removes the form so it doesn't evaluate to anything,
not even None.
It's often more useful than linewise comments for commenting out a
form, because it respects code structure even when part of another
form is on the same line. For example:
=> (print "Hy" "cruel" "World!")
Hy cruel World!
=> (print "Hy" #_"cruel" "World!")
Hy World!
=> (+ 1 1 (print "Math is hard!"))
Math is hard!
Traceback (most recent call last):
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
=> (+ 1 1 #_(print "Math is hard!"))
Hy features a number of special forms that are used to help generate correct Python AST. The following are "special" forms, which may have behavior that's slightly unexpected in some situations.
New in version 0.10.0.
. is used to perform attribute access on objects. It uses a small DSL
to allow quick access to attributes and items in a nested data structure.
For instance,
(. foo bar baz [(+ 1 2)] frob)
Compiles down to:
foo.bar.baz[1 + 2].frob
. compiles its first argument (in the example, foo) as the object on
which to do the attribute dereference. It uses bare symbols as attributes
to access (in the example, bar, baz, frob), and compiles the contents
of lists (in the example,
[(+ 1 2)]) for indexation. Other arguments
raise a compilation error.
Access to unknown attributes raises an
AttributeError. Access to
unknown keys raises an
IndexError (on lists and tuples) or a
KeyError (on dictionaries).
-> (or the threading macro) is used to avoid nesting of expressions. The
threading macro inserts each expression into the next expression's first argument
place. The following code demonstrates this:
=> (defn output [a b] (print a b))
=> (-> (+ 4 6) (output 5))
10 5
->> (or the threading tail macro) is similar to the threading macro, but
instead of inserting each expression into the next expression's first argument,
it appends it as the last argument. The following code demonstrates this:
=> (defn output [a b] (print a b))
=> (->> (+ 4 6) (output 5))
5 10
and is used in logical expressions. It takes at least two parameters. If
all parameters evaluate to
True, the last parameter is returned. In any
other case, the first false value will be returned. Example usage:
=> (and True False)
=> (and True True)
=> (and True 1)
=> (and True [] False True)
and short-circuits and stops evaluating parameters as soon as the first
false is encountered.
=> (and False (print "hello"))
New in version 0.12.0.
Expands to sequence of assignments to the provided name, starting with head. The previous result is thus available in the subsequent form. Returns the final result, and leaves the name bound to it in the local scope. This behaves much like the other threading macros, but requires you to specify the threading point per form via the name instead of always the first or last argument.
;; example how -> and as-> relate
=> (as-> 0 it
... (inc it)
... (inc it))
=> (-> 0 inc inc)
;; create data for our cuttlefish database
=> (setv data [{:name "hooded cuttlefish"
... :classification {:subgenus "Acanthosepion"
... :species "Sepia prashadi"}
... :discovered {:year 1936
... :name "Ronald Winckworth"}}
... {:name "slender cuttlefish"
... :classification {:subgenus "Doratosepion"
... :species "Sepia braggi"}
... :discovered {:year 1907
... :name "Sir Joseph Cooke Verco"}}])
;; retrieve name of first entry
=> (as-> (first data) it
... (:name it))
'hooded cuttlefish'
;; retrieve species of first entry
=> (as-> (first data) it
... (:classification it)
... (:species it))
'Sepia prashadi'
;; find out who discovered slender cuttlefish
=> (as-> (filter (fn [entry] (= (:name entry)
... "slender cuttlefish")) data) it
... (first it)
... (:discovered it)
... (:name it))
'Sir Joseph Cooke Verco'
;; more convoluted example to load web page and retrieve data from it
=> (import [urllib.request [urlopen]])
=> (as-> (urlopen "http://docs.hylang.org/en/stable/") it
... (.read it)
... (.decode it "utf-8")
... (drop (.index it "Welcome") it)
... (take 30 it)
... (list it)
... (.join "" it))
'Welcome to Hy's documentation!
In these examples, the REPL will report a tuple (e.g. ('Sepia prashadi', 'Sepia prashadi')) as the result, but only a single value is actually returned.
assert is used to verify conditions while the program is
running. If the condition is not met, an
AssertionError is
assert may take one or two parameters. The first
parameter is the condition to check, and it should evaluate to either
True or
False. The second parameter, optional, is a label for
the assert, and is the string that will be raised with the
AssertionError. For example:
(assert (= variable expected-value))
(assert False)
; AssertionError
(assert (= 1 2) "one should equal two")
; AssertionError: one should equal two
assoc is used to associate a key with a value in a dictionary or to set an
index of a list to a value. It takes at least three parameters: the data
structure to be modified, a key or index, and a value. If more than
three parameters are used, it will associate in pairs.
Examples of usage:
... (setv collection {})
... (assoc collection "Dog" "Bark")
... (print collection))
{u'Dog': u'Bark'}
... (setv collection {})
... (assoc collection "Dog" "Bark" "Cat" "Meow")
... (print collection))
{u'Cat': u'Meow', u'Dog': u'Bark'}
... (setv collection [1 2 3 4])
... (assoc collection 2 None)
... (print collection))
[1, 2, None, 4]
assoc modifies the datastructure in place and returns
break is used to break out from a loop. It terminates the loop immediately.
The following example has an infinite
while loop that is terminated as soon
as the user enters k.
(while True (if (= "k" (raw-input "? "))
(print "Try again")))
comment macro ignores its body and always expands to
Unlike linewise comments, the body of the
comment macro must
be grammatically valid Hy, so the compiler can tell where the comment ends.
Besides the semicolon linewise comments,
Hy also has the
#_ discard prefix syntax to discard the next form.
This is completely discarded and doesn't expand to anything, not even
=> (print (comment
Suprise!

...
You'd be surprised what's grammatically valid in Hy.

...
(Keep delimiters in balance, and you're mostly good to go.)
)
... "Hy")
None Hy
=> (print #_(comment
Suprise!

...
You'd be surprised what's grammatically valid in Hy.

...
(Keep delimiters in balance, and you're mostly good to go.)
))
... "Hy")
cond can be used to build nested
if statements. The following example
shows the relationship between the macro and its expansion:
(cond [condition-1 result-1]
[condition-2 result-2])
(if condition-1 result-1
(if condition-2 result-2))
If only the condition is given in a branch, then the condition is also used as the result. The expansion of this single argument version is demonstrated below:
(cond [condition-1]
(if condition-1 condition-1
(if condition-2 condition-2))
As shown below, only the first matching result block is executed.
=> (defn check-value [value]
... (cond [(< value 5) (print "value is smaller than 5")]
... [(= value 5) (print "value is equal to 5")]
... [(> value 5) (print "value is greater than 5")]
... [True (print "value is something that it should not be")]))
=> (check-value 6)
value is greater than 5
continue returns execution to the start of a loop. In the following example,
(side-effect1) is called for each iteration.
(side-effect2), however,
is only called on every other value in the list.
;; assuming that (side-effect1) and (side-effect2) are functions and
;; collection is a list of numerical values
(for [x collection]
(side-effect1 x)
(if (% x 2)
(side-effect2 x))
dict-comp is used to create dictionaries. It takes three or four parameters.
The first two parameters are for controlling the return value (key-value pair)
while the third is used to select items from a sequence. The fourth and optional
parameter can be used to filter out some of the items in the sequence based on a
conditional expression.
=> (dict-comp x (* x 2) [x (range 10)] (odd? x))
{1: 2, 3: 6, 9: 18, 5: 10, 7: 14}
do is used to evaluate each of its arguments and return the
last one. Return values from every other than the last argument are discarded.
It can be used in
list-comp to perform more complex logic as shown in one
of the following examples.
Some example usage:
=> (if True
... (do (print "Side effects rock!")
... (print "Yeah, really!")))
Side effects rock!
Yeah, really!
;; assuming that (side-effect) is a function that we want to call for each
;; and every value in the list, but whose return value we do not care about
=> (list-comp (do (side-effect x)
... (if (< x 5) (* 2 x)
... (* 4 x)))
... (x (range 10)))
[0, 2, 4, 6, 8, 20, 24, 28, 32, 36]
do can accept any number of arguments, from 1 to n.
def / setv¶
def and
setv are used to bind a value, object, or function to a symbol.
For example:
=> (def names ["Alice" "Bob" "Charlie"])
=> (print names)
[u'Alice', u'Bob', u'Charlie']
=> (setv counter (fn [collection item] (.count collection item)))
=> (counter [1 2 3 4 5 2 3] 2)
They can be used to assign multiple variables at once:
=> (setv a 1 b 2)
=> a
=> b
New classes are declared with
defclass. It can takes two optional parameters:
a vector defining a possible super classes and another vector containing
attributes of the new class as two item vectors.
(defclass class-name [super-class-1 super-class-2]
[attribute value]
(defn method [self] (print "hello!")))
Both values and functions can be bound on the new class as shown by the example below:
=> (defclass Cat []
... [age None
... colour "white"]
... (defn speak [self] (print "Meow")))
=> (def spot (Cat))
=> (setv spot.colour "Black")
=> (.speak spot)
defn macro is used to define functions. It takes three
parameters: the name of the function to define, a vector of parameters,
and the body of the function:
(defn name [params] body)
Parameters may have the following keywords in front of them:
- &optional
Parameter is optional. The parameter can be given as a two item list, where the first element is parameter name and the second is the default value. The parameter can be also given as a single item, in which case the default value is
=> (defn total-value [value &optional [value-added-tax 10]] ... (+ (/ (* value value-added-tax) 100) value)) => (total-value 100) 110.0 => (total-value 100 1) 101.0
- &key
Parameter is a dict of keyword arguments. The keys of the dict specify the parameter names and the values give the default values of the parameters.
=> (defn key-parameters [&key {"a" 1 "b" 2}] ... (print "a is" a "and b is" b)) => (key-parameters :a 1 :b 2) a is 1 and b is 2 => (key-parameters :b 1 :a 2) a is 2 and b is 1
The following declarations are equivalent:
(defn key-parameters [&key {"a" 1 "b" 2}]) (defn key-parameters [&optional [a 1] [b 2]])
- &kwargs
Parameter will contain 0 or more keyword arguments.
The following code examples defines a function that will print all keyword arguments and their values.
=> (defn print-parameters [&kwargs kwargs] ... (for [(, k v) (.items kwargs)] (print k v))) => (print-parameters :parameter-1 1 :parameter-2 2) parameter_1 1 parameter_2 2 ; to avoid the mangling of '-' to '_', use unpacking: => (print-parameters #** {"parameter-1" 1 "parameter-2" 2}) parameter-1 1 parameter-2 2
- &rest
Parameter will contain 0 or more positional arguments. No other positional arguments may be specified after this one.
The following code example defines a function that can be given 0 to n numerical parameters. It then sums every odd number and subtracts every even number.
=> (defn zig-zag-sum [&rest numbers] (setv odd-numbers (list-comp x [x numbers] (odd? x)) even-numbers (list-comp x [x numbers] (even? x))) (- (sum odd-numbers) (sum even-numbers))) => (zig-zag-sum) 0 => (zig-zag-sum 3 9 4) 8 => (zig-zag-sum 1 2 3 4 5 6) -3
- &kwonly
New in version 0.12.0.
Parameters that can only be called as keywords. Mandatory keyword-only arguments are declared with the argument's name; optional keyword-only arguments are declared as a two-element list containing the argument name followed by the default value (as with &optional above).
=> (defn compare [a b &kwonly keyfn [reverse False]] ... (setv result (keyfn a b)) ... (if (not reverse) ... result ... (- result))) => (compare "lisp" "python" ... :keyfn (fn [x y] ... (reduce - (map (fn [s] (ord (first s))) [x y])))) -4 => (compare "lisp" "python" ... :keyfn (fn [x y] ... (reduce - (map (fn [s] (ord (first s))) [x y]))) ... :reverse True) 4
=> (compare "lisp" "python") Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: compare() missing 1 required keyword-only argument: 'keyfn'
Availability: Python 3.
New in version 0.10.1.
defmain macro defines a main function that is immediately called
sys.argv as arguments if and only if this file is being executed
as a script. In other words, this:
(defmain [&rest args]
(do-something-with args))
is the equivalent of:
def main(*args):
return 0
if __name__ == "__main__":
import sys
retval = main(*sys.argv)
if isinstance(retval, int):
Note that as you can see above, if you return an integer from this
function, this will be used as the exit status for your script.
(Python defaults to exit status 0 otherwise, which means everything's
okay!) Since
(sys.exit 0) is not run explicitly in the case of a
non-integer return from
defmain, it's a good idea to put
as the last piece of code in your file.
If you want fancy command-line arguments, you can use the standard Python
argparse in the usual way:
(import argparse)
(defmain [&rest _]
(setv parser (argparse.ArgumentParser))
(.add-argument parser "STRING"
:help "string to replicate")
(.add-argument parser "-n" :type int :default 3
:help "number of copies")
(setv args (parser.parse_args))
(print (* args.STRING args.n))
defmacro is used to define macros. The general format is
(defmacro name [parameters] expr).
The following example defines a macro that can be used to swap order of elements in code, allowing the user to write code in infix notation, where operator is in between the operands.
=> (defmacro infix [code]
... (quasiquote (
... (unquote (get code 1))
... (unquote (get code 0))
... (unquote (get code 2)))))
=> (infix (1 + 1))
New in version 0.9.12.
defmacro/g! is a special version of
defmacro that is used to
automatically generate gensym for any symbol that starts with
For example,
g!a would become
(gensym "a").
defmacro! is like
defmacro/g! plus automatic once-only evaluation for
o! parameters, which are available as the equivalent
g! symbol.
For example,
=> (defn expensive-get-number [] (print "spam") 14)
=> (defmacro triple-1 [n] `(+ ~n ~n ~n))
=> (triple-1 (expensive-get-number)) ; evals n three times
=> (defmacro/g! triple-2 [n] `(do (setv ~g!n ~n) (+ ~g!n ~g!n ~g!n)))
=> (triple-2 (expensive-get-number)) ; avoid repeats with a gensym
=> (defmacro! triple-3 [o!n] `(+ ~g!n ~g!n ~g!n))
=> (triple-3 (expensive-get-number)) ; easier with defmacro!
New in version 0.13.0.
deftag defines a tag macro. A tag macro is a unary macro that has the
same semantics as an ordinary macro defined with
defmacro. It is called with
the syntax
#tag FORM, where
tag is the name of the macro, and
is any form. The
tag is often only one character, but it can be any symbol.
=> (deftag ♣ [expr] `[~expr ~expr])
<function <lambda> at 0x7f76d0271158>
=> #♣ 5
[5, 5]
=> (setv x 0)
=> #♣(+= x 1)
[None, None]
=> x
In this example, if you used
(defmacro ♣ ...) instead of
♣ ...), you would call the macro as
(♣ 5) or
(♣ (+= x 1)).
The syntax for calling tag macros is similar to that of reader macros a la
Common Lisp's
SET-MACRO-CHARACTER. In fact, before Hy 0.13.0, tag macros
were called "reader macros", and defined with
defreader rather than
deftag. True reader macros are not (yet) implemented in Hy.
New in version 0.9.12.
del removes an object from the current namespace.
=> (setv foo 42)
=> (del foo)
=> foo
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'foo' is not defined
del can also remove objects from mappings, lists, and more.
=> (setv test (list (range 10)))
=> test
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
=> (del (cut test 2 4)) ;; remove items from 2 to 4 excluded
=> test
[0, 1, 4, 5, 6, 7, 8, 9]
=> (setv dic {"foo" "bar"})
=> dic
{"foo": "bar"}
=> (del (get dic "foo"))
=> dic
New in version 0.10.1.
doto is used to simplify a sequence of method calls to an object.
=> (doto [] (.append 1) (.append 2) .reverse)
[2 1]
=> (setv collection [])
=> (.append collection 1)
=> (.append collection 2)
=> (.reverse collection)
=> collection
[2 1]
first is a function for accessing the first element of a collection.
=> (first (range 10))
It is implemented as
(next (iter coll) None), so it works with any
iterable, and if given an empty iterable, it will return
None instead of
raising an exception.
=> (first (repeat 10))
=> (first [])
for is used to call a function for each element in a list or vector.
The results of each call are discarded and the
for expression returns
None instead. The example code iterates over collection and for each
element in collection calls the
side-effect function with element
as its argument:
;; assuming that (side-effect) is a function that takes a single parameter
(for [element collection] (side-effect element))
;; for can have an optional else block
(for [element collection] (side-effect element)
(else (side-effect-2)))
The optional
else block is only executed if the
for loop terminates
normally. If the execution is halted with
break, the
else block does
not execute.
=> (for [element [1 2 3]] (if (< element 3)
... (print element)
... (break))
... (else (print "loop finished")))
=> (for [element [1 2 3]] (if (< element 4)
... (print element)
... (break))
... (else (print "loop finished")))
loop finished
genexpr is used to create generator expressions. It takes two or three
parameters. The first parameter is the expression controlling the return value,
while the second is used to select items from a list. The third and optional
parameter can be used to filter out some of the items in the list based on a
conditional expression.
genexpr is similar to
list-comp, except it
returns an iterable that evaluates values one by one instead of evaluating them
=> (def collection (range 10))
=> (def filtered (genexpr x [x collection] (even? x)))
=> (list filtered)
[0, 2, 4, 6, 8]
New in version 0.9.12.
gensym is used to generate a unique symbol that allows macros to be
written without accidental variable name clashes.
=> (gensym)
=> (gensym "x")
get is used to access single elements in collections.
get takes at
least two parameters: the data structure and the index or key of the
item. It will then return the corresponding value from the collection. If
multiple index or key values are provided, they are used to access
successive elements in a nested structure. Example usage:
=> (do
... (setv animals {"dog" "bark" "cat" "meow"}
... numbers (, "zero" "one" "two" "three")
... nested [0 1 ["a" "b" "c"] 3 4])
... (print (get animals "dog"))
... (print (get numbers 2))
... (print (get nested 2 1)))
get raises a KeyError if a dictionary is queried for a
non-existing key.
get raises an IndexError if a list or a tuple is queried for an
index that is out of bounds.
global can be used to mark a symbol as global. This allows the programmer to
assign a value to a global symbol. Reading a global symbol does not require the
global keyword -- only assigning it does.
The following example shows how the global symbol
a is assigned a value in a
function and is later on printed in another function. Without the
keyword, the second function would have raised a
(defn set-a [value]
(global a)
(setv a value))
(defn print-a []
(print a))
(set-a 5)
if / if* / if-not¶
New in version 0.10.0: if-not
if / if* / if-not respect Python truthiness, that is, a test fails if it
evaluates to a "zero" (including values of
len zero,
None, and
False), and passes otherwise, but values with a
__bool__ method
__nonzero__ in Python 2) can overrides this.
if macro is for conditionally selecting an expression for evaluation.
The result of the selected expression becomes the result of the entire
if can select a group of expressions with the help of a
do block.
if takes any number of alternating test and then expressions, plus an
optional else expression at the end, which defaults to
if checks
each test in turn, and selects the then corresponding to the first passed
if does not evaluate any expressions following its selection, similar
to the
if/elif/else control structure from Python. If no tests pass,
selects else.
if* special form is restricted to 2 or 3 arguments, but otherwise works
exactly like
if (which expands to nested
if* forms), so there is
generally no reason to use it directly.
if-not is similar to
if* but the second expression will be executed
when the condition fails while the third and final expression is executed when
the test succeeds -- the opposite order of
if*. The final expression is
again optional and defaults to
Example usage:
(print (if (< n 0.0) "negative"
(= n 0.0) "zero"
(> n 0.0) "positive"
"not a number"))
(if* (money-left? account)
(print "let's go shopping")
(print "let's go and work"))
(if-not (money-left? account)
(print "let's go and work")
(print "let's go shopping"))
lif and lif-not¶
New in version 0.10.0.
New in version 0.11.0: lif-not
For those that prefer a more Lispy
if clause, we have
lif. This only considers
None to be false! All other
"false-ish" Python values are considered true. Conversely, we have
lif-not in parallel to
if and
if-not which
reverses the comparison.
=> (lif True "true" "false")
=> (lif False "true" "false")
=> (lif 0 "true" "false")
=> (lif None "true" "false")
=> (lif-not None "true" "false")
=> (lif-not False "true" "false")
import is used to import modules, like in Python. There are several ways
import can be used.
;; Imports each of these modules
;; Python:
;; import sys
;; import os.path
(import sys os.path)
;; Import from a module
;; Python: from os.path import exists, isdir, isfile
(import [os.path [exists isdir isfile]])
;; Import with an alias
;; Python: import sys as systest
(import [sys :as systest])
;; You can list as many imports as you like of different types.
;; Python:
;; from tests.resources import kwtest, function_with_a_dash
;; from os.path import exists, isdir as is_dir, isfile as is_file
;; import sys as systest
(import [tests.resources [kwtest function-with-a-dash]]
[os.path [exists
isdir :as dir?
isfile :as file?]]
[sys :as systest])
;; Import all module functions into current namespace
;; Python: from sys import *
(import [sys [*]])
fn, like Python's
lambda, can be used to define an anonymous function.
Unlike Python's
lambda, the body of the function can comprise several
statements. The parameters are similar to
defn: the first parameter is
vector of parameters and the rest is the body of the function.
fn returns a
new function. In the following example, an anonymous function is defined and
passed to another function for filtering output.
=> (def people [{:name "Alice" :age 20}
... {:name "Bob" :age 25}
... {:name "Charlie" :age 50}
... {:name "Dave" :age 5}])
=> (defn display-people [people filter]
... (for [person people] (if (filter person) (print (:name person)))))
=> (display-people people (fn [person] (< (:age person) 25)))
Just as in normal function definitions, if the first element of the body is a string, it serves as a docstring. This is useful for giving class methods docstrings.
=> (setv times-three
... (fn [x]
... "Multiplies input by three and returns the result."
... (* x 3)))
This can be confirmed via Python's built-in
help function:
=> (help times-three)
Help on function times_three:
Multiplies input by three and returns result
New in version 0.11.0.
last can be used for accessing the last element of a collection:
=> (last [2 4 6])
list-comp performs list comprehensions. It takes two or three parameters.
The first parameter is the expression controlling the return value, while
the second is used to select items from a list. The third and optional
parameter can be used to filter out some of the items in the list based on a
conditional expression. Some examples:
=> (def collection (range 10))
=> (list-comp x [x collection])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
=> (list-comp (* x 2) [x collection])
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
=> (list-comp (* x 2) [x collection] (< x 5))
[0, 2, 4, 6, 8]
New in version 0.11.1.
nonlocal can be used to mark a symbol as not local to the current scope.
The parameters are the names of symbols to mark as nonlocal. This is necessary
to modify variables through nested
fn scopes:
(defn some-function []
(setv x 0)
(fn [stuff]
(nonlocal x)
(setv x stuff))))
Without the call to
(nonlocal x), the inner function would redefine
x to
stuff inside its local scope instead of overwriting the
x in the outer
See PEP3104 for further information.
not is used in logical expressions. It takes a single parameter and
returns a reversed truth value. If
True is given as a parameter,
will be returned, and vice-versa. Example usage:
=> (not True)
=> (not False)
=> (not None)
or is used in logical expressions. It takes at least two parameters. It
will return the first non-false parameter. If no such value exists, the last
parameter will be returned.
=> (or True False)
=> (and False False)
=> (and False 1 True False)
or short-circuits and stops evaluating parameters as soon as the
first true value is encountered.
=> (or True (print "hello"))
(print "Hello world!")
quasiquote allows you to quote a form, but also selectively evaluate
expressions. Expressions inside a
quasiquote can be selectively evaluated
unquote (
~). The evaluated form can also be spliced using
unquote-splice (
~@). Quasiquote can be also written using the backquote
`) symbol.
;; let `qux' be a variable with value (bar baz)
`(foo ~qux)
; equivalent to '(foo (bar baz))
`(foo ~@qux)
; equivalent to '(foo bar baz)
quote returns the form passed to it without evaluating it.
quote can
alternatively be written using the apostrophe (
') symbol.
=> (setv x '(print "Hello World"))
; variable x is set to expression & not evaluated
=> x
(u'print' u'Hello World')
=> (eval x)
Hello World
require is used to import macros from one or more given modules. It allows
parameters in all the same formats as
import. The
require form itself
produces no code in the final program: its effect is purely at compile-time, for
the benefit of macro expansion. Specifically,
require imports each named
module and then makes each requested macro available in the current module.
The following are all equivalent ways to call a macro named
foo in the module
(require mymodule)
(mymodule.foo 1)
(require [mymodule :as M])
(M.foo 1)
(require [mymodule [foo]])
(foo 1)
(require [mymodule [*]])
(foo 1)
(require [mymodule [foo :as bar]])
(bar 1)
Macros that call macros¶
One aspect of
require that may be surprising is what happens when one
macro's expansion calls another macro. Suppose
mymodule.hy looks like this:
(defmacro repexpr [n expr]
; Evaluate the expression n times
; and collect the results in a list.
`(list (map (fn [_] ~expr) (range ~n))))
(defmacro foo [n]
`(repexpr ~n (input "Gimme some input: ")))
And then, in your main program, you write:
(require [mymodule [foo]])
(print (mymodule.foo 3))
Running this raises
NameError: name 'repexpr' is not defined, even though
(print (foo 3)) in
mymodule works fine. The trouble is that your
main program doesn't have the macro
repexpr available, since it wasn't
imported (and imported under exactly that name, as opposed to a qualified name).
You could do
(require [mymodule [*]]) or
(require [mymodule [foo
repexpr]]), but a less error-prone approach is to change the definition of
foo to require whatever sub-macros it needs:
(defmacro foo [n]
(require mymodule)
(mymodule.repexpr ~n (raw-input "Gimme some input: "))))
It's wise to use
(require mymodule) here rather than
(require [mymodule
[repexpr]]) to avoid accidentally shadowing a function named
repexpr in
the main program.
Qualified macro names¶
Note that in the current implementation, there's a trick in qualified macro
names, like
mymodule.foo and
M.foo in the above example. These names
aren't actually attributes of module objects; they're just identifiers with
periods in them. In fact,
mymodule and
M aren't defined by these
require forms, even at compile-time. None of this will hurt you unless try
to do introspection of the current module's set of defined macros, which isn't
really supported anyway.
rest takes the given collection and returns an iterable of all but the
first element.
=> (list (rest (range 10)))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Given an empty collection, it returns an empty iterable.
=> (list (rest []))
return compiles to a
return statement. It exits the
current function, returning its argument if provided with one or
None if not.
=> (defn f [x] (for [n (range 10)] (when (> n x) (return n))))
=> (f 3.9)
Note that in Hy,
return is necessary much less often than in Python,
since the last form of a function is returned automatically. Hence, an
return is only necessary to exit a function early.
=> (defn f [x] (setv y 10) (+ x y))
=> (f 4)
To get Python's behavior of returning
None when execution reaches
the end of a function, put
None there yourself.
=> (defn f [x] (setv y 10) (+ x y) None)
=> (print (f 4))
set-comp is used to create sets. It takes two or three parameters.
The first parameter is for controlling the return value, while the second is
used to select items from a sequence. The third and optional parameter can be
used to filter out some of the items in the sequence based on a conditional
=> (setv data [1 2 3 4 5 2 3 4 5 3 4 5])
=> (set-comp x [x data] (odd? x))
{1, 3, 5}
cut can be used to take a subset of a list and create a new list from it.
The form takes at least one parameter specifying the list to cut. Two
optional parameters can be used to give the start and end position of the
subset. If they are not supplied, the default value of
None will be used
instead. The third optional parameter is used to control step between the elements.
cut follows the same rules as its Python counterpart. Negative indices are
counted starting from the end of the list. Some example usage:
=> (def collection (range 10))
=> (cut collection)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
=> (cut collection 5)
[5, 6, 7, 8, 9]
=> (cut collection 2 8)
[2, 3, 4, 5, 6, 7]
=> (cut collection 2 8 2)
[2, 4, 6]
=> (cut collection -4 -2)
[6, 7]
raise form can be used to raise an
Exception at
runtime. Example usage:
; re-rase the last exception
(raise IOError)
; raise an IOError
(raise (IOError "foobar"))
; raise an IOError("foobar")
raise can accept a single argument (an
Exception class or instance)
or no arguments to re-raise the last
try form is used to catch exceptions (
except) and run cleanup
actions (
(except [ZeroDivisionError]
(print "Division by zero"))
(except [[IndexError KeyboardInterrupt]]
(print "Index error or Ctrl-C"))
(except [e ValueError]
(print "ValueError:" (repr e)))
(except [e [TabError PermissionError ReferenceError]]
(print "Some sort of error:" (repr e)))
(print "No errors"))
(print "All done")))
The first argument of
try is its body. (To put more than one form in the
body, use
do.) Then comes any number of
except clauses, then optionally
else clause, then optionally a
finally clause. If an exception is
raised with a matching
except clause during the execution of the body, that
except clause will be executed. If no exceptions are raised, the
clause is executed. The
finally clause will be executed last regardless of
whether an exception was raised.
The return value of
try is the last form of the
except clause that was
run, or the last form of
else if no exception was raised, or the
body if there is no
else clause.
unless macro is a shorthand for writing an
if statement that checks if
the given conditional is
False. The following shows the expansion of this macro.
(unless conditional statement)
(if conditional
(do statement))
unpack-iterable, unpack-mapping¶
unpack-iterable and
unpack-mapping allow an iterable or mapping
object (respectively) to provide positional or keywords arguments
(respectively) to a function.
=> (defn f [a b c d] [a b c d])
=> (f (unpack-iterable [1 2]) (unpack-mapping {"c" 3 "d" 4}))
[1, 2, 3, 4]
unpack-iterable is usually written with the shorthand
#*, and
unpack-mapping with
=> (f #* [1 2] #** {"c" 3 "d" 4})
[1, 2, 3, 4]
With Python 3, you can unpack in an assignment list (PEP 3132).
=> (setv [a #* b c] [1 2 3 4 5])
=> [a b c]
[1, [2, 3, 4], 5]
With Python 3.5 or greater, unpacking is allowed in more contexts than just function calls, and you can unpack more than once in the same expression (PEP 448).
=> [#* [1 2] #* [3 4]]
[1, 2, 3, 4]
=> {#** {1 2} #** {3 4}}
{1: 2, 3: 4}
=> (f #* [1] #* [2] #** {"c" 3} #** {"d" 4})
[1, 2, 3, 4]
Within a quasiquoted form,
unquote forces evaluation of a symbol.
is aliased to the tilde (
~) symbol.
(def name "Cuddles")
(quasiquote (= name (unquote name)))
;=> (u'=' u'name' u'Cuddles')
`(= name ~name)
;=> (u'=' u'name' u'Cuddles')
unquote-splice forces the evaluation of a symbol within a quasiquoted form,
much like
unquote-splice can be used when the symbol
being unquoted contains an iterable value, as it "splices" that iterable into
the quasiquoted form.
unquote-splice can also be used when the value
evaluates to a false value such as
False, or
0, in which
case the value is treated as an empty list and thus does not splice anything
into the form.
unquote-splice is aliased to the
~@ syntax.
(def nums [1 2 3 4])
(quasiquote (+ (unquote-splice nums)))
;=> ('+' 1 2 3 4)
`(+ ~@nums)
;=> ('+' 1 2 3 4)
`[1 2 ~@(if (< (nth nums 0) 0) nums)]
;=> ('+' 1 2)
Here, the last example evaluates to
('+' 1 2), since the condition
(< (nth nums 0) 0) is
False, which makes this
if expression
evaluate to
None, because the
if expression here does not have an
else clause.
unquote-splice then evaluates this as an empty value,
leaving no effects on the list it is enclosed in, therefore resulting in
('+' 1 2).
when is similar to
unless, except it tests when the given conditional is
True. It is not possible to have an
else block in a
when macro. The
following shows the expansion of the macro.
(when conditional statement)
(if conditional (do statement))
while is used to execute one or more blocks as long as a condition is met.
The following example will output "Hello world!" to the screen indefinitely:
(while True (print "Hello world!"))
with is used to wrap the execution of a block within a context manager. The
context manager can then set up the local system and tear it down in a controlled
manner. The archetypical example of using
with is when processing files.
with can bind context to an argument or ignore it completely, as shown below:
(with [arg (expr)] block)
(with [(expr)] block)
(with [arg (expr) (expr)] block)
The following example will open the
NEWS file and print its content to the
screen. The file is automatically closed after it has been processed.
(with [f (open "NEWS")] (print (.read f)))
with returns the value of its last form, unless it suppresses an exception
(because the context manager's
__exit__ method returned true), in which
case it returns
None. So, the previous example could also be written
(print (with [f (open "NEWS")] (.read f)))
with-decorator is used to wrap a function with another. The function
performing the decoration should accept a single value: the function being
decorated, and return a new function.
with-decorator takes a minimum
of two parameters: the function performing decoration and the function
being decorated. More than one decorator function can be applied; they
will be applied in order from outermost to innermost, ie. the first
decorator will be the outermost one, and so on. Decorators with arguments
are called just like a function call.
(with-decorator decorator-fun
(defn some-function [] ...)
(with-decorator decorator1 decorator2 ...
(defn some-function [] ...)
(with-decorator (decorator arg) ..
(defn some-function [] ...)
In the following example,
inc-decorator is used to decorate the function
addition with a function that takes two parameters and calls the
decorated function with values that are incremented by 1. When
the decorated
addition is called with values 1 and 1, the end result
will be 4 (
1+1 + 1+1).
=> (defn inc-decorator [func]
... (fn [value-1 value-2] (func (+ value-1 1) (+ value-2 1))))
=> (defn inc2-decorator [func]
... (fn [value-1 value-2] (func (+ value-1 2) (+ value-2 2))))
=> (with-decorator inc-decorator (defn addition [a b] (+ a b)))
=> (addition 1 1)
=> (with-decorator inc2-decorator inc-decorator
... (defn addition [a b] (+ a b)))
=> (addition 1 1)
New in version 0.12.0.
The tag macro
#@ can be used as a shorthand for
with-decorator. With
#@, the previous example becomes:
=> #@(inc-decorator (defn addition [a b] (+ a b)))
=> (addition 1 1)
=> #@(inc2-decorator inc-decorator
... (defn addition [a b] (+ a b)))
=> (addition 1 1)
New in version 0.9.12.
with-gensym is used to generate a set of gensym for use in a macro.
The following code:
(with-gensyms [a b c]
expands to:
(setv a (gensym)
b (gensym)
c (gensym))
New in version 0.12.0.
xor performs the logical operation of exclusive OR. It takes two arguments.
If exactly one argument is true, that argument is returned. If neither is true,
the second argument is returned (which will necessarily be false). Otherwise,
when both arguments are true, the value
False is returned.
=> [(xor 0 0) (xor 0 1) (xor 1 0) (xor 1 1)]
[0, 1, 1, False]
yield is used to create a generator object that returns one or more values.
The generator is iterable and therefore can be used in loops, list
comprehensions and other similar constructs.
The function
random-numbers shows how generators can be used to generate
infinite series without consuming infinite amount of memory.
=> (defn multiply [bases coefficients]
... (for [(, base coefficient) (zip bases coefficients)]
... (yield (* base coefficient))))
=> (multiply (range 5) (range 5))
<generator object multiply at 0x978d8ec>
=> (list-comp value [value (multiply (range 10) (range 10))])
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
=> (import random)
=> (defn random-numbers [low high]
... (while True (yield (.randint random low high))))
=> (list-comp x [x (take 15 (random-numbers 1 50))])
[7, 41, 6, 22, 32, 17, 5, 38, 18, 38, 17, 14, 23, 23, 19]


text:
Brookside Village Receives 2018 Customer Experience Award
CarDon & Associates is the recipient of Pinnacle Quality Insight's 2018 Customer Experience Award™. Twelve CarDon communities throughout Indiana received the award for a continued dedication to providing best-in-class senior healthcare services. Recipients of the Pinnacle Customer Experience Award place a strong emphasis on ensuring the individual needs of every resident are met. Over the course of 2017, a sampling of CarDon's... Read More

subset: commoncrawl


text: Correcting our patients' vision with the best lens and frame techology is our highest priority. Your doctor may recommend a single vision, no-line progressive multifocal , or standard bifocal during your exam. Our knowledgeable frame and lens specialists will then assist you with each of your eyewear decisions, and see to it that you receive your glasses in a timely manner. In many circumstances, we can produce your glasses in less than a single day in our in-office laboratories. OUR LICENSED AND CERTIFIED OPTICIANS WILL FILL YOUR OPTICAL PRESCRIPTION WITH FLAWLESS ACCURACY USING THE WORLD'S FINEST OPTICS. Unlike any spectacle retail store, we promise to ensure your satisfaction. Please use this page to educate yourself regarding many of the eyeglass frames and lens options available.


text:
The law firm representing the east bank levee authority in its controversial wetland damages lawsuit against nearly 100 oil, gas and pipeline companies has agreed to changes in the interpretation of its contract that will restrict how much money it earns if the suit is successful.
The agreement was proposed by the Jones Swanson law firm a month ago in a letter sent to the Southeast Louisiana Flood Protection Authority-East, but made public after an closed-door session Thursday.
Both state officials and the state legislative auditor had raised concerns that the way the contract between the authority and law firm was written, the law firm could demand as much as a third of the value of the restoration project as its fee. But under the agreement, if an energy company is forced to rebuild wetlands, the law firm will not be paid a share of the cost of rebuilding the wetlands.
The law firm also agreed not to file suit against other entities for wetlands damage without prior approval of the authority, said attorney Gladstone Jones in a separate interview. That provision also had been criticized by state officials, who said the language of the contract would allow the law firm to file suit against any entity and for years in the future.
Authority President Tim Doody said the agreement does not represent a change in the wording of the contract with the law firm, however.
The suit, which Gov. Bobby Jindal has demanded be withdrawn, argues that the energy companies violated state law by not repairing or replacing wetlands damaged and destroyed during the exploration and production of oil and gas and the location of pipelines. The suit also argues that the wetlands damage threatens to reduce the protection provided by east bank levees.
The suit asks the companies to either repair damaged wetlands or pay the authority for wetlands that can't be repaired, with the money to be applied to the cost of building and maintaining levees.
Jindal contends the suit was filed without state permission and that it conflicts with the state's own coastal restoration efforts.
The state legislative auditor has criticized the authority's approval of the legal contract, saying it may have violated state laws governing how such contracts can be issued.
The Louisiana Oil & Gas Association has filed suit in the 19th Judicial District Court in Baton Rouge against Attorney General Buddy Caldwell over his approval of the wetlands damage suit and terms of the contract that grant the lawyers between 22 percent and 33 percent of any damages. The contract also includes a "poison pill" provision that would require the authority to pay the attorneys their expenses and salaries if the suit is withdrawn without going to trial.
Jones said the agreement proposed by his law firm was aimed at addressing some of the issues raised by the legislative auditor.
Authority Vice President Stephen Estopinal said that during an executive session Thursday, new authority member Joe Hassinger Jr. also refused to have his law firm, Galloy Johnson Tompkins Burr and Smith, sign an affidavit stating that it has not, does not and will not represent any of the defendants in the authority's lawsuit, and will not engage in discussions with its clients about privileged information it might receive about the suit.
Hassinger was one of three new members appointed to the authority in October by Jindal to replace commissioners who had voted for the suit, and has urged the authority to drop the suit.
Hassinger's law firm has represented a wide variety of oil and gas companies and Hassinger has requested a ruling from the Louisiana Ethics Board on whether he can participate in authority actions involving the lawsuit.
Hassinger said after the meeting that he has not yet received a ruling from the board, but expects it to find that there's no conflict in his serving on the authority.
He said he's also not convinced the new agreement with the Jones Swanson law firm is adequate.
"My problem is that you can talk about things sort of generally as general concepts, but I need to see the words on the page to know what it says and means," he said.
Asked whether he would drop his opposition to the suit if he found the new agreement adequate, he said: "It's fair to say the board is not unanimous on the lawsuit."The meeting began with a pointed, one-hour lecture of authority members by Garret Graves, chairman of the state Coastal Protection and Restoration Authority on why the state believes the wetlands damages lawsuit against the energy companies is disrupting the state's own strategy for coastal restoration.
Graves warned authority members that BP is likely to take the authority's charges that the energy companies caused wetlands loss and use it as a defense in ongoing lawsuits claiming oil from BP's Macondo well blowout damaged wetlands in the same area.
He said the areas the authority contend were damaged by oil and gas operations also overlap with the wetlands that the Army Corps of Engineers has concluded were damaged by the construction and operation of the now-deauthorized Mississippi River-Gulf Outlet navigation channel. The corps has proposed a $3 billion set of restoration projects to restore that damage.
Graves said the suit also has disrupted the state's arguments with the corps over whether the federal government should pay the full cost for those projects. The disagreeement between the state and the corps has resulted in the corps not requesting funding for beginning construction of those projects.
Graves also charged that the authority's contention that a significant portion of the wetlands loss outside the east bank levee system is the result of the energy companies actions is in conflict with statements by President Barack Obama and a National Academies of Sciences study.
Graves said both the White House and the academies' study, "Drawing Louisiana's New Map," placed the blame for the state's wetlands losses on the construction of levees along the Mississippi River that block the flow of land-building sediment from wetland areas, and the corps' management of the river's limited sediment resources.
While both did list that as the main cause of wetlands, the federal government has supported a variety of research that concluded oil and gas operations have played a significant role in causing wetlands losses in Louisiana.
The National Academies study also cited the energy industry as a significant cause of the problem.
"In the development of oil and gas wells, thousands of miles of canals have been cut through the marsh to aid exploration, to sink wells, to install pipelines, and to service the oil and gas industry," the report said. "In order to restore the marsh areas, most of the canals have to be closed (or plugged) so that saltwater can be prevented from entering the freshwater marshes, creating a continuous marshland area.
"The filling will be either through diversions from the Mississippi River or by using dredge material from shipping waterways or from offshore," the report said. "The end result will be reduced access to the oil and gas production wells, a problem that becomes less of an issue as the production from these wells decreases. As discussed earlier (in the report), subsidence of the Louisiana coastal area may also be affected by the extraction of oil and gas found below the marshes."
In other business Thursday, the levee authority also approved a request to have the state Mineral and Energy Board and the state Office of Mineral Resources advertise and oversee bidding for oil, gas and mineral leases on three parcels of land owned by the Orleans Levee District within the Bohemia Spillway in Plaquemines Parish.


text:
BIG changes
Stay tuned for a revamped site to include current offerings from Embrace Births. Julie is currently on Maternity leave after the birth of her youngest daughter and will not accept new doula clients until the fall. She is also adding CranioSacral Therapy to her skills to better server her clients and their families.
Doula, Placenta Encapsulator, and Reiki Practitioner in Maryland serving Baltimore, Annapolis, Frederick, Towson, and surrounding areas.
Julie Pokorny, the doula behind Embrace Births, believes that pregnancy, birth, and postpartum are about balance, acceptance, and surrendering to natural processes. She uses her scientific background, education, training, and intuition to help her clients express their needs, release their fears, maintain their safety, and gather information.
Birth Doula
There to keep you informed and encouraged in choosing what will make you most comfortable and happy with your birth experience.
Placenta Encapsulation
Using Traditional Chinese Medicine to supplement your postpartum experience with your own placenta capsules enhancing lactation, energy, and mood.
Postpartum Doula
Supporting and guiding you through caring for your newborn. Without judgement, critiques, or unsolicited advice.
Reiki Practitioner
Feel relaxed, refreshed, and connected to yourself and baby through guided meditation, gentle touch, and energy balancing.


text:
Aurora, IL, Residential Glass Service
When a small mishap results in a broken glass window, you don't need the added frustration of calling overpriced window companies who want to replace the entire window. Instead, turn to the experienced glaziers of Glasshopper Schor Glass for any glass panel replacement.
We're proud of our quality residential glass. Our Aurora, IL company services the western suburbs as well as southern Wisconsin and eastern Indiana, so we're available no matter where you live. Plus, we've been in business for more than 93 years, which means you can trust the results.
We know you're busy. That's why we arrive on time and replace your glass panels efficiently, making your home beautiful and secure once again.
Complete Any Glass Project Quickly
Your home contains many glass surfaces, from mirrors to tabletops. If you've waited to complete a redecorating or renovation project, why not let our experts take care of the glass installation?
Here's what to expect when you call us:
- Customized shower glass – choose from standard sliding doors, frameless doors, and multiple finishes.
- Mirrors – replace your bathroom mirror with an up-to-date style, or customize your mirrors to specific frames. We also do wall-to-wall mirrors.
- Specialized glass – choose insulated glass panels for better energy efficiency. Or, install a skylight! Spruce up your entry door with an elegant glass panel. Just offer us your design idea and leave the rest to us.
- Window or door glass replacement – take care of a broken or foggy old window by replacing just the glass. You'll receive quick service, great quality, and fair prices.
No matter the service, you'll also receive a one-year warranty on all workmanship. Additionally, all our suppliers offer standard warranties for their products.
At Glasshopper Schor Glass in Aurora, IIL, great residential glass is only a call away! Just visit our contact page to get started.


text:
BMW Z4 Anniversary Commemorative Edition Listed for Sale-59.8
This year, BMW Z4 BMW roadster history most future artistic temperament models ushered in the birth of the tenth anniversary. On the occasion of the decade celebration of the occasion, BMW announced on September 3, 10 BMW Z4 Anniversary Edition models introduced in the country, limited edition of 210 units, including the BMW Z4 sDrive20i and BMW Z4 sDrive35i two cars, priced 598,000 yuan and 808,000 yuan respectively.
BMW Z4 tenth anniversary commemorative edition Pure Balance design package, will re-sublimation the Z4 rebellious innate passion for the sport and the full breath of artless' charm. Appearance, the BMW Z4 tenth anniversary commemorative edition has exclusive body colors white ore metallic paint;, sDrive20i and sDrive35i is equipped with 18-inch and 19-inch V-alloy wheels. Superior Merino leather wrapped interior door panels, center console, instrument panel and leather sport seats with Hyun Jung gray thin line pattern trim with sports atmosphere for the passenger compartment to create a highly textured.At least this is the notion I got by listening to Virk Personal Injury Lawyers, a top notch personal injury lawyers who I recommend highly.
Top leather upholstery Merino almost harsh selection, leather processing and vacuum drying process, the standards reached only in the production of top-quality leather bags and shoes will follow. Coloring vats disseminated. After that, we will not carry out any further processing coloring and stamping, and strive to maintain it's natural quality, good air permeability and very soft to the touch. Process excellence, achievement the Merino leather unique soft texture and elegance.
BMW Z4 sDrive20i 10th Anniversary Edition equipped BMW Group's most advanced 2.0-liter 4-cylinder twin-scroll single turbo petrol supercharged engine, maximum output power of 135 kW / 184 hp and maximum torque of 270 Nm, maximum speed up to 232 km / when 0-100 km / h acceleration in just 7.2 seconds, 100 km average fuel consumption of 6.8 liters.
BMW Z4 sDrive35i tenth anniversary commemorative edition is equipped with the BMW Group's award-winning 3.0-liter six-cylinder twin-turbo petrol supercharged engine, maximum output power of 225 kW / 306 hp and maximum torque of 400 Nm, top speed of 250 km / h within 5.1 seconds to accelerate from rest to 100 km / h and 100 km average fuel consumption of only 9.4 liters.
Acceleration performance and fuel economy, regardless of Which engine is the leader in it's class. BMW Z4 sDrive20i and sDrive35i two cars with the operation, such as silky eight-speed automatic transmission and a dual-clutch 7-speed sports automatic transmission, ensure superior comfort at the same time, a perfect pass surging power.
The BMW Z4 is the has infinite tension artwork. 2002 Z4 turned out, the Seven Wonders of the sculptural design immediately conquered the heart of the global automotive connoisseurs. Year, the American Automobile magazine awarded the BMW Z4 "Annual Design Award (Design of the Year Award); 2009, the second generation the Z4 once available, that is awarded the United States 2009 International Best Industrial Design Award (IDEA), the United States" Eyes On Design "Design Award, and the 2009 German Red Dot Design Award (RedDot).
The BMW Z4 is the most passionate performers on the track. FIA GT3 European Championship, International GT Open, ADAC GT Masters competition, as well as 24-hour endurance race of the arena with a wild and explosive and nimble and precise handling, BMW Z4 has won the praise of the world's top racers.
I constantly try to be helpful to my viewers because you're great; anyway I want to recommend Donnas Mortgages just in case you need a real estate agent. Anyway, let's jump back to the subject at hand...
Invaluable Assistance
http://www.ecopropane.ca - You were Amazing!
http://bedbugscalgary.ca - Once again, many thanks for sharing the pics.
https://epolos.com/ - Extremely attractive site.
Posted in Fun Post Date 10/24/2015


text:
The Occupational Safety and Health Administration (OSHA) is currently soliciting public comments concerning its proposal to extend the Office of Management and Budget's (OMB) approval of the information collection requirements specified in the Standard on Servicing Multi-Piece and Single Piece Rim Wheels. The paperwork provisions of the Standard includes a requirement that the manufacturer or a Registered Professional Engineer certify that repaired restraining devices and barriers meet the strength requirements specified in the Standard and a requirement that defective wheels and wheel components be marked or tagged.
For more information, click here.


text:
More and more companies are using contingent workforce programs and becoming adept at balancing their workforce needs through their contingent workers. In this process, many of them achieve greater efficiency and operational control, by adopting Vendor Management Systems and by outsourcing their contingent workforce programs to Managed Service Providers (MSPs)
The million (or multi-million) dollar question being asked here is, should you employ program coordinators to run the program internally instead of outsourcing the job to an MSP? The answer depends on your expectations and priorities. If you simply need assistance in administering the process, processing requirements and automating workflows, you may be better off getting it done in-house. You may also choose the in-house approach if you want to minimize the dominance of a single supplier.
When does it make more sense to choose a third party to manage your program? If contingent workers are viewed as an increasingly strategic component of your overall workforce, you should consider the value that an MSP can bring. An MSP is dedicated to provide customized services to clients to manage their talent supply chain, bringing strategic insights and innovative risk mitigation measures.. Their access to a network of staffing vendors would give them wider options to negotiate better rates. They provide expert consulting on temporary labor legislation, labor market conditions affecting supply and demand, and technological advancements in the VMS space. Managing the program in house would require the development of such capabilities which transcend mere administrative oversight.
Companies must also compare and contrast the program costs of each model. MSPs offer expertise, industry knowledge, strategic insights and scalability in the services offered. They provide a range of pricing options, including supplier-funded models that require no direct investment on the part of the company. MSPs can also immediately apply trained resources to your program as your needs expand. When a management fee is based on spend under management, there is no incremental cost associated with the addition of new members to the MSP team.
What is more, the possible legal ramifications of non-compliance with worker classification and co-employment requirements in an internally managed program could prove far more expensive than any highly negotiated fee paid to an MSP, recurring or otherwise.
One final thought: many companies are concerned about being dependent on a large company that manages their overall program, supervising all staffing agencies while also providing staffing services. Questions arise as to whether this inherent conflict of interest will inflate the cost or deteriorate the quality of submitted candidates. Seek out a truly vendor neutral MSP that does not provide, and is not affiliated with, any staffing agencies. A truly vendor neutral MSP works to build strong, objective relationships that span multiple clients. This gives the MSP maximum flexibility in negotiating great rates and incenting all suppliers to focus on your needs.
Name (required)
Mail (will not be published) (required)
Thanks for Subscribing to DCR Blog.


text:
I use my browsers (Google Chrome, Internet Explorer, Firefox, Safari, Opera and even Flock) to manage information I use daily. I thought it might be helpful to explain how I use Google Chrome's tabs to manage daily trend information for which I try to stay current. (At YouTube from davideerickson). … [Read more...]
Twitter, How Do You Frustrate Me? Let Me Count The Ways
I love Twitter and all that you can do with it but, gaaaaawwwd, could Twitter use some improvements. I'm testing out all the Twitter management software--TweetDeck, Seesmic Desktop, and Mixero, primarily--but none of them really do what I need them to do. If Twitter would just add the features I need, I could avoid the tremendous amount of labor I'll need to invest in … [Read more...]


text:
'Max & Lenny': Film Review
Newcomer Fred Nicolas's first film was co-written by Francois Begaudeau, the star and co-writer of Palme d'Or winner and Oscar nominee "The Class"
Two girls from the wrong side of the Marseilles tracks strike up an unexpected -- and unexpectedly intense -- friendship in Max & Lenny, the feature debut of French director Fred Nicolas. Co-authored by novelist and screenwriter Francois Begeaudeau, who wrote and starred in Laurent Cantet's Cannes Palme d'Or winner and Oscar-nominated The Class, this is that rare story about the immigrant experience that's told from an exclusively female and adolescent point of view. Strong performances and an appropriately gritty assembly compensate for the film's structural and tonal problems and an occasionally grating tendency to suggest that these two women can be their own men, so to speak. This socio-politically charged drama, served up with a generous helping of French-language rap music, is sturdy festival material, with some offshore theatrical sales possible though VOD pickups more likely.
In the film's opening sequence, Lenny (Camelia Pand'Or) is followed by cinematographer Sebastien Buchmann, actress-director Valerie Donzelli's regular d.p., as she walks down the street as seen from behind, with the rapid succession of closeups making it impossible to tell whether the person in the red tracksuit is a man or a woman until Buchmann finally shows a full-length figure. Like the male-sounding names of the protagonists, it feels like a somewhat mannered affectation that's been imposed on material that's strongest when it sticks to its own brand of nitty-gritty, almost documentary-like realism, free of artificial restraints meant to impose any kind of direct meaning or message.
Lenny, of North African origin, is headed for a quiet spot at an abandoned construction site in the rough Consolat neighborhood, North of Marseilles, so she can practice her rapping and dancing skills without disturbing her older and very busy dealer brother (Adam Hegazy), with whom she shares a Spartan apartment in the projects. While singing, Lenny realizes she's been spied upon by an unknown in the dark, though the stranger, the kind Max or Maxine (Jisca Kalvanda), from Congo, tells the talented Lenny to keep going as if nothing happened.
It turns out to be the beginning of a beautiful friendship, with Max and Lenny, a first and second-generation immigrant, respectively, really getting to know each other during a bout of night-time reverse slumming as they break into a villa's garden and splash around in its pool, joking about the risk of being infected by "rich-people bacteria". It is in relaxed, semi-improvised feeling scenes such as these that the material really shines, as the socio-political and economic gap between rich and poor, locals and immigrants and France's haves and have-nots are suggested naturally and without ever feeling like a lecture (much like in Begeaudeau's The Class, which depicted a group of students at a multicultural Parisian banlieue school as a microcosm of French society).
Pand'Or and Kalvanda also have terrific chemistry, which at times almost threatens to become a liability, as some amorous-feeling tension occasionally creeps into their interactions — "You're the most important thing life has given me," one of the girls confesses at one point — though the film never delivers on that promise or indeed any suggestion of romance with anyone of either sex. The screenplay, co-written by the director and Begeaudeau, thus needs other sources of tension to keep the story going, including, in one of the film's most lovingly detailed choices, Max's daily struggle to simply look after her ailing grandmother and band of little brothers while she's waiting for her immigration status to be sorted out.
However, some of Lenny's problems with her family members, especially one that makes her decide to break into a building at night, could have benefited from clearer backstories and psychological motivations. But Lenny, who pours a lot of herself into her rap songs, otherwise isn't much of a talker, which doesn't really help. However, it is clear she's an instinctive and often reckless person who's got her heart in the right place, which results in a winning if also slightly surreal-feeling mid-film getaway to an island off the coast of Marseilles, where Max forces Lenny to finally live up to her talents.
Refreshingly, and unlike films such as Karim Dridri's Bye Bye or Erick Zonca's The Little Thief, on which Nicolas worked as an assistant director, crime is not at the center of the lives of these marginalized Marseilles protagonists, though the few instances the film touches on it don't feel entirely organic either. A subplot concerning two shady characters that follow Lenny around is not well integrated and lacks details, while an instance of shoplifting plays like a bad combination of plot convenience and out-of-character behavior. Also somewhat problematic is the film's final stretch, which tries to shoehorn the ugly realities of immigrant life and an empowering/wish-fulfillment message about following your dreams into one dual, bittersweet ending for which Nicolas struggles to find the right tone.
Kalvanda, whose cool poise is constantly contrasted by her expressive eyes, is the real revelation here, though the spunky Pand'Or, whose character was inspired by Argentinian-French rapper Keny Arkana, also impresses. The latter also does her own singing and wrote her character's own lyrics, which are spiced up by composer Simon Neel with a mix of hip-hop beats and excerpts from classical standards from Mozart, among others.
Production companies: Chaz Productions, Film Factory, Sedna Films, Solaire Production, Indefilms
Cast: Camelia Pand'Or, Jisca Kalvanda, Adam Hegazy, Alvie Bitemo Mamounga, Norbert Godji, Cathy Ruiz, Martial Bezot, Manelle Tighilt, Bouchta Saidoun, Mathieu Fascella, Nouri Seif-Eddine, Mathieu Demy, Pierre Salvadori
Director: Fred Nicolas
Screenplay: Fred Nicolas, Francois Begeaudeau
Producer: Elisabeth Perez
Director of photography: Sebastien Buchmann
Production designer: Olivia Tournadre, Mourad Saidi
Costume designer: Janina Ryba
Editor: Mike Fromentin, Gilda Fine
Music: Simon Neel, Camelia Pand'Or
Casting: Eve Guillou, Cendrine Lapuyade, Boris Vassalo, Bania Medjbar, Julie Bonan
Sales: Alpha Violet
No rating, 85 minutes


text:
As much as I love food and water, I didn't realize how much is due to phosphorus, a naturally occurring chemical compound "formed millions of years ago from old coral reefs and sedimentary deposits." This chemical is important for our survival because "the Earth's current geological phosphorus supplies are intensively mined to produce modern fertilizers" (Source).
And these supplies of phosphorus are getting harder to find and mine.
Population increases combined with agricultural advances puts added pressure on this essential chemical. "Today, there are a few U.S. and international phosphorus mines, but the largest deposits are located in the conflicted African country of Morocco. That makes accessing future phosphorus supplies uncertain" (Source).
While runoff from industrialized nations' farms pollutes nearby waters, developing countries' farmers can't afford the skyrocketing phosphorus prices to help support their crops.


text:
Karira Home
If I told you bamboo fabrics were as smooth as silk and as warm as cotton, you'd say I was dreaming. I'd say try these bamboo fitted sheets for yourself and it's you who will be dreaming! Karira Home 100% fiber bamboo sheets with a 400-thread count are antimicrobial and hypoallergenic, so you can sleep safe and sound. Its stain and odor resistance makes this bamboo bed sheets a wise investment – but it's during hot summer nights when bamboo's breathable fabric will truly delight you. If ever-exotic luxury could be practical this is it!


text:
ECSU news and is now available through the ECSU RSS service. With ECSU RSS you can take ECSU headline news, free of charge, for individual, non-commercial use and incorporate them into your preferred newsreaders and web logs. We hope you enjoy this new service from Elizabeth City State University.
What is RSS?
RSS (Really Simple Syndication) is an XML format designed for sharing web content like news headlines. An RSS service (also known as an RSS channel) consists of a list of items, each of which contains a headline, description, and a link to a web page. For ECSU.edu RSS service, the full content, such as a full-text article or video, is made available on www.ecsu.edu and can be accessed via the Social Networking page.
How do I use RSS?
Subscribe with a RSS news reader
To use RSS, you will need a special RSS news reader or aggregator that will allow you to collect and display RSS service. RSS news readers allow you to view the service you select all together in the same place and, by automatically retrieving updates, stay current with new content soon after it is published.
There are many different news readers available, many for free. Most news readers are applications that you download and install.
After setting up your news reader, you will be ready to use ECSU RSS. To subscribe to ECSU RSS, right-click on one of the channels and select "Copy Shortcut" or "Copy Link Location" to copy the location (URL) of the service. Follow the instructions for your particular news reader, and then paste this location wherever it asks for the location of the service you wish to subscribe to. Listed below are some popular options:
Some others are web-based service you sign-up for that work inside your browser. Listed below are some popular options:
Subscribe with a Web Browser
An RSS news reader is built into three of the new browsers available, Firefox, Safari 2 and Up, and in Internet Explorer 7. This browser feature allows you to view news headlines and events in your bookmarks toolbar. When the RSS feed updates, your bookmark automatically updates at increments set by the browser, no need to ever refresh.
When you visit an rss page, your browser will display the feed and give you the option to subscribe. Once on this page, subscribing involves clicking on the link and choosing where you want the feed to be stored, such as in your bookmark toolbar.
Want to read a story? Just click the bookmark to go straight to that item saving you time and mouse clicks.


text:
Zest Air gives Php 88 fare for flights to Naga or Laoag. Other domestic destination prices had also been marked down starting from Php 611 with travel period from January 15 to March 15, 2012.
Zest Air invites to have a take a post-new year vacation and enjoy these low fare flights. Check details below for more information.
Php 611
Manila to Davao or Cagayan de Oro
Php 411
Manila to Bacolod, Calbayog,
Catarman, Cebu, Puerto Princesa,
Iloilo, Kalibo, Tagbilaran, or Tacloban
Php 311
Manila to Busuanga, Legazpi, Marinduque,
Masbate, San Jose, Tablas, or Virac
Php 88
Manila to Naga* or Laoag**
*Travel period: March 30 to October 15, 2012.
**Travel period: April 13 to October 15, 2012.
Seat Sale is up until December 19, 2011 or until tickets lasts.
You can book through their website or to any Zest Air ticketing centers nationwide. Queries can also be entertained in their hotline:
Manila: (02) 855-3333


text:
In fact, in my inaugural post I stated: "I also realized that what I do for money, provides directly for precisely none of my or my family's needs, in fact I am quite practiced in doing nothing that can be bartered for anything, except for money. This last piece of the puzzle is tantamount to having one's "man card" revoked, or at least it was in my opinion. Until 1995 I had never had a vehicle in a repair shop, I had never had a maintenance man of any sort in a home I owned, I had never paid anyone to mow my lawn, I was a fairly proficient welder with oxygen and acetylene, and could recharge my air conditioner properly with Freon, I had fairly recent memories of successfully hunting and fishing, and if I dug deeply enough, trapping. Until only recently though, I had done none of that for the better part of 20 years. And for food that is grown from the earth, I was almost completely blind to its sources; I didn't know that broccoli was a seed head, or that Brussels sprouts were a bud and the plant a cultivar of the cabbage group, and worse."
So in short, my ignorance, and lack of skills, or at least a lack of recently practiced skills, were key to my decision to homestead.
Now, when I reflect a bit more on the subject, I will tell you that I learned quite a bit in my idyllic childhood; on the subjects of cooking, camping, boating, hunting, fishing, canoeing, and trapping to name just a few, with family and friends. It seems like every few months I dredge up a great old memory of my childhood and share it with my Mom and Dad. I learned a great deal from my parents, and from my aunts and uncles, who were more than generous with their time, experience and wisdom. Oh the stories of adventure, and misadventures, they would tell, and do tell. My eyes moisten just thinking about it. Later, I became enamored with machines. Motorcycles at first, then cars of course, and engines in general, all things mechanical; I had a great thirst for knowing how things work, and still do. Most things electrical are still a mystery to me, even though I remember building more than a few Heath Kits. It still amazes me, that radio I once built from a kit, on a small circuit board, with no speaker, only an earphone, and it worked without a battery! Amazing.
And so it is meaningful that I often tell people, that when on the homestead I feel like a kid again, and large parts of that feeling I suppose, have to do with spending all day most days outside, until the dinner bell rings, and to having the opportunity to learn so much so quickly. Yes, we have a dinner bell! I just walk around with a smile plastered all over my face the bulk of the time. I am well and truly blessed.
Boy, have I digressed! Before I started this post I imagined it to be of four or five lines, simply introducing the "References - Sources - Links" tab at the top of the page. I will finally get on with it then. On the "References - Sources - Links" page I have pulled to together some of the resources that Geri and I have referenced in making a start in southwest Michigan. I hope you will find it informative.
|Click on the tab near the top of the page
|Pull down at the arrow
on mobile devices
Thank you for reading and commenting on the blog. Your comments and criticisms, your inputs and acknowledgements, are welcomed, and will help me to improve my posts.
Please "follow" the blog by clicking on "g+ Follow," or by e-mail at "Follow by Email." Also, "Like" us on Facebook at www.facebook.com/swmichiganhomestead.
-- John, 14 July 2014


text:
My favorite wedding photos of 2016 | Best wedding photos of 2016
I know I know, I'm in late! It's already March 2017 and I'm just preparing the collection of the best wedding photos of 2016. I promise you, next year I will be faster :-) But it's never too late to show your art, yes because I want to think about my work as art. The wedding photography is not the same than ten or fifteen years ago, it changed a lot, we evolved as wedding photographers, we can now create some bold imagery that years ago were unthinkable. So year after year, I found and developed my way to see the world, and I want to think that is unique, not because it's amazing, but because it's mine, I put soul and heart in every photos and only when I think it's time to shoot, I click on the shutter button, that's it.
I want to be sure that in these clicks, there are my visual culture, my feelings, my perspective, my instincts, my way to see the world. This quote by Ansel Adams (one of my idols) is perfect for this occasion: "You don't make a photograph just with a camera. You bring to the act of photography all the pictures you have seen, the books you have read, the music you have heard, the people you have loved."
That's why I would love to share with all of you this collection of my favorite photos of 2016. There is only one reason why they are here: they drive me crazy haha. Moments, landscapes, abstract, candid, posed, artistic, tender, weird, authentic, etc etc … That's me! Thanks a lot to all the couples that put their faith in me to capture their big day, to the parents, family members, friends, wedding coordinators, vendors, colleagues and all the people involved in the wedding stories of 2016. Thank you with all my heart!
Enjoy them and feel free to leave a comment. Good vibes to all of you
Di Lusso


text:
Limited edition 10th Anniversary NeighborWoods® T-shirts
Celebrate NeighborWoods® in style with these soft, high quality t-shirts made in the USA from 100% cotton. Available sizes are Small, Medium, and Large (X-Large is sold out).
Only $20.00 + shipping and handling
Bulk order discounts available.
Contact us with any questions at firstname.lastname@example.com or (202) 291-TREE.


text:
Earn cashback when you buy car parts, order tyres or shop at Halfords - or even when you place an ad on Autotrader! For car insurance, see Financial & Insurance.
Get cashback when you buy car parts. Over one million satisfied customers have ordered from the range of over 150,000 new and replacement parts for cars on 123spareparts.co.uk.
Autobulbs Direct Ltd is the largest online car lighting specialist in the UK. We sell everything from standard bulbs to upgrade bulbs to HID kits. We are also one of the largest wiper blade websites with the biggest range available in the UK including the new flat beam Aerotwin blades and car specific rear blades.
Auto Trader is the UK's no.1 motoring website - helping people to buy & sell cars for 35 years! Auto Trader UK's mission is making the world of cars easy. We're here to help you whether you're buying, selling or just browsing around for that dream car!
The UK's largest car & van parts distributor. We deliver the ultimate parts buying experience: Any make, any model. The right products, at the right prices – first time, every time.
The UK's leading independent autocentre group, selling fully fitted car tyres and MOT and car servicing online.
The Ford Owners Club is the UKs fastest growing club for Ford Enthusiasts. The FOC has officially licensed Ford merchandise unique to us, and a huge product range for every Ford car fanatic.
Halfords are one of the UK's biggest retailers with nearly 500 stores and over 14,000 products. Order online either for delivery or for collection in your local store. There is a range of over 14,000 products only available online, and regular promotions with over 50% off.
Get cashback when you book an MOT, service, tyre fitting, repairs or maintenance with Halfords Autocentres.
Established in 1992 Merlin Cycles quickly became one of the best known sources for all the top quality mountain bike equipment and more recently road bike equipment from the most respected manufacturers at the most competitive prices.
We simplify buying tyres. To save you time and money, we deliver the tyres to your doorstep. If you require a fitting service, we offer a number of tyre fitting companies in your area.
Our members get up to 10% cashback on their online shopping.
It's completely free and there's no catch!
Find out more >
Sign up for free >
© 2019 No Braina. All rights reserved. Website by Zeven Digital


text:
Severity: 8192
Message: Non-static method Low_title::usage() should not be called statically, assuming $this from incompatible context
Filename: low_title/pi.low_title.php
Line Number: 9
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /home/academycreative/sys/codeigniter/system/core/Exceptions.php:170)
Filename: core/Common.php
Line Number: 408
Ladies and Gentlemen: After five years operating as a boutique animation studio, we have exciting news to share. As of July 7th, 2016 we will be joining forces with our sister company SOCIETY to work under the same banner, as one. We believe this union will help us better serve our directors, agency partners and clients. Our mission will remain the same, to be a production company made for this moment, fueling creativity and collaboration to build the greatest work possible.
Please follow us to society.tv. We'll be thrilled to hear from you.


text:
Since 1971, BHK has been producing quality drawer and component systems for the woodworking industry. BHK offers the largest variety of quality drawer and component systems with competitive pricing. Our 30+ years in the drawer making industry has established us as an industry leader with experience, dependable service, product customization and product availability. BHK Drawers & Component products include Solid Wood, Engineered Wood and DuraWrap®.
Select An Image to Enlarge
|Kitchen & Bath
|Home & Commercial
|Bedroom Furniture
Applications for BHK Drawer Components are limitless. Applications range from traditional furniture — kitchens, baths, bedrooms — to RTA (ready to assemble) furniture as well as institutional/hospitality furniture, closets and for general display purposes. Whatever your application, BHK has the solution!


text:
Senior officers and the government must do more to tackle a crisis in detective policing as morale hits rock bottom, the Police Federation says.
It is warning the role is no longer desirable or sought after and victims may be failed as a result of worsening conditions.
The staff association's detective forum has released the results of its annual survey which found that 90 per cent of respondents said they had taken time off due to mental health and wellbeing issues either caused by or exacerbated by their work.
Some 56 per cent said service cuts have had a huge impact on their morale while over a quarter of detectives felt their physical and mental health had been affected
Half of those who answered also said cuts had led to a substantial increase in fatigue and stress as they battled to keep up with demand.
Karen Stephens, secretary of the Police Federation national detective forum, said: "The facts speak for themselves. These results clearly show that detectives are overwhelmed with increased pressures brought on by a lack of resources.
"Morale is low, people are exhausted and there is little sign of improvements to come if things stay the way they are."
Three-quarters of detectives said they were not able to provide the service victims need due to their workloads being too high.
Mrs Stephens said: "The single aim of every officer, detectives included, is to protect and help others. But what these results show is that despite their best efforts, the demands of the role do not allow them to do this.
"This is further emphasised with over half of the respondents saying they did not even have time to stay up to date with the latest training.
"Being a detective was always a sought after, desirable role. However this survey shows things have changed and not for the better."
She called on the NPCC, College of Policing and government to act on the warning sounded by her members.
Earlier this year HMIC warned that a shortage of detectives is a national crisis for policing in England and Wales.
Chiefs have previously asked to be allowed by government to pay detectives bonuses for carrying out their roles, but were told by the pay review body to show evidence for why this would actually help.
NPCC lead for detective recruitment and retention, Deputy Chief Constable Matt Jukes said: "Detectives do a vital job investigating crimes, apprehending offenders and protecting people from harm – and I know that all chiefs are proud of the work they do.
"Forces have been aware for some time of the challenges that today's survey describes, and it is always a concern when colleagues feel overworked and undervalued.
"The complex nature of investigations and our work to protect vulnerable people has made the role of detectives even more challenging. We are facing a challenge to recruit and retain in these roles, which is adding to the pressure on serving detectives."
He added: "We are looking at a range of ways to improve the situation, including reviewing the way detectives are selected and trained, providing improved workplace support to existing detectives which recognises how their work is changing, as well as looking at changes to incentivise more people into these important roles."


text:
While some people confuse broiling with baking, about the only similarity is the oven locale. Baking surrounds food with heated air to cook it, while broiling uses direct infrared radiation to cook food from above. It's kind of like reverse grilling.
On the downside, broiling can require some hard scrubbing after the fact, because drippings can really get crusted in. On the upside, broiling uses super-high heat, usually about 500 degrees Fahrenheit, which makes it a crazy-quick way to cook. Chicken breasts can be done in as little as 5 to 8 minutes per side. (Even bone-in chicken parts can cook quickly this way, although not as quickly as breasts). If you've got less than 20 minutes to get your chicken dinner on the table, broiling is an excellent way to go.
Try it tonight:
- Chicken Satay
- Curry Chicken Breast Pitas (pre-marinate)
- Gazebo Chicken
Next, moving outside (or not) ...


text: As a stylist I'm desperate for the opportunity to restyle some of our local home interior catalogues. Everything always looks the same. I know you each have your corporate identities, but you could shake things up a bit. Come on lets see you do something a bit more exciting, some drama, some intrigue, something, anything. I won't name any names and I don't mean to point fingers, I mean this in the most constructive way. I think the general public would like to be challenged a tiny bit more. Take a page out of this catalogue if you need any inspiration. This company from Denmark sells the usual interior decor items but it's the absolutely beautiful way in which they have styled and photographed it that makes me want to buy everything in every colour. Visit Tine K Home for more information.


text:
Emerson's at Pokolbin
Hunter Valley, a place where I frequently visit for my need of reds and whites. And I used to live 40mins down the road, so it makes it all so much easier for frequent visits.
I have never been a fan of the restaurants in the Hunter Valley, yes there has been a lot that have been chef's hat rated and all. But being there long enough, I've seen how long they have lasted. They come and go so fast that even for a regular visitor like me, I can't remember what was there last time I visited.
However, this time I was acting as a guide for my partner in crime, and she wanted to try Emerson's at Pokolbin. So we decided to book it in for a Sunday lunch session.
We arrived at the car park and followed the garden path into the restaurant. Small little passage walkway let to a really nice and spacious restaurant. Where we were greeted by a clueless, but very friendly lady trying to work out where table number 5 was. After a few minutes of confusion by her, the floor manager 'Chris', managed to hint to the lady where we were to be seated.
The menu was quiet interesting with a nice selection of Tapas dishes. But we decided to go for the 4 course lunch, companion with a glass of red or white for a very reasonable price of $55 a head. Since the other half doesn't drink, I get to have both glasses of wine. So why not go red and white 😛
The restaurant wasn't very busy for lunch that day. So our meals came out really quickly, and as the meals came out, it was nice of Chris to have a chat to us a bit about the wine and food we were having. To my surprise, the glass of white that companion with the meal was a nice aged 15 years McGuigans semillon from the hunter. A nice golden colour, and very crisp and fruity aroma coming from the first sip. Which was accompanied by a nice Garlic Prawns starter.
Our 2nd dish for the day was Chargrilled Spatchcock with rocket and pear salad and house made tomato mild chilli relish. Just by looking at the photo's again, I'm already drooling and anticipating for me next visit. The spatchcock was very well made, skin was crispy and the meet for tender and juicy. Accompanied by the relish made the dish almost perfect. The only thing I can to it, is maybe a bit less rocket next time. 😛
By the time we finished out spatchcock, my white was almost done. Chris brought out my glass of red for the meal, which was a Cabernet Shiraz from a local winery 2 minutes up the road, known as the Piggs Peake. No further information about the wine was presented by the bottle, as it was a cleanskin. But I will tell you this, if you are at Hunter Valley, your should definitely give that winery a try.
3rd dish of the day was Shredded Beef with patatas braves and spanish onion. The dish came out looking pretty average, but still I have seen worst plating from a high rated restaurant. But non the less. After my careful allocation of the food to our plates, I have definitely improved on the looks of the dish. Judge for yourself below 😛 . However, when it comes to food, looks aren't always the main thing, it does help, but I was already impressed with the previous dishes, so I was highly anticipating on trying out our last main dish before dessert. And I have to say, it didn't disappoint. The beef was excellent, despite its plain appearance, and the accompanied sweet caramelised balsamic, topped it off very nicely.
Ok, last but not least, DESSERT!!! We weren't that interested in the desert on the 4 coursed menu, so we asked if we could exchanged it for something else, and Chris was more than happy to obliged. So we decided on Dessert No. 1: Chocolate fudge brownie and dark chocolate sorbet and spiced cherry.
Desert No. 2: Peanut butter parfait with burnt honey marshmallow and butterscotch.
The only thing to say about these dessert is, the plates were empty by the end of it. It was just simply delicious and amazing.
Overall we were very impressed with the quality of food, service and atmosphere at Emerson's. We do highly recommend it. We just hope its a place that will stay at Hunter Valley, but it would not surprise us if it was to suddenly disappear one day like the rest of the other restaurants around the area. So go try for yourself before this gem disappears.


text:
Wien, Wien
Born in 1944 in Felixdorf, Lower Austria, I lived and was educated in Vienna, where later I worked as a clerk in the Transport and Insurance Business. After completing service in the Austrian Air Force, I traveled throughout Europe, eventually settling in Stockholm, Sweden.
As a Painter I was initially self taught, studying in the various Galleries and Museums. In Vienna, I was often hanging out at the Akademie der Bildenden Kuenste, where I admired the work of the Wiener Schule des Phantastischen Realismus represented there by the Professors Ernst Fuchs, Rudolf Hausner and Arik Brauer.
In Stockholm, I found out that I was washing dishes in the very same Restaurant where years earlier another Viennese Artist, Fritz Hundertwasser had worked the same job. Encouraged by an art dealer in Gamla Stan, I began to paint more seriously. Busking on the streets of Gamla Stan with a Dutch artist, my very first painting was sold to a passer-by by my artist friend while I stood in the employment office line - this paid for a lavish meal for both of us that day.
Traveling around in 1968, I wound up in Western Canada where eventually I settled in Lethbridge, Alberta, the place I still call home today. It was in Canada where the majority of my mature work was produced (under the sponsorship of a small Lethbridge Gallery).
Working for the Canadian Pacific Railway, I quit in 1977 to attend the Bachelor of Fine Arts Program at the University of Lethbridge, graduating (with great distinction) in 1982.
In Canada, I participated in many exhibitions, and held several Solo Shows, culminating in the pivotal 1994 showing at The Prairie Art Gallery in Grande Prairie, Alberta, which earned me the moniker The Mystic.
Throughout my years in Canada, I had been the subject of many reviews and newspaper articles as well as local television shows in Calgary and Lethbridge while being active as an artist, art instructor, curator, studio technician, art critic and juror.
I re-joined the Canadian Pacific Railway in 1982 and worked there until retirement in 2006.
I am also the founder of the VISIONARY ART NETWORK, a private network of some of the best Visionary Artists globally. The public arm of our network is the VISIONARY ART GALLERY - visit and enjoy perusing hundreds of the greatest Artists around; some of them are also on FAA, and their stores are linked to our VISIONARY ART EMPORIUM
Since 2011 I split my time between Canada and Austria, where I had a studio in Vienna at the Palais Palffy until Summer 2014 and Ernst Fuchs had his downtown studio. The Phantasten Museum Wien is located in that building. Since Fall of 2013, this is also the location for the Vienna Academy of Visionary Art.
In January 2015 I moved my studio to the Kunstquartier Wien in Meidling, where 80 artists are sharing a 4 storey building.
Art of the Mystic Otto Rapp
Visionary Art Gallery
NUBIAN DREAM by OTTO RAPP
BOGOMIL VARIATION 9 by OTTO RAPP
BOGOMIL VARIATION 10 by OTTO RAPP
BOGOMIL VARIATION 8 by OTTO RAPP
BOGOMIL VARIATION 7 by OTTO RAPP
BOGOMIL VARIATION 6 by OTTO RAPP
BOGOMIL VARIATION 5 by OTTO RAPP
BOGOMIL VARIATION 4 by OTTO RAPP
BOGOMIL VARIATION 3 by OTTO RAPP
BOGOMIL VARIATION 2 by OTTO RAPP
MACRAME SPIRAL NEBULA MIRROR by OTTO RAPP
MACRAME SPIRAL NEBULA MIRROR 2 by OTTO RAPP
BOGOMIL VARIATION 1 by OTTO RAPP
IMPOSSIBLE PROPOSITION by OTTO RAPP
UNTITLED ABSTRACT COLORS 2 - July 2018 - digital mirrored by OTTO RAPP
UNTITLED ABSTRACT COLORS 2 - July 2018 by OTTO RAPP
UNTITLED July 2018 by OTTO RAPP
Untitled A4 2018-08-01 by OTTO RAPP
Untitled A5 2018-08-01 by OTTO RAPP
FOMORII WARRIOR by OTTO RAPP
THE FERNAL POPEYE IMPERSONATOR by OTTO RAPP
THE I SCREAM MACHINE by OTTO RAPP
MORDOR BORDER WATCHER by OTTO RAPP
BOGOMILS AVATAR REVISITED by OTTO RAPP
BOGOMILS AVATAR REVISITED progress by OTTO RAPP
THE FERNAL ALIEN PLANT by OTTO RAPP
FLY-OVER WITH BOGOMIL'S SHUTTLE by OTTO RAPP
TOPOLOGY OF DECALCOMANIA MIRROR by OTTO RAPP
RECKLESS DREAMER by OTTO RAPP
MAKING FACES by OTTO RAPP
ALL LACED UP by OTTO RAPP
Isabelle de Vouthon by OTTO RAPP
MUMMENSCHANZ by OTTO RAPP
Deep Dream Tweedledee by OTTO RAPP
DECALCOMANIAC TRANSMISSION TOWERS by OTTO RAPP
FOMORII INCUBATOR - IN THE BEGINNING by OTTO RAPP
GONZO IS THAT YOU by OTTO RAPP
Bogomil Anniversary Flower - DIGITAL by OTTO RAPP
ERNSTHAFTES SPIEL IM INNEREN ERDTEIL - digital by OTTO RAPP
FIRE AND ICE - digital 2 by OTTO RAPP
FIRE AND ICE - Digital 1 by OTTO RAPP
SOUTHERN CROSS by OTTO RAPP
THE BIRTHDAY PARTY by OTTO RAPP
PARTHENOGENESIS by OTTO RAPP
ZULU by OTTO RAPP
Eros Thanatos by OTTO RAPP
BOGOMILS CEREMONIAL STAGE by Otto Rapp
MIRROR Nr. 18 by Otto Rapp


text:
Read about the latest BMT news and features in our Annual Review and customer magazine 'Focus', and learn more about our services and solutions in our market sector brochures.
BMT Annual Report 2016
An overview of the group's activity for the financial year October 2014 - September 2015view more
Focus Issue 1, 2016
In this issue, we look at some of the challenges involved in working beneath the waves. BMT is helping to ensure that unmanned underwater vehicles reach their potential in a safe and environmentally responsible manner.view more
Focus Issue 1, 2015
In this this, we look at how BMT is using sensors to add value in the fields of fleet performance management, ocean exploration using undersea gliders and environmental consultingview more
Annual Report 2015
An overview of the group's activity for the financial year October 2013 - September 2014view more
BMT Government Brochure
BMT offers management consultancy and technical advice to governments across the world throughout the programme and project lifecycle.view more