Email Spam Detection using Pre-Trained BERT Model : Part 1 - Introduction and Tokenization
Recently I have been looking into Transformer based machine learning models for natural language tasks. The field of NLP has changed tremendously in last few years and I have been fascinated by the new architectures and tools that they are come out in same time. Transformer models is one of such architecture.
As the frameworks and tools to build transformer models keeps evolving, the documentation often become stale and blog posts often confusing. So for any one topic, you may find multiple approaches which can confuse beginner.
So as I am learning these models, I am planning to document the steps to do few of the important tasks in simplest way possible. This should help any beginner like me to pickup transformer models.
In this two part series, I will be discussing about how to train a simple model for email spam classification using pre trained transformer BERT model.This is the first post in series where I will be discussing about transformer models and preparing our data. You can read all the posts in the series here.
Transformer Models
Transformer is a neural network architecture first introduced by Google in 2017. This architecture has proven extremely efficient in learning various tasks. Some of the popular models of transformer architecture is BERT, Distilbert, GPT-3, chatGPT etc.
You can read more about transformer models in below link
https://huggingface.co/course/chapter1/4.
Pre-Trained Language Model and Transfer Learning
A pre-trained language model is a transformer model, which is trained on large amount of language data for specific tasks.
The idea behind using pre-trained model is that, model has really good understand of language which we can borrow for our nlp task as it is and just focus on training unique part of task in our model. This is called as transfer learning. You can read more about transfer learning in below link
https://huggingface.co/course/chapter1/4#transfer-learning.
Google Colab
Google Colab is a hosted jupyter python notebook which has access GPU runtime. As these transformer models perform extremely well on GPU, we are going to use google colab for our examples. You can get community version of same by signing in using your google credentials.
Installing Libraries
First step to install libraries. These libraries come from huggingface, a company that provides tools for simplifying building transformer based models.
In above
- transformer library provides all the pre trained models and tools to train a model
- datasets library provides tool to load and use datasets in form required by above models
- evaluate a helper library to calculate metrics for training
Email Spam Data and Preparation
In this section of the post, we will be discussing about our spam data and it’s preparation.
1. Spam Data
For our example, we are going to use the email spam data from below link
https://www.kaggle.com/datasets/balaka18/email-spam-classification-dataset-csv
The data has two important fields
- v2 - Content of Email
- v1 - Label which indicates spam or not
Please download data from kaggle and upload to your instance of google colab.
2. Loading Data to Dataframe
3. Mapping the Labels
In the data, labels are “ham” and “spam”. We need to map them to 0 and 1. The below code does the same.
4. Generating Different Datasets
Once we have mapped labels, we will be creating train, test and validate sets.
In the above code, we use the Dataset.from_pandas to create hugging face compatible datasets which will be using in next steps.
Tokenization
To use any pre-trained model, one of the pre requisites is that we need to use tokenization of the model on our dataset. This will make sure that the model can take our data as input.
1. Download Tokenizer
First step in the tokenization is to download right tokenization model.
Hugging face transformer library provides the helper class called AutoTokenizer. This class provides method from_pretrained which will help to download the tokenization model from hugging face repository. The model we are using base bert model trained on uncased data.
2. Tokenize Datasets
Once tokenizer is downloaded and ready to use, we can tokenize our datasets.
In above code, we use tokenize_function which selects the right column which has the text data. Then using the map function tokenization will be applied for each batch.
Code
Complete code for the post is in below google colab notebook.
https://colab.research.google.com/drive/1d3-22HNkuLCqP1ctemMaMw1ETaWL48ET?usp=sharing.
You can also access python notebook on github.
https://github.com/phatak-dev/transformer-models/blob/main/Spam_Detection_using_BERT_Model.ipynb.
Conclusion
In this post, we understood what are transformation models. We also prepared our dataset to have model tokenization. In the next post, we will see how to fine tune the model.


The org.rcm.cmdline
package provides a simple but powerful
tool for parsing command line options in Java. It is inspired by the
python optparse module.
The cmdline
library supports short, posix style, options such as -h
and long,
gnu style, options such as --help
. Options can be toggles (set, not-set),
represent a value or a list of values.
This code was originally developed by Robert Monnet (rcmonnet@acm.org).
The library is released under the Apache 2.0 license.
The following code shows how to set up a couple of options:
// define the command line parser including the help text
CommandLine cl =
new CommandLine("Usage org.rcm.Example [options] <name>");
// define options as either ToggleOption, ValueOption or ValuesOption
// -ToggleOptions have boolean values (set/not-set)
// -ValueOption have a string value (from command line or default)
// -ValuesOption have a list of string values (from command line or default)
Option fileOption =
cl.addOption("f", "file", "FILE",
"write report to FILE or stdout if not specified");
ToggleOption quietOption =
cl.addToggleOption("q", "quiet",
"don't print status messages to stdout");
ToggleOption helpOption =
cl.addToggleOption("h", "help", "display this help text");
// now parse the command line for options, regular parameters will be
// returned for further processing
// options settings are available through the dfferent options
try {
String[] pargs = cl.parse(args);
...
} catch (CommandLineException ex) {
System.out.println("invalid command line: " + ex.getMessage());
System.out.println(cl.getHelp());
}
If the command line is invalid a CommandLineException
will be thrown.
This exception is unchecked so you can let it propagate to the top or catch it and
display the help text. The help text shows the expected program usage including a list of options.
As you add options to the command line, option descriptions are appended to the help text.
The help text is available by calling CommandLine#getHelp()
.
For the example above, the help text will look like:
Usage org.rcm.Example [options] <name>
-f <FILE>, --file=<FILE> : write report to FILE or stdout if not specified
-q --quiet : don't print status messages to stdout
-h --help : display this help text
To find if a variable has been set, just call Option#isSet()
. For Options
having a value, ValueOption
and Values
, it can be retrieved
using Option#getValue()
and Option#getValues()
respectively.
Options with value can be defined with a default value or not.
If the option was not set on the command line and does not have a default value then a null
is returned (and isSet()
is false).
To define options, use the following method on the CommandLine object:
create an on/off option, no value is associated with it.
addToggleOption(String shortName, String longName, String help)
create an option with a single value. the variable name is used in the help text to designate the option value. The option is always set and is initialized with the default value
addValueOption(String shortName, String longName, String variableName,
String help, String defaultValue)
create an option with a single value. the variable name is used in the help text to designate the option value. The option is not set by default
addValueOption(String shortName, String longName, String variableName,
String help)
create an option with a set of values. the variable name is used in the help text to designate the option value. The option is always set and is initialized with the set of default values
addValuesOption(String shortName, String longName, String variableName,
String help, String[] defaultValue)
create an option with a set of values. the variable name is used in the help text to designate the option value. The option is not set by default
addValuesOption(String shortName, String longName, String variableName,
String help)
Note that for all options, Short and Long names are optional but at least one is required.
The option syntax follows the traditional posix style options -
and gnu style options --
:
Posix style options have only one letter, several options can be aggregated together behind a
single -
as in most of unix commands. If the option requires a value then the option
needs to be the only option after the -
and the value is separated from the option by a space.
Gnu style options have a minimum of two letters, options cannot be aggregate behind a single --
.
If the option requires a value then it can be separated from the option by either a space
or an equal sign.
In a list of value, each value is separated by a comma, no spaces are allowed.
Here are a few examples of valid options:
short toggle options
ls -l -t -r
short toggle options, compacted after a single -
ls -ltr
short option with a value
process -f f.out
short option with a list of values
paint -c blue,red,white
long toggle options
process --quiet --stdout
long option with a value
process --file=f.out
long option with a value
process --file f.out
long option with a list of values
paint --colors=blue,red,white
long option with a list of values
paint --colors blue,red,white
The library is setup for maven. There is no dependencies others than the JDK. To build the library jar you need to have maven installed (at least version 2). type:
mvn package
To build the javadoc, type:
mvn javadoc:jar
You will find the produced jar under ~/target


Melba (Park Overall) and Flint (Don Harvery), the Fred and Wilma of Victorville, live a blissful small town life until Melba catches Flint and her best friend with their pants down. Sweet naive Melba swallows her tears, dumps her white trash hubby, dolls up in her mother's best 1950's sparkly jumper, and heads out for a night on the town. On the way, she crosses paths with three rich, Las Vegas bound, brats from L.A. (one of which is Freddie Prinze Jr.).
The three little kings ditch her, but Melba is the country cat that just keeps coming back to find them.
Written and directed in a Fargo-esque kind of way, "Sparkler" brings real life and coincidence together making for a fun quirky movie. I also appreciated the true-to-life dialogue and attention to small detail.
Starring Park Overall, Don Harvey, and Freddie Prinze, Jr. Directed by Darren Stein. Written by Darren Stein and Catherine Eads. Produced by Jennifer Amerine and Kimberly Jacobs
Grade..........................A-
-- Copyright © 1999 Ross Anthony, currently based in Los Angeles, has scripted and shot documentaries, music videos, and shorts in 35 countries across North America, Europe, Africa and Asia. For more reviews visit: http://RossAnthony.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


