Grow.js
Status: currently works with Alpha and not with the old prototype.
Tagged releases coming soon!
Grow.js is an npm packagle for creating and connecting devices to a Grow-IoT instance. Full grow.js documentation can be found here.
Grow.js handles:
- Connecting to the host over the ddp protocol.
- Registers the device with host server. The information in config object is used to create a UI and API.
- Sets up readable / writable streams for pushing data and listening for commands in real time!
All you have to do is pass in a Thing object, and presto! You have created a new IoT device!
Installation
npm install Grow.js
Working with hardware.
If you want to try Grow.js but don't have a microcontroller, follow the quickstart guide on the Grow-IoT repo. Below is is a simple Led and photoresistor arduino example, see the examples folder for more hardware examples with various boards.
Grow.js works with most devices that can run node, and plays very well with the Johnny-Five robotics library, which has plugins for a large number of devices. Note, with boards like the Tessel 2, Johnny-five is not required, but we're including it to make it easier to get started and support a wide variety of devices, sensors, and actuators. Please feel free to create your own grow.js device and share it on the forum.
Wire up photo-resitor and led to arduino
Wire up your photo resistor and LED light like so:
Install johnny-five with:
npm install johnny-five
To use Johnny-Five, you need to make sure that your arduino is flashed with Standard Firmata. Instructions for doing so can be found here. Once that's done you're ready for the next step!
Take a look at the led-and-photoresistor arduino example in the examples/arduino/
folder. Be sure to set the 'username' property to the username you created an account with.
// Require the Grow.js build and johnny-five library.
var GrowInstance = require('../../../dist/Grow.umd.js');
var five = require('johnny-five');
// Create a new board object
var board = new five.Board();
// When board emits a 'ready' event run this start function.
board.on('ready', function start() {
// Define variables
// Note: if you wire the device slightly differently you may need to
// change the pin numbers below.
var LED = new five.Pin(13),
lightSensor = new five.Sensor('A0');
// Create a new grow instance.
var grow = new GrowInstance({
name: 'Light', // The display name for the thing.
desription: 'An LED light with a basic on/off api.',
username: 'jakehart', // The username of the account you want this device to be added to.
properties: {
state: 'off'
},
actions: {
turn_light_on: {
name: 'On', // Display name for the action
description: 'Turns the light on.', // Optional description
schedule: 'at 9:00am', // Optional scheduling using later.js
event: "Light on", // Message to emit as event when called.
function: function () {
// The implementation of the action.
LED.high();
console.log('light on');
grow.set('state', 'on');
}
},
turn_light_off: {
name: 'off',
schedule: 'at 8:30pm',
event: 'Light off',
function: function () {
LED.low();
console.log('light off');
grow.set('state', 'off');
}
},
light_data: {
name: 'Log light data',
type: 'light', // Currently need for visualization component... HACK.
template: 'sensor',
schedule: 'every 1 second',
function: function () {
grow.log({
type: 'light',
value: lightSensor.value
});
}
}
},
events: {
check_light_data: {
name: 'Check light data',
on: 'light_data', // Adds Listener for action event.
function: function () {
if ((lightSensor.value < 100) && (grow.get('lightconditions') != 'dark')) {
// This could be nice with a chaining API...
// It would be good if we could add additional rules with the environment.
// EventListeners
grow.emitEvent('dark');
grow.set('lightconditions', 'dark');
grow.call('turn_light_on');
} else if ((lightSensor.value >= 100) && (grow.thing.get('lightconditions') != 'light')) {
// This could be nice with a chaining API...
grow.emitEvent('light');
grow.set('lightconditions', 'light');
grow.call('turn_light_off');
}
}
}
}
});
});
Run the new example.js
file with:
node examples/arduino/led-and-photoresistor/example.js
Note: on certain opperating systems you may need to prefix that command with sudo
to allow the script access to USB.
Full grow.js documentation and examples can be found here.
Connecting devices
Host / Port
The host is where the device will be looking for a CommonGarden-IoT instance. By default the host is set to localhost
and the port is set to Meteor's standard of 3000
. This will work nicely for usb devices like Arduino.
For connecting over wifi, connect your device to wifi and set the host
to the IP address where the Grow-IoT instance is running. Simply specify it in your grow.json file.
"host": "YOUR_IP_HERE",
"thing": {...}
Connecting over SSL
You can connect securely to our Grow-IoT alpha instance on https://grow.commongarden.org, or see the Grow-IoT repo to easily start your own IoT network locally or hosted on Meteor Galaxy.
SSL is supported though will require a bit more setup. If you are hosting your instance off a computer with a dedicated IP address include the following info in your configuration object.
"host": "YOUR_IP_HERE",
"port": 443,
"ssl": true,
If you are hosting on a cloud instance such as Meteor Galaxy, you might need specify the servername. The example below shows you how to connect securely to the instance at grow.commongarden.org:
"host": "grow.commongarden.org",
"tlsOpts": {
"tls": {
"servername": "galaxy.meteor.com"
}
},
"port": 443,
"ssl": true,
"thing": { ... }
Developing
Eventually we'll be making libraries for other languages (not everything can or should run a highlevel language like Javascript) like Lua and python.
Code is written in ES6, and compiled using rollup.
npm run build
builds the library.
npm run test
builds the library, and runs tests in the test folder.
The documentation is written in jsdoc, built using Mr-Doc, and kept on the gh-pages branch of this repo.
Contributing
Please read:
License
Grow.js is released under the 2-Clause BSD License, sometimes referred to as the "Simplified BSD License" or the "FreeBSD License".


 Not only will you have a companion, but you will be rewarded for your good karma. This app is powered through crowdsourcing where users can post environmental issues on the map related to pollution, wildlife, natural resources or in general any environmental problem the area is facing! In the app, you can engage in friendly competition and compete against other people to see who can earn the most points! These points can be converted to cryptocurrencies which can be used to buy new companions to embark on the journey with you, buy premium rewards, or gift points to friends! Not only does this app support social wellbeing amongst the community, but it also motivates people to help clean the earth!
Built with:Other Developer Skills
Course Work
Mathematics
Science (Basics)
Other Academic Skills
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod aliquid, mollitia odio veniam sit iste esse assumenda amet aperiam exercitationem, ea animi blanditiis recusandae! Ratione voluptatum molestiae adipisci, beatae obcaecati.


Civic Insight (formerly BlightStatus) offers residents up-to-date information on the status of underutilized properties in their community.
Environment
Ruby on Rails with Ohana API backend
Redeploy
Programming and design skills
Learn more about this app


I by no means think that it is out of place to interrupt the order of the narration for a bit, and my pen is turned towards Germany, to recount a marvel there, that is held to be famous by everyone there, and also, briefly, certain other things.
In the furthest northwest region of Germany, on the very ocean shore a cave can be seen under a towering cliff, where seven men drowse. They were put into a deep sleep God knows how long ago and are whole, not only in body but also in their garments, so that, from the very fact that they have lasted through the course of so many years without decay, they are held in veneration by certain ignorant and barbarian nations. At length, when one looks closely at their dress, these men are seen to be Romans. And if someone were greedy enough to try to despoil one of these, it is said that his arms immediately wither, and his punishment terrifies the rest, so that none dare to touch them any further.
Look at what an accomplishment divine providence has preserved through so many seasons. Perhaps, since they are not thought to be anything other than Christians, at some time those nations could be saved by the preaching of these men.


By accessing this web site, you are agreeing to be bound by these web site Terms and Conditions of Use, all applicable laws and regulations, and agree that you are responsible for compliance with any applicable local laws. If you do not agree with any of these terms, you are prohibited from using or accessing this site. The materials contained in this web site are protected by applicable copyright and trade mark law.
The materials on Dialogue Systems Group, UFAL, MFF, CUNI's web site are provided "as is". Dialogue Systems Group, UFAL, MFF, CUNI makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties, including without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights. Further, Dialogue Systems Group, UFAL, MFF, CUNI does not warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on its Internet web site or otherwise relating to such materials or on any sites linked to this site.
In no event shall Dialogue Systems Group, UFAL, MFF, CUNI or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption,) arising out of the use or inability to use the materials on Dialogue Systems Group, UFAL, MFF, CUNI's Internet site, even if Dialogue Systems Group, UFAL, MFF, CUNI or a Dialogue Systems Group, UFAL, MFF, CUNI authorized representative has been notified orally or in writing of the possibility of such damage. Because some jurisdictions do not allow limitations on implied warranties, or limitations of liability for consequential or incidental damages, these limitations may not apply to you.
The materials appearing on Dialogue Systems Group, UFAL, MFF, CUNI's web site could include technical, typographical, or photographic errors. Dialogue Systems Group, UFAL, MFF, CUNI does not warrant that any of the materials on its web site are accurate, complete, or current. Dialogue Systems Group, UFAL, MFF, CUNI may make changes to the materials contained on its web site at any time without notice. Dialogue Systems Group, UFAL, MFF, CUNI does not, however, make any commitment to update the materials.
Dialogue Systems Group, UFAL, MFF, CUNI may revise these terms of use for its web site at any time without notice. By using this web site you are agreeing to be bound by the then current version of these Terms and Conditions of Use.
Any claim relating to Dialogue Systems Group, UFAL, MFF, CUNI's web site shall be governed by the laws of Czech Republic without regard to its conflict of law provisions.
Your privacy is very important to us. Accordingly, we have developed this Policy in order for you to understand how we collect, use, communicate and disclose and make use of personal information. The following outlines our privacy policy.
We are committed to conducting our business in accordance with these principles in order to ensure that the confidentiality of personal information is protected and maintained.
This application use your microphone to record sounds around you or your voice. The recording is used to recognise the type of the sound or a language you have spoken. The recording starts when you pres the "Push to speak" button and ends when you press "Stop" button.
The recorded sound and voice is stored on our servers. We retain the right to use the data for for research and commercial purposes. The recordings can be provided to third parties. Please do not record anything you do not want anyone to know about.
Your geo-position is used in verifying your responses. The geo-position is again stored on our servers. We retain the right to use the data for for research and commercial purposes. The recordings can be provided to third parties.
The sound and voice recordings will be primarily used to improve our dialogue systems such as ALEX.


