Our developer tools include a set of APIs for discovering, managing and deploying content for formative assessment, these are described on these pages.
Overview
Get in touch to learn more and register with CoreSpring.
CoreSpring Platform
The CoreSpring Platform provides access to assessment items that can be embedded into any learning system. These items contain questions/activities for students. Sometimes just one question/activity will be contained within an assessment item, but sometimes several may be included in what is called a 'composite' item.
Developers can find assessment items (searching by grade, Common Core Standard etc) using our REST API and can render the items to their users with the CoreSpring Item Player. All items support computer-based administration, and most can also be printed.
Items have an instructor preview view which allows a teacher to view some extra information about the item, view supporting materials like examples of student work or scoring guides, and to preview how an item would look for a student.
Items have also have a student view - which is how the Item appears to the student when they are 'taking' the item.
The CoreSpring Item Player is launched from the 3rd party system using a javascript component provided by CoreSpring and it handles the user interaction with the item. When the interaction is complete, the outcome of the user's interaction with the item is stored in the CoreSpring Platform (this interaction data is called an Item Session.) This data is then made available to the calling system at a REST URL, or is posted back to the client via a callback.
You can see some examples of items and our Item Player here.
Organizations, Collections, Items
Organizations and Collections are the means by which the Items are organized within the CoreSpring Platform.
Each Organization represents an institution (for example: developer, publisher, school or distict).
Collections are sets of Assessment Items, for example 'ELA' or 'Math' could be collections of items arranged by subject.
An Organization may be granted access to a number of collections, and may create collections owned by that Organization which can then be shared with other Organizations*
CoreSpring maintains and curates a set of content collections of content which will be made available to all organizations. When you register as a developer Organization you will have access to these collections.
*Content creation and publishing is a feature of CoreSpring that is not yet publicly released. Get in touch to be notified about our releases.
Integration
There are two primary means of integrating CoreSpring content into your system:
- Integration using IMS Learning Tools Interopability (LTI) 1.x (and in future LTI 2.0)
- Direct integration using the CoreSpring REST API and Item Player
If you are maintaining or implementing a system that supports LTI (Learning Tools Interopability) standards, then this may be the simplest option for you, and may not require writing any custom code on your system.
If you are not implementing LTI, or just want more power and flexibility in how you integrate with CoreSpring. A direct integration using our APIs and Item Player can be implemented. You can of course combine both options.
LTI Integration
IMS LTI (Learning Tools Interopability) is a standard for interopability between learning systems.
It is supported by many LMS systems like Blackboard, Moodle and CanvasLMS. It allows these systems to launch external tools like CoreSpring within their platforms. Systems like these LMSes are called Tool Consumers (TC) in LTI, and systems like CoreSpring are called Tool Providers (TP). That is, systems that provide tools that can be used within the TC system.
The flow of events that occurs to deliver items is with the CoreSpring LTI tool is:
- CoreSpring Tool is configured as an LTI TP on the TC system
- Instructor adds an instance of the CoreSpring Tool to a course
- Instructor finds and configures the item to be rendered in the course by the CoreSpring Tool
- Student 'takes' the item
- Instructor can view the outcome and response for each student's Item Session*
* The TC system needs to support LTI outcomes service for the outcomes to be sent back to the TC system
Direct Integration
Direct integration using the CoreSpring REST APIs and Item Player gives you a lot of flexibility in how to integrate the content into your system.
The steps involved in deploying CoreSpring content in your system are:
- Finding an Item
- Launching the player to render the interaction with an Item, or render the Item profile/preview for an instructor.
- Accessing the outcomes of student's interaction with an Item
Finding an Item
You can use our REST/JSON API to find items, and or render the results of searching to your users. See the API documentation below or look at the sample code for information on finding items.
Launching the Item Player
See the section below about the Item Player for instructions on how to launch the Item Player.
Accessing the Outcomes
When the student interaction is complete, you can access the outcome information by retrieving the Item Session with a GET request:
GET /items/{itemId}/sessions/{sessionId}
The CoreSpring Item Player
CoreSpring provides an Item Player to render student/teacher interactions with items. The player can be embedded within any web page. The items are hosted on the CoreSpring platform and the owners of the items have complete control over how they are accessed.
CoreSpring provides curated collections of publicly available items aligned to the common core that can be used by any registered developer.
Loading the CoreSpring Item Player
To use the CoreSpring Item Player, you need to load the Item Player javascript component from corespring.org and initiate the player when the page is ready.
Example:

There are 2 parameters that you must pass to the player.js in a query string.
- API Client Id - The Client Id that you generated for your organization when you registered with CoreSpring.
- Options - Some options for running the player.
Player Options
The options determine in what mode you wish to view the player, what items should be viewable, with what settings, and for how long. The options are also encrypted, and provide the authorization a browser needs to launch the player.
Mandatory Options
mode
Allowed values are "preview", "render", "administer", or "aggregate".
expires
The time beyond which the options will no longer be valid. This is provided in "Unix time": seconds from 1970-01-01T00:00:00Z UTC.
Depending on the mode you must also pass in some additional variables. See the next section for more information.
Optional Options
omitSubmitButton (Boolean)
In case this is true the submit button will not be shown on the rendered item. In this case you wil be able to control item submission programmatically via the submitItem method of the player. The default value is false.
Player Modes
Preview Mode
This mode allows an educator to interact with the item and see how it would appear to a student. The outcome of the interaction will not be saved.
Options
Render Mode
Render mode displays an existing Item Session: It represents a single user's interaction with an item. If the Item Session is not finished a user may submit answers, which will be stored in the Item Session. Once the ItemSession is finished nothing else will get saved to this Item Session. There are different roles for viewing the response; for example, a student could be reviewing his or her own work, or an educator could be reviewing a student's work.
Options
- role is optional. The default is "student", if set to instructor the correct response will always be highlighted for completed session
Administer Mode
Administer is the same as Render, except that you can also use an itemId instead of a sessionId. If you do use an itemId the player will create an Item Session for you and then notify you via the onItemSessionCreated callback.
Options
- sessionId - passed only if we should use an existing item session that is not yet completed
- itemId - passed if a new session should be created (new session id will be returned in callback - see advanced options below)
Aggregate Mode
This mode is in private beta but will be made available as we roll out our aggregate views for a variety of interaction types.
In aggregate mode, the player renders the interactions in the item with aggregated/averaged information for a set of responses from a group of participants for a given assessmentId. For example, if 30 students "take" an item with a multiple choice interaction, the player will show what percentage of the students selected a particular choice in the set.
Options
Encrypting the Player Options
To use the Item Player, you need to encrypt the player options. This allows access to api calls from an unknown browser without exposing any sensitive data relating to your organization - for example, your access token.
Prerequisites
- You have registered as a developer.
- You have your "Client ID" and "Client Secret" (these are assigned when you register as a developer).
Encrypting Options Using CoreSpring REST API
You can encrypt the options by making a call to the CoreSpring REST API. To call the api, you will need to pass an access token which you can retrieve with your Client Id and Client Secret. See the REST API documentation for how to make REST API calls to CoreSpring.
Note: You should make this call from your server code, not in a user's browser.
Example:
POST /player/encrypt-options
{
/* your options here */
}
RESPONSE:
200 OK
U2FsdGVkX19QrTAwaoeIypkJ2CjF+5TK+Oji5/X+ExV7wfTEIvpKYJBdP9NziW0iPxoSt9dPQaYN0OQs6D1pzg==
Encrypting Options in Your Code
You may also encrypt the player options in your own (server-side) code. Corespring uses AES 128 bit encryption with Cipher Block Chaining (CBC) as the mode of operation and PKCS5 padding. In order for Corespring to be able to read and decrypt your encryption you must:
- generate a 128 bit initialization vector(IV) and output the result in hexadecimal
- hash your secret using MD5 Message Digest
- encrypt your options with the hashed key and output the result in hexademical
- encode both the cipher text and iv in utf-8 and combine the two into one string using the delimeter '--' e.g. [encrypted]--[iv]
The following is an example in NodeJs:
// Options is the options you are encrypting and secret is your client secret.
// This code assumes both are defined elsewhere
var crypto = require('crypto'); //nodejs crypto module. see nodejs api documentation
var uuid = require('node-uuid'); //generate uuid to represent initialization vector
var iv = new Array(16);
var digest = new Array(16);
uuid.v4(null, iv, 0);
var hash = crypto.createHash('md5');
hash.update(secret,'utf8');
var digest = hash.digest('hex');
//digest is now the hashed secret to be used to encrypt options
var cipher = crypto.createCipheriv('aes-128-cbc',
new Buffer(digest,'hex'),
new Buffer(iv));
var encrypted = cipher.update(JSON.stringify(options), "utf8", "hex");
encrypted += cipher.final("hex"); //the final encrypted message
//the final output in the form of [encrypted]--[iv]
//callback with the encrypted options
callback(null,encrypted+"--"+new Buffer(iv).toString('hex'));
Advanced Options
Wildcard Options
If you prefer not to create an options parameter each time you launch the item player, you may create an options key with "wildcard" properties and then override which mode/item/session to view, by adding them to the javascript options object that you pass to the ItemPlayer.
The properties that can be set to wildcards in options keys are:
- itemId - if set to "*" then key will work for any itemId passed in query string
- sessionId - if set to "*" then key will work for any sessionId passed in query string
- mode - if set to "*" then key will work for any mode passed in query string
- expires - if set to "0" then the key will never expire
Example:
Overriding wildcard options when initializing the ItemPlayer
If itemId, itemSessionId, or mode are set as "wildcards" in the option key, then specific values may be required in the options object:
var options = {
itemId: "itemId",
mode: "preview"
}
var player = new com.corespring.players.ItemPlayer('#cs-item-player', options);
Registering Callbacks with Player
The Item Player allows you to define some callback functions in your javascript code that will be executed by the player.
onItemSession
For example, in Administermode, two callbacks are triggered: onItemSessionCreated(sessionId) and onItemSessionCompleted(sessionId).
Example:
var itemSessionId = undefined;
var itemPlayerConfig = {};
itemPlayerConfig.onItemSessionCreated = function (sessionId) {
itemSessionId = sessionId;
}
var player = new com.corespring.players.ItemPlayer(
document.getElementById('cs-item-player'),
itemPlayerConfig);
Callbacks
All Modes:
- error(message): called if an error occurs while executing the player, with a message describing the error
Administer Mode:
- itemSessionStart(itemSessionId): called when a new item session is started, passes the item session id
- itemSessionComplete(itemSessionId): called when a new item session is completed, passes the item session id
Methods
submitItem()
Can be called as an alternative to the user clicking the 'Submit' button for the item.
saveResponses()
Can be called to save responses without counting as a submission
Example:
var player = new com.corespring.players.ItemPlayer(
document.getElementById('cs-item-player'), {});
//save responses
player.saveResponses();
//submit the current session.
player.submitItem();
remove()
Removes the player from the DOM alongside with its message listeners. If you are targetting older browsers be sure to call this method to remove the player to ensure that the listeners are removed. It's less important of an aspect in newer browsers however it's still recommended to remove the player via this method.
Road Map
The following features are on the road map for implementation with the Item Player:
- Ability to provide callback URL to which Item Session data can be posted to on completion
- Documentation for launching the player and receiving outcomes with LTI1 & LTI2
- Delivery of outcome to Tin Can/Experience API LRS
REST API
Authentication & Authorization
Registering to Use the API
To use the Corespring API you must first create and register an Organization in the system.
All calls to the API are performed in the context of this Organization.
Upon registering your organization to access the CoreSpring API you will be given a client_id
and client_secret
.
Using these parameters you can generate an access token that can be used to authorize calls to the API.
To test the APIs on this page, the access_token: "demo_token" may be used. This provides read-only access to some test data. The interactive API widget is pre-configured to use this access token but you can replace it with your own token to access real data.
Getting an Access Token
Once you have registered and have a client_id
and client_secret
you can request an access token by invoking the authorization URL. You can access the authorization url to receive your auth token using the widget below.
The access_token will remain valid for 24 hours after time of issue.
Using the Access Token
Once the access token has been obtained it can be used by passing it in the Authorization header of an API.
Or by passing it in the query string to a request:
Items
The Items API allows CRUD operations on Assessment Items.
All the API resources described here return an Item or list of Items and some subset of the properties of Item. This complete model for Item is described at the end of this section.
Getting an Item
Returns the Item for the specified :itemId. Does not return every field (see below).
Returns the Item for the specified :itemId. Returns all properties of the Item model.
Getting a List of Items
Returns an array of all Items available to the caller. These Items are contained within the Collections available to their context Organization.
There may be a lot of items, it is recommended to use parameters available for List Queries to filter/limit results. The default limit will be 50 items and the maximum 200. If the result has more than 200 items an error response will be returned.
Returns an array of all Items for the specified :collectionId.
Returns an array of all Items available for the specified :organizationId.
See List Queries for standard parameters for filtering/limiting, and managing array results.
Item list queries will return the summary properties for the Item model. This behavior can be overridden by specifying which fields to return in the model (see List Queries).
Item Model
This is the complete set of properties returned in the model for Items. When retrieving individual items a subset of the item properties are returned by default. All properties will be returned if accessing the 'detail' path for the item (See Items)
When calling resources that list Items, subsets of fields may be used by adding the 'f' query string parameter. See List Queries.
| Property | Description | Type | Detail only |
|---|---|---|---|
| id | unique identifier for the item | string | |
| version | The revision number of the item. Defaults to 0. | number | true |
| author | The original item author | String | |
| title | organization name or author name | String | |
| primarySubject | The primary subject associated with the item | JSON Object, e.g. {subject:"Algebra", category:"Mathematics"} | |
| relatedSubject | organization name or author name | JSON Object, e.g. {subject:"Algebra", category:"Mathematics"} | |
| copyrightOwner | organization name or author name of the copyright owner | String | true |
| credentials | [Assessment Developer, Test Item Writer, State Department of Education, District Item Writer, Teacher , Student, Other] | String | true |
| gradeLevel | The grade level(s) associated with the item | Array[String]: e.g. ["K","1"] | |
| itemType | The type of the item: [Multiple Choice ,Multi-Multi Choice, Visual Multi Choice, Inline Choice, Ordering, Drag And Drop, Constructed Response - Short Answer, Constructed Response - Open Ended, Select Evidence in Text, Document Based Question, Passage With Questions, Composite - Multiple MC, Composite - MC and SA, Composite - MC, SA, OE, Composite - Project, Composite - Performance, Composite - Activity, Plot Lines, Plot Points, Evaluate an Equation] | String | |
| pValue | The pValue associated with the item | number [1-100] | true |
| ccStandard | The primary Common Core standard associated with the item | Json Object (see example response) | |
| keySkills | The skills associated with the item: [define, duplicate, list, memorize, recall, repeat, reproduce state, classify, describe, discuss, explain, identify, locate, recognize, report, select, translate, paraphrase, choose, demonstrate, dramatize, employ, illustrate, interpret, operate, schedule, sketch, solve, use, write, appraise, compare, contrast, criticize, differentiate, discriminate, distinguish, examine, experiment, question, test, appraise, argue, defend, judge, select, support, value, evaluate, assemble, construct, create, design, develop, formulate, write] | Array[String] e.g. ["recall","repeat","state"] | true |
| bloomsTaxonomy | Blooms Taxonomy associated with the item: [Knowledge (Remember), Understand (Describe, dramatize), Apply, Analyze, Evaluate, Create] | String | true |
| contentType | The type of raw content data associated with the item: [QTI2] | String | true |
| priorUse | Object with properties as described for the original use of the item. See extra definition below. | Object |
Prior Use Model
Many items in the CoreSpring system may have had original use as interim/summative items.
The priorUse
property in the item model may have the following properties set which holds the values for
these properties as was originally set by the contributor of the item:
| Property | Description | Type |
|---|---|---|
| contributorName | name of the organization that contributed the item | string |
| credentials | e.g. Assessment Developer, State DOE | string |
| gradeLevel | the grade level for the item | string |
| primarySubject | the primary subject for the item | string |
| relatedSubject | the related subject for the item | string |
| sourceUrl | url for the organization that contributed the item | string |
| reviewsPassed | reviews the item passed: Editorial, Bias, Fairness, Content, Psychometric | string Array |
| use | the original context the item was used for: [Formative, Interim, Benchmark, Summative, Other] | string |
| pValue | the IRT p-value for the item | string |
Item Sessions
The Item Session API is used for handling a student's interaction with an item and persisting data gathered as part of that interaction.
Getting an Item Session
Returns the Item Session specified by the :sessionId.
Getting a list of Item Sessions
Returns a list of Item Sessions. The standard List Queries options apply.
Create an Item Session
Returns the Item Session for the specified :itemId.
In the POST call to create an Item Session you can pass a property called "settings" that determines some settings for runtime behavior of the session.
Example:
| Property | Description | Default |
|---|---|---|
| maxNoOfAttempts | The maximum number of attempts a user may have at answering the item. | 1 (0 is interpreted as no maximum for unlimited attempts.) |
| highlightUserResponse | Upon receiving a response, highlight the users response in the UI. | true |
| highlightCorrectResponse | Upon receiving a response, highlight the correct response in the UI. | true |
| showFeedback | Show text feedback for the item. | true |
| allowEmptyResponses | Accept submission of responses with no value entered by user. | false |
| submitCompleteMessage | Message shown to user once the repsonse has been submitted and interaction is complete. | "Ok!" |
| submitIncorrectMessage | Message shown to user when they have submitted an incorrect response and may re-submit. | "You may revise your work before you submit it." |
Item Session Response Model
The Item Session Response contains response information for each question in the item.
The model for each response depends on the type of interaction, for example a single choice question might have one value in the response model indicating the choice made. A multi-choice item would have an array of values, and ordering question would also have an array (in which the sequence was important).
There may be multiple questions defined in an item. Below is an example of a session response for a composite item with questions of different types.
NB boolean properties for 'correct' and 'complete' will be added to the model
Example Response:
Organizations
Organizations are objects in the system that represent real-world organizations. For example they might be owned/managed by software developers or school districts.
Organizations can have Content Collections and Users associated with them.
Organizations support hierarchy, so they may have children/parents.
Getting a List of Organizations
Returns an array of all Organizations and child Organizations that are available to the caller. Callers will be making this call in the context of their own Organization.
Params The standard List Queries parameters are available for this operation.
Getting an Organization by id
Returns the Organization for the specified :organizationId.
Getting a default organization
Returns the default context organization.
Collections
Collections are sets of Items and may be associated with Organizations.
Getting a Collection
Returns the Collection for the specified :collectionId.
Getting a list of Collections
Returns an array of all Collections available to the caller (Collections attached to any organization the caller has access to).
Returns an array of all Collections associated with the specified :organizationId.
Params The standard List Queries parameters are available for these operations.
List Queries
Several of the CoreSpring REST APIs return an array of JSON objects. Each of these API resources support parameters to help with querying / filtering results.
Query Parameters for Resources with Array Response
| Parameter | Description | Optional |
|---|---|---|
| q | Query: The query to use to search the resources. (see below for details) | true |
| f | Fields: Indicates fields to include in the result. For example f={"name": 1, "description":1} (1-include; 0-exclude) e.g. { "name" : 1, "email": 1 } OR e.g. { "comments" : 0 } |
true |
| c | Count: If set the response will be a number with the count for the number of results the query would produce in total. | true |
| sk | Skip: a number indicating how many results to skip in the result set | true |
| l | Limit: a number indicating how many results to include in the result set. If this is not set explicitly, and implicit value of 100 will be used. The maximum is 200, a request resulting in > 200 elements in the array will result in an error response. | true |
Examples
'q' Query Parameter
This parameter is used for defining a query to use against the list of objects. It is formatted as a JSON object where the key is the property of the item and the value is the value that the property must have in order for that item to be returned. For example, in a call to the /items resource you could return only items of type 'Multiple Choice' adding a query parameter like this:
Multiple key-value pairs may be included in the query. Any items that match each key-value pair will be returned. In other words, a logical-and is performed for all key-value pairs.
Any field in the JSON item model may be queried. There are special operators that can be used which add extra querying options.
Special Operators for Querying
| Op | Description |
|---|---|
| $or * |
Used to apply a logical-or to the statements included in it's corresponding array Example: q={$or : [ { itemType : "Multiple Choice"}, { itemType : "Project"}]} Searches for all items where itemType is either "Multiple Choice" or "Project" |
| $and * |
Used to apply a logical-and to the statements included in it's corresponding array. Note: this is automatically
done when there are multiple key-value pairs within the object. $and is necessary if you want to apply logical-and
to the same property. Attempting this by including it twice will obviously result in overwriting one with the other. Example: q={$and : [ { gradeLevel : "02"}, { gradeLevel : "04"}]} Matches all items that have a gradeLevel which contains the values "02" and "04" in its array |
| $in |
Search any item for the specified key which matches any of the multiple values Example: q={ itemType : { $nin : ["Multiple Choice", "Project"]}} Searches for all items where itemType is neither "Multiple Choice" or "Project" |
| $nin |
Search any item for the specified key which does not match any of the multiple values Example: q={ itemType : { $in : ["Multiple Choice", "Project"]}} Searches for all items where the value of itemType is not "Multiple Choice" or "Project" |
| $exists |
Search any item that contains (or does not contain) the specified key. The value for exists may be either true or false Example: q={ itemType : {$exists : true}} Searches for all items that have the itemType property |
| $ne |
Search any item where the specified key is not equal to the given value Example: q={ itemType : {$ne : "Multiple Choice"}} Any item that does not have itemType equal to "Multiple Choice" will be returned |
| $all |
This is used where the given property has an array of values. The value of $all is an array of values and any item
which matches the property and all of those given values will be returned Example: q={ gradeLevel : { $all : ["02", "04"]}} Matches all items that have a gradeLevel which contains the values "02" and "04" in its array |
*Note: $and and $or operators can only be used as outer properties, that is, not embedded in another object.
'f' Fields Parameter
The Fields parameter allows you to specify which fields of the target object you would like returned with the result. For example, if you only wanted the Item Title and Primary Subject Fields for the items in the query defined above, you could add the 'f' parameter:
'sort' Sort Parameter
The Sort parameter allows you to specify the order in which the results are displayed, in ascending or descending. When specifying sort, you must supply a JSON object with a single key-value pair. The key being some property of item, and the value being either 1 or -1, representing ascending or descending respectively. The following example would be used if you wanted to display only itemType and sort alphabetically in ascending order:
date: 07/18/2014 06:54PM