| DOSE: T+ 0:00 |
1 capsl |
oral |
MDMA |
(capsule) |
| T+ 0:30 |
2.5 g |
oral |
Mushrooms |
(ground / crushed) |
The names used are fake.
Out of the clear blue, one thursday a good Friend of mine (who we will refer to as Jake) informed me that we were making a trip up to our friend Felix's cabin for a hippy flipping adventure. Since I had never tried hippy flipping, but was familiar with the effects of mushrooms and MDMA separately, I agreed to accompany without a second thought.
Felix's cabin is located in the gulf islands, a chain of absolutely gorgeous, sparsely inhabited islands nestled in between vancouver island and the mainland. These islands have been the location of some of my more memorable psychedelic experiences.
I met up with Jake & Felix after work on Friday, in addition to Candice and Zack and we made our way towards the ferry.
On board the ferry, we met up with Jake's good friend Leslie and we, as a group, establish that there must be one basic ground rule for this experience: that nobody would attempt to go swimming in the ocean.
We made it to the island and Felix's cabin, where we met up with Lorena and Stephanie who live on the island.
We hung out on the porch for the afternoon watching the ocean view as the sun came down. We smoked a few bowls, ate dinner, then decided it was time to get down to business. Jake issued me about an 1/8 of mushrooms and Candice gave me a cap of MDMA.
Both Jake and myself put our mushrooms in a coffee grinder, and then put the powder inside a sandwich. It was actually a pleasure to eat. Felix, Zack, Leslie, Candice, and Lorena also ate mushrooms.
Upon Lorena's recommendation, we went down to a small clearing in the middle of the woods to smoke a joint. Jake & myself couldn't help but laugh the whole way there as everyone was tripping over the foliage and couldn't see anything as it was pitch black. We finally made it to the clearing and found to our chagrin that the joint was poorly rolled and wouldn't stay lit. The shrooms were starting to kick in so naturally this all seemed incredibly hilarious.
Jake recommended that we take the MDMA about 20-30 minutes after the mushrooms, so that the peak effects of both substances would occur at more or less the same time. Having been sitting in that clearing for about ten minutes, we decided to head back. When we made it back to the road I noticed the open-eye 'patterned' visuals which I normally associate with mushrooms were starting to develop. And the stars began to give off very distinct halos.
We made it back to the cabin and myself, Jake, Felix & Candice took one cap each of MDMA. We all decided to make our way down to the beach.
The walk down included much shroom-induced behaviour such as walking in front of another person and stopping frequently so as to make them stumble. This of course caused great laughter and was generally well received.
We made it to the beach, which is a wonderful place. Where the water meets the land there are wonderful rounded rock formations caused by erosion. And various plants and grasses poking up through sporadic cracks in the rock. I guess there really isn't any way to acurately describe it.
As soon as we made it down to the rocks we sat down and admired the night. I looked up, and my vision was suddenly flooded with visuals, the sky was covered in gorgeous waves of purple. It took me a moment to realize that this was the tail end of a meteor shower, and that the purple was not mushroom-induced. I had to confer with everybody on this. And they all agreed it looked very real. Nonetheless, it was quite incredible.
Jake at this point seemed to be preoccupied with lying on his back and pulling on some weeds.
At one point Leslie tried to go swimming, but when reminded of our rule, informed us that she was not swimming but 'wading'. Seemed fair enough to us.
At this point I was having trouble determining through the mushroom induced fog whether or not I was feeling the MDMA. Looking back, I can pinpoint the exact time that it hit me, but at the time, I couldn't tell.
We began walking back from the beach, and as we passed through a pitch black stretch of pine trees, the world disappeared, everything was visuals, Jake and Felix were experiencing the same thing, and as we made our way back into moonlight we were trying to sweep the visuals away using our arms. You'll have to imagine for a moment three young men walking through the night laughing hysterically and waving their arms in front of their face. After that, I noticed how much I had appreciated that moment with the visuals, and how good it felt to laugh. It was the MDMA. I suddenly felt compelled to kneel down and touch the ground, in extreme appreciation for the Earth. I wanted to simultaneously hug every tree in sight, since they had all contributed so much to the good vibe of the evening.
Jake & I had a good talk about movies and coined the eternal expression 'pretty good, no complaints'. Which stemmed from us walking down the road which huge grins on our faces and making emphatic hand gestures while intentionally understating how good we felt. 'Pretty Good, Jake!' 'No Complaints my friend!'.
As time progressed, the visuals became larger, more intense, and more beautiful. The visuals always seemed to reflect the mood, they were always in context. The most memorable one for me was a giant sun, the kind you see in cartoons.
We talked about how a large part of the good feeling was the environment, and the group of people, many of whom had never met but got along extremely well.
We made it back to the cabin and put on a Derrick Carter CD Felix had made, which became the staple of that evening. We alternated dancing in the large clearing of long grass in front of the porch and smoking joints in folding chairs in the clearing. We couldn't get enough of the long grass.
We went back down to the ocean later but decided to sit out on the dock instead of the beach. We heard a bizarre lapping noise coming from the land, and thought originally it was a deer drinking. This didn't make any sense however, because it was salt water. We shone the flash light on where the noise was coming from. We all saw the same thing: a giant beast, a monster. I added that it appeared to be covered in eyes. We ran back down the dock laughing ourselves to the threshold of insanity.
I had many incredibly interesting conversations with pretty much everybody that evening. And everybody contributed to a small book which we had been writing in for all of our mushroom experiences. When we read that book today, everything in it is still as potent as the night it was written.
All of a sudden, a great light filled the clearing. It was the sun. That was without a doubt the fastest night of my life.
I felt wonderful for the next three days and the ferry ride back home was a wonderful time of reflection. That evening created something inside me which I still carry to this day.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Sometimes your scorecard for a particular negotiation will closely match your self-assessment profile. That shouldn't be surprising, since your profile reflects your general tendencies. But other times it may look very different. Here's why:
You may be more effective negotiating with certain types of people than with others
It may also depend on the situation. Perhaps you're stronger negotiating on behalf of your organization than advocating for yourself.
Finally, these scorecard questions are different from those in the self-assessment. Here you were free to rate yourself on each skill independently without making tradeoffs for the other items.
Take a moment to review your answers, plus your scorecard profile, and reflect more broadly about how this negotiation unfolded. When you're done, tap Back above.