% if (!athletes.length) { %>
Take your Strava experience to Cat 1 with improved training and performance insights made possible by Sauce for Strava!
Sauce Performance is built on an advanced synchronization system that imports an athlete's entire activity history from Strava servers to your browser's internal storage. It uses proven browser technology to store, index and analyze the activities without the use of 3rd party servers. Once an athlete's activity history is synchronized, a world of new activity analysis possibilities are available!


13 Pennsylvania correctional employees suspended after inmate dies following fight
by Nicole DarrahMore than a dozen employees with Pennsylvania's Department of Corrections have been suspended after an inmate died during a fight with another inmate last week, officials said.
Tyrone Briggs, 29, died Nov. 11 after a brawl ensued between him and another inmate near the housing unit at the State Correctional Institution at Mahanoy in Frackville.
JAYME CLOSS' KIDNAPPER GETS IN FIGHT AT NEW MEXICO PRISON, VIDEO SHOWS
As Briggs was "waiting to be processed into the restricted housing unit," he became unresponsive, the department said in a news release. Briggs was pronounced dead less than two hours later.
Following an investigation into Briggs' death, John Wetzel, corrections secretary, suspended 13 medical and security employees without pay "pending the outcome of any criminal and administrative investigations."
LOUISIANA JUDGE OFFERS RAPIST A REDUCED SENTENCE IF VICTIM CONSENTS TO $150G PAYOFF
"Whatever the outcome of this case, we are going to be as transparent as possible, and the DOC will take whatever remedial measures deemed to be necessary," Wetzel said, noting what happened at the Mahanoy facility "should not tarnish" other correctional employees.
CLICK HERE TO GET THE FOX NEWS APP
Briggs was serving a 15- to 30-year sentence for raping an 11-year-old girl in 2006. He was committed to the corrections department in 2008 and had been held at Mahanoy, a medium-level security male prison, since August 2011.


Company profile - Canadian Company Capabilities
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Whipcord Ltd.
Mailing Address:
3528-30 St NLETHBRIDGE, Alberta
T1H 6Z4
Tel.:<PHONE_NUMBER>
Tel.:<PHONE_NUMBER>
Fax:<PHONE_NUMBER>
Logo
Company Profile
Whipcord is a privately owned Canadian company that owns and operates one of the finest data centres in Canada. We enjoy a strong mandate to grow and are investing in new infrastructure in Vancouver and Toronto. Whipcord is in the business of helping clients improve IT availability and reduce costs by leveraging Whipcord’s services, including:
• Colocation
• Infrastructure as a Service (Hybrid Cloud)
• A suite of Backup / Disaster Recovery as a Service solutions
• Network connectivity
Full profile
Full profile
Contact information
Company description
Product / Service / Licensing
Colocation reduces capital expenditure, while still providing the security and reliability of your own data center. Whipcord colocation services let you leverage our world-class multi-tenant data center for reliable power, cooling and network capacity.
All infrastructure has been selected from leading vendors such as APC and Juniper Networks to ensure long term support. All systems are designed to scale without customer interruption.
Low risk location
Remote hands and expertise available
Power reservation pricing
Power resets and hardware swaps included
Discounts for higher density and longer terms
Combine colocation with our other services
Whipcord delivers Internet via redundant BGP upstream connections. We provide a Canada based connectivity solution.
Whipcord also provides WAN connectivity to our customers if they desire through partnerships with leading Canadian Telecommunication carriers. We can provide connectivity to anywhere in Canada. Services are all MPLS based.
100Gbps capable Juniper infrastructure
Flat rate or burstable options
Carrier neutral facility
Carrier MPLS
Cross connects
Private T1
Managed firewall and VPNs
Multihomed BGP4
Replication
Whipcord replication service provides real time data backup and the ability to recover servers in minutes. Replicated services are located in our Lethbridge, Alberta data centre that is owned and operated by Whipcord. This way we control the end to end service experience for our customers. As we are an Alberta based company with 100% of our ownership in Canada, with no presence outside of Canada, we are only subject to Canadian laws and regulations. This ensures our clients cant be subject to an unexpected act such as the US Patriot Act.
Backup Features:
Scheduled file and image level backup
Flexible retention policies
End-to-end encryption capability ensures data privacy
Replication Features:
True Continuous Data Protection (CDP)
Supported by the WhipCord Hybrid Cloud
Protects both physical and virtual machines
At WhipCord, we understand that your business and IT environment is unique. Our flexible IaaS architecture allows us to build solutions with the exact virtual server specifications, storage, and network capacity suited to your business applications. Our expert staff are available to assist your IT department in selecting the right configuration for your business. We can work with your team to develop a customized transition plan.
Scalable without capital investment
Customize the servers to suite your needs
VMware cluster in High Availability Config
Backed by our Tier 3 designed data centre
Enterprise grade
Can be combined with storage, colocation or backup services
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Contacts
Contact information
Description
Company description
Products, services and licensing
Product / Service / Licensing
Colocation reduces capital expenditure, while still providing the security and reliability of your own data center. Whipcord colocation services let you leverage our world-class multi-tenant data center for reliable power, cooling and network capacity.
All infrastructure has been selected from leading vendors such as APC and Juniper Networks to ensure long term support. All systems are designed to scale without customer interruption.
Low risk location
Remote hands and expertise available
Power reservation pricing
Power resets and hardware swaps included
Discounts for higher density and longer terms
Combine colocation with our other services
Whipcord delivers Internet via redundant BGP upstream connections. We provide a Canada based connectivity solution.
Whipcord also provides WAN connectivity to our customers if they desire through partnerships with leading Canadian Telecommunication carriers. We can provide connectivity to anywhere in Canada. Services are all MPLS based.
100Gbps capable Juniper infrastructure
Flat rate or burstable options
Carrier neutral facility
Carrier MPLS
Cross connects
Private T1
Managed firewall and VPNs
Multihomed BGP4
Replication
Whipcord replication service provides real time data backup and the ability to recover servers in minutes. Replicated services are located in our Lethbridge, Alberta data centre that is owned and operated by Whipcord. This way we control the end to end service experience for our customers. As we are an Alberta based company with 100% of our ownership in Canada, with no presence outside of Canada, we are only subject to Canadian laws and regulations. This ensures our clients cant be subject to an unexpected act such as the US Patriot Act.
Backup Features:
Scheduled file and image level backup
Flexible retention policies
End-to-end encryption capability ensures data privacy
Replication Features:
True Continuous Data Protection (CDP)
Supported by the WhipCord Hybrid Cloud
Protects both physical and virtual machines
At WhipCord, we understand that your business and IT environment is unique. Our flexible IaaS architecture allows us to build solutions with the exact virtual server specifications, storage, and network capacity suited to your business applications. Our expert staff are available to assist your IT department in selecting the right configuration for your business. We can work with your team to develop a customized transition plan.
Scalable without capital investment
Customize the servers to suite your needs
VMware cluster in High Availability Config
Backed by our Tier 3 designed data centre
Enterprise grade
Can be combined with storage, colocation or backup services


DAMAGING
Boris Johnson and Jeremy Corbyn’s plans ‘could harm economy’ as SNP candidate says freedom of movement ‘crucial’
by Christine LavelleBUSINESS leaders yesterday warned election pledges by Labour and the Tories could harm the economy.
Confederation of British Industry chief Carolyn Fairbairn claimed Jeremy Corbyn’s nationalisation plans would “freeze investment”.
Ms Fairbairn also insisted PM Boris Johnson’s post-Brexit proposals to drive down the number of immigrants by charging them £625 to cover NHS care costs risks creating a skills shortage.
She told Sky News’s Sophy Ridge: “We need people to come and help us renew our economy.
"It’s not just brightest and best, it’s people at all skill levels across our economy that we need.”
And on Mr Corbyn’s plans to take BT into public ownership, she added: “That will freeze investment.
“I have talked to businesses who are already sitting there thinking ‘maybe we’re next’.
“This programme that is appearing to value none of the contribution that business makes will simply shut investment out of our country.”
Mr Corbyn yesterday hinted free movement of people could continue after Brexit if Labour wins power on December 12.
The Labour leader told the BBC’s Andrew Marr: “There will be a great deal of movement.”
It comes amid a split among party figures after a conference motion to “maintain and extend” the freedom of movement of people was backed.
But Nats Westminster candidate Stewart McDonald said: “Freedom of movement is crucial for Scotland and any attempts to restrict it would inflict lasting harm.”


Complete this form to register for a training class Click to view the training calendar. Classes are offered to all faculty and staff on a first come,first served basis. Start by entering your email addess and click the Find Employee button. Your name and telephone number Will display. You may change your contact telephone number. Next Select the software and level tranining. When the level of training has been changed. The available courses Will display.
Place a check mark in front of the course that you would like to enroll in and click the Submit button. You will recive a registration confirmation when the request has been processed and a follow-up reminder with the time and training location shortly before the start of the satart of the course


x2 Basics
x2 documents reside on has its own project home. Here we summarise the x2 concepts in brief in order to help you understand x2net more easily.
x2 and Ports
x2 is a set of concepts and specifications that helps people build highly flexible cross-platform, cross-language distributed applications. A port is an actual implementations of x2 targeting specific language or platform. Any two x2 ports should be able to interfact each other without hassle, assuming that they comply x2 design rules.
Concepts
Shared Knowledge
Participants of a distributed application usually depend on the knowledge shared among them.
Constant
Named constant values may be defined and shared.
Cell
A cell is a predefined common data structure to be shared. As a composite data record, a cell contains one or more properties whose data types may be either primitive or composite (including another cell).
Event
An event is a special kind of cell that can travel across different flows. In order for a remote recipient to identify the events it receives, events carry their own type identifiers unique within an application domain.
Exchanging events should be the only way that cases/flows communicate each other.
xpiler
The shared knowledge of an application, defined in definition files, is x-piled (trans-piled or cross-piled) into corresponding source files to form a part of the entire application. By xpiler we mean this definition-to-source converting tool.
Structural Components
Flow
A flow is a physical execution unit that consumes or produces events. Flows need to be attached to the hub in order to be notified with application-scope events.
Hub
The hub is the event distribution bus to which flows are attached. In most cases, an x2 process maintains only one single hub with it.
Case
A case is a logical execution unit that can be staccked within a holding flow.
Link
A link is a special kind of flow or case, which provides inter-process event communication across local or remote x2 processes. It plays the key role in x2 style distribution.
Links are able to serialize/deserialize events to/from x2 wire format.


A success-message is a message of celebration used when a user has completed something important. Its higher energy than a confirmation notice and is always the major focus of the page.
It can be used within a dialog, or as a full screen in mobile applications.
With an action button
Your first order has been placed!
You'll get a confirmation email soon. The rest of your items are now ready to checkout.
{% highlight html %}
Your first order has been placed!
You'll get a confirmation email soon. The rest of your items are now ready to checkout.
{% endhighlight %}
Without button
Your first order has been placed!
You'll get a confirmation email soon. The rest of your items are now ready to checkout.
{% highlight html %}
Your first order has been placed!
You'll get a confirmation email soon. The rest of your items are now ready to checkout.
{% endhighlight %}
Full screen
On mobile web, the success-message often expands to fill the full screen height with the button aligned to the bottom.
Your first order has been placed!
You'll get a confirmation email soon. The rest of your items are now ready to checkout.


PRIVACY
POLICY
Updated 02 June 2017
Depop’s approach to
privacy
Depop ("we",
"our, or "us") is committed to protecting and
respecting your privacy. This Privacy Policy sets out how Depop
collects, uses and shares information that identifies you or is associated with
you . Our main goal in collecting such data is to provide you with a safe,
efficient and personalised experience, and we will only collect information
relating to you that we deem necessary for this purpose.
Depop is run by Depop
Limited and it controls how your personal information is used. Depop Limited is established in the UK with its registered
offices at 9th Floor 107 Cheapside, London, United Kingdom, EC2V 6DN. Its company
number is 08316342.
By setting up an account with us or using and accessing the Depop
app or website (the “Service”), you consent to the use of your personal information
as described in this Privacy Policy.
You should also be aware that we use cookies to store and access information
whilst providing the Service. You can find out more about our use of cookies in
our Cookie Policy.
Personal information we
collect about you and how we use it
We collect information from you when you voluntarily submit information to
us or the Service. This can include information you provide when you register
to use the Service, complete a form, list an item, subscribe to our mailing
lists or other marketing communications or take an action on the Service (such
as when you comment on or like an item, perform a search, communicate with
other users of the Service, or engage in a transaction).
We also collect information about the pages you look at on our Service
and/or the device you use to access the Service.
The list below sets out categories of personal information we collect about
you and how we use that information.
Contact details: We collect contact
information such as your name, your email address, your telephone number and
addresses associated with your account. We will use your contact details so
that we can communicate with you directly about the products you purchase and
that you sell through the Service and the services we provide and about
queries, issues or concerns you or other users have. You will also share your
contact details with any buyer or seller you deal with through the Service.
Comments and opinions: When you
contact us directly, e.g. by email, phone, post or by completing an online form
we will record your comments and opinions. We will also record comments and
opinions you express when responding to surveys, entering competitions, taking
part in promotions we run or that you post on our community boards or other
message areas. We will use your comments and opinions to address your queries,
issues and concerns and improve our products and services. We will also use
comments and opinions you express when posting on our community boards or other
message areas, responding to surveys, entering competitions or taking part in
other promotions, to determine products and services that may be of interest to
you and to send you marketing communications in accordance with your marketing
preferences.
Payment and transaction information: We keep records of the products you buy, sell or exchange though the
Service and the payment method you use for the transaction. We will use payment
and transaction information to assist in the payment process for any product
you purchase through the Service, or any deposit or withdrawal transaction made
using the Depop Wallet. We will use your payment and
transaction information and history to determine products and services that may
be of interest to you and send you marketing in accordance with your marketing
preferences. We will provide your contact details to the seller of any item you
purchase including your username and the name, delivery address, email address
and phone number you provide at the checkout. We also collect information that
you provide to verify your account and your identity such as copies of
identification documents.
Information provided by social networks you connect or
link to our Service: If you connect an account on a social network,
such as Facebook, Twitter or Instagram to your account on our Service we will
collect personal information from the social network in accordance with your
privacy settings on that social network. The connected social network may
provide us with information such as your name, Facebook id, Twitter handle,
profile picture, gender, username, user ID, age or age range, language,
country, friends list, follower list and any other information you have agreed
it can share. We will use the personal information provided to help create a
public profile for you on our Service and, where we provide the functionality,
we will also use the information provided to assist you in sharing your
experiences on our Service with your friends, followers or contacts on the
connected social network. We may also use the connection between the social
network and our Service to provide you with updates on the social network that
are relevant to any account you have with us or promotion you are taking part
in. Such updates will only be provided with your consent, we will not post to
your social network or to your friends, followers or contacts without your
consent.
Website and app login details: Where you
create an account with us we will hold your user name and password details so
that we can keep your account secure. Where you are provided with the option to
log-in using a social network, for example through Facebook sign-in, we will
not be provided with your password or other account login details for those
accounts.
You are responsible for all actions taken with your user name and password,
and we recommend that you do not disclose your user name and password to any
third parties. If you lose control of your password, you may lose substantial
control over your personally identifiable information and may be subject to
legally binding actions taken on your behalf, so you should change such
password immediately and notify us of any unauthorised access to your account.
Your preferences: We hold information
about the preferences you set for notifications, marketing communications and
how our site is displayed or what content is displayed to you through our
Service. We will use your preference settings for the purpose of providing
notifications, sending marketing communications and displaying our Service in
accordance with your choices.
Information about how you use and connect to our
Service: We collect information about how you use our Service such as the
pages you view on our Service, the time you access our Service and how long you
use it for, the website from where you came to our Service or go to after
leaving our Service (if applicable) and any selections and choices you make
when using our Service. We also collect information about any items you have
listed, purchased, bookmarked or shared on the Service.
Device Information: We also collect
information about the computer, tablet, smartphone or other electronic device
you use to connect to our Service. This information can include details about
the type of device, unique device identifying numbers, operating systems,
browsers and applications connected to our Service through the device, your
Internet service provider or mobile network, your IP address and your device's
telephone number (if it has one).
Typically, the information we collect about how you use or connect to our
Service is associated with your device and not you as a named individual.
However, if you are logged into a registered account you have with us this
information may also be associated with you directly.
We use information about how you use and connect to our Service to present
our Service to you on your device and to determine products that may be of
interest to you for marketing purposes.
Information about your location: Where you
give us consent, we use information about your location, sometimes together
with other personal information, to provide features of the Service that are
relevant to you and your location. For example this can include allowing you to
search for items that are for sale in your local area. You can set your
preferences relating to our use of location data in your phone settings.
Information provided by other users: Sometimes,
other users of our Service provide information that is associated with you.
Other users can provide information that is associated with you such as
comments, feedback and likes relating to your items and messages they send to
you. We will review and use personal information about you that is contained in
private messages sent by you to other users, or other users to you, to assist
the fulfilment of orders made through the Service and to respond to any query,
issue, concern or dispute users raise and to resolve such disputes. Where users
of our Service want to invite you to use our Service or to share information
with you about our services we will use personal information that they provide
about you to assist them in doing this; we will only do this where they
indicate that you have provided your consent for them to communicate with you
in this way.
Information about fraudulent or criminal activity
relating to your account: We will use information about fraudulent
or criminal activity relating to your use of our Service for the purposes of
detecting and preventing fraud or crime.
All personal information: We will use all the personal information we collect to monitor and
improve our Service and our procedures and processes. We also use the personal
information we collect to help us develop new products and services. Our use of
your personal information in this way will not result in information that was
not previously publicly available being made public on our Service. We also use
personal information we maintain about you to resolve disputes between users,
to provide user support, to troubleshoot problems and enforce our Terms of
Service and policies, including this Privacy Policy.
We shall not request from you any personal information, which is deemed
sensitive data, including without limitation, information regarding religious
or other beliefs, physical and mental health details, sexual life, racial or
ethnic origin, trade union membership and/or offences, and we ask users of the
Service not to supply us with any sensitive personal data, given the nature of
the Service and that user profiles and comments are visible by other users.
Where you do provide sensitive personal information to us on the Service you
hereby confirm that you are deliberately making this information public of your
own volition and you hereby give us permission to process such data.
Your marketing preferences
Š Email - From time to time we may contact you by email
with information about our products and services.
If you do not want us to contact you by email, you can change your email marketing
preferences by emailing us at<EMAIL_ADDRESS>and
letting us know that you do not want to receive marketing emails from us. You
can also unsubscribe from our marketing emails by clicking on the unsubscribe
link in the emails we send to you.
Š Push notifications – where you allow us to, we will send
you notifications relating to the Service.
You can change your push notification preferences at any time in your account
settings.
Š Where you have given us permission to do so, we may share your
information with selected third parties so that they can provide you with
information about their products and services using email.
If, after you have given us permission to share your email address with
selected third parties, you change your mind, you can change your email
marketing preferences by emailing us at<EMAIL_ADDRESS>and
letting us know that you do not want us to share your email address with third
parties for marketing purposes.
Advertising on the Service and
third party websites
We or our advertising partners may show advertisements to you on the
Service or on other websites.
To do this we or our advertising partners may collect information about how you
use the Service or the types of other web pages, content and ads you, or others
who are using the device you connect to this Service, interact with, visit or
view. The information collected might also include the IP address of the device
you connect to the Service.
We or our advertising partner use the information that is collected to make
sure adverts you see either on the Service or other websites or apps (where our
partner has advertising space) are more relevant to you.
The techniques our advertising partners use do not use obvious identifying
information such as name, address, email address or telephone number. This
information is used to recognise the device you are using but not to identify
you as a named individual.
Typically cookies and similar technologies are used to provide this type of
advertising. You can find out more about cookies and how to manage their use by
reading our Cookie Policy.
You can also find out more about this type of advertising from
www.youronlinechoices.com.
Information available to other
users through the Service
The Service is designed to help you interact with other users of the
Service. As a result of this some of the information generated through the
Service is shared with other users of the Service as described below.
Information we share with
third parties
We may share your personal information with the following parties:
_
Companies in the same group of companies as us – our
subsidiaries (i.e. any organisation we own or control) or our ultimate holding
company (i.e. any organisation that owns or controls us) and any subsidiaries
it owns. These companies will only use your personal information in the same
way as we can under this Privacy Policy.
_
Service providers – third parties who provide a
service to us. These third parties will only be allowed to use your personal
information in accordance with our instructions and will be required to keep
your information secure. In particular, we may share the personal information
you provide to us with Leetchi S.A. (who operate the
electronic money element of the Depop Wallet service)
solely to allow Leetchi S.A. to comply with its legal
obligations. In some cases our service providers may collect information
directly from you (e.g. if they are asked to conduct a survey for us), and in
these cases you will be notified of the involvement of the service provider,
and all information disclosures you make will be strictly optional. If you
provide additional information to a service provider directly, then their use
of your information is governed by their applicable privacy policy.
_
Law enforcement, regulators and other parties for
legal reasons – third parties who we are under a legal obligation to disclose
your personal information to or who we need to disclose your personal
information to protect our rights, property or safety or the rights, property
or safety of others, detect and investigate illegal activities and breaches of
any agreement we have with you.
_
Š Buyers of our business – buyers of Depop Limited or any of its assets may have your personal
information disclosed or transferred to them as part of the sale.
We will not sell or rent your personal information to a third party for
marketing purposes without your consent. For further information on your
marketing options see the “Your marketing preferences” section above.
Information that cannot
identify you
We do not disclose information about identifiable individuals to anyone
else except as set out in this Privacy Policy. We may provide third parties
with aggregate statistical information and analytics about users of the Service
but we will make sure that no one can be identified from this information
before we disclose it.
Storing and transferring your
personal information
_
Timeframe – your Personal
Information will be kept by us for as long as your account remains active. If
you deactivate your account your personal information will be kept for a
reasonable period of time after this so that we can complete any activities it
is being used for or where we have a need to retain your personal information
for legal or technical reasons (including back-up systems). Following this
period we will either delete the information or change it to a form that does
not identify you.
_
Cookies and local storage – we may
store information (which may include personal information) locally on your
device using cookies and other browser and application storage methods. For
further information please see our Cookies Policy.
_
Transfers outside of the UK – the
personal information we collect may be transferred to and stored in countries
outside of the EEA. It may also be processed by staff (who work for us or for
one of our suppliers) and other users of the Service operating outside the EEA,
in order to fulfil a purchase, process payment details and provide support
services. Some of these jurisdictions offer differing levels of protection in
respect of personal information and may, in certain instances, be less
protective than the UK. We will take all reasonable steps to ensure that your
personal information is treated securely and in accordance with this Privacy
Policy. By submitting your personal information, you agree to this transfer,
storing or processing.
Unfortunately, the
transmission of information via the internet is not completely secure. Although
we will do our best to protect your personal information, we cannot guarantee
the security of your data transmitted through our Service; any transmission is
at your own risk. Once we have received your information, we will use strict
procedures and security features to try to prevent unauthorised access.
Accessing and Correcting your
Personal Information
You have the following rights in relation to your personal information: (i) the right to be informed about how your personal
information is being used; (ii) the right to access the personal information we
hold about you; and (iii) the right to request the correction of inaccurate
personal data we hold about you and to request the blocking or deletion of your
personal information where the processing does not comply with local data
protection laws. To exercise any of the above rights, or if you have any
questions relating to your rights, please contact us by using the details set
out in the "Contacting us" section below.
Most of the personal information we hold about you is either available
directly from viewing your account and looking back over your own activities,
or is available from the social networks that you have connected to our
Service. If you think that there is other personal information which you think
we hold, please contact us using the contact details set out in the “Contacting
us” section below. Please provide as much information as you can about the
personal information you are looking for and we will be happy to try and help
you find it.
Links to third party sites
The Service may, from time to time, contain links to and from third party
websites of our partner networks, advertisers, partner merchants, retailers and
affiliates. If you follow a link to any of these websites, please note that
these websites have their own privacy policies and that we do not accept any
responsibility or liability for their policies. Please check the individual
policies before you submit any information to those websites.
Our policy towards children
Our Service is only available to persons aged 14 and over.
The Service is not directed to persons under 13 and we do not knowingly collect
personal information from children under 13. If you become aware that your
child has provided us with personal information without your consent, then
please contact us using the details below so that we can take steps to remove
such information and terminate the child’s account
Changes to this policy
We may amend this Privacy Policy from time to time in order that it
accurately reflects the regulatory environment and our own data collection and
disclosure practices. Accordingly you should review this policy
periodically. When we change this Privacy Policy in a material way, we will
update the “last modified” date at the top of this Privacy Policy. Changes to
this Privacy Policy are effective when they are posted on this page.
Notice to you
If we need to provide you with information about something, whether for
legal, marketing or other business related purposes, we will select what we
believe is the best way to get in contact with you. We will usually do this
through email, or by placing a notice on the Service. The fact that we may send
notices to you will not stop you from being able to opt out of certain types of
contact as described in this Privacy Policy.
Contacting us
Questions, comments and requests regarding this Privacy Policy are welcome
and should be addressed to<EMAIL_ADDRESS>or Depop Ltd., 9th Floor 107 Cheapside, London, EC2V 6DN.


STAR WARS EPISODE 1: THE PHANTOM MENACE Cast: Liam Neeson, Ewan McGregor, Natalie Portman, Jake Lloyd, Ian McDiarmid, Samuel L. Jackson, Oliver Ford Davies, Terence Stamp, Pernilla August, Frank Oz, Ahmed Best, Kenny Baker, Anthony Daniels, Ray Park Director: George Lucas Screenplay: George Lucas Reviewed by Luke Buckmaster
On the Buckmaster scale of 0 stars (bomb), to 5 stars (a masterpiece): 2 stars
I'm convinced that George Lucas is not the same acute, sharp-witted and earnest-to-goodness Star Wars creator that perhaps he was twenty years ago. Either that, or he has become so infatuated with his phenomenally successful franchise that he has lost the sense of what it takes to make a good movie. Thin representations and special effects have replaced three-dimensional characters and an exciting story line, so the result is a package that is visually impressive but ultimately soulless. Under pressure, George Lucas has succumbed to the dark side of formulaic filmmaking.
To be fair, anything that he created would have been criticized in some way. After all, how can the most hyped film in history live up to its expectations? Simply, it can't, but The Phantom Menace is a great disappointment because it is ridden with elements that the other Star Wars films generally avoided: a cliché script, wooden performances and style over substance direction. Granted, there are some very nice touches in the film, but relatively every moment is over-worked by Lucas' intrusive direction and John Williams' excellent but often overpowering score. When the movie starts and that familiar text and audio begins, I'm sure that many viewers will feel the same kind of adrenaline rush and excitement that I felt. It is wonderful to feel like a kid again, and this is the tactic that Lucas effortlessly uses to immediately captivate his audience. He sets us up, and all he has to do is knock us down. Easy, right? Wrong.
The plot synopsis of The Phantom Menace reads a lot like a Star Trek film: Jedi master Qui-Gon Jinn (Liam Neeson) and his faithful apprentice Obi-Wan (Ewan McGregor) are sent as ambassadors to negotiate between The Trade Federation and Naboo, which is ruled by Queen Amidala (Natalie Portman). The negotiations do not go well, and the two Jedi's soon find themselves rescuing Amidala from capture. Escaping from the clutches of robots and a strange alien race, the Jedi's flee to the desolate planet of Tattoine and damage their ship in the process. When he tries to buy spare parts from a shady salesman, Qui-Gon meets a young boy named Anakin (Jake Lloyd). He senses that the force (for those who don't know, is the almighty power "that binds the galaxy together") is unusually strong will Anakin, and bargains for the boy as well as parts for their ship to fly home.
Predictably, our heroes encounter some distractions on their mission to protect the queen. Qui-Gon accidentally saves the life of a fish/bird-like creature named Jar Jar Binks (Ahmed Best), who is dedicated to saving his life in return; Anakin volunteers himself to partake in a high stakes "pod race;" and Darth Maul (Ray Park), the evil apprentice to Darth Sidious (Peter Serafinowicz), is intent on wiping out the Jedi.
Yes, the special effects are state-of-the-art, but contrary to many reports I don't think that they're the best we've ever seen. On many occasions the vivid and obvious computer animation works to the film's disadvantage, making it look like a sort of spectacular light show rather than an exhilarating movie experience. The pod race scene is too long and predictably staged. It bears very loose similarities to the forest chase scene in Return of the Jedi, but this one is entirely derivative. By far the best moment that The Phantom Menace has to offer comes towards its completion, in which the two Jedi's face off against Darth Maul. It's a riveting and exciting high in the film, but even here Lucas doesn't manipulate his material to good effect. Instead of pacing the scene well and building momentum and suspense, he continually cuts to different scenes and plays Williams' score at a distracting sound level. This light saber duel is spectacularly shot but its editing is too tight and rigid.
Also lacking in The Phantom Menace is a spectrum of intriguing characters. Whilst Queen Amidala is convincingly played by Natalie Portman, whose dialogue helps her come across as a wise leader, almost everybody else (and their characters) fall short. This is primarily due to the film's script (also by Lucas) which under-develops its characters, and implies their personalities rather than examines them. Darth Maul was a potentially menacing enemy but he barely speaks a word, so his costume design is as frightening as he gets. There's also that hideously annoying creature, Jar Jar Binks, who is obviously marketed towards those whose shoe size exceeds their age. A lovable and fun character like Han Solo is sorely missed, as is a truly sinister bad guy like Darth Vader.
Occasionally, The Phantom Menace reveals Lucas' infinitive vision of the Star Wars universe with imagination and color. But he is a pretentious filmmaker, who seems to think that he can throw absolutely anything into a movie so long as it has a Star Wars label to it. What else could explain this film's obvious parallels to Christianity, ranging from a virgin birth to the freeing of slaves. Maybe it's true that the movie will make more sense once the rest of the series has been completed, but I saw precious few things in the film that reminded me of the wonder and inspiration that the original Star Wars series evoked. The Phantom Menace misses out on the sense of adventure of A New Hope, the emotional resonance of The Empire Strikes Back or Return of the Jedi's highly satisfying climax.
Read more of my reviews at In Film Australia http://infilmau.iah.net
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


| My mission is to produce valuable, original work. | ||
|---|---|---|
| Virtue | Principle | Practices |
| Understanding | My mind is open | I seek out and try to understand alternative viewpoints and methodologies. I am receptive to novel approaches and constructive criticism. |
| I am a scholar | I learn new things every day. I recognize that I can only contribute to my field if I understand it fully. I maintain a wide range of intellectual interests and take time to read and understand things outside my immediate area of study. | |
| I am creative | I look for connections and patterns and seek out new ways of doing things. I use my talents to produce valuable work. | |
| Integrity | I support my colleagues | I care about the people I work with. I make time to build relationships. I provide help and support without expecting anything in return. I express sincere gratitude when I receive help. |
| I am humble | I accept that I cannot do everything alone and seek advice when I need it. I do not need to be the smartest person in the room. I accept both positive and negative feedback as tools I can use to help myself improve. | |
| I am honest | I keep my promises and commitments. I am transparent about shortcomings in my work. I do not deceive or manipulate others to achieve my goals. | |
| Persistence | I focus | I follow a strategy and set ambitious goals. I am organized and diligent. I make efficient use of my work time. |
| I communicate | I regularly set aside time to write. I seek early and frequent feedback on my ideas and goals. I explain ideas in a way that others will understand. | |
| I persevere | I do not let fear of failure prevent me from trying. I do not become paralyzed by self-doubt. I am willing to try creative new approaches and accept the risk that they won’t work. |


# wsconsctl keyboard.encoding=ukRemap
[Caps Lock]
to be
[Control L]
, the left control key:
# wsconsctl keyboard.map+="keysym Caps_Lock = Control_L"To make changes permanent, use the wsconsctl.conf(5) file.
/dev/ttyC0
through /dev/ttyC5
.
You can switch between them using [CTRL]+[ALT]
together with
[F1]
through [F6]
.
The virtual terminal ttyC4
is reserved for use by the
X Window system.
[SHIFT]+[PGUP]
and
[SHIFT]+[PGDN]
.
The number of pages that you can move up and view is 8.
Switching consoles will clear the scrollback buffer.
Due to space limitations, the install kernels do not have this feature.
ttyC6
, ttyC7
and above.
For example:
# wsconscfg -t 80x25 6 # this will not work on systems using drm(4)This will create a virtual terminal for
ttyC6
, accessed by
[CTRL]+[ALT]+[F7]
.
To get a login:
prompt on the newly created virtual console,
you need to set it to on
in ttys(5),
and either reboot or send init(8)
a HUP signal using kill(1).
Add this command to rc.local(8)
if you want the extra screen the next time you boot the computer.
wsfontload -h 8 -e ibm /usr/share/misc/pcvtfonts/vt220l.808 # load 8x8 font wsconscfg -dF 5 # delete screen 5 accessed by [CTRL]+[ALT]+[F6] wsconscfg -t 80x50 5 # add screen 5 with 50 lines of 80 charactersIf you wish to modify other screens, simply repeat the delete and add screen steps for whichever screens you want running at the 80x50 resolution. It is not possible to change the resolution of the primary console device
ttyC0
accessed by [CTRL]+[ALT]+[F1]
.
Avoid changing screen 4 which is used by X as a graphical screen.
display.screen_off
determines the blanking time in milliseconds.
display.kbdact
if set to on
, keyboard activity will unblank the screen.
display.msact
if set to on
, console mouse
activity will unblank the screen.
display.outact
if set to on
, screen output will unblank the screen.
display.vblank
if set to on
will disable the vertical sync pulse.
This will cause many monitors to go into an energy saver mode.
# wsconsctl display.screen_off=60000 display.screen_off -> 60000Set them permanently by editing wsconsctl.conf(5). The blanker is activated when either
display.kbdact
or
display.outact
is set to on
.
Note that one of those two must be off
.
There are two parts to getting a fully functional serial console on an OpenBSD system:
/etc/ttys
to get a login promptlogin:
prompt at a device,
it has to be enabled in /etc/ttys
.
The serial terminal is disabled by default on platforms which typically have
a keyboard and screen attached.
We'll use the amd64 platform as an example.
In this case, you must edit the line that reads:
tty00 "/usr/libexec/getty std.9600" unknown offto read something like:
tty00 "/usr/libexec/getty std.9600" vt220 on secureHere,
tty00
is the serial port we are using as a console and
vt220
is the
termcap(5)
entry that matches your terminal.
Other likely options might include vt100
, xterm
, etc.
The on
bit enables the login prompt by activating
getty(8) for that serial port.
The secure
bit permits a root
login at this console.
The 9600
bit is the terminal baud rate.
Note that you can use a serial console for install without doing this step, as
the system is running in single user mode, and not using getty
for
login.
On some platforms and some configurations, you must bring the system up in single user mode to make this change if a serial console is all you have available.
set tty com0This file is put on your boot drive, which could also be your install media. Use the
stty
option if you need a baud rate other than 9600bps.
Some systems may be able to operate without a video card in the machine, but certainly not all -- many consider this an error condition. Others are capable of redirecting all BIOS keyboard and screen activity to a serial port through a configuration option, so the machine can be completely maintained through the serial port. Your results may vary. When using this feature, some BIOS implementations may prevent the boot loader from seeing the serial port, thus the kernel will not be told to use it. There may be a BIOS option "Continue Console Redirection after POST." This should be set to OFF, so the boot loader and the kernel can handle their own console.
To use the machine in multi-user mode, you will need to edit
/etc/ttys
as explained above.
On some systems, the serial ports are labeled ttya
,
ttyb
, ttyh0
or ttyh1
.
It is not necessary to make any changes to /etc/ttys
to use a
serial console in multi-user mode.
Some sparc64 systems interpret a BREAK signal on the console port to be the same as a STOP-A command. This kicks the system back to the Forth prompt, stopping any application and operating system at that point. This is handy when desired, but unfortunately, some serial terminals at power-down and some RS-232 switching devices send something the computer interprets as a break signal, halting the machine. Test before you go into production.
If you have a keyboard and monitor attached, you can still force the
serial console to be used instead by using the following commands at the
ok
prompt:
ok setenv input-device ttya ok setenv output-device ttya ok resetIf
ttyC0
is active in /etc/ttys
, as
explained above, you can use the keyboard and
monitor in X.
ok setenv output-device scca ok setenv input-device scca ok reset-allSet your serial console to 57600bps, 8N1.
Unfortunately, serial console is not directly possible on most MacPPCs. While most of these machines do have serial hardware, it isn't accessible outside the machine. Fortunately, a few companies offer add-on devices for several Macintosh models which will make this port available for use as a serial console.
You will have to change tty00
in /etc/ttys
to
on
and set the speed to 57600 instead of the default of 9600 as
detailed above in single user mode before booting
multi-user and having the serial console functional.
/dev/cuaXX
for connections initiated from the
OpenBSD system.
The /dev/ttyXX
devices are intended only for terminal or dial-in
usage.
Refer to the cua(4) manual for more
details.


- take a screenshot of a window
- open up GIMP
- crop to the relevant parts
- share the screenshot as a bug or email attachment
The "take a screenshot" step is actually:
- Fire up GNOME Do
- Type "s c r RET"
- Select "Grab the current window"
- Click "Take screenshot"
Is there a faster way of doing this? I particularly want to speed up the cropping and grabbing steps.
cd ~/grabs && scrot -s %Y%m%d%H%M%S.png
- Fire the script = Clik the icon
- draw a rectangular on screen of the part you want to "shot"
- upload it to your bugtracker easily by having a nautilus bookmark pointing to ~/grabs
It even has a handy 'redo' button so you can take a snapshot of the same area/window/menu/tooltip over and over...
http://shutter-project.org/
1. Invoke gnome-do and type 'take'
2. Down arrow twice, tab three times, enter (this selects 'select area to grab' and completes the screenshot dialog)
3. Left click and drag to select area for screenshot
4. Name file / save somewhere in the dialog.
In particular, scrot -s allows to capture a full window by clicking on it or a zone if you move before releasing the button.
You can easilly make a small script to launch scrot with this option and open the resulting file in a viewer. It can still be launched using gnome-do if the script is in your $PATH :)


QuantConnect provides trade and quote data from AlgoSeek for over 1000 Futures symbols going back as far as 2009. You can find a full list of available Futures symbols in the data library . Futures data is available in tick, second and minute resolutions. To access data for a given Future, we need to first subscribe to its data using its ticker.
# Subcribes to data for S&P500 E-mini Futures (ES). es = qb.AddFuture("ES")
We can also refer to Future tickers using a predefined categorized Enum. For example, The ticker for S&P 500 E-mini futures ("ES"), can be accessed with Futures.Indices.SP500EMini
. This means we can subscribe to data for ES using qb.AddFuture(Futures.Indices.SP500EMini)
. You can find a full list of all the tickers and their associated Enum addresses in the data library.
Futures data for a given commodity contains a chain of contracts of different expirations. We can filter the chain by expiration to narrow the data to contracts which interest us.
# Filter for contracts which are expiring in less than 180 days. es.SetFilter(timedelta(0), timedelta(180))
Similar to options, future historical data can't be accessed using qb.History
. Instead, we need to use qb.GetFutureHistory
, which lets us access historical futures data.
start_time = datetime(2019, 2, 12, 10, 30) # February 12th 2019 10:30 AM end_time = datetime(2019, 2, 16, 16, 0) # February 16th 2019 4:00 PM future_history = qb.GetFutureHistory(es.Symbol, start_time, end_time)
qb.GetFutureHistory
does not return a dataframe of historical data. It instead returns a FutureHistory
object, which lets us access the expiry and price data for the chain.
We can access historical price data using FutureHistory.GetAllData
. This returns a dataframe containing quote, trade, and open interest data for the contracts in the future chain. The data is indexed by contract expiry, symbol and the timestamp of the data.
# Get all futures data as a dataframe history = future_history.GetAllData()
# Fetch expiration dates of all futures contracts future_history.GetExpiryDates()


Enter e-mail
Go
Data
Reports
Week Starting
Client
Hours
+
-
Save
Week Start
Week End
Sales Team
Region
All...
All...
Welcome :{{myForm.salesPerson.name}}
Logout


import ast
[docs]def add_parents(root):
"""Helper function to add parent property to ast tree nodes
Credit goes to this answer here: https://stackoverflow.com/a/43311383
Args:
**root (:obj: `ast.Module`)**: Top level ast node
"""
for node in ast.walk(root):
for child in ast.iter_child_nodes(node):
child.parent = node
[docs]def get_node_type(node):
"""Simply gets the type of an ast node
Args:
**node (:obj:)**: ast node
Returns:
The type of an ast node
"""
return type(node)
[docs]def has_parent_of_type(node, type_):
"""Simply checks if the parent of a node is of a certain type
Args:
**node (:obj:)**: an ast node
**type_ (type)**: the type to check the node against
Returns:
True if node is of type type_, False otherwise
"""
return get_node_type(node.parent) == type_
[docs]def is_in_function_scope(node):
"""Checks if a node is within the scope of a function
Args:
**node (:obj:)**: node for which to check the scope
Returns:
True if the node is within the scope of a function, False otherwise
"""
return has_parent_of_type(node, ast.FunctionDef)
[docs]def is_in_function_scope_nested(node):
while hasattr(node, 'parent') and node.parent:
if get_node_type(node.parent) == ast.FunctionDef:
return True
node = node.parent
return False
[docs]def get_parent_function_name(node):
"""Gets the name of the parent node if it is a function
Args:
**node (:obj:)**: node of which to get the parent function name
Returns:
The name of the parent function if node is within the scope of a function
Raises:
Exception if the node is not within the scope of a function
"""
if is_in_function_scope(node):
return node.parent.name
else:
raise Exception("This node is not within the scope of a function")
[docs]def is_in_class_scope(node):
"""Checks if a node is within the scope of a class
Args:
**node (:obj:)**: node for which to check the scope
Returns:
True if the node is within the scope of a class, False otherwise
"""
return has_parent_of_type(node, ast.ClassDef)
[docs]def is_in_class_scope_nested(node):
while hasattr(node, 'parent') and node.parent:
if get_node_type(node.parent) == ast.ClassDef:
return True
node = node.parent
return False
[docs]def is_in_call(node):
"""Checks if a node is inside of an ast.Call node
Args:
**node (:obj:)**: node to check
Returns:
True if node has a parent of ast.Call, else False
"""
return has_parent_of_type(node, ast.Call)
[docs]def get_parent_class_name(node):
"""Gets the name of the parent node if it is a class
Args:
**node (:obj:)**: node of which to get the parent class name
Returns:
The name of the parent class if node is within the scope of a class
Raises:
Exception if the node is not within the scope of a class
"""
if is_in_class_scope(node):
return node.parent.name
else:
raise Exception("This node is not within a class scope")


Cherish the most precious moments with families and friends.
Best wishes to you all!
You have already Reject this invitation！
You have already Accept this invitation!


Ada Ye, Eddy Lin, Jose Luis Moscoso, Tyler Feldman, Jessie Ou, Wendy Zhang
See Our Github Repository DatasetAccess to electricity is correlated with improvements in income, education, maternal mortality, and gender equality. Around 1.2 billion people worldwide do not have electricity in their homes, many of them located in Subsaharan Africa and Asia. Information on the location and characteristics of energy infrastructure comprising generation, transmission, and end-use consumption can inform policy makers in energy access planning and is critical to efficiently deploying energy resources. Such information will allow energy developers to understand how best serve the electricity needs of communities without access to electricity through either power grid extensions, micro/mini grids, or off-grid solutions.
However, energy data for developers is often outdated, incomplete, or inaccessible. This is a common issue for NGO’s and other developers of distributed energy resources (DER) and microgrids who are looking to provide additional electricity access.
One potential solution to this lack of energy infrastructure data is to automate the process of mapping energy infrastructure using deep learning in satellite imagery. Using deep learning, we can feed an overhead image to a model and make predictions about the contents or characteristics of the region photographed in the image. Using this tool, the resulting information on energy infrastructure can then help inform energy access planning, such as deciding the most cost-effective option among distributed generation, micro-grids, or grid extension strategies for electrification.
For this project, we focus on object detection, which is a combination of classification with object localization. The model analyzes images and predicts bounding boxes that surround each object within the image. It also classifies each object, producing a confidence score corresponding to the level of certainty of its prediction. In the image on the left, the model predicted that there were different objects represented by each of the boxes shown in green, yellow and pink. The model also predicted that the objects within these colored boxes were a handbag, a car, and a person respectively. The model learns how to predict these boxes and classifications based on examples shown to it. These examples have labels (the object’s class and the location of the bounding box within the image) that we collectively refer to as ground truth.
After training this model, we could apply it to a collection of overhead imagery to locate and classify energy infrastructure across a whole region. While we could demonstrate this for any number of types of electricity infrastructure, we use wind turbines because they are relatively homogeneous in appearance, unlike power plants, for example, which come in many different configurations. Outside of size differences, there is little variation between types of wind turbines. We also start with data from within the US, because high resolution overhead imagery data are readily available across the continental US.
Object detection networks, like the one used in this work, are notorious for their "data hunger," requiring large amounts of annotated training data to perform well. For common infrastructure like buildings and roads, there is ample real-world data available to train such models. However, energy infrastructure is rare both in number and density, so collecting and annotating large amounts of satellite images manually is expensive and time consuming.
Typically our labeled training data are not from the same location as where we want to apply these techniques. However, object detection models poor performance on images that are from domians that are not similar to the ones that it has previously seen. In our case, this means the model will struggle when trying to apply it to new geographies and to different variations of styles of energy infrastructure.
Since training data are difficult to collect, in this project we explore creating synthetic data to supplement the real data that are available. We do this by taking a real image without any energy infrastructure present and introducing a 3D model of an object of interest on top of that image as seen in the figure below. Then we position the camera in the overhead position and capture images in a manner that mimics the appearance of overhead imagery. Knowing where we placed the wind turbines in the synthetic image, we also generate ground truth labels for each of these images.
For five years, the Duke Energy Data Analytics Lab has worked on developing deep learning models that identify energy infrastructure, with an end goal of generating maps of power systems and their characteristics that can aid policymakers in implementing effective electrification strategies. In 2015-16, researchers created a model that can detect solar photovoltaic arrays with high accuracy [2015-16 Bass Connections Team]. In 2018-19, this model was improved to identify different types of transmission and distribution energy infrastructures, including power lines and transmission towers [2018-19 Bass Connections Team]. Last year's project focused on increasing the adaptability of detection models across different geographies by creating realistic synthetic imagery [2019-20 Bass Connections Team]. In our project, we build upon this progress and try to improve the model's ability to detect rare objects in new, diverse locations.
Below you can see a summary of the experiments we ran to explore whether adding synthetic imagery improves the performance of an object detection model across geographic domains. We first need to collect real and synthetic imagery, and then we can create two datasets. One dataset contains purely real imagery, while the second contains the same real imagery, but we add in some synthetic images. We can train an object detection model on the first dataset, test its performance, and then do the same with the second dataset, and finally compare the two performances. If the performance of the model is better when trained on the dataset that had added synthetic imagery, we can say that the synthetic imagery helps the performance of the model. In this section, we'll walk through each of the steps required to perform this experiment.
For our overhead imagery of wind turbines, we chose to sample them from the National Agriculture Imagery Program. This imagery covers a large part of the US and is very high resolution, making it great for our experiments. We collected imagery in three different regions that we called Northwest, Northeast, and Eastern Midwest. We noticed differences in the visual appearance of the background in the images collected in these three regions:
Below we can see the regions splits by which states they include, as well as the number of images we collected for each region.
To create synthetic imagery, we use a software called CityEngine. As inputs to this process, we need a list of background images that do not contain any wind turbines and a 3D model of a wind turbine. We then can automatically generate synthetic images. First, the software places a randomly chosen background image and then randomly generates 3D wind turbine models on top of the background image to create the 3D scene shown in the middle of the figure below. Next, the software moves a simulated camera in the overhead/bird's eye view and saves these overhead images.
We can repeat this process but remove the background images, and color in the turbine models as black to retrieve information on where the turbine models are located. The black pixels in these images can be automatically grouped together to locate the wind turbines and create a formatted label that contains the bounding box around each turbine model.
These synthetic images are simple, cheap, and fast to create. All we need are images for the background, and unlabeled imagery is far easier to acquire than labeled imagery. The rest of the process of generating the images and the labels is done automatically, making this a great alternative when we do not have enough real imagery or when it is time-consuming or expensive to collect. Below are some example synthetic images created from a variety of background images.
The design of the synthetic imagery is important because the closer the synthetic imagery is to the real imagery, the more the synthetic imagery will improve our performance when adding it to our training set.
The first consideration we have to make is what size to make the synthetic turbines. For this issue, we chose to model the size distribution of the synthetic turbines after the size distribution of the real turbines. We created a histogram of the size of the turbines in our real imagery, and modeled this in our synthetic imagery with multiple bins of uniform distributions.
The next decision we had to make about the synthetic imagery design was the angle of the simulated camera when we are capturing photos. We noticed that in the real imagery, some of the images were captured at an angle. In the real overhead imagery, you can see the pole of the turbine due to the angle of the camera. We observed that about half of the real images were taken from directly above (90 degrees), and the rest were taken at a variety of angles that were between 60-90 degrees. In our synthetic image generation process, we chose half of the time to take the image from directly above. The other half of the time, we would use a randomly chosen camera angle between 60 and 90 degrees.
We also have to choose which background images to have placed under our synthetic wind turbine models. We chose to collect background imagery close to the real images in our testing set so that our synthetic imagery would look as close as possible to the target data. We may likely be able to collect unlabelled imagery from around the region we wish to test on for use as background images. Using the background images close to our testing locations allows us to estimate the potential performance increase that the synthetic data can provide without adding in confounding variables such as a mismatch between the synthetic background image domain and the target domain.
Because our self-defined geographic regions are wide and diverse, it's important for our training and testing datasets to be representative of a given geographic region. To increase homogeneity within a region (we define a region as a "domain"), we clustered within each region and then performed stratified sampling from each cluster with proportional allocation to construct our 1:1 train:validation ratio (1 training image for each validation image) constrained baseline datasets, including 100 images total across the clusters within each domain. Each point represents an image, and each color represents a cluster. Points that are in the same cluster are more similar to each other than points that are in different clusters.
To construct our baseline and add synthetic data, we need to figure out what ratio of real to synthetic data yields the largest gain in performance (if any). If we add too much synthetic data, then we run the risk of overfitting to synthetic data. If we add too little synthetic data, then it will have little impact on performance. To find this ratio, we designed an experiment, where we test ratios of 1:0, 1:0.5, 1:0.75, 1:1, and 1:2 real to synthetic ratios. After conducting these experiments, we found that 1:0.75 yields the greatest performance as measured by average precision. Therefore, we design our experiments using the 1:0.75 ratio.
Having clustered and sampled our data and found the optimal real to synthetic ratio, our final datasets for each region is:
In the context of our work, we define a domain as a geographic region, such as the US Pacific Northwest. A target domain is where we aim to apply our model to, whereas a source domain is where the real training data comes from. The long-term goal of our project is to apply our object detection model to a variety of unseen domains around the world, especially in developing areas where information on energy infrastructure is hard to obtain. This requires our model to be able to generalizable, that is, the ability to perform well on images that are different from the images it was trained on. One real-world application in energy access planning is a scenario where there is limited labeled real data in target locations where we want to deploy energy resources to. For this scenario, we design within-domain experiments, where the target domain remains the same geographic region as source domain. A second and more challenging scenario is when there is no real data in the target locations where we want to deploy energy resources to. Because the target domain has no real data, we have to draw data from an alternative source domain. For this scenario, we design cross-domain experiments, where we train on a source domain but we test on a target domain.
Our hypothesis is that synthetic imagery will help our model generalize to unseen domain - the model performance will improve when testing on a new geography in the presence of synthetic data. We assume that training and testing on separate data, but from within the same domain, will perform better in general than training and testing on separate data from different domains. Note that although examples from continental US is shown here, in reality, a target domain is likely a less developed area without reliable access to electricity, and a source domain is likely a developed area with readily available data on energy infrastructures.
In our case, each domain is a geographic region that we defined. Namely, Northwest, Northeast, and Eastern Midwest. To test the impact of each region, we run a 3-way pairwise experiment, where we train and test on each of the 3 regions, resulting in 6 experiments. For example, the Northeast region serves as the source domain for testing Northwest and Eastern Midwest. Then in a different experiment, a model trained using Eastern Midwest is tested on Northeast, and in another experiment, a model trained on Northwest is tested on Northeast.
Before we test how well synthetic imagery improves performance when the model is testing on a different domain than the one it was trained on, we need to establish some baseline performance results for detecting wind turbines in the imagery to evaluate whether adding synthetic imagery improves our model's accuracy. We need to know how well the model is doing when it is trained and tested on the same domain. Using Northwest region as our target domain, we ran our baseline and modified experiments, and we repeat for the other domains/regions.
These experiments are designed to test if synthetic data can help overcome differences in geography. To test whether adding synthetic imagery improves our model's generalizability, we trained on one region, and tested on another region (cross-domain). Then we added synthetic imagery similar to the target domain and compared performance against the baseline. Augmenting our baseline dataset with synthetic data not only provides more exmaples of images with wind turbines, but it provides examples that are more similar to the target locations the model will be deployed to. Thus, we expect adding synthetic data to improve our model's generalizability. Here we demonstrate this experiment setup using Northwest as the target domain and Eastern Midwest as the non-target domain. We repeated for the other domains as well.
To understand our results, it's important that we first understand the metrics that we have chosen to measure performance. The primary metrics we will use is Average Precision. We will explain the implication of this metric starting with the images on the left.
Now we plot the values of precision and recall a model can reach when doing predictions on a graph, which is known as a precision-recall curve. You can see on the curve that as precision increases, recall decreases, and vice versa. There is hence a tradeoff between precision and recall. However, we would like to have high values for both precision and recall, which means we would like the area under the precision-recall curve to be as high as possible. A metric that quantifies this area is Average Precision (AP).
Note that in the machine learning space, a small absolute increase in AP is already a significant improvement.
Due to variability in the object detection model’s training process, there will be variations between the results of each run, as shown on the left image. Each experiment is therefore repeated 4 times to account for this randomness and improve the accuracy of the result. The average AP value is calculated and used to compare results of our baseline model and model with added synthetic images.
The performances of the model with added synthetic images improve significantly in both within-domain and cross-domain settings. Synthetic images are especially helpful in cross-domain settings, which means they can be useful when there is a lack of data or when it is cost-prohibitive to collect data of the target domain.
Here we will present a closer look into the results of training with real images from each of the 3 geographic regions respectively. There is a disparity in performance when the model is trained with real images of different geographic domains. In particular, in cross-domain experiments that test on Eastern Midwest, the model performs generally worse than when testing on other regions.
As shown on the left and above, the model performs consistently worse when testing on Eastern Midwest, yet Eastern Midwest is also the region where the model
has the greatest average improvement in average precision from the addition of synthetic imagery. The exact model performance and improvement synthetic images can make hence depend on the details of specific geographic regions.
It is therefore possibly more challenging for the model to perform well in certain settings, such as when there are different designs of wind turbines in a region or when the region has more diverse geographic backgrounds. Despite these challenges, synthetic imagery was able to help bridge the gap and bring significant improvement to model performance.
The results show that adding the curated synthetic imagery improves the performance of our object detection model in all cases. This is especially the case when we have a cross domain setting (testing on an unseen region). The performance increase is more limited in the within domain setting, where there the model is testing on a previously seen region. We also explored the various ratios of real to synthetic imagery and found an optimal ratio. This method of synthetic generation is cheap and fast to produce, allowing us to help an object detection model perform on new domains or when we lack training data, which is often the case when we are trying to obtain information on energy infrastructure. With the aid of synthetic imagery, this method of collecting locations of energy infrastructure could fill in the information gaps that energy access planners need when making decisions about electrification.
We would like to thank Dr. Kyle Bradbury, Dr. Jordan Malof, and Wayne Hu for their help and guidance along the way. We would also like to thank the previous Bass Connections and Data+ teams for their work leading up to this project. We would also like to thank Dr. Rob Fetter, Dr. Marc Jeuland, and Dr. Luana Lima for sharing their work with us. Thank you to the Duke Bass Connections Program and Duke Energy Initiative that supported this project.


Abstract
Findings from the 2019 Canadian Election Study (CES) in Online Survey responses show that a majority of reported Canadian citizens are working full-time and have an educational background of either high school, community college or bachelor’s degree. This is evident of a correlation between education level and employment status.
Introduction
The following page contains an interesting finding in the 2019 CES data of Online Surveys. More specifically, responses in questions regarding educational background and employment status of Canadian citizens showed promising remarks.
Through the Online Surveys of the 2019 CES results, it was found that approximately 9192 individuals had a bachelor’s degree, 7702 had completed community college and 5865 had at least completed high school. In terms of employment status, approximately 16124 individuals were working full-time and 9008 were retired.
From these numbers, we see evidently that a vast majority of the citizens who responded to the 2019 CES Online Surveys had completed community college or had a bachelor’s degree. In addition, those majority of citizens were also in a employment status of working full-time or retired. This is an important finding to note that employment status is generally related to education level.
Data
A overall summary of R data that will mainly be used in this page will be the 2019 Canadian Election study for the Online Survey.
summary(decon)
## ces_code citizenship yob
## Length:37822 Canadian citizen :36480 1985 : 814
## Class :character Permanent resident: 1342 1990 : 812
## Mode :character Other : 0 1955 : 799
## 1954 : 795
## 1960 : 794
## 1957 : 791
## (Other):33017
## gender
## A man :15551
## A woman :21980
## Other (e.g. Trans, non-binary, two-spirit, gender-queer): 291
##
##
##
##
## province_territory
## Ontario :14808
## Quebec : 8399
## Alberta : 4481
## British Columbia: 4354
## Manitoba : 1691
## Saskatchewan : 1340
## (Other) : 2749
## education
## Bachelor's degree :9192
## Completed technical, community college, CEGEP, College Classique:7702
## Completed secondary/ high school :5865
## Some technical, community college, CEGEP, College Classique :4394
## Some university :3716
## Master's degree :3207
## (Other) :3746
## lr lr_bef lr_aft
## Length:37822 Length:37822 Length:37822
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## religion sexuality_selected
## Catholic/ Roman Catholic/ RC :10771 Heterosexual :32632
## None/ Don't have one/ Atheist : 9834 Homosexual : 1566
## Agnostic : 2326 Bisexual : 1635
## Don't know/ Prefer not to answer: 2277 Other : 431
## Anglican/ Church of England : 1683 Don't know : 282
## United Church of Canada : 1561 Prefer not to say: 1276
## (Other) : 9370
## sexuality_text language_eng language_fr
## Length:37822 English:29213 French:12007
## Class :character NA's : 8609 NA's :25815
## Mode :character
##
##
##
##
## language_abgl
## Aboriginal language (please specify): 163
## NA's :37659
##
##
##
##
##
## employment income
## Working for pay full-time :16124 Min. :0.000e+00
## Retired : 9008 1st Qu.:4.300e+04
## Working for pay part-time : 3415 Median :7.200e+04
## Self employed (with or without employees): 2517 Mean :2.640e+56
## Unemployed/ looking for work : 1676 3rd Qu.:1.100e+05
## Student : 1314 Max. :6.748e+60
## (Other) : 3768 NA's :12266
## income_cat
## Don't know/ Prefer not to answer: 2894
## $30,001 to $60,000 : 2559
## $60,001 to $90,000 : 1955
## $1 to $30,000 : 1931
## $90,001 to $110,000 : 1035
## (Other) : 1889
## NA's :25559
## marital
## Married :17230
## Living with a partner : 6070
## Divorced : 2722
## Separated : 1374
## Widowed : 1395
## Never Married : 8458
## Don't know/ Prefer not to answer: 573
## econ_retro
## Got better : 5024
## Stayed about the same :16774
## Got worse :14065
## Don't know/ Prefer not to answer: 1959
##
##
##
## econ_fed
## Better : 6441
## Worse :13906
## Not made much difference :14330
## Don't know/ Prefer not to answer: 3145
##
##
##
## econ_self
## Better : 3815
## Worse :13669
## Not made much difference :18926
## Don't know/ Prefer not to answer: 1412
##
##
##
Relevant Plots
decon %>%
ggplot(aes(x= education)) +
geom_bar()+
theme(axis.text.x = element_text(angle = 90, vjust=0.5, hjust=1))+
ggtitle("Education of Citizens in 2019 CES")+
coord_flip()
The above ggplot shows a count of various responses to the education question in the 2019 Canadian Election study. We see a majority response among citizens having completed secondary/high school, Community college or Bachelor’s Degree.
decon %>%
ggplot(aes(x= employment)) +
geom_bar()+
theme(axis.text.x = element_text(angle = 90, vjust=0.5, hjust=1))+
ggtitle("Employment Status in 2019 CES")+
coord_flip()
The above ggplot shows an majority number of Canadian Citizens are working for pay full-time, while many individuals are retired.
Weaknesses and Next Steps
Due to individual limited experience with github and R studio, some items on this website page does not look as visually appealing as desired. In this case, the variables that were graphed on the ggplots contained longer than usual names. As a result, both ggplots were graphed and rotated using “coordflip()”, in order to view all wordings in the survey responses for education and employment questions.
In addition, a regression test between variables employment and education would have been preferred, in order to show statistical computation of a correlation coefficient that would evidently indicate a strong correlation between employment status and education level.
Moving forward, next steps in improving this analysis of this data set would be to improve size scaling of ggplots and performing regression testing among the chosen observations in the data in order to display superior statistical findings.
References
- Stephenson, Laura B; Harell, Allison; Rubenson, Daniel; Loewen, Peter John, 2020, ‘2019 Canadian Election Study - Online Survey’, https://doi.org/10.7910/DVN/DUS88V, Harvard Dataverse, V1
- Paul A.Hodgetts and Rohan Alexander (2020). cesR: Access the CES Datasets a Little Easier.. R package version 0.1.0


Dewar ready to leave diamond
Stores please book pickup with the following carrier:
| Air Waybill |
|
| Air Waybill |
Shipping service could not book the shipment.
Goods Handling, please book a shipment for this Dewar using the details below. |
| Visit |
|
| Full Name |
|
| Phone No. |
|
| Email Address |
|
| Lab / Company Name |
|
| Address |
|
| Dewar Code |
|
| Courier |
|
| Courier Account No. |
|
| Air Waybill No. |
|
| Collection Date |
|
| Package Description |
|
| Current Location |
|
| Local Contact |
|
| Comments |
|