THE CIDER HOUSE RULES (M). (Miramax/Village Roadshow) Director: Lasse Hallstrom Stars: Tobey Maguire, Charlize Theron, Michael Caine, Paul Rudd, Delroy Lindo, Erykah Badu, Jane Alexander, Kathy Baker, Kieran Culkin, Heavy D, Kate Nelligan Running time: 125 minutes.
John Irving's sprawling novels have mainly followed the quest of a misunderstood youth to find his own place in the world (The World According To Garp, Simon Birch, etc). But they have never been easy to adapt for the screen, with many subplots and characters being ditched altogether. The Cider House Rules however marks the first time that Irving has adapted one of his own novels for the screen. This brings a reverence to its treatment of the text, the characters and the themes. However, Irving's screenplay is still too literary, and he tends to down play many of the darker elements of the story - abortion, incest, etc. The narrative also unfolds at a rather ponderous pace that eventually diminishes much of its emotional impact.
This charming coming of age story takes place in Maine during the early 1940's. The hero, Homer Wells (Tobey Maguire, from Pleasantville, etc), has been raised in St Clouds orphanage. Dr Larch (Michael Caine, in one of his best performances for years) takes an almost paternal interest in the welfare of his charges, but he has a soft spot for Homer, whom he trains as his assistant. Dr Larch also performs abortions on demand, even though they are illegal.
But Homer feels that there is more to life than helping Larch at the orphanage and decides to strike out on his own, hoping to experience more of the world. When the beautiful Candy (Charlize Theron, from The Astronaut's Wife, etc) and her fighter pilot boyfriend (Paul Rudd, from Clueless, etc) come to the orphanage for an abortion, Homer leaves with them. He works in an apple orchard. There he slowly falls in love with Candy, and is also drawn into the personal lives of his fellow workers. During his mini-odyssey, Homer comes to realise his destiny and find his place in the world. He ultimately learns that, unlike his time at the orphanage, life and love do not always follow a neatly ordered set of rules. Indeed, some rules were meant to be broken.
The ensemble cast deliver solid performances. Maguire delivers a mature and subtle performance in the central role of Homer, and one can see his character grow in strength and self confidence as the film develops. However, it is Caine who is most impressive. He just seems to get better with age, and delivers one of his more well rounded characterisations as the unhappy but deeply caring Dr Larch.
Swedish director Lasse Hallstom (My Life As A Dog, What's Eating Gilbert Grape, etc) handles the material with intelligence, but without any real sense of compassion or warmth. Hallstrom only came aboard when original director Phillip Borsos died of leukaemia and Michael Winterbottom departed, citing creative differences with Irving. However, Oliver Stapleton's cinematography is gorgeous, and visually the film is a joy to watch. *** greg king http://www.netau.com.au/gregking
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


---
layout: categories
title: Personal
meta-excerpt: Personal posts on kaidez.com include work that I've done, rants, conference experiences and a few random posts that are uncategorized.
---
"Personal" posts on kaidez.com include work that I've done, rants, conference experiences and a few random posts that are uncategorized and don't fit anywhere else.
{% for post in site.categories.personal %}
{{ post.meta-excerpt }}
{% endfor %}


|
Panda3D
|
Public Member Functions | |
| def | done (self) |
| def | finished (self) |
| def | isFinished (self) |
| def | run (self) |
| def | setUp (self) |
| def | tearDown (self) |
| def | timeLeft (self) |
Public Attributes | |
| parent | |
| def done | ( | self | ) |
| def finished | ( | self | ) |
| def isFinished | ( | self | ) |
| def run | ( | self | ) |
| def setUp | ( | self | ) |
| def tearDown | ( | self | ) |
| def timeLeft | ( | self | ) |
| parent |


{% include head.html %}
{% include nav.html %}
{{ site.bio }}
{% include social-links.html %}
About
Posts
Submit your email to get alerts for new posts!
{% include scripts.html %}


Utilities for making Riak data access easier in Groovy. The RiakBuilder provides a Groovy DSL for interacting with Riak.


{% extends 'otree/WaitPage.html' %} {% load otree %} {% block title %}Please wait to be matched{% endblock %} {% block content %}
Waiting for other participants.
{% if leave_matching %}If you cannot be matched within {{leave_timer}} minute(s), the study will end and you will receive your base fee.
{% endif %} {% endblock %}


For many, many years people in Texas and Northern Mexico have gathered around camp fires. Whether they are camping, hunting, fishing or spending time with friends and family, there is something special about a camp fire that bonds people like few other things can.
Traditionally the instrument of choice for a safe campfire is the outdoor fire pit also known as an outdoor fireplace. They have come in many shapes and sizes. Today one of the most popular types is the Old Country style of outdoor fire pits. There are many companies selling this style of fire pit and with good reason. This is a proven design that works.
The Old Country Outdoor Fire Pits (or outdoor fireplaces) currently come in two styles; the Extended Grill Fire Pit and the Double Grill Fire Pit.
Both pits have the following features in common:
label Leg extensions to bring them to waist height.
label Expanded metal grill for barbequing
label Angle Iron frame for the expanded metal grill
label Swivel grill
label Stainless steel handle
label Minimum of 3/16" thick steel
label Hand Made
There is another feature these fire pits share: Compared with other fire pits, the Old Country pits give you the biggest bang for the buck.
This fire pit comes with a ring of expanded metal around it, it works great for setting stuff on it or to rest and warm your boots any cold night.
| FIRE PIT DIAMETER | RING DIAMETER | PRICE |
|---|---|---|
| 24" | 36" | $289.00 |
| 28" | 40" | $360.00 |
| 30" | 42" | $400.00 |
This fire pit has a second grill on it. It is half the the regular grill and can be used to warm your tortillas or keep anything from getting cold.


{% extends "lifeflow/editor/base.html" %} {% block body %}
Edit the details for this project.
Write a brief summary for this project (using html).


"W" translate | "E" rotate | "R" scale | "+/-" adjust size
"Q" toggle world/local space | "Shift" snap to grid
"X" toggle X | "Y" toggle Y | "Z" toggle Z | "Spacebar" toggle enabled
"Esc" reset current transform
"C" toggle camera | "V" random zoom


To understand the difference between inline and inline-block we must understand the inherit qualities they manifest.
inline
inline displays an element as an inline element. However, any height or width properties will no longer function.
Example of inline:
The display
propertysdlkdjaljdaslas
asdadladlkasjdaldjlakdaja
.inline-element
{
display
:
inline
;
width
:
400px
;
/* won't have any effect */
height
:
1000px
;
/* won't have any effect */
}
inline
elementselements that have a default inline
property:
span
a
img
Most of the formatting tags adadadainline
:
em
strong
i
Inline-block is purposed djaslkjlakdasjdladj
inline-block
inline-block displays an element as an inline element. Unlike,
inline
both the height and width properties can be manipulated.
Example of inline-block:
inline-block
is essentally the same as inline, however you are able to set height and width values asdjasdlkapropertysdlkdjaljdaslas
asdadladlkasjdaldjlakdaja
.inline-element
{
display
:
inline
;
width
:
400px
;
/* will function */
height
:
1000px
;
/* will function */
}
So ultimately the differences between inline and inline-block is adlkadjaljdasldjaljlsdadas
In non-dev terms, the difference between inline and inline-block is essentally the same as ajdladjlkwjqlkejlasjdlajdas


Sudoku Solver
AI sudoku solver implemented using an ARC-3 Consistency Algorithm. Originally implemented with a CLI, when run, the program prompted the user to choose either a preloaded board or input their own. With the new UI above, this have been transformed into a set of buttons and input fields. There are 3 levels of preloaded boards and an option for manual input. The program is able to solve (or determine a lack of solution) for all puzzles attempted in under 3 seconds (with the average being under 1s). If you'd like to try it out for yourself please feel free to play with the demo above! The source code for the original CLI-based program is available here!


--- title: "Alpine.js Weekly - Newsletter" ---
A free, once–weekly email roundup of Alpine.js news and articles.
Packed with hot discussions, new features, tools, articles & tutorials.
The newsletter goes out every Friday. You can also Subscribe via RSS or View the Archive .
Published by Hugo


When first came to New Zealand I couldn't find a job related to what I did in my home country
What problem solving techniques did you use?I had to start with something, to overcome my language barrier and to start working, so I was asking friends for help, I used Google to find more information about job market in Auckland
How did you feel throughout the process?I felt scared and not good enough
What did you learn?I learned that when you scared you can't see your own advantages and strenght. The only thing you have to do is to follow your heart and keep working.
Back to those days when I started doing quality assurance testing I had to attach a different kind of logs to my Bug report of a mobile app.
What problem solving techniques did you use?As I've never done this before I decided to check other testers reports. Unfortunately there was no information about how to actually get the logs. Eventually I realised that I need to find them on my phone manually. So basically I google it and found a command that I needed to enter to open additional tools on my phone
How did you feel throughout the process?I felt stuck at first, but the closer I was to find a solution the more excited I was.
What did you learn?I learned that I can solve the problem on my own if I need to.


Type Library Revision Current Public Release (2013.2076) Keywords physics, collision, joint Sample code /CoronaSDK/SampleCode/Physics
Physics are commonly used for apps that involve a simulation of objects that move, collide, and interact under various physical forces like gravity. Corona makes it very easy to add physics to your apps, even if you've never worked with a physics engine before. While the underlying engine is built around the popular Box2D, we've taken a different design approach which eliminates a lot of the coding that is traditionally required.
To work with the Corona physics engine, just begin with familiar Corona display objects. Corona treats physical body properties as an extension of its graphics objects: any standard display object including images, vector objects, or animated sprites can be "made physical" and they will automatically interact with other objects in the simulation.
For more information, please review the following guides or refer to the functions below.


Redirecting to GitHub...
If you're not redirected
automatically, click the button below
Go to GitHub repository


Hodor is overjoyed by basic things like presenting Bran with a new saddle or hearing the echo of his own voice. Despite his large size and strength, Hodor is a gentle soul who is terrified by violence - even violence doneby himself, as he often cowers in fear instead of fighting back against foes who are actually smaller than he is .
Personality
- Peaceful
- Good-hearted
- Loyal
Abilities
Hodor is not only peaceful and good-hearted, but also very:
- Strong
- Powerful
He is able to carry Bran on his back over long distances with no visible signs of fatigue, and lift a full-grown man off the ground and break his neck with minimal effort.


Mandor Mountains [aq24], mountain, in Mandoria, wilderness
Last updated Turn #144
Mandor Mountains [aq24], mountain, in Mandoria, wilderness
------------------------------------------------------------------------
Routes leaving Mandor Mountains:
North, forest, to Great Forest [ap24], 8 days
Garrison [ib8u], garrison, uncontrolled, with ten peasants
East, forest, to Great Forest [aq25], 8 days
Garrison [ck6m], garrison, uncontrolled, with four peasants
Seen here:
Stack of savages [gr7v], savages, number: 20


class: center, middle, inverse, title-slide # Lecture 03 ## Coasean Bargaining ### Ivan Rudik ### AEM 4510 --- exclude: true ```r if (!require("pacman")) install.packages("pacman") pacman::p_load( tidyverse, xaringanExtra, rlang, patchwork, nycflights13, tweetrmd, vembedr ) options(htmltools.dir.version = FALSE) knitr::opts_hooks$set(fig.callout = function(options) { if (options$fig.callout) { options$echo <- FALSE } knitr::opts_chunk$set(echo = TRUE, fig.align="center") options }) ``` ``` ## Warning: 'xaringanExtra::style_panelset' is deprecated. ## Use 'style_panelset_tabs' instead. ## See help("Deprecated") ``` ``` ## Warning in style_panelset_tabs(...): The arguments to `syle_panelset()` changed in xaringanExtra ## 0.1.0. Please refer to the documentation to update your slides. ``` --- # Roadmap 1. Can we achieve the efficient outcome .hi[without] government intervention? 2. What does the Coase theorem say? 3. What are the limits to Coasean bargaining? --- class: inverse, center, middle name: coase # Coase Theorem

 --- # Pigou vs Coase We have argued that efficient allocations are not achieved in the presence of externalities -- Why? -- There are no markets through which the source of the externality must pay/be compensated for its effect on society -- i.e. they're not priced -- This means there's a role for government to create this market or price the externality --- # Ronald Coase (1910-2013) .pull-left[    ] .pull-right[ In a famous paper (”The Problem of Social Cost”), 1991 Nobel prize winner Ronald Coase made people rethink this Do we actually .hi[NEED] government intervention? ] --- # Ronald Coase (1910-2013)
--- # The Coase Theorem If there are: 1. No wealth effects on demand 2. No transactions costs 3. Well-defined property rights then: -- the most efficient or optimal economic activity will occur regardless of who holds the property rights -- The right to pollute (a resource) will end up in the hands who value it most through negotiation --- # Coasean arguments Coase versus Pigou: externalities are reciprocal in nature -- A power plant produces emissions that nearby residents breathe and those people incur the external costs -- By breathing the air, the nearby residents help create the externality (i.e. if they weren’t there, there would be no external cost from emitting pollution) --- # Coasean arguments What is more valuable to society? -- The externality generated by the power plant or letting people live nearby? -- Argument resonates better in the context of the legal cases being considered by Coase (e.g. the doctor and the confectioner). In the context of the power plant the victims aren’t “producing” anything --- # The Doctor and the Confectioner More noise = more candy and less medical services -- Less noise = less candy and more medical services -- Which is better from a social point of view depends upon the relative values of candy and medical services -- Is the net benefit to society better at no noise, 0, or the level of noise that maximizes confectioner profit, N0 --- # The Doctor and the Confectioner .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor-1.png) ] .pull-right[ MC is the marginal cost imposed on the doctor by noise MB is the marginal benefit to the confectioner (marginal profits) from the production process that creates noise ] --- # Coase: Point 1 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor-1.png) ] .pull-right[ It is important to establish that someone has the property rights Otherwise, trade will not happen Give property rights to the confectioner Initial outcome will be N=N0 What happens next? ] --- # Coase: Point 1 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor-1.png) ] .pull-right[ the doctor can pay the confectioner to stay quiet (stop producing) for part of the day Why? Because MC to the doctor is higher than the MB to the confectioner for the units of noise after N* ] --- # Coase: Point 1 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor-1.png) ] .pull-right[ ] --- # Coase: Point 1 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor1-1.png) ] .pull-right[ The doctor is willing to pay more (MC) than the confectioner is willing to accept (MB) until noise is reduced to N* This is where total benefit is maximized (blue area) ] --- # Coase: Point 1 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor2-1.png) ] .pull-right[ The doctor and confectioner can split the .hi-red[bargaining surplus], the red area This is just the avoided deadweight loss from the noise externality ] --- # Coase: Point 1 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor-1.png) ] .pull-right[ Instead of assigning property rights to the confectioner we could have assigned them to the doctor In this case what happens? ] --- # Coase: Point 1 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor-1.png) ] .pull-right[ First, we start at Nd now since the doctor does not like noise Confectioner pays the doctor to be allowed to make noise The confectioner is willing to pay (MB) more than the doctor is willing to accept (MC) until we reach N* ] --- # Coase: Point 1 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor3-1.png) ] .pull-right[ We now maximize surplus (.hi-blue[blue]) and gain bargaining surplus (.hi-blue[blue]) that is split between the doctor and confectioner .hi[It didn't matter who had the property rights, we managed to get to N*] ] --- # Coase: Point 2 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor2-1.png) ] .pull-right[ The initial assignment of property rights does matter for the distribution of surplus If we give the confectioner property rights, they get paid by the doctor some quantity up to the total size of the red area (bargaining surplus) ] --- # Coase: Point 2 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor3-1.png) ] .pull-right[ The initial assignment of property rights does matter for the distribution of surplus If we give the doctor property rights, they get paid by the confectioner some quantity up to the total size of the blue area (bargaining surplus) ] --- # Coase: Point 2 .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor-1.png) ] .pull-right[ This means that property rights are valuable! If you have property rights, others have to incentivize you in order to deviate from your privately optimal choice You will only change the level of noise if your welfare/surplus improves ] --- # Coase: Point 3 What if the choice is discrete: noise or silence? -- Suppose the surplus to the two people under noise and silence is given by: | | Confectioner | Doctor | |--------- |:------------: |:------: | | Noise | 500 | 0 | | Silence | 0 | 250 | What happens? -- Total surplus is maximized with noise (500 > 250)... --- # Coase: Point 3 | | Confectioner | Doctor | |--------- |:------------: |:------: | | Noise | 500 | 0 | | Silence | 0 | 250 | If the confectioner has the property rights, we are already at the efficient outcome -- If the doctor has property rights, the confectioner can pay the doctor > 250 but < 500 and both are better off, a Pareto improvement! --- # Coase Caveats Coasean bargaining does not always work There are two key pieces we need to have satisfied: 1. No Transactions costs 2. No income effects --- # Coase Caveats: Transactions costs Suppose the doctor owns the property right of zero noise Noise `\(N\)` imposes cost `\(C(N)\)` on the doctor, benefits `\(B(N)\)` to the confectioner -- The confectioner could propose a contract where the doctor accepts some noise `\(N\)`, in exchange for a payment `\(\theta\)` --- # Coase Caveats: Transactions costs The confectioner could propose a contract `\((N,\theta)\)` consisting of noise level `\(N\)` and transfer payment `\(\theta\)` -- The doctor can then accept or refuse the contract `\((N,\theta)\)` -- Negotiating is .hi[costly] and has its own transactions cost `\(tr\)` --- # Coase Caveats: Transactions costs When does the doctor accept the contract? -- The doctor is weakly better off accepting the contract if the transfer payment `\(\theta\)` (the benefit) is at least the cost of noise `\(C(N)\)` -- In our graphical example, C(N) = MC `\(\times\)` N since MC is constant -- What contract does the confectioner offer in equilibrium? -- i.e. what contract proposal maximizes the confectioner's profit? --- # Coase Caveats: Transactions costs The confectioner will choose to offer `\(\theta = MC \times N\)` -- Why? -- It's the least amount required for the doctor to accept --- # Coase Caveats: Transactions costs This means we can write the confectioner's total profit as: -- `$$\pi(N) = B(N) - MC \times N - tr$$` Where `\(B(N)\)` is the benefits to the confectioner of noise (area under the MB curve) -- It's optimal choice of `\(N\)` (and therefore `\(\theta\)`) is given by the first-order condition: -- `$$B'(E) = MC \leftrightarrow MB(E) = MC$$` which matches our condition for efficiency in noise -- .hi[Did transactions costs actually cause any problems?] --- # Coase Caveats: Transactions costs .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor3-1.png) ] .pull-right[ Yes! Why? ] --- # Coase Caveats: Transactions costs .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor3-1.png) ] .pull-right[ Yes! Why? To have a mutually beneficial contract we still need the total gain in surplus (.hi-blue[blue]) to be greater than `\(tr\)` ] --- # Coase Caveats: Transactions costs .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor3-1.png) ] .pull-right[ Yes! Why? To have a mutually beneficial contract we still need the total gain in surplus (.hi-blue[blue]) to be greater than `\(tr\)` Otherwise the total cost of the bargaining is greater than the total benefit from bargaining `\(\rightarrow\)` bargaining makes us worse off ] --- # Coase Caveats: Transactions costs If the confectioner has the rights to noise, we just flip the script -- The doctor proposes a contract `\((N, \theta)\)` where the confectioner reduces noise from `\(N_0\)` in exchange for a transfer payment -- The confectioner accepts or rejects the contract When does the confectioner accept the contract? -- The confectioner accepts if `\(\theta \geq B(N_0) - B(N)\)` (payment > loss of benefits) -- The doctor will then offer the minimum required: `\(\theta = B(N_0) - B(N)\)` --- # Coase Caveats: Transactions costs The doctor's problem is then to maximize the benefits of the transaction: `$$\max_{N} \underbrace{MC \times(N_0-N)}_{\text{noise cost reduction}} - \theta - tr$$` Which we can write as: `$$\max_{N} MC \times (N_0-N) - \underbrace{(B(N_0) - B(N))}_{\theta} - tr$$` --- # Coase Caveats: Transactions costs `$$\max_{N} MC \times (N_0-N) - \underbrace{(B(N_0) - B(N))}_{\theta} - tr$$` -- First term is the avoided noise costs, second term is the payment, third term is the transaction cost -- The doctor's problem gives us the first-order condition: `$$MC = B'(E) \equiv MC = MB$$` --- # Coase Caveats: Transactions costs .pull-left[ ![efficiency is where MC = MB of noise](03-slides-coase_files/figure-html/doctor2-1.png) ] .pull-right[ We again reach the social optimum! To have a mutually beneficial contract we still need the total gain in surplus (.hi-red[red]) to be greater than `\(tr\)` Otherwise the total cost of the bargaining is greater than the total benefit from bargaining `\(\rightarrow\)` bargaining makes us worse off ] --- # Coase Caveats: Transactions costs Main takeaway: transactions costs can prevent Coasean bargaining from achieving the efficient allocation -- Why? -- In cases where the gains from bargaining are small, transactions costs may exceed the benefits and prohibit bargaining from occurring --- # Coase Caveats: Income effects .pull-left[ ![income effects change the outcome](03-slides-coase_files/figure-html/income-1.png) ] .pull-right[ Suppose the confectioner is given the property rights (start at N0) Doctor pays confectioner to eliminate noise and move to N1* The confectioner gets some amount of surplus/income What can the confectioner do with it? ] --- # Coase Caveats: Income effects .pull-left[ ![income effects change the outcome](03-slides-coase_files/figure-html/income2-1.png) ] .pull-right[ The confectioner can buy more candy-making machines, increasing its MB from noise This changes the optimal noise to N2* We have a new equilibrium! If they contracted to reach N1*, it is now .hi[inefficient] ] --- # Ways to alleviate transactions cost One common issue is incomplete information -- Disseminating information can make it easier to know each other's costs and benefits which makes beneficial trades more likely to occur --- # Ways to alleviate transactions cost Emergency Planning and Community Right-to-know Act (1986) set-up the Toxic Release Inventory (TRI): http://www.epa.gov/tri/ Green (“eco”) labeling - Allows companies to learn which firms took positive steps to reduce pollution, and to reward them in the marketplace - Firms need to be able to increase demand by enough to offset higher costs and raise profits -- Is there a role for the government to be involved in verifying “green” claims? What really constitutes “organic”? --- # Coase theorem While transaction costs can be the downfall of Coasian bargaining, there are costs to government policy: - Bureaucratic costs - Government might set the policy incorrectly -- Coase and Pigou both have trade-offs to their approaches to solving environmental issues --- class: inverse, center, middle name: coase # An example: The Cheshire transaction

 --- # The Cheshire transaction Cheshire, Ohio: a small town with a population 221 before 2002 -- In the 1970’s the town welcomed the construction of a power plant nearby -- Gavin Power plant owned by American Electric Power (AEP): 2.6 GW Enough power for 2 million people (completed 1975) -- In the 1990’s, property values in the village plummeted -- Why would this be the case? --- # The Cheshire transaction Acid rain fallout damaged cars, odors nauseated residents and thick plumes of smoke sometimes blocked the sun -- In August 2000 the Environmental Protection Agency declared the Gavin plant in violation of the Clean Air Act -- A later study found that the air in Cheshire was five times the level necessary to cause an asthma attack -- What happened next? Some real world Coasean bargaining --- # The Cheshire transaction Fall 2001: the village selected a law group from Washington, DC to pressure the power plant and its owner to heed their concerns and clean up the plant’s emissions -- Others wanted the plant to compensate them for diminished property value and to address health concerns -- April 16, 2002: AEP announced its plan to acquire the incorporated town for $20 million -- September 24, 2002: AEP announces that it has finalized the buyout. About 90 percent of town residents have participated in the buyout offer and have signed the health waivers and the confidentiality agreements --- # The Cheshire transaction Property owners in town receive 3.5x assessed value Outside town: 2x assessed value Renters receive $5k for each year lived in Cheshire, up to $25k Must sign a health waiver prohibiting them from suing AEP for future health problems --- # The Cheshire transaction Must also sign a confidentiality agreement -- Cheshire residents over age of 71 able to remain in homes rent free until death -- Original population: 221. Current population: <20 -- Total settlement disbursed by AEP: $20 million -- Attorneys take about 1/3 of settlement money --- # The Cheshire transaction: was it a good thing? We know the efficient pollution control decision was made, why? -- AEP could have abated instead of compensating! Basically all the involved parties agreed to the contract -- Now imagine that AEP Gavin’s control costs were low, and the efficient outcome would be to install additional control equipment -- Would it matter whether we granted the “right to clean air” to the town or to AEP? --- # Coase in practice Cap-and-trade is effectively Coase at large scale -- It allocates a number of rights to pollute (permits or allowances) -- The total number of rights is the cap -- Coase tells us that the initial distribution of permits does not matter -- The cap-and-trade system will then achieve the efficient outcome


Insertion sort
One of the simplest algorithms available
It performs very well on small input data
Home Sorting
One of the simplest algorithms available
It performs very well on small input data
Exploits devide-and-conquer technique to achieve optimal sorting performance
Its name speaks for itself
It's one of the fastest (if not the fastest one) algorithms available on the market
Another amazing algorithm that uses Binary Heap data structure to get its efficiency
| # | Algorithm | Time (worst case) |
|---|---|---|
| 1 | Insertion sort | θ(n2) |
| 2 | Merge sort | θ(n × log2 (n)) |
| 3 | Quick sort | θ(n × ln(n))* |
| 4 | Heap sort | θ(n × log2 (n)) |
* randomized


Finding an apprenticeship Social worker
Blurb about using this page and generic information about searching for an apprenticeship
More about apprenticeshipsWhat to look for
| Apprenticeship title |
|
| Apprenticeship level |
Level 3 or higher
Find out more |
| Qualifications |
|
| Skills/experience |
|
Print page


Customer Conversion
Important Features
Binary Classification Model Explanation
We performed training a binary classification model using ensemble stacking classifiers: (GaussianNB(XGBClassifier(input_matrix, learning_rate=0.001, max_depth=6, min_child_weight=10, n_estimators=100, n_jobs=1, subsample=0.4, verbosity=0)))
The performance we can achieve is:
* The more product views, the greater the chance of a purchase.
* Add to cart and product search greatly increase the chance of a purchase.
* Different product price non-linearly affect chance of purchase.
* Chance of purchase is higher close to midnight.
*
Convert:
Not Convert:
Sequential Model Explanation
Accuracy: 0.982104 Precision: 0.921922 Recall: 0.839562 F1 score: 0.878817
Example sequences for conversion
sequence 1: 3, 3, 3, 1, 2
sequence 2:3, 3, 3, 3, 2
sequence 3:3, 1, 3, 1, 3, 1, 1
sequence 4:3, 3, 1, 2, 1


YAWN allow you edit YAML in JavaScript and put it back to YAML without losing comments and styling
Code in GitHub


Chicago IL
DBC Chicago |
Beloit College
Aspiring software developer and web designer based in Chicago, Illinois. Originally from Oak Park, Illinois. Avid drummer, runner, reader and traveler with interests in plant-based health and fitness, arts, and global culture. Ask me about my Sci-fi collection. Currently enrolled in Dev Bootcamp Chicago with a degree in Economics from Beloit College.


Navigation to this page is stalled before the api is fetched.
{{todo.id}}
userId: {{todo.userId}}
{{todo.title}}


Welcome! My name is Ojas and I am an Flutter Dev , and I have basic experiene in Python , Javascript. I also seem to have a good expereince of HTML , CSS. 🕹 As a location independent Developer, I am working with customers all over the globe. 🌎
Flutter makes it possible to create apps , rapidly while keeping a simple and minimal design!
Lets talk about your next project , describe your budget and the idea in a few words!


Currently this page has no real working animation/demonstration...rather it is a loading page for the lti.js library currently under development. Included in this code is a branch of the jinstrument library for plotting purposes.
Goal of the page:
Matrices can be specified by a State Space Matrix Input Object, ssmi to an existing DOM div in the page. For example below:
ssmi(div_id="plotbox",ctdt = "CT",type='ss');
var sys = new SS([[1, 0.01, 0],[0,0.5,0.1],[0,0,0.1]],[0,0,1], [1,0,0]);


| 026:036 Khan | : |
They said: "Put him off and his brother (for a while), and send callers to the cities; |
| 026:036 Maulana | : |
They said: Give him and his brother respite and send heralds into the cities |
| 026:036 Pickthal | : |
They said: Put him off, (him) and his brother, and send into the cities summoners |
| 026:036 Rashad | : |
They said, "Respite him and his brother, and send summoners to every town. |
| 026:036 Sarwar | : |
They said, "Hold him and his brother off for a while |
| 026:036 Shakir | : |
They said: Give him and his brother respite and send heralds into the cities |
| 026:036 Sherali | : |
They said, 'Put him off and his brother awhile and send into the cities summoners, |
| 026:036 Yusufali | : |
They said: "Keep him and his brother in suspense (for a while), and dispatch to the Cities heralds to collect- |
Concepts/Themes Covered:
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


Der Spieler, der als Erster drei Zeichen " + "in eine Zeile, Spalte oder Diagonale setzen kann, gewinnt."); game.setGameMode("PLACING"); // Setup Meta Entities var player1 = game.createPlayer({ name: "Jan", type: "HUMAN" }); var player2 = game.createPlayer({ name: "Scully", type: "ARTIFICIAL" }); // Enable active learning of the agent //player2.enableLearning(); var w = "gridCellWhiteWithBorder"; // Create the game board game.setupGridWorld(3, 3, [ w, w, w, w, w, w, w, w, w ]); // Add entity blueprints to the game to use them ingame var black = game.addBlueprint(player2, Spoooky.Blueprints.TICTACTOE.entities.black), white = game.addBlueprint(player1, Spoooky.Blueprints.TICTACTOE.entities.white); game.addEntitiesToGameBoard([ 0, 0, 0, 0, 0, 0, 0, 0, 0 ]); // Set the player who will start the game game.setPlayer(player1); // Game goals for tic tac toe // Player 1 has three entities in a row game.addGameRuleAtom({ atomName : "Player1: Three entities in a row", atomFunction : "Player Has Number Of Entities In Row", atomArguments : { number : 3, playerID : player1.getID(), entityID : white.typeID } }); game.assembleGameRule({ name : "Player 1 has three entities in a row", atoms : ["Player1: Three entities in a row"] }); game.connectGameRuleConsequences({ ruleName : "Player 1 has three entities in a row", consequences : [{ jobName: "Stop the Game", jobFunction: "Stop Game" }, { jobName: "Output winning Message for player 1", jobFunction: "Print Game Process", jobArguments: "Spieler 1 gewinnt!" }, { jobName: "Set the Winner of the Game", jobFunction: "Set Winner", jobArguments: player1.getID() }]}); // Player 1 has three entities in a column game.addGameRuleAtom({ atomName : "Player1: Three entities in a column", atomFunction : "Player Has Number Of Entities In Column", atomArguments : { number : 3, playerID : player1.getID(), entityID : white.typeID } }); game.assembleGameRule({ name : "Player 1 has three entities in a column", atoms : ["Player1: Three entities in a column"] }); game.connectGameRuleConsequences({ ruleName : "Player 1 has three entities in a column", consequences : [{ jobName: "Stop the Game", jobFunction: "Stop Game" }, { jobName: "Output winning Message for player 1", jobFunction: "Print Game Process", jobArguments: "Spieler 1 gewinnt!" }, { jobName: "Set the Winner of the Game", jobFunction: "Set Winner", jobArguments: player1.getID() }]}); // Player 1 has three entities diagonally game.addGameRuleAtom({ atomName : "Player1: Three entities diagonally", atomFunction : "Player Has Number Of Entities Diagonally", atomArguments : { number : 3, playerID : player1.getID(), entityID : white.typeID } }); game.assembleGameRule({ name : "Player 1 has three entities diagonally", atoms : ["Player1: Three entities diagonally"] }); game.connectGameRuleConsequences({ ruleName : "Player 1 has three entities diagonally", consequences : [{ jobName: "Stop the Game", jobFunction: "Stop Game" }, { jobName: "Output winning Message for player 1", jobFunction: "Print Game Process", jobArguments: "Spieler 1 gewinnt!" }, { jobName: "Set the Winner of the Game", jobFunction: "Set Winner", jobArguments: player1.getID() }]}); // Game Goals For Player 2 // Player 2 has three entities in a row game.addGameRuleAtom({ atomName : "Player2: Three entities in a row", atomFunction : "Player Has Number Of Entities In Row", atomArguments : { number : 3, playerID : player2.getID(), entityID : black.typeID } }); game.assembleGameRule({ name : "Player 2 has three entities in a row", atoms : ["Player2: Three entities in a row"] }); game.connectGameRuleConsequences({ ruleName : "Player 2 has three entities in a row", consequences : [{ jobName: "Stop the Game", jobFunction: "Stop Game" }, { jobName: "Output winning Message for player 2", jobFunction: "Print Game Process", jobArguments: "Spieler 2 gewinnt!" }, { jobName: "Set the Winner of the Game", jobFunction: "Set Winner", jobArguments: player2.getID() }]}); // Player 2 has three entities in a column game.addGameRuleAtom({ atomName : "Player2: Three entities in a column", atomFunction : "Player Has Number Of Entities In Column", atomArguments : { number : 3, playerID : player2.getID(), entityID : black.typeID } }); game.assembleGameRule({ name : "Player 2 has three entities in a column", atoms : ["Player2: Three entities in a column"] }); game.connectGameRuleConsequences({ ruleName : "Player 2 has three entities in a column", consequences : [{ jobName: "Stop the Game", jobFunction: "Stop Game" }, { jobName: "Output winning Message for player 2", jobFunction: "Print Game Process", jobArguments: "Spieler 2 gewinnt!" }, { jobName: "Set the Winner of the Game", jobFunction: "Set Winner", jobArguments: player2.getID() }]}); // Player 2 has three entities diagonally game.addGameRuleAtom({ atomName : "Player2: Three entities diagonally", atomFunction : "Player Has Number Of Entities Diagonally", atomArguments : { number : 3, playerID : player2.getID(), entityID : black.typeID } }); game.assembleGameRule({ name : "Player 2 has three entities diagonally", atoms : ["Player2: Three entities diagonally"] }); game.connectGameRuleConsequences({ ruleName : "Player 2 has three entities diagonally", consequences : [{ jobName: "Stop the Game", jobFunction: "Stop Game" }, { jobName: "Output winning Message for player 2", jobFunction: "Print Game Process", jobArguments: "Spieler 2 gewinnt!" }, { jobName: "Set the Winner of the Game", jobFunction: "Set Winner", jobArguments: player2.getID() }]}); // Draw rule game.addGameRuleAtom({ atomName : "Every Field Has Been Played", atomFunction : "No Empty Field On The Game Board" }); game.addGameRuleAtom({ atomName : "Game State is INGAME", atomFunction : "Game State Is", atomArguments : "INGAME" }); game.assembleGameRule({ name : "Draw If Game Board Is Full", atoms : ["Every Field Has Been Played", "Game State is INGAME"] }); game.connectGameRuleConsequences({ ruleName : "Draw If Game Board Is Full", consequences : [{ jobName: "Stop the Game", jobFunction: "Stop Game" }, { jobName: "Output Draw Message", jobFunction: "Print Game Process", jobArguments: "Unentschieden!" }]}); // ***************************** // // *** Interface / AngularJS *** // // ***************************** // var SpoookyGame = new Spoooky.AngularWrapper({ game : game, cellWidth : 165, cellHeight : 165 });


I had just received my big bag of calea and 100 HBWR seeds and I was stoked. I had read as much as I could about calea and I realised the idea was not to try to be blasted into space, but to allow the effects to manifest themselves gently, as I am getting to sleep.
I packed a joint with its crumbled leaves, and 2g of hashish- let me make it clear that this is not the beautiful exotic form, but rather the cheap hash the is so unfortunately found in the poorer areas of the United Kingdom (of America) haha. After a day of light smoking and drinking I was up for the effects of the drug. At about 11:30 I went outside and sat under a birch tree, that was so beautifully being swayed by the mesmerising nighttime breeze that the Atlantic so kindly brings for us. the joint burnt beautifully, and I have to say I was rather proud of it, seeing as I had to make a cone first and then pack the drug in.
Within 5 large tokes on it I was feeling an odd effect. Clearly not thinking this would be the calea affecting me I put it down to sleepiness and cannabis intoxication. I smoked and smoked and smoked; the joint lasting at least 20 mins at this point. I looked up, and one tree looked like the perfect form of any tree I had ever seen. After staring at it for a fair while, I looked around to everything else and my vision was mildly more beautiful than before. As I stopped looking around, I suddenly felt that apart from what was directly in my view, there was nothing else in this reality, and I had absolutely no fear of this. In fact it was incredible because it did not feel physically incapacitated so could remind myself I was still on the same planet!
I was not expecting any strong effects during my waking hours, but had done, so I decided to leave the last 1/4 of the mother of a joint n hit the hay. I led in bed, feeling the effect of the cannabis, which was making me feel rather floaty, but none of the other effects I was having, could (in my experience) be attributed to hash. I was having auditory hallucinations (mosquitoes around me, which did not bother me much, people talking, but not being able to work out where the sound was coming from- which did not seem to be an issue at all). I kept having closed eye visions of events happening- like parts of dreams, and my mind was just running through a few ideas it was having. They were like very mild hallucinations, because upon opening my eyes, I could just see my room.
It took me quite a while to get to sleep, and I put this down to me being a little over excited about the dreams I was going to have. As it was, it turned out me dreams were actually not too amazing or vivid- a factor contributing to that could be the hash I smoked having a rather sedating effect after half an hour or so.
So... sure Iíll try it again- but I will try it when I sleep after a HBWR session- and I will smoke some high grade Budz thru my pipe.
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.


Peaky Blinders is a British period crime drama television series created by Steven Knight. Set in Birmingham, England, the series follows the exploits of the Shelby crime family in the direct aftermath of the First World War. The fictional family is loosely based on a real 19th-century urban youth gang of the same name, who were active in the city from the 1890s to the early twentieth century. Peaky Blinders features an ensemble cast, led by Cillian Murphy, Helen McCrory, Joe Cole and Paul Anderson starring as Tommy Shelby, Elizabeth "Polly" Gray, John Shelby and Arthur Shelby respectively, the gang's senior members. Sam Neill, Tom Hardy, Paddy Considine, Adrien Brody, Aidan Gillen, Charlotte Riley, Sam Claflin and Anya Taylor-Joy also have recurring roles at various junctures of the series. The series premiered on 12 September 2013, telecast on BBC Two until the fourth season, and then shifted to BBC One for the fifth season.
Peaky Blinders is a gangster family of Irish Traveller origin epic set in Birmingham, England, in 1919, several months after the end of the First World War in November 1918. The story centres on the Peaky Blinders gang and their ambitious and highly cunning boss Tommy Shelby (Cillian Murphy). The gang comes to the attention of Major Chester Campbell (Sam Neill), a Detective Chief Inspector in the Royal Irish Constabulary (R.I.C.) sent over by Winston Churchill from Belfast, where he had been sent to clean up the city of the Irish Republican Army (I.R.A.), Communists, gangs and common criminals. Winston Churchill (played by Andy Nyman in Series 1 and Richard McCabe in Series 2) charged him with suppressing disorder and uprising in Birmingham and recovering a stolen cache of arms meant to be shipped to Libya. The first series concludes on 3 December 1919 – "Black Star Day", the event where the Peaky Blinders plan to take over Billy Kimber's betting pitches at the Worcester Races.
The second series sees the Shelby family expand their criminal organisation in the "South and North while maintaining a stronghold in their Birmingham heartland."It begins in 1921 and ends with a climax at Epsom racecourse on 31 May 1922 – Derby Day.
The third series starts and ends in 1924 as it follows Tommy and his family entering an even more dangerous world as they once again expand, this time internationally. The third series also features Father John Hughes (Paddy Considine), who is involved in an anti-communist organisation; Ruben Oliver (Alexander Siddig), a painter whom Polly enlists to paint her portrait; Russian Duchess Tatiana Petrovna (Gaite Jansen); and Linda Shelby (Kate Phillips), new wife of Arthur.
The fourth series begins on Christmas Eve 1925 and ends following the general strike of May 1926 with Tommy being elected as a Member of Parliament in 1927.
The fifth series begins two years later on 29 October 1929 (Black Tuesday) and ends on 7 December 1929, the morning after a rally led by fascist leader Oswald Mosley.
The story of the Shelby family is expressed in the music.
Click here to listen to the full Peaky Blinders soundtrack
Click here to read about the creators of the music in 'Peaky Blinders'
| Thomas Shelby |
Thomas Michael Shelby OBE DCM MM MP is the leader of the Birmingham criminal gang, the Peaky Blinders and the patriarch of the Shelby Family.
Tommy served in World War I with the rank of Sergeant Major and was decorated for bravery.
His experiences in World War I left him disillusioned and beset with ongoing nightmares, and he becomes determined to move his family up in the world. |
| Arthur Shelby |
Arthur is the eldest of the Shelby siblings and a tough member of the Peaky Blinders.
He is also Deputy Vice President of Shelby Company Limited and member of the ICA, acting as his brother Tommy Shelby's right-hand man.
During the war in France, Arthur was a Sapper with his brother Thomas, digging very treacherous tunnels in order to place enormous amount of explosives under the enemy positions. |
| John Shelby |
John Michael Shelby, also known as Johnny or John Boy, was the third of Shelby siblings and a high ranking member of the Peaky Blinders.
He was also a 1/3 shareholder in the Shelby Family business, Shelby Company Limited.
John was a soldier of the Warwickshire Yeomanry, which served as cavalry and machine gunners in the First World War. |
| Polly Gray |
Elizabeth "Polly" Gray (Shelby) is the matriarch of the Shelby Family, aunt of the Shelby siblings, the treasurer of the Birmingham criminal gang, the Peaky Blinders, a certified accountant and company treasurer of Shelby Company Limited.
She managed the Peaky Blinders when the Shelby boys were absent during the Great War. She is the unofficial head of the Shelby Family and often advises Thomas Shelby on the gang's business. |
| Ada Thorne |
Ada Thorne (Shelby) is the fourth and only female of the Shelby siblings and the only sibling initially not involved with the Peaky Blinders.
By the end of 1924, however, Ada assumes a leading position at the United States branch of Shelby Company Limited, dealing only with legal acquisitions; unlike her brothers back home in Birmingham, England. |
| Michael Gray |
Michael Gray, introduced in the second season, is the son of Polly Shelby, the cousin of the Shelby siblings, and a powerful and high ranking member of the Peaky Blinders.
He is the Chief Accountant of Shelby Company Limited, a position that causes tensions with John Shelby. |
| Grace Shelby |
Grace Helen Shelby (Burgess) was an Irish barmaid who took up employment at The Garrison Pub, and secretly operated as an undercover agent for the Birmingham Police.
Her mission involved getting close to Thomas Shelby whom she fell in love with. He too returned the sentiment but was heartbroken when he discovered her treachery. |
| Finn Shelby |
Finn Shelby is the youngest of the Shelby siblings and a member of the Peaky Blinders. Finn was born in 1908, making him the only Shelby brother to have not fought in the First World War due to his age.
As he is the youngest of the Shelby's, Finn's involvement within the Peaky Blinders is kept to a minimum, with his brothers Tommy, Arthur, and his Aunt Polly shielding him from the worst of their actions. |
| Esme Shelby |
Esme Martha Shelby (Lee) is a member of the Lee Family and, by marriage to John Shelby, a member of the Shelby Family. |
| Linda Shelby |
Linda used to be a Quaker (a member of a religious Christian movement). She then helped Arthur with his sobriety in his life, among other things.
Linda Shelby is the ex-wife of Arthur Shelby Jr. and a former close ally of the Peaky Blinders. |
| Jeremiah Jesus |
Jeremiah "Jimmy" Jesus is an Afro-Caribbean local street preacher and a long time member of the Peaky Blinders. He fought in the war alongside Thomas Shelby, and has been a close ally ever since. He is the father of Isaiah. |
| Isaiah Jesus |
Isaiah Jesus is the son of the Caribbean street preacher Jeremiah Jesus and a Peaky Blinder. He is a close friend and companion of Finn Shelby and Michael Gray. |
| Danny Wizz-Bang |
Daniel Owen, known as Danny Whizz-Bang, was a former comrade of Tommy and a loyal member of the Peaky Blinders. Danny fought alongside Tommy in the war, but departed Birmingham shortly after their return, relocating to London while allowing everyone in Birmingham believing him dead. |
| Freddie Thorne |
Was a Sergeant in the Great War and during their military service, saved Tommy's life and was his best friend when they were young.
After the war, Freddie Thorne became a Communist. He moved to Birmingham and met Ada Shelby who becomes his wife. |
| Barney Thomason |
Barney Thomason was a WWI comrade and old friend of Thomas Shelby's. He was admitted to a mental asylum shortly after the war after committing an unknown crime, presumably due to his severe shell-shock and was certified insane. He served as a sniper in WWI, trained by the Royal Marines.
He gained a reputation of being a very skilled marksman, and according to Thomas, never missed a target. Prone to manic episodes and hearing voices, Barney was only able to be calmed down by Thomas, for whom Barney had deep respect as Thomas was his superior in the War. Barney was key in the assassination attempt on Oswald Mosley. |
| Johnny Dogs |
Johnny Dogs is a friend of Thomas Shelby. He has close ties with both the Lee Family and the Shelby Family. |
| Charlie Strong |
Charles "Charlie" Strong is the uncle of the Shelby siblings. He works for Thomas alongside members of the Peaky Blinders and Curly at his yard, regularly helping with stock and preparing shipments, as well as take care of horses for the Shelby Company Limited. |
| Curly |
Curly is a stable boy and ferryman who often works in Charlie Strong's Yard. Thomas Shelby tells May Carleton that Curly's the best horseman in England. |
| May Carleton |
May Fitz Carleton is a wealthy widow who owns racehorses. and enlisted by Thomas Shelby to train his horse for Epsom. She is the proprietor of Carleton stud. |
| Aberama Gold |
Aberama Gold was a Romany Gypsy hitman-for-hire, a man with a reputation for being a dangerous savage with little regard for the rules. He was hired by Thomas Shelby when Luca Changretta, set on revenge against the entire Shelby family, arrives in England.
Aberama tells Tommy that he does not want just money in return for his help. He also wants Tommy to help his son, Bonnie Gold, become a boxing champion. |
| Bonnie Gold |
Bonnie Gold was a young Gyspy man and the son of Aberama Gold.
He was a fierce fighter and had ambitions of joining the exclusive world of professional boxing.
He becomes a Peaky Blinder in 1926. |
| Alfie Solomons |
Alfred "Alfie" Solomons Jr. is a Jewish gang leader who resided in Camden Town, London. Violent and unpredictable, but intelligent and calculating, he is a master negotiator who used violent outbursts and confusing language to intimidate and dominate everyone around him.
Although he appears to take a liking to Tommy over time and is certainly willing to do business with him, it does not mean he won't do business with Tommy's rivals on the sly. |
| Lizze Stark |
Elizabeth 'Lizzie' Shelby (née Stark) is a former prostitute living in the city of Small Heath, Birmingham. After Thomas Shelby returned from the war in France, she served him regularly as a prostitute for two years and was known to have served many men like him.
For a short time, she was engaged to Thomas's brother, John Shelby, however the marriage was called off. She currently works as a secretary and assistant for Thomas Shelby. |
| Inspector Campbell |
Chester Campbell (originally Chief Inspector Campbell in Series 1, then promoted to Major in Series 2) was an Inspector in the Royal Irish Constabulary hired by Winston Churchill, to locate and recover the missing consignment of guns from the Birmingham Small Arms Company factory. While in Small Heath, Birmingham, however, despite locating the guns, he developed a vendetta against the Peaky Blinders and the Shelby family in particular.
Campbell served as the main antagonist of the first and second series. |
| Billy Kimber |
William "Billy" Kimber was an English gangster and head of the Birmingham Boys and thus, the main enemy of Thomas Shelby and the Peaky Blinders. He ran most of the legal tracks outside of London, leading to tensions between Kimber and the Peaky Blinders, who looked to expand their control into inner city London.
Due to his wealth and influence, Kimber had policemen on his payroll and an assistant, Roberts. Kimber served as the secondary antagonist of the first series. |
| Darby Sabini |
Charles "Darby" Sabini born Ottavio Handley Sabini (11 July 1888 – 4 October 1950) is a British Italian gang leader from London, England.
He was at war with Alfie Solomons and Thomas Shelby in Series 2. Darby Sabini serves as the secondary antagonist of the second series. |
| Father Hughes |
Father John Hughes was a major character and the main antagonist of Series 3 of Peaky Blinders. He was a member and representative of The Economic League. |
| Tatiana Petrovna |
She is the niece of Grand Duke Leon Petrovich Romanov and Grand Duchess Izabella Petrovna. Princess Tatiana Petrovna is the Russian royalty who deals business with the Peaky Blinders. |
| Luca Changretta |
Luca Changretta was an Italian American mobster, son of Vicente Changretta and Audrey Changretta and a leader of the Changretta mob. His mob does work in the liquor business stationed in New York.
The mob has a heavy rivalry with Chicago's Al Capone, as New York is an important trading port for transporting alcohol from Europe. Changretta is also a soldier for the Spinietta family.
After his father and brother, Angel Changretta, are killed by the Peaky Blinders he obtains enough information from his surviving mother, Audrey, to launch a vendetta in Birmingham against Thomas and the rest of the of the surviving Shelby family. |
| Jimmy McCavern |
Jimmy McCavern is the leader of the Billy Boys and a member of the Glasgow razor gang. He is first introduced following the Wall St. Crash. He serves as the secondary antagonist of Series 5 of Peaky Blinders. |
| Oswald Mosely |
Sir Oswald Mosley is the Minister of the Duchy of Lancaster, the deputy to the Chancellor of the Exchequer and the Cabinet adviser to the Prime Minister of Great Britain. He is also the MP for Smethwick, the constituency bordering South Birmingham, Thomas Shelby's constituency.
Serving as the main antagonist of Season 5, he is described as the devil and is closely under the supervision of the Peaky Blinders. |
| Gina Gray |
Gina Gray is the scheming wife of Michael Gray. The two met when Michael was in the United States and fell in love. When Michael is recalled to Birmingham, England, Gina expresses her wish to return with him. |
| Winston Churchill |
Winston Churchill was the Secretary of State for the Colonies between 1921 and 1922. He hires Inspector Campbell to retrieve his stolen machine guns, a man who he finds amusing but a good candidate for the job. The relationship between Churchill and Thomas is a complicated and ominous one. He is a recurring character throughout the series. |
| Jessie Eden |
Jessie Eden is an enigmatic union convener. She leads all-female factory workers in Birmingham out on strike protesting on the Bull Ring. She was based on the real life person of the same name. |