Installation
Qiskit is a package in Python for doing everything you'll ever need with quantum computing.
If you don't have it already, you need to install it. Once it is installed, you need to import it.
There are generally two steps to installing Qiskit. The first one is to install Anaconda, a python package that comes with almost all dependencies that you will ever need. Once you've done this, Qiskit can then be installed by running the command
pip install qiskit
in your terminal. For detailed installation instructions, refer to the documentation page here.
Note: The rest of this section is intended for people who already know the fundamental concepts of quantum computing. It can be used for readers who wish to skip straight to the later chapters in which those concepts are put to use. All other readers should read the Introduction to Python and Jupyter notebooks, and then move on directly to the start of Chapter 1.
from qiskit import *
The object at the heart of Qiskit is the quantum circuit. Here's how we create one, which we will call qc
qc = QuantumCircuit()
This circuit is currently completely empty, with no qubits and no outputs.
To make the circuit less trivial, we need to define a register of qubits. This is done using a QuantumRegister
object. For example, let's define a register consisting of two of qubits and call it qr
.
qr = QuantumRegister(2,'qreg')
Giving it a name like 'qreg'
is optional.
Now we can add it to the circuit using the add_register
method, and see that it has been added by checking the qregs
variable of the circuit object.
qc.add_register( qr )
qc.qregs
Now our circuit has some qubits, we can use another attribute of the circuit to see what it looks like: draw()
.
qc.draw(output='mpl')
Our qubits are ready to begin their journey, but are currently just sitting there in state |0>
.
To make something happen, we need to add gates. For example, let's try out h()
.
qc.h()
Here we got an error, because we didn't tell the operation which qubit it should act on. The two qubits in our register qr
can be individially addressed as qr[0]
and qr[1]
.
qc.h( qr[0] )
Ignore the output in the above. When the last line of a cell has no =
, Jupyter notebooks like to print out what is there. In this case, it's telling us that there is a Hadamard as defined by Qiskit. To suppress this output, we could use a ;
.
We can also add a controlled-NOT using cx
. This requires two arguments: control qubit, and then target qubit.
qc.cx( qr[0], qr[1] );
Now our circuit has more to show
qc.draw(output='mpl')
We are now at the stage that we can actually look at an output from the circuit. Specifcially, we will use the 'statevector simulator' to see what is happening to the state vector of the two qubits.
To get this simulator ready to go, we use the following line.
vector_sim = Aer.get_backend('statevector_simulator')
In Qiskit, we use backend to refer to the things on which quantum programs actually run (simulators or real quantum devices). To set up a job for a backend, we need to set up the corresponding backend object.
The simulator we want is defined in the part of qiskit known as Aer
. By giving the name of the simulator we want to the get_backend()
method of Aer, we get the backend object we need. In this case, the name is 'statevector_simulator'
.
A list of all possible simulators in Aer can be found using
Aer.backends()
All of these simulators are 'local', meaning that they run on the machine on which Qiskit is installed. Using them on your own machine can be done without signing up to the IBMQ user agreement.
Running the simulation is done by Qiskit's execute
command, which needs to be provided with the circuit to be run and the 'backend' to run it on (in this case, a simulator).
job = execute( qc, vector_sim )
This creates an object that handles the job, which here has been called job
. All we need from this is to extract the result. Specifically, we want the statevector.
ket = job.result().get_statevector()
for amplitude in ket:
print(amplitude)
This is the vector for a Bell state $\left( \left|00\right\rangle + \left|11\right\rangle \right)/\sqrt{2}$, which is what we'd expect given the circuit.
While we have a nicely defined state vector, we can show another feature of Qiskit: it is possible to initialize a circuit with an arbitrary pure state.
new_qc = QuantumCircuit( qr )
new_qc.initialize( ket, qr )
new_qc.draw(output='mpl')
In the above simulation, we got out a statevector. That's not what we'd get from a real quantum computer. For that we need measurement. And to handle measurement we need to define where the results will go. This is done with a ClassicalRegister
. Let's define a two bit classical register, in order to measure both of our two qubits.
cr = ClassicalRegister(2,'creg')
qc.add_register(cr)
Now we can use the measure
method of the quantum circuit. This requires two arguments: the qubit being measured, and the bit where the result is written.
Let's measure both qubits, and write their results in different bits.
qc.measure(qr[0],cr[0])
qc.measure(qr[1],cr[1])
qc.draw(output='mpl')
Now we can run this on a local simulator whose effect is to emulate a real quantum device. For this we need to add another input to the execute function, shots
, which determines how many times we run the circuit to take statistics. If you don't provide any shots
value, you get the default of 1024.
emulator = Aer.get_backend('qasm_simulator')
job = execute( qc, emulator, shots=8192 )
The result is essentially a histogram in the form of a Python dictionary.
hist = job.result().get_counts()
print(hist)
We can even get qiskit to plot it as a histogram.
from qiskit.tools.visualization import plot_histogram
plot_histogram( hist )
For compatible backends we can also ask for and get the ordered list of results.
job = execute( qc, emulator, shots=10, memory=True )
samples = job.result().get_memory()
print(samples)
Note that the bits are labelled from right to left. So cr[0]
is the one to the furthest right, and so on. As an example of this, here's an 8 qubit circuit with a Pauli $X$ on only the qubit numbered 7
, which has its output stored to the bit numbered 7
.
qubit = QuantumRegister(8)
bit = ClassicalRegister(8)
circuit = QuantumCircuit(qubit,bit)
circuit.x(qubit[7])
circuit.measure(qubit,bit) # this is a way to do all the qc.measure(qr8[j],cr8[j]) at once
execute( circuit, emulator, shots=8192 ).result().get_counts()
The 1
appears at the left.
This numbering reflects the role of the bits when they represent an integer.
$$ b_{n-1} ~ b_{n-2} ~ \ldots ~ b_1 ~ b_0 = \sum_j ~ b_j ~ 2^j $$So the string we get in our result is the binary for $2^7$ because it has a 1
for the bit numbered 7
.
Multiple quantum and classical registers can be added to a circuit. However, if we need no more than one of each, we can use a simplified notation.
For example, consider the following.
qc = QuantumCircuit(3)
The single argument to QuantumCircuit
is interpreted as the number of qubits we want. So this circuit is one that has a single quantum register consisting of three qubits, and no classical register.
When adding gates, we can then refer to the three qubits simply by their index: 0, 1 or 2. For example, here's a Hadamard on qubit 1.
qc.h(1)
qc.draw(output='mpl')
To define a circuit with both quantum and classical registers, we can supply two arguments to QuantumCircuit
. The first will be interpreted as the number of qubits, and the second will be the number of bits. For example, here's a two qubit circuit for which we'll take a single bit of output.
qc = QuantumCircuit(2,1)
To see this in action, here is a simple circuit. Note that, when making a measurement, we also refer to the bits in the classical register by index.
qc.h(0)
qc.cx(0,1)
qc.measure(1,0)
qc.draw(output='mpl')
As we've seen, it is possible to combine different circuits to make bigger ones. We can also use a more sophisticated version of this to make custom gates. For example, here is a circuit that implements a cx
between qubits 0 and 2, using qubit 1 to mediate the process.
sub_circuit = QuantumCircuit(3, name='toggle_cx')
sub_circuit.cx(0,1)
sub_circuit.cx(1,2)
sub_circuit.cx(0,1)
sub_circuit.cx(1,2)
sub_circuit.draw(output='mpl')
We can now turn this into a gate
toggle_cx = sub_circuit.to_instruction()
and then insert it into other circuits using any set of qubits we choose
qr = QuantumRegister(4)
new_qc = QuantumCircuit(qr)
new_qc.append(toggle_cx, [qr[1],qr[2],qr[3]])
new_qc.draw(output='mpl')
Backend objects can also be set up using the IBMQ
package. The use of these requires us to sign with an IBMQ account. Assuming the credentials are already loaded onto your computer, you sign in with
IBMQ.load_account()
Now let's see what additional backends we have available.
provider = IBMQ.get_provider(hub='ibm-q')
provider.backends()
Here there is one simulator, but the rest are prototype quantum devices.
We can see what they are up to with the status()
method.
for backend in provider.backends():
print( backend.status() )
Let's get the backend object for the largest public device.
real_device = provider.get_backend('ibmq_16_melbourne')
We can use this to run a job on the device in exactly the same way as for the emulator.
We can also extract some of its properties.
properties = real_device.properties()
coupling_map = real_device.configuration().coupling_map
From this we can construct a noise model to mimic the noise on the device.
from qiskit.providers.aer import noise
noise_model = noise.device.basic_device_noise_model(properties)
And then run the job on the emulator, with it reproducing all these features of the real device. Here's an example with a circuit that should output '10'
in the noiseless case.
qc = QuantumCircuit(2,2)
qc.x(1)
qc.measure(0,0)
qc.measure(1,1)
job = execute(qc, emulator, shots=1024, noise_model=noise_model,
coupling_map=coupling_map,
basis_gates=noise_model.basis_gates)
job.result().get_counts()
Now the very basics have been covered, let's learn more about what qubits and quantum circuits are all about.


-
License Grant
By posting any User Content on the Service, you expressly grant to Goodreads a nonexclusive, royalty-free, perpetual,
irrevocable, and fully sublicensable right to use, reproduce, modify, adapt, publish, perform, translate, create
derivative works from, distribute, and display such content throughout the world in any media. You represent and
warrant that you own or otherwise control all of the rights to the content that you post; that the content is accurate;
that use of the content you supply does not violate this policy and will not cause injury to any person or entity; and
that you will indemnify Goodreads for all claims resulting from content you supply. If you submit User Content via the
“My Writing” or “Ebook” features, our Terms of Use for Writers apply to that User Content.
-
Eligibility
This Service is intended solely for Users who are thirteen (13) years of age or older, and any registration, use or
access to the Service by anyone under 13 is unauthorized, unlicensed, and in violation of this Agreement. If you are
under 18 years of age you may use the Service only if you either are an emancipated minor or possess legal parental or
guardian consent, and are fully able and competent to enter into the terms, conditions, obligations, affirmations,
representations, and warranties set forth in this Agreement, and to abide by and comply with this Agreement.
-
Indemnity
You agree to defend, indemnify and hold harmless Goodreads and its subsidiaries, agents, managers, and other
affiliated companies, and their employees, contractors, agents, officers and directors, from and against any
and all claims, damages, obligations, losses, liabilities, costs or debt, and expenses (including but not
limited to attorney's fees) arising from: (i) your use of and access to the Service, including any data or
content transmitted or received by you; (ii) your violation of any term of this Agreement, including without
limitation your breach of any of the representations and warranties above; (iii) your violation of any
third-party right, including without limitation any right of privacy, publicity rights or intellectual
property rights; (iv) your violation of any law, rule or regulation of the United States or any other
country; (v) any claim or damages that arise as a result of any of your User Content or any that are
submitted via your account; or (vi) any other party’s access and use of the Service with your unique
username, password or other appropriate security code.


Netflix to make changes to The Devil Next Door documentary following complaints
Netflix will make amendments to crime documentary series The Devil Next Door following accusations of "rewriting history" from Polish Prime Minister Mateusz Morawiecki
by Lewis Knight, https://www.mirror.co.uk/authors/lewis-knight/Netflix documentary series The Devil Next Door will undergo changes following complaints from the Polish Prime Minister.
The documentary series follows the life of Ukrainian man Koh Demjanjuk who moved to Cleveland and led a 'normal' life before being accused of being the notorious Nazi concentration camp guard dubbed Ivan the Terrible.
Following the release of the series, Polish Prime Minister Mateusz Morawiecki wrote an open letter to Netflix to slam historical inaccuracies in the show.
He criticised the use of historically inaccurate maps that showed Nazi concentration camps in what is now modern-day Poland.
According to The Hollywood Reporter , Morawiecki wrote: "There is no comment or any explanation whatsoever that these sites (on the map) were German-operated.
"As my country did not even exist at that time as an independent state, and millions of Poles were murdered at these sites, this element of The Devil Next Door is nothing short of rewriting history."
Now, the streaming service has confirmed to THR that they will be making changes to the series in response.
Netflix told The Hollywood Reporter: "We are hugely proud of The Devil Next Door and stand by its filmmakers, their research and their work.
"In order to provide more information to our members about the important issues raised in this documentary and to avoid any misunderstanding, in the coming days we will be adding text to some of the maps featured in the series.
They added: "This will make it clearer that the extermination and concentration camps in Poland were built and operated by the German Nazi regime who invaded the country and occupied it from 1939-1945."
The series has already caused an emotional responses from Netflix viewers.
The Devil Next Door is available now on Netflix.


CASPER A film review by Michael John Legeros Copyright 1995 Michael John Legeros (Uni) Directed by Brad Silberling Written by Sherri Stoner & Deanna Oliver Cast Christina Ricci, Bill Pullman, Cathy Moriarty, Eric Idle, and Malachi Pearson as the Voice of Casper MPAA Rating "PG" Running Time 100 minutes Reviewed at General Cinemas at Pleasant Valley, Raleigh (27MAY95)
==
"This sucks." - Fatso
Skip it. The computer-generated FX are cute, but the story is all over the place. The simple, sweet premise of a very lonely ghost has been expanded to include a variety of vulgar subplots, ranging from hidden treasure to a kitchen-sink explanation of the afterlife. Groan. The result is too broad to be believable.
If the jokes were stronger (say, a la THE FLINTSTONES), we might have something here. But with the exception of a few good lines, there isn't enough to sustain adult interest. Even a half-dozen well-placed cameos don't generate the guffaws that they should. Kids won't mind, though. They'll love the eye-popping production design that looks quite ookey on the inside (and quite phony on the outside).
We all could do without the wish-fulfillment ending. The final reel is the worst, with enough ghosts, angels, and misplaced spirits to send even the lowest-level paranormal screaming from the theater. And, yes, that *is* Little Richard singing "Casper the Friendly Ghost" over the closing credits. Good golly!
BOTTOM LINE: Strictly for kids, even if the language isn't the best in places.
Grade: D+
-- Michael J. Legeros Raleigh, North Carolina
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


What did the ad look like?
What's on the domain of ad now?
How much did each ad cost?
What's the purchasing status of each ad?


{% extends "base.html" %} {% block footer %} {% if config.copyright %}
{{ config.copyright }}
Copyright © 2020-2022 pythoneers.cn All Rights Reserved.
Documentation built with MkDocs.


Copy the URl below into a podcast app to add the Podcast feed.
==> bd_cov_cbe_podcast.php <==
Podcast Feed URL QR Code
This a podcast feed to easily listen to the .mp3 recordings created for the Covenant Church - Community Bible Experience Bible reading program. The podcast feed follows the Brookdale Covenant CBE reading schedule.
This podcast feed is voluntarily hosted by Dwight Gappa as for a way to give back the community at Brookdale Covenant Church.
Podcast feed has been tested and found working correctly on DoggCatcher on Android 4.4 through 6 and iOS 10.1 beta.
Feel free to contact Dwight Gappa with feedback through my email address (email address removed) or open an issue on Github project page https://github.com/DwightGappa/bd_cov_cbe_podcast.
Google Play Music help - Add custom podcast feed to Google Play music. https://support.google.com/googleplay/podcasts/answer/6260341?hl=en
New iOS Podcast app can add custom feed URL directly. The following link is for the old version that can't add a custom podcast URL directly.
CNET - Add any podcast to the old iOS Podcasts(New Podcast can add custom feed URL directly) app. https://www.cnet.com/how-to/add-any-podcast-to-the-ios-podcasts-app/
DoggCatcher - the Android Podcatcher. Dwight has been using this Podcast app for years on Android. http://www.doggcatcher.com/
The podcast feed .php was created by Dwight Gappa and Copyright 2016 Dwight Gappa. The feed .php is released under the MIT software license
All the material related to the Books of the Bible and the Community Bible Experience are created by Biblica and are copyright Biblica.


Thanks for visiting the Evidence Synthesis Training courses website. This site hosts a variety of free-to-access (Open Educational) training courses in evidence synthesis. The courses span a suite of synthesis methods, including systematic review and systematic mapping, stakeholder engagement in evidence synthesis, and evidence synthesis technology. The courses are provided entirely free-of-charge - our aim is to build capacity and increase the uptake, rigour and awareness of systematic evidence synthesis methodology.
You can find our courses listed in the menu on the left of the screen. Our selection of courses is constantly growing, so if you don't find the right course for you, please contact me and let me know.
If you have enjoyed using these training materials, please do consider donating to support my work:
You can donate via my Ko-fi page, thanks so much!
If you are interested in joining an online training workshop provided LIVE, including presentations, exercises, and questions and answers with methodology expert Neal Haddaway, please follow this link or click the image below and fill in the expression of interest form:
Once you have completed a course and its test, please use this form to request a certificate:


Packers' Bratkowski, Bart Starr's backup, dies at age 88
GREEN BAY, Wis. - The Green Bay Packers say Zeke Bratkowski, the quarterback who backed up Bart Starr during the team's 1960s dynasty, has died at his Florida home. He was 88.
The Packers Hall of Famer was a quarterback in Green Bay from 1963-1968 and again in 1971.
One of Bratkowski's most notable performances in relief of an injured Starr came in 1965, a 13-10 overtime playoff win over the Baltimore Colts that sent the Packers to the title game against Cleveland.
They beat the Browns for what would be the first of three straight championship seasons, and Bratkowski played briefly in both Super Bowl wins in the two years that followed.
Bratkowski was a star at the University of Georgia before starting his career with the Chicago Bears.


(#) Inconsistencies in array element counts !!! WARNING: Inconsistencies in array element counts This is a warning. Id : `InconsistentArrays` Summary : Inconsistencies in array element counts Severity : Warning Category : Correctness Platform : Android Vendor : Android Open Source Project Feedback : https://issuetracker.google.com/issues/new?component=192708 Affects : Resource files Editing : This check runs on the fly in the IDE editor Implementation : [Source Code](https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/ArraySizeDetector.java) Tests : [Source Code](https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/ArraySizeDetectorTest.kt) Copyright Year : 2011 When an array is translated in a different locale, it should normally have the same number of elements as the original array. When adding or removing elements to an array, it is easy to forget to update all the locales, and this lint warning finds inconsistencies like these. Note however that there may be cases where you really want to declare a different number of array items in each configuration (for example where the array represents available options, and those options differ for different layout orientations and so on), so use your own judgment to decide if this is really an error. You can suppress this error type if it finds false errors in your project. (##) Example Here is an example of lint warnings produced by this check: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~text res/values/arrays.xml:3:Warning: Array security_questions has an inconsistent number of items (3 in values-nl-rNL/arrays.xml, 4 in values-cs/arrays.xml) [InconsistentArrays] <string-array name="security_questions"> ^ res/values/arrays.xml:10:Warning: Array signal_strength has an inconsistent number of items (5 in values/arrays.xml, 6 in values-land/arrays.xml) [InconsistentArrays] <array name="signal_strength"> ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Here is the source file referenced above: `res/values/arrays.xml`: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~xml linenumbers <resources> <!-- Choices for Locations in SetupWizard's Set Time and Data Activity --> <string-array name="security_questions"> <item>Favorite food?</item> <item>City of birth?</item> <item>Best childhood friend\'s name?</item> <item>Highschool name?</item> </string-array> <array name="signal_strength"> <item>@drawable/ic_setups_signal_0</item> <item>@drawable/ic_setups_signal_1</item> <item>@drawable/ic_setups_signal_2</item> <item>@drawable/ic_setups_signal_3</item> <item>@drawable/ic_setups_signal_4</item> </array> </resources> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You can also visit the [source code](https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/ArraySizeDetectorTest.kt) for the unit tests for this check to see additional scenarios. The above example was automatically extracted from the first unit test found for this lint check, `ArraySizeDetector.testArraySizes`. To report a problem with this extracted sample, visit https://issuetracker.google.com/issues/new?component=192708. (##) Suppressing You can suppress false positives using one of the following mechanisms: * Adding the suppression attribute `tools:ignore="InconsistentArrays"` on the problematic XML element (or one of its enclosing elements). You may also need to add the following namespace declaration on the root element in the XML file if it's not already there: `xmlns:tools="http://schemas.android.com/tools"`. ```xml <?xml version="1.0" encoding="UTF-8"?> <resources xmlns:tools="http://schemas.android.com/tools"> ... <array tools:ignore="InconsistentArrays" .../> ... </resources> ``` * Using a special `lint.xml` file in the source tree which turns off the check in that folder and any sub folder. A simple file might look like this: ```xml <?xml version="1.0" encoding="UTF-8"?> <lint> <issue id="InconsistentArrays" severity="ignore" /> </lint> ``` Instead of `ignore` you can also change the severity here, for example from `error` to `warning`. You can find additional documentation on how to filter issues by path, regular expression and so on [here](https://googlesamples.github.io/android-custom-lint-rules/usage/lintxml.md.html). * In Gradle projects, using the DSL syntax to configure lint. For example, you can use something like ```gradle lintOptions { disable 'InconsistentArrays' } ``` In Android projects this should be nested inside an `android { }` block. * For manual invocations of `lint`, using the `--ignore` flag: ``` $ lint --ignore InconsistentArrays ...` ``` * Last, but not least, using baselines, as discussed [here](https://googlesamples.github.io/android-custom-lint-rules/usage/baselines.md.html).


{% extends "base/base.html" %} {% block head %} {% endblock %} {% block body %} WebSocks Client A secure proxy based on WebSocket. ListenAddr ServerURL SNI InsecureCert Start Stop Client Stats Downloaded Uploaded DownloadSpeed UploadSpeed 0 0 0 0 Logs Log... {% endblock %}
A secure proxy based on WebSocket.
Start
Stop
Client Stats
Logs


Making Economic Sense
The drug war is responsible for trillions of wasted tax dollars and misallocated government spending, as well as devastating human costs that far outweigh the damage caused by drugs alone. The United States’ unrivaled incarceration rate is a constant financial drain, causing an immeasurable loss in workforce productivity, and puts a strain on scant legal and law enforcement resources.
DPA is working to end wasteful government spending on the drug war by leading the national dialogue about ending prohibition and refocusing resources on health-centered approaches to drug use.
Key Economic Issues
Wasted Tax Dollars
Over the past four decades, federal and state governments have poured over $1 trillion the drug war and relied on taxpayers to foot the bill. Unfortunately, these tax dollars haven’t solved the problems they were intended to solve – while creating a whole new set of huge problems.
Here are some of the fiscal costs of the war on drugs:
- In 1980, the United States had 50,000 people behind bars for drug law violations – now we have half a million.
- More than one million people are arrested simply for drug possession in the U.S. every year – that’s one arrest every 25 seconds.
- Money funneled into drug enforcement has meant less funding to improve public safety and has left essential education, health, social service and public safety programs struggling to operate on meager funding.
- Drug war advocates continue to demand more money for the same failed policies despite the fact that highly-funded law enforcement and interdiction strategies have failed to reduce drug use and drug availability. They want to keep wasting your tax dollars and destroying countless lives on a losing battle.
- The demand for drugs in the United States has remained constant despite the United States’ enormous financial commitment to fighting the war on drugs with well-equipped drug taskforces and the full force of mass incarceration.
- The drug war has created enormous public health costs by limiting the availability of harm reduction programs that could quell overdose and infectious disease transmission rates.
Just as disheartening as the fiscal costs of fighting a failed drug war are the opportunity costs. Think of the impact all that drug war funding could have if instead of financing the arrest and incarceration of millions of people each year, we made drug treatment more widely available, improved social service and education programs, or simply gave the money back to taxpayers.
Distorted Incentives for Law Enforcement
Ever wonder why police spend so much time enforcing failed drug laws? To find the answer, you just need to follow the money.
- Funding schemes – Because funding for law enforcement is often based on the number of arrests made and the amount of property seized, the easiest way for local police to up their numbers and boost their careers is to target low-level drug offenders. To create arrest opportunities, police routinely rely on untrustworthy informants, conduct dangerous home invasions on flimsy evidence, frame suspects, and commit perjury.
- Asset forfeiture laws – These laws allow law enforcement agencies to keep the property they seize during drug arrests with minimal proof, putting the burden instead on suspects to prove their own innocence. As a result, local law enforcement agencies tend to increase their focus on drug arrests, often at the expense of more pressing public safety needs.
- The Byrne Justice Assistance Grant program – This program provides federal funding to hundreds of regional anti-drug taskforces.
Supply and Demand
A prime example of the drug war’s backward logic is its distortion of the basic economic principle of supply and demand. The federal government funnels vast resources into futile criminal justice and interdiction policies intended to reduce the supply of drugs, while neglecting treatment and education strategies that could help reduce drug demand.
This focus on supply reduction has failed to reduce drug use, while provoking drug trade-related violence. The economic incentives of the illegal drug trade ensure that supply-side interdiction is an unwinnable battle. Education and treatment programs are exponentially more cost-effective and successful when it comes to addressing problematic substance use.
Internationally, the hypocrisy of American drug policy is clear. Despite being the largest consumer of drugs in the world, the U.S. focuses on violent supply reduction strategies in other countries while investing little in demand reduction strategies domestically.
Drug prohibition essentially provides a monopoly and price supports for organized crime. Forcibly limiting the supply of drugs while demand remains relatively constant only increases the profitability of drug trafficking.
Drug Prohibition and Violence
Drug enforcement officials often cite drug-related violence as a reason that drugs must be eliminated from our society, but it is actually the system of drug prohibition that causes much of the violence. Just as alcohol Prohibition fostered organized crime in the 1920s, drug prohibition empowers a dangerous illegal market throughout the United States and the world.
Prohibition has inflated the price, and thus the profit, of drugs substantially. It has also driven the drug trade underground, where there are no legal avenues for peacefully resolving disputes between competitors.
Rather than proposing specific policies for increasing prevention and treatment services to directly impact drug use in the United States, the federal government's approach to the alarming prohibition-related violence in countries like Mexico and Colombia has been to pour more money into law enforcement crackdowns on cartels and efforts to intercept drug shipments. Throughout the drug war's history, these kinds of supply-side interventions have consistently failed to reduce violence. They have instead made the illicit drug market more profitable, more competitive and more dangerous.
In countries that bear the brunt of drug war violence, such as Mexico, Bolivia and Colombia, prominent leaders are speaking up more and more about the benefits of ending prohibition. We believe ending drug prohibition is the key to reducing drug war violence in the U.S. and restoring peace to destabilized regions abroad.
Our Priorities
The Drug Policy Alliance is working to shift funding away from the same old failed policies and toward effective drug treatment and education programs. We are leading the movement to end prohibition’s drain on our economy and to protect your tax dollars from wasteful drug war spending.
We advocate for ending prohibition and treating drug use as a health issue, not a criminal justice issue. As a nation, we must learn to live with the reality of drugs and drug use and find solutions based on common sense and sound economic principles.
Here are some examples of our work:
- DPA has joined with other civil rights and criminal justice reform groups to demand an overhaul of the Byrne Justice Assistance Grant program that would put an end to financial incentives that that are notorious for wasting taxpayer dollars and fostering corruption.
- DPA is the leading voice calling for the Office of National Drug Control Policy to cut funding for enforcement and devote more resources to treatment and other health approaches to drug use.
- DPA is developing public health alternatives to prohibition, including increased treatment availability and better drug education, that would help reduce the demand for drugs and minimize the influence of violent cartels.
Wasteful Spending
The drug war is responsible for trillions of wasted tax dollars and misallocated government spending, as well as devastating human costs that far outweigh the damage caused by drugs alone. The United States’ unrivaled incarceration rate is a constant financial drain, causing an immeasurable loss in workforce productivity, and puts a strain on scant legal and law enforcement resources.
DPA is working to end wasteful government spending on the drug war by leading the national dialogue about ending prohibition and refocusing resources on health-centered approaches to drug use.
Key Economic Issues
Wasted Tax Dollars
Over the past four decades, federal and state governments have poured over $1 trillion the drug war and relied on taxpayers to foot the bill. Unfortunately, these tax dollars haven’t solved the problems they were intended to solve – while creating a whole new set of huge problems.
Here are some of the fiscal costs of the war on drugs:
- In 1980, the United States had 50,000 people behind bars for drug law violations – now we have half a million.
- More than one million people are arrested simply for drug possession in the U.S. every year – that’s one arrest every 25 seconds.
- Money funneled into drug enforcement has meant less funding to improve public safety and has left essential education, health, social service and public safety programs struggling to operate on meager funding.
- Drug war advocates continue to demand more money for the same failed policies despite the fact that highly-funded law enforcement and interdiction strategies have failed to reduce drug use and drug availability. They want to keep wasting your tax dollars and destroying countless lives on a losing battle.
- The demand for drugs in the United States has remained constant despite the United States’ enormous financial commitment to fighting the war on drugs with well-equipped drug taskforces and the full force of mass incarceration.
- The drug war has created enormous public health costs by limiting the availability of harm reduction programs that could quell overdose and infectious disease transmission rates.
Just as disheartening as the fiscal costs of fighting a failed drug war are the opportunity costs. Think of the impact all that drug war funding could have if instead of financing the arrest and incarceration of millions of people each year, we made drug treatment more widely available, improved social service and education programs, or simply gave the money back to taxpayers.
Distorted Incentives for Law Enforcement
Ever wonder why police spend so much time enforcing failed drug laws? To find the answer, you just need to follow the money.
- Funding schemes – Because funding for law enforcement is often based on the number of arrests made and the amount of property seized, the easiest way for local police to up their numbers and boost their careers is to target low-level drug offenders. To create arrest opportunities, police routinely rely on untrustworthy informants, conduct dangerous home invasions on flimsy evidence, frame suspects, and commit perjury.
- Asset forfeiture laws – These laws allow law enforcement agencies to keep the property they seize during drug arrests with minimal proof, putting the burden instead on suspects to prove their own innocence. As a result, local law enforcement agencies tend to increase their focus on drug arrests, often at the expense of more pressing public safety needs.
- The Byrne Justice Assistance Grant program – This program provides federal funding to hundreds of regional anti-drug taskforces.
Supply and Demand
A prime example of the drug war’s backward logic is its distortion of the basic economic principle of supply and demand. The federal government funnels vast resources into futile criminal justice and interdiction policies intended to reduce the supply of drugs, while neglecting treatment and education strategies that could help reduce drug demand.
This focus on supply reduction has failed to reduce drug use, while provoking drug trade-related violence. The economic incentives of the illegal drug trade ensure that supply-side interdiction is an unwinnable battle. Education and treatment programs are exponentially more cost-effective and successful when it comes to addressing problematic substance use.
Internationally, the hypocrisy of American drug policy is clear. Despite being the largest consumer of drugs in the world, the U.S. focuses on violent supply reduction strategies in other countries while investing little in demand reduction strategies domestically.
Drug prohibition essentially provides a monopoly and price supports for organized crime. Forcibly limiting the supply of drugs while demand remains relatively constant only increases the profitability of drug trafficking.
Drug Prohibition and Violence
Drug enforcement officials often cite drug-related violence as a reason that drugs must be eliminated from our society, but it is actually the system of drug prohibition that causes much of the violence. Just as alcohol Prohibition fostered organized crime in the 1920s, drug prohibition empowers a dangerous illegal market throughout the United States and the world.
Prohibition has inflated the price, and thus the profit, of drugs substantially. It has also driven the drug trade underground, where there are no legal avenues for peacefully resolving disputes between competitors.
Rather than proposing specific policies for increasing prevention and treatment services to directly impact drug use in the United States, the federal government's approach to the alarming prohibition-related violence in countries like Mexico and Colombia has been to pour more money into law enforcement crackdowns on cartels and efforts to intercept drug shipments. Throughout the drug war's history, these kinds of supply-side interventions have consistently failed to reduce violence. They have instead made the illicit drug market more profitable, more competitive and more dangerous.
In countries that bear the brunt of drug war violence, such as Mexico, Bolivia and Colombia, prominent leaders are speaking up more and more about the benefits of ending prohibition. We believe ending drug prohibition is the key to reducing drug war violence in the U.S. and restoring peace to destabilized regions abroad.
Our Priorities
The Drug Policy Alliance is working to shift funding away from the same old failed policies and toward effective drug treatment and education programs. We are leading the movement to end prohibition’s drain on our economy and to protect your tax dollars from wasteful drug war spending.
We advocate for ending prohibition and treating drug use as a health issue, not a criminal justice issue. As a nation, we must learn to live with the reality of drugs and drug use and find solutions based on common sense and sound economic principles.
Here are some examples of our work:
- DPA has joined with other civil rights and criminal justice reform groups to demand an overhaul of the Byrne Justice Assistance Grant program that would put an end to financial incentives that that are notorious for wasting taxpayer dollars and fostering corruption.
- DPA is the leading voice calling for the Office of National Drug Control Policy to cut funding for enforcement and devote more resources to treatment and other health approaches to drug use.
- DPA is developing public health alternatives to prohibition, including increased treatment availability and better drug education, that would help reduce the demand for drugs and minimize the influence of violent cartels.


Sister of Silence Eris:
I guess that works. Now, I know little of the greater world out there, but if it relates to the Monastery of Silence and Solina's life, I may know something.
I want the truth of Embryo.


Sandra McKenzie
Democrat
Retired teacher and statistician
MS, Business Statistics B.A. Mathematics
80241
I was on the board of a non-profit that puts on a musical theater showcase with a cast of differently-abled actors and dancers: Magic Moments, Inc. (https://magicmomentsinc.org/) I helped raise advertising funds, advocated for special needs youth and adults while selling tickets and helped them maintain their 501c3 status.
In 2018, I donated a little money, I think, to Jared Polis’s PRIMARY campaign for governor, and worked a little bit on his PRIMARY campaign. I worked a little bit for the Arapahoe County Dem. Party in 2016, electronically updating their call list. I never called or had face-to-face contact with voters.
Tamarac Optimist Club, American Statistical Association, National Council on Teachers of Mathemarics
I worked for the Census Bureau in Washington, D. C. for 10 years. I understand the development and appropriate use of statistics for non-partisan purposes. I saw with dismay how the last congressional redistricting went in Colorado and am relieved it is to be non-partisan this time. I understand the issue of Census undercount and how that might affect the Census numbers available to the Commission. I am a Colorado native and have lived here all my life except for grad school and my stint in Washington, D. C. I love this state and all it represents.
First and foremost, I believe in listening to “the other side,” even persons with whom I may not agree. I am a firm believer and practitioner that more voices improve the final product. Two experiences come to mind. I recently joined the non-profit “Braver Angels,” which seeks to unite “red” and “blue” in building a better tomorrow. I've taken seminars from them that are guides in listening respectfully. In addition I have practiced the scaled version of degrees of consensus many times: 5 = “I agree and will advocate for this;” 4 = “I agree with this;” 3 = “I am neither for nor against this;” 2 = “I am opposed to this;” 1 = “I am strongly opposed to this; it’s a show stopper.” Using this format allows for discussion with those who are not for an idea. When every decision-maker reaches at least a 3, the resulting measure is adopted by consensus. It works.
I have degrees in mathematics and statistics. I spent 30 years as a professional statistician before beginning a second career as a secondary math teacher. I have much experience applying data to the real world. I worked on the Demographic side of the Census Bureau for 2 years, on the Economic side for 2 years and in the Research Division for 6 years. I approach a problem by looking for the relevant facts, understanding the facts, looking at the broader context, forming an assumption, and then checking that assumption with reality. I am able to distill complex analytical ideas into easy-to-understand lay terms. I love the field of statistics; as I told my Metro State classes--statistics is telling a story with data. It's up to the user to be informed to tell that story truthfully, and not bend the statistics to a point of view.
Female


new Director(config)
The Director represents an instance of cog. This class creates an EntityManager, SystemManager, and EventManager. The Director also manages the timer, calling update/render on each step.
Parameters:
| Name | Type | Argument | Description |
|---|---|---|---|
config |
config |
<optional> |
Optional configuration for the director and systems. |
- Source:
Extends
Members
-
<readonly> config :object
-
Gets the configuration passed to the Director during initialization.
Type:
- object
- Source:
-
<readonly> entities :EntityManager
Gets the EntityManager created during initialization.
-
Type:
- EntityManager
- Source:
-
<readonly> events :EventManager
-
Gets the EventManager created during initialization.
Type:
- EventManager
- Source:
-
<readonly> mode :Mode
Gets the current Mode.
-
Type:
- Mode
- Source:
-
<readonly> running :Boolean
Returns true if the director is running updates
-
Type:
- Boolean
- Source:
-
<readonly> systems :SystemManager
Gets the SystemManager created during initialization.
-
Type:
- SystemManager
- Source:
-
<readonly> valid :boolean
True after the Director is initialized. False once destroyed.
-
Type:
- boolean
- Source:
Methods
-
destroy()
Destroy the director.
-
Destroys the instance of the director and cleans up the attached managers
- Source:
-
init(config)
Initializes the director
-
Parameters:
Name Type Argument Description config
config <optional>
Configuration options.
- Source:
-
onBeginStep(callback) → {this}
-
Set a callback on the beginning of the step event.
Parameters:
Name Type Description callback
callback - Source:
Returns:
- Type
- this
-
onBeginUpdate(callback) → {this}
-
Set a callback on the beginning of the update event.
Parameters:
Name Type Description callback
callback - Source:
Returns:
- Type
- this
-
onEndStep(callback) → {this}
-
Set a callback on the ending of the step event.
Parameters:
Name Type Description callback
callback - Source:
Returns:
- Type
- this
-
onEndUpdate(callback) → {this}
-
Set a callback on the ending of the update event.
Parameters:
Name Type Description callback
callback - Source:
Returns:
- Type
- this
-
start(CurrentMode, withUpdate)
-
Starts the Director with a specified Mode. Schedules the step function via requestAnimationFrame
Parameters:
Name Type Argument Description CurrentMode
Mode <optional>
Constructor for the mode to started. If undefined, starts the default Mode.
withUpdate
Boolean <optional>
Indicates if updates should be scheduled. Defaults true.
- Source:
-
stop()
-
Stops the Director's timer, and clears the mode. Un-schedules the step function via cancelAnimationFrame
- Source:
Events
-
render
-
Renders the attached Systems
- Source:
-
step
-
Steps the attached Systems On step, systems are updated, then rendered. If fixedDt is enabled, update may be called multiple times per step. Render will only be called once.
Parameters:
Name Type Description timestamp
number Timestamp passed by requestAnimationFrame
- Source:
-
update
-
Updates the attached Systems
Parameters:
Name Type Description dt
number Number of milliseconds passed since last update.
- Source:


Photobox
CSS3 image gallery jQuery plugin
A lightweight image gallery modal window script which uses only CSS3 for silky-smooth animations and transitions, utilizes GPU rending, which can be completely controlled and themed directly from the CSS.
- Lightweight!
jquery.photobox.js
is only 5kb (gziped & minified) - Hardware accelerated, CSS3 transitions and animations
- Mobile friendly
- Support videos via iframe embedding
- Stunning UI and user-friendly UX
- Images & videos can be zoomed using mousewheel
- Thumbnails can be zoomed using mousewheel
- Keyboard & mouse navigation. Even using mousewheel left/right ;-)
- Exposed UX control up to 99%. No need to mess with the source code
- Observes DOM changes (if images were added/removed)
- Event-delegation on all thumbnails events (obviously...)
- HTML5 History support: update location with the currently viewed image
- No images at all! The only image is a pre-loader animation for old IE.
- Browsers support: IE8+ (graceful degradation), Modern browsers
- And more...
Supports: Firefox, Chrome and IE8+
(This plugin has nothing to do with Flickr)
Github project page


module SpecificAbstract: sig
.. end
Methods which depend of the abstract domain. Foundations of the static interpretation.
Methods which depend of the abstract domain. Foundations of the static interpretation.
val lastStat : Types.generic_stat_loc Pervasives.ref
Last statement read. Is used to give an explicit error with the statement concerned.
val alpha : Types.realD -> Types.abstrD
Abstraction of a real element
real_elem
The real element
Returns The abstract element which corresponds to the real one
val join : Types.abstrD -> Types.abstrD -> Types.abstrD
Joins two abstract domains
a1
The first abstract domain
a2
The second abstract domain
Returns The join of the two abstract domains
val meet : Types.abstrD -> Types.abstrD -> Types.abstrD
Meets two abstract domains
a1
The first abstract domain
a2
The second abstract domain
Returns The meet of the two abstract domains
val isInAbstractDomain : Z.t -> Types.abstrD -> bool
Return true iff
n
is the abstract domain
p
. The concretization function appears here.
n
A number (not really a real domain which is a set of numbers)
p
The abstract domain
Returns Is the number in the abstract domain
val faexpUna : Types.arithOpArithUna -> Types.abstrD -> Types.abstrD
Forward abstract semantics of arithmetic unary operators
op
The arithmetic unary operator
a
The abstract domain of the operand
Returns The abstract domain after the application of the operator on the abstract domain provided
val faexpBin : Types.abstrD -> Types.arithOpArithBin -> Types.abstrD -> Types.abstrD
Forward abstract semantics of arithmetic binary operators
a1
The abstract domain of the first operand
op
The arithmetic binary operator
a2
The abstract domain of the second operand
Returns The abstract domain after the application of the operator on the two operands
val abexpArithBin : Types.abstrD ->
Types.boolOpArithBin -> Types.abstrD -> Types.abstrD * Types.abstrD
Specific abstract interpretation of binary boolean operators with arithmetics operands
a1
The abstract domain of the first operand
op
The arithmetic to boolean binary operator
a2
The abstract domain of the second operand
Returns The pair made of the abstract domain of both operand which respect the property, which is this boolean expression, or an over-approximation of that
val baexpUna : Types.arithOpArithUna -> Types.abstrD -> Types.abstrD -> Types.abstrD
Backward abstract semantics of arithmetic unary operators
op
The arithmetic unary operator
a
The abstract domain of the operand
p
The abstract domain in which we want the result of the operation
Returns The abstract domain of the operand which satisfied the fact that
op
a
is in
p
or an over-approximation of it
val baexpBin : Types.abstrD ->
Types.arithOpArithBin ->
Types.abstrD -> Types.abstrD -> Types.abstrD * Types.abstrD
Backward abstract semantics of arithmetic binary operators
a1
The abstract domain of the first operand
op
The arithmetic to boolean binary operator
a2
The abstract domain of the second operand
p
The abstract domain in which we want the result of the operation
Returns The pair made of the abstract domain for both operands which satistfied the fact that
a1
op
a2
is in
p
or an over-approximation of it
val widening : Types.abstrD -> Types.abstrD -> Types.abstrD
The widening function which ensure termination of lfp
a1
The first abstract domain
a2
The second abstract domain
Returns The abstract domain which is the application of the widening on the abstract domains provided


A relational database management system (RDBMS) emphasizing extensibility and technical standards compliance
Available Version
A NoSQL document-oriented database program, MongoDB uses JSON-like documents with schemata.


Blueprint Reflection Package Version 1.0.
Bundles wishing to use this package must list the package in the Import-Package header of the bundle's manifest. For example:
Import-Package: org.osgi.service.blueprint.reflect; version="[1.0,2.0)"
This package provides a reflection-based view of the configuration information for a Blueprint Container.


Products
Dashboard
Photo
David Tramp
Online
Users
Customers
Sale
Reviews
Photo
David Tramp
Newsletter
Orders
Log out
CUSTOMERS
1
Firstname
Lastname
Address
Phonenumber
2
Firstname
Lastname
Address
Phonenumber
3
Firstname
Lastname
Address
Phonenumber
4
Firstname
Lastname
Address
Phonenumber
5
Firstname
Lastname
Address
Phonenumber
6
Firstname
Lastname
Address
Phonenumber
7
Firstname
Lastname
Address
Phonenumber
8
Firstname
Lastname
Address
Phonenumber
9
Firstname
Lastname
Address
Phonenumber
10
Firstname
Lastname
Address
Phonenumber
1
2
3
Firstname
Lastname
Phonenumber
Address


| remote_name {dbplyr} | R Documentation |
remote_name()
gives the name remote table, or NULL
if it's a query.
remote_query()
gives the text of the query, and remote_query_plan()
the query plan (as computed by the remote database). remote_src()
and
remote_con()
give the dplyr source and DBI connection respectively.
remote_name(x) remote_src(x) remote_con(x) remote_query(x) remote_query_plan(x)
x |
Remote table, currently must be a tbl_sql. |
The value, or NULL
if not remote table, or not applicable.
For example, computed queries do not have a "name"
mf <- memdb_frame(x = 1:5, y = 5:1, .name = "blorp") remote_name(mf) remote_src(mf) remote_con(mf) remote_query(mf) mf2 <- dplyr::filter(mf, x > 3) remote_name(mf2) remote_src(mf2) remote_con(mf2) remote_query(mf2)


SightReader
Learn how to sight-read music and test your abilities!
Score
Time Elapsed
Accuracy
0
0:00
0%
Start Game
Stop Game
C
D
E
F
G
A
B
Song Library
Random Notes (default)
Mary Had a Little Lamb
The Muffin Man
Twinkle, Twinkle Little Star
Play Tutorial


Order Urine Drug Screen Test and assess before ordering opioid medication.
Assess Baseline pain and function - PEG assessment scale.
Counsel for non-medical management (Hx of other dependencies (Smoking/Alcohol abuse)) before prescribing opioid medication.
Prescribe lowest effective dose.
Do not prescribe more than 50 mme1/day for less than or equal to 7 days


All my life, I feel like I've made the right choices.
I worked hard, got good grades, made it to MIT, and even somehow (seriously, somehow) managed to graduate in 5 years with 2 degrees with most of my sanity and dreams in tact. I always had summer internships, had the right names on my resume, opened the right doors. I got involved in the right communities, made the right choices, made the right teams.
All my life, I feel like I've made the predictable choices.
I followed the typical Asian American dream and the life path was set out. All throughout high school, I didn't take risks, I didn't go out, I brought my calculus book to homecoming. When I got to MIT, I got lucky and fell in love with computer science. I majored in the most lucrative field of this decade from possibly the best engineering school in the world, and had a job offer from one of the largest, well-known tech companies to ever exist.
But this time, I veered off the beaten path.
I have always wanted to take time off and see the world. One of my favorite things to do is in one place for months and melding into a community. I got a taste of it the past 4 years through MIT, getting the opportunity to intern in Spain for 3 months and teach in Israel and Italy, both for 1 month periods. I knew that if I didn't do it now, there might not be another time in my life when I have this much freedom, independence, and time.
There is something about travel that is so renewing to the soul that it is hard to put into words.
To me, it's more than just going to a new place, absorbing the culture, seeing pretty things -- even more than meeting new people and getting to know the locals (though, I do like all of those things!).
For me, so much of travel is about leaping, not walking, out from your comfort zone, living your life unabashedly in a different rhythm to a different tune, and envisioning and stretching yourself in ways you had never imagined before.
It's about a mindset that always says "Anything can happen", and moments where you take the risks you normally wouldn't.
And that's how the grand plan was hatched.
Thanks to MISTI at MIT, I was able to make this trip a reality. I'll be out of country for a total of 6 months, starting in Cape Town, South Africa for 3 months teaching at an awesome startup called iXperience, and ending in Asia. I'll be a mentor for the Service Leadership Program with the MIT China Development Initiative in Hangzhou, China at Zhejiang University in August, and then will either be working or travelling throughout China until November.
So here's to adventure.
Here's to breaking through barriers, breaking down boundaries, and breaking out of the boxes we put ourselves in. To late nights, new soul mates, friends to call family. To crazy nights we can't remember, bad decisions that turn into great stories, moments that turn into memories. To losing our breath, getting our breath taken away, cheesy quotes, chasing views, constantly learning. To food that tastes so good we wish it never existed, trying everything once, embracing and welcoming the unknown.


Agau propels Fresno State past CS San Bernardino 92-47
by The Associated PressFRESNO, Calif. (AP) — Aguir Agau came off the bench to score a career-high 20 points, hitting 5 of 6 from 3-point range, and Fresno State rolled to a 92-47 victory over Division II-member Cal State San Bernardino on Sunday.
Agau added seven rebounds for the Bulldogs (2-2). Orlando Robinson pitched in with 16 points and seven rebounds. Mustafa Lawrence finished with 13 points and five assists, while Niven Hart scored 10.
Andres Villa topped the Coyotes with 11 points.
Fresno State shot 50% from the floor, 41% from 3-point range, but made just 18 of 35 free throws (51%). The Coyotes shot just 29% overall and 12.5% (2 of 16) from distance.
___
For more AP college basketball coverage: https://apnews.com/Collegebasketball and http://twitter.com/AP_Top25
The Associated Press


---
layout: post
title: CSS organisation
tags: []
status: publish
type: post
published: true
meta: {}
---
A few week old now, but Doug over at Stop Design has come up with yet another invaluable little trick: when working with large style sheets it can be quite a lot of work to scroll through it in order to locate a certain declaration. His tip, label your sections and prefix the label with "=" like such:
[css]/* MISC: =Lists
----------------------------------------------- */[/css]
Since "=" is not used in CSS, doing a search for =List will quickly get you to where you need to be.
And while you are over at his site, why not read up on his latest collaborative project with Happy Cog and Jeffrey Zeldman: Cap Gemini a glorious CSS/xHTML redesign!


|
Drago - Wood textures |
||||||||||||||||||
|   |
Drago enables to select the texture image for the goban background as well as for the main window, coordinate border and game tree backgrounds (see Options dialog box). It is not hard to find interesting textures on the web. However, it will save time to find here the following samples. These images have been resized, rotated and converted to fit the required format. Download the texture collection (67Kb) These images come from the following sites offering free image resources:
|
  | ||||||||||||||||
|   |
Tiling small images can give some undesirable effects.
Download the full size images (746Kb) |
  | ||||||||||||||||
|   |
Another very nice collection offered by Jorge Salas.
Download the full size images (1.33 Mb) |
  | ||||||||||||||||
| Home |
Another way to try avoiding artifacts when tiling is to use a bigger image made from the original image by applying mirror and flip symmetries. For instance, if the texture image is then default tiling and tiling with symmetries give respectively the following figures:    When applied to one of the previous texture, default tiling and tiling with symmetries lead to:
Tiling with symmetries has been put at work by Stijn in his PostScript and PDF board repository. Thanks a lot to Harry Fearnley for bringing this to my attention. Tiling with symmetries is available in Drago as an option in the advanced settings. |
  |


--- title: "Mutualism in the Everglades" date: 2017-05-09T17:00:28-05:00 author: "Lucas A. Nell" weight: 20 slug: 'everglades-mutualism' categories: [] tags: ["facilitation", "mutualism", "alligators", "wading birds"] output: blogdown::html_page: fig_width: 6 dev: "svg" fig_caption: true ---
Facilitation (a positive between-species exchange mediated through habitat improvement) is widespread and being increasingly recognized for its importance in structuring communities and shaping species’ distributions. For my thesis research, I assessed how a keystone species is affected by associating with a group of organisms it often consumes—yet also protects.
Wading birds (herons, egrets, storks, ibises, spoonbills) nest near alligators in the Everglades, probably because alligator presence deters devastating nest predators such as raccoons and opossums. My research at the University of Florida examined the other side of this relationship and assessed what benefits, if any, alligators might derive from associating with wading birds. The illustration below shows the four ways we believe alligators might benefit (from left to right):
We first estimated the amount of food via pathway #3 by examining 14 years of wading bird nest-success data and by catching fallen regurgitated fish. We found that regurgitant appears to be of minor importance to alligators, but fallen nestlings could be a significant source of food1. In prolific years, nestling carcasses alone could sustain most of the breeding female alligators in our study population for much of the dry season. Although we knew that alligators often can be observed near and within colonies (see this video and Fig S1 from here), we hadn’t yet demonstrated how this potentially substantive food source might affect alligators in the field.
So to the field we went. We captured alligators in similar habitat with and without nesting colonies, and measured body condition via a morphometric index (i.e., a measure of mass in relation to length). We found significantly higher condition in colony alligators, even when controlling statistically for a range of environmental factors2. Given the magnitude of the difference we detected, there are likely population-level effects of wading bird nesting colonies on alligators. We also believe that associations between nesting birds and crocodilians could be widespread and ecologically important for many tropical and subtropical wetlands.


Welcome Back Grace
15/50 miles
200/500 miles
60/100 miles
15 days until race
Sunday
Swim
2 miles
Bike
10 miles
Log Today's Workout
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday


{% extends "layout.html" %} {% block content %} Settings The settings page is still a work in progress. Please be patient! {% endblock %}
The settings page is still a work in progress. Please be patient!


{% import 'macros.html' as macros with context %} {% import 'macro-searchbox.html' as search_box with context %}


summary
is a generic function used to produce result summaries
of the results of various model fitting functions. The function
invokes particular methods
which depend on the
class
of the first argument.
# S3 method for qm_cluster summary(object, ...) # S3 method for qntmap summary(object, digits = 2L, ...)
| object | an object for which a summary is desired. |
|---|---|
| ... | additional arguments affecting the summary produced. |
| digits | integer, used for number formatting with
|
The form of the value returned by summary
depends on the
class of its argument. See the documentation of the particular
methods for details of what is produced by that method.
The default method returns an object of class
c("summaryDefault", "table")
which has specialized
format
and print
methods. The
factor
method returns an integer vector.
The matrix and data frame methods return a matrix of class
"table"
, obtained by applying summary
to each
column and collating the results.
For factor
s, the frequency of the first maxsum - 1
most frequent levels is shown, and the less frequent levels are
summarized in "(Others)"
(resulting in at most maxsum
frequencies).
The functions summary.lm
and summary.glm
are examples
of particular methods which summarize the results produced by
lm
and glm
.
Chambers, J. M. and Hastie, T. J. (1992) Statistical Models in S. Wadsworth & Brooks/Cole.
summary(attenu, digits = 4) #-> summary.data.frame(...), default precision#> event mag station dist #> Min. : 1.00 Min. :5.000 117 : 5 Min. : 0.50 #> 1st Qu.: 9.00 1st Qu.:5.300 1028 : 4 1st Qu.: 11.32 #> Median :18.00 Median :6.100 113 : 4 Median : 23.40 #> Mean :14.74 Mean :6.084 112 : 3 Mean : 45.60 #> 3rd Qu.:20.00 3rd Qu.:6.600 135 : 3 3rd Qu.: 47.55 #> Max. :23.00 Max. :7.700 (Other):147 Max. :370.00 #> NA's : 16 #> accel #> Min. :0.00300 #> 1st Qu.:0.04425 #> Median :0.11300 #> Mean :0.15422 #> 3rd Qu.:0.21925 #> Max. :0.81000 #>summary(attenu $ station, maxsum = 20) #-> summary.factor(...)#> 117 1028 113 112<PHONE_NUMBER> 1083 1093 1095 #> 5 4 4 3 3 3 2 2 2 2 #><PHONE_NUMBER> 1299 130 1308 1377 1383 (Other) NA's #> 2 2 2 2 2 2 2 2 120 16lst <- unclass(attenu$station) > 20 # logical with NAs ## summary.default() for logicals -- different from *.factor: summary(lst)#> Mode FALSE TRUE NA's #> logical 28 138 16#> FALSE TRUE NA's #> 28 138 16


| Brand | Seat | $/day | Street |
|---|---|---|---|
| Toyota | 3 | 75.00 | Auburn rd |
| Toyota | 5 | 95.00 | Auburn rd |
| Toyota | 5 | 105.00 | Auburn rd |
| What and Where | Your Booking details |
|---|---|
| Pick up | 2016-08-10 |
| Drop off | 2016-08-12 |
| Suburb | Hawthorn |
| Street | Auburn rd |
| Description | Corner of Auburn rd and Wattletree rd |
| Rego no | ZJR161 |
| Brand | Toyota |
| Seating | 4 |
| Price | $95.00 |
| Pickup | Drop off | RegoNo | Seat | $/day |
|---|---|---|---|---|
| 2016-08-10 | 2016-08-12 | ZJR161 | 4 | 95.00 |
| 2015-04-02 | 2015-04-12 | BGG165 | 3 | 75.00 |
First name
Last name
Licence no
Mobile


There are lots of different kinds of fruit - there are over 500 varieties of banana alone. By the time we add the countless types of apples, oranges, and other well-known fruit, we are faced with thousands of choices.
One of the most interesting aspects of fruit is the variety available in each country. I live near London, in an area which is known for its apples.
When travelling in Asia, I was struck by how many different kinds of banana were available - many of which had unique flavours and which were only avaiable within a small region.