DRAFT
DRAFT
AWS On-boarding Overview¶
Executive Summary¶
You really should be using the cloud.¶
I can help you with all the details.
Let’s get started!
Offer available for a limited time only.
Deliverables¶
A self directed jupyter/python center of excellence
A set of poorly written Cookbooks for doing science
A repository of very useful jupyter notebooks and libraries
A refined, SMALL, list of winning technologies that accelerate science and cool decision fatigue fever.
A cloud Sherpa informal help-desk.
An instance of end-to-end science in the cloud - COGs in –> COGs out
A model recipe, “HowTo/TL;DR” path for moving to the cloud - likely rapidly.
A “Frontline” like docuseries on “Behind the Enemy Lines of a Covert DevOps Expert”
Introduction¶
The purpose of this “class” and more important this community of scientists is to examine AWS by playing with the CHS AWS cloud.
A secondary purpose is to promote the concept of shared science and shared data using the PANGEO reference architecture
There are many tertiary goals for this project hinted at in the pages of this document/web-page.
This document is organized as follows:
AWS On-boarding Overview
Data Science Cookbook
DataOps Cookbook
Disclaimer
This document is a rough work-in-progress drafty draft
I expect to sand off some of the rough edges based on the actual facts from my classmates.
The above sections are aspirational with no guarantee of completion
Background¶
My name is Tony Butzer and I work with the Open Data Cube and PANGEO communities to help make science easy and fun.
I just completed 9 month project to move the EvapoTranspiration VegET model from on-prem desktops to the cloud. This team was pleased with the performance improvements afforded by AWS S3. However; there is still much work to do on all of our parts to make the PANGEO experience useful to a broad class of scientific needs.
I want to build relationships with the science teams and help understand and fill any gaps in the PANGEO solution.
This document and “class” will improve the toolkit and perhaps ease the on-boarding for some folks wanting to explore AWS, PANGEO as an option for science models and science sharing.
I want to organize all the aspects of building xarrays in one place and point folks to this using the myriad of communication channels we have today.
Scientists will rule the world¶
For a few years now, I have been saying that compute is free for those who have a viable science model.
Most people look at me like I am crazy when I say this.
But I have seen compute evolve from this.
TO THIS
TO THIS
Compute is commodity and nowhere is this more true than the kingdom of the cloud.
Don’t fret over costs in the cloud. Because it will impede your progress to getting there.
If the cloud is at the top of Mount McKinley - (“those HPC bastards already stole the name Denali - what a great name.) then this class should be like finding a secret elevator in the middle of the mountain.
Expected Audience¶
A scientist that wants Landsat and/or Sentinel at their fingertips and wants to provide their output/product to a wide range of customers
A scientist that wants to easily share models and papers with individuals inside and outside of USGS.
A young python programmer that wants to make an impact on the world
A project scientist that wants to easily exploit AWS
Anyone wanting to get good at Jupyter
A scientist that wants to migrate from Windows to Linux
A scientist that wants to move at a faster pace than currently afforded
A technical support person that wants to do their job way more efficiently and effectively.
You are an early adopter of cloud technologies and can envision the utility it will bring to your science.
When? – Class Schedule¶
weekly - tuesdays at noon?
odd weeks will be professor office hours
independent labs
custom problems
moving and finding science data assets to/from AWS
python package wrangling
etc tbd …
How can the cloud serve the diverse/Byzantine EROS Science Division?¶
In our Open Data Cube Hackathons - we divide the group into threads:
Developers
Users - Scientists?
Partners - Managers, Stake-holders
Some folks will fit into multiple Threads - that’s OK
In the cloud we have tools that can serve each of these elements as well as hybrids
Gabriel Senay is a fabulous scientist that delegates all his Jupyter work.
Vision¶
Make Science Easy and Fun.
Demonstrate PANGEO Architecture via practical science case studies
Document AWS open source python tools for science
Other Titles¶
Harmony - for lots of reasons
“Stop Building Dark Repositories; Dark Repositories Suck”
“Custom cloud training for the eclectic USGS/EROS science team”
“Deep Dive into PANGEO; pangeo boot-camp”
“One size fits all PANGEO training FAILED to make a big enough impact!”
“PANGEO its way more than just notebooks”
“Day in the Life of a New Cloud Science Project”
“ ET Case Study”
“permafrost case study”
“The Cloud? … Is this Anything?; Are we onto something here?”
“A firehose of info - followed by an epiphany and several zen moments.”
Ten things to do immediately with your new CHS CUSTOM ACCOUNT
Computers and Website¶
A compute/computer/ec2/instance in the cloud is the same as a computer in EROS’s CR2!
let me say that again
A computer in the cloud is the SAME as a computer in EROS’s CR2!
linux is linux wherever it swims
The INSTANCE butzer-harmony-neal-web is running -- t2.micro
<IP_ADDRESS>
### also need a mini-pangeo -- aka the littlest jupyter hub HERE - action - whole class and tony
A Tale of Two Computers¶
We will use exactly two computers in this class - they will live happily in the CHS/AWS cloud
until we terminate them - ha ha ha - these are cattle not pets - don’t get attached - attachment leads to dukkha!
they will have:
two names
butzer-harmony-neal-web – webserver; admin box; webapps
butzer-harmony-neal-mini-pangeo-dev-prod-box – mini-pangeo; simple docker scaling machine
two ip address
<IP_ADDRESS> — ### VPN Access Only
<IP_ADDRESS> - tbd also need the VPN and ssh and or jupyter to access
two AWS instance types (leased):
t2.micro - small and cheap
t3a-2xlarge - bigger and our workhorse
Human Resources¶
I am looking for people who do Python in Jupyter to Join Forces
I am hiring an SDSU Intern to do visualizations - fun job :-)
I am hoping to have another .25 FTE
but I really could use even more resources to make the cloud a better world for scientists
I want to meet Alemayehu and compare cloud notes and discuss making more people accept Jupyter
even if they don’t see/love the notebook
by creating codeless dashboards and better desktop integrations
NOTE: I think our organizational structure can make it challenging to get the right birds-of-a-feather together
KANBAN - kanboard - tony?¶
Overview¶
Project Initiation and Student Roadmap
Practical Steps
Why
Cloud Differences
Cloud Similarities
Cloud Advantages
Cloud Disadvantages
ET Case Study
PANGEO - “Dedicated to easing the data and compute burdens for THE SCIENTIST”
Jupyter
AWS Compute
AWS Storage
AWS Public Data Available
Data Wrangling
ssh
scp
Who from Science is Exploring the Cloud
Project Specific Specialities
SageMaker and ML
Students¶
I will interview each student to find out how they want to apply this training
essentially their personal/custom goals for the AWS cloud.
What you will need for this class¶
. A used chromebook
a chromebook and the right github repo is worth $200,000 a year.
https://github.com/tonybutzer/harmony/blob/main/class/06-Instructor/01-Students.ipynb
http://<IP_ADDRESS>:8080/notebooks/jovyan/06-Instructor/01-Students.ipynb
Pastick, Neal (Contractor) J
Postma, Kory (Contractor)
Bunde, Brett (Contractor)
Danielson, Patrick (Contractor)
Butzer, Tony (Contractor)
Dahal, Devendra (Contractor)
Wylie, Bruce K
Rover, Jennifer
Zhou, Qiang (Contractor)
Rigge, Matthew B
Boyte, Stephen
Smith, Kelcy (Contractor) L
Anthony, Michelle (Contractor) L
Instructors Live¶
Tony Butzer
Nathan Roberts
Aaron Friez
Rich Signell
Instructors by Example¶
Ryan Abernathey - PANGEO
Chris Holmes - COGS and STAC
Matt Hansen - STAC
Scott Henderson - Landsat and Sentinel Jupyter Examples
Student Individual Goals:¶
Comment¶
Its great that we have a good cross-section of roles represented in this class
management - scientists - computer scientists - EXACTLY what is needed - its a partnership
this should be a safe space - lets keep it that way
Tony¶
I want to demystify the cloud.
I want to accelerate science to keep up with the earth and human challenges we face
I will be asking you folks lots of questions about the effectiveness of Jupyter and how to work with such a diverse group of folks.
Should folks be trained on linux, python, jupyter, docker? – Can I help with that training?
Techniques to reduce Data Wrangling?
RESPONSE
I think you should partner with Rich Signell and help him with his new project incubator concept
Here is a recent note from Rich:
We didn’t have a name yet. I’m supposed to propose a plan to our program council on Dec 14. It would be good to have a name by then. Some of the ones words we could use to form a name are: Open, Scalable, Framework, Reproducible, Architecture, Incubator, Lab, Cloud, Analysis, Visualization
Scalable Analysis Framework for the Earth (SAFE)
Scalable Cloud Architecture
Steffi¶
My Evapo model runs pitifully slow in on-prem gear
The ARc tools are starting to show their age and they are expensive
I can’t easily procure the tools and infrastructure I need to achieve my audacious goals.
My life is consumed with Data Wrangling - I would like to do more science - can you help me?
RESPONSE
Problem solved - next problem - “Ross Perot”
we were able to collaborate with Universities
we were easily able to share our output products with Ward Sanford, Wesley Zell and Gabriel Senay
we started writing visualizations
we think we can do so much more with just a tiny bit more staff
the cloud infrastructure is vast if not infinite - the sky/cloud is the limit
Jennifer¶
So, there are several aspects that I’m interested in.
One, as lead for LCMAP applications, our tools for the user community to use once LCMAP is in the cloud. My initial thoughts are mostly visualization.
There might also be workflows in py that we could move to a noteboook.
Also, I have an interest from just a research perspective.
RESPONSE
You have several of the same goals/needs as Steffi Kagone
She wanted better/faster pipelines
Jupyter is just the prototyping and developing tool - not everyone has to be proficient in jupyter
Docker is the deployment tool - as a leader you should demand docker in your projects - and EROS has plenty of docker experts and we will be growing these daily.
As a researcher - notebooks and now dashboards will make sharing your work easier
Data asset sharing in the cloud is way easier than portals, ftp, http, machine to machine etc - and this capability will explode in the next 3 years - lets be ready and let’s share the burden
Eliminate the waste of replication inherent in
"Dark Repositories"
People complain about human silos and fiefdoms - in the cloud and with tools like M$ Teams we have the ability to complain by creating a healthy collaborative space free from over management and segmentation.
Thanks for sitting in on these classes/discussions its important that we span some of the natural chasms in an organization
Qiang (chi-ong)¶
Sanath¶
Neal¶
Understand AWS services and service costs
Compare methods and ease of use of the AWS cloud versus other platforms - HPC and GEE
Understand the differences of GEE and AWS opensource
Determine if Open Data Cube is useful to my science
Stay warm - but not too warm to melt my permafrost.
I am getting approval to stand up a CHS CUSTOM ACCOUNT - how do I effectively use that and can you help me with some of the devops and dataops aspects in AWS
I think AWS has a ton of services; how do I wade through all that? - It looks like decision fatigue to me.
I want to organize the right team to build AI/ML pipelines in AWS - Dev, Neal, Sujan Parajuli and Logan Megard.
RESPONSE
Yes I can help you with many of the cloud questions you will have - both directly and by finding the right technical resource at the right time - this is disruptive technology and a little fast paced - EROS may need to adapt its staffing models accordingly; There could be some cultural change risk there.
Another answer is lets jump in and find out - the cloud is pay as go and ephemeral - its not hard to start up or shutdown - try that with on-prem gear.
This class is really a project roadmap for your project and should help you answer some if not all the questions in the process. We will start with essentially one computer and one simple, scalable storage bucket and we can build and run your entire project with just these few elements. The AWS catalog is big and frightening - we will use just two services in my approach to the cloud.
Jupyter is a great communication tool and very versatile even without python.
My experience is that when efficient approaches are taken - those that remove several of the many choices - project milestones fall like dominoes. - Its easy to get distracted these days - so this requires discipline and intelligence.
And oh, Neal I have your web computer stood up - it took 2 minutes with terraform and docker - you’re welcome
i’ll get you logged in whenever you are ready - and give you a quick tour
COMPUTER 1 - Web server; admin box; PLUS
instance type - t2.micro - free tier - no money needed
1 cpu
1 gig memory
tiny but powerful
and essential free no charge - on the house - drinks are on me … :-)
COMPUTER 2 - Development/Test/Production/Scaling101¶
I’ll build you a better one on tuesday
8 CPUs
32 Gig Memory
200 Gig Disk
Infinite s3 storage
$200/month - also on me until you get your CHS account - we will move it there
I use AMD processors since they are cheaper than intels
instance type is t3a-2xlarge - these AWS names - wow!
We will stand up a Jupyter Hub there - just cause it offers us so much in the way of collaboration
I have several geeks that like Jupyter we can leverage these folks
We will also build our docker pipeline with python on this machine - and scale bigger - if we need to - UNLIKELY.
You will have to be the sage in SageMaker - intelligence even the artificial type is not in my brain space.
Bruce¶
As a leader of a team of scientists I want to better understand the cloud and avoid any misunderstandings or pitfalls.
I want to create a path from our current technology stack to a future one given that more and more pressure is being exerted from the cloud crowd
My boss is suggesting we examine cloud technologies for my science initiatives
Many proposals and in some cases our competitors will use cloud technologies - I don’t want to be left behind
I am not sure we have all of the management structures in place to accommodate things like the cloud
I want EROS to be a world class data center on the prairie where we take a leadership role in integrating science with technology as a shared responsibility and we live that vision.
…more to come …¶
Questions, Suggestions, Improvements¶
Just start a chat with tony butzer anytime - I will add the question and maybe the solution to this pangeo-cloud-web-training-student-teacher-guide-roadmap-sphinx-thingy.
Niche/Esoteric Jargon can be a real turn-off!¶
So I will grow a glossary here GLOSSARY LINK
References¶
https://lpdaac.usgs.gov/resources/e-learning/
https://registry.opendata.aws/landsat-8/
https://docs.opendata.aws/landsat-pds/readme.html
https://corteva.github.io/rioxarray/stable/examples/clip_box.html
https://corteva.github.io/rioxarray/stable/examples/convert_to_raster.html
https://www.usgs.gov/core-science-systems/nli/landsat
https://www.usgs.gov/core-science-systems/nli/landsat/landsat-collection-2
Like Button¶
sponsors=['Pete Doucette', 'Doug Jaton', 'Steve LaBahn', 'Gabriel Senay']
my_class='Tonys Pangeo Useful School'
if 'Useful' in my_class:
send_thankyou_email(sponsors)
else:
pass


Multi-Agent Reinforcement Learning Visualization
Name: Daniel Mortensen; E-Mail<EMAIL_ADDRESS>A#: A01574901
Name: Tanner Wheeler; E-Mail<EMAIL_ADDRESS>A#: A01770306
Introduction
In the world of reinforcement learning, there has not been much work done while considering
how teams can work together to maximize both individual and collective reward.
This website aims to provide a visual aid in analyzing data from such a simulation. In this simulation
Two teams are considered, referred to as Team 1 and Team 2 respectively.
Each team player is allowed to freely move about the playing field where they select actions
From a limited action space. The actions are defined by a policy function which in
future iterations will be constructed to maximize reward. Players from opposing teams can also
interact by "stealing" resources such as health and fuel. The objective of the game
is for each team to collect all items assigned to it. The first team to do so is declared the winner.
|


Preparation time
30 mins to 1 hour
Cooking time
30 mins to 1 hour
Serves
Serves 4
Sea trout cooked sous vide and served with a summery salsa and vinaigrette. If you don’t have sous vide equipment the fish can be baked in foil instead.
For this recipe you will need a blender, a water bath, a vac pac machine and a chef’s blow torch.
Preheat the oven to 200C/180C Fan/Gas 6.
For the potatoes, cover the base of a baking tray with salt and place the potatoes on top. Bake for about an hour until tender (the exact time will vary depending on the size of the potatoes).
Meanwhile, prepare the salsa. In a bowl, mix all the ingredients together and season with salt and pepper. Push cling film firmly down onto the salsa and also cover the bowl tightly with cling film (this will prevent the avocado browning). Set aside.
To make the basil vinaigrette, put all the ingredients in a blender together with plenty of salt and pepper. Pulse for about 30 seconds, or until combined. Taste to check the seasoning and set aside.
For the asparagus, cut the spears to about the length of your middle finger. Using a vegetable peeler lightly peel the bottom inch to produce a white stalk and a green top. About 10 minutes before serving, bring a large pan of salted water to a rolling boil, drop in the asparagus and cook for 4–5 minutes. Drain immediately. Brush the melted butter over the asparagus and season with sea salt.
For the trout, preheat a water bath to 50C. Place the fillets in a vac pac bag, with a slug of rapeseed oil and season with sea salt and pepper. Seal the vac pac bag and place into the water bath for 10 minutes.
Scoop the cooked potato out of its skin and pass through a sieve into a saucepan. Using a fork, mash in plenty of butter, season with salt and pepper and set aside until ready to use.
To serve, remove the trout fillets from the water bath and cut open the vac pac bag. Place on a baking tray and use a chef’s blow torch to colour lightly.
Spoon some salsa into the centre of the serving plates and place a fillet of trout on top, season with sea salt and pepper. Shape some potato into quenelles and place to the side. Top the trout with asparagus, drizzle with basil vinaigrette and serve immediately.


PSALMS 119
1 How fortunate are those about whom no one can say truthfully that they have done things that are wrong,
those who always obey the laws of Yahweh.
2 How fortunate are those who obey his weighty commands,
those who request him with their entire inner beings to help them to do that.
3 They do not do things that are wrong;
they behave as Yahweh wants them to.
4 Yahweh, you have given us your principles of behavior,
and you told us to obey them faithfully.
5 I want so much to faithfully keep everything that you command.
6 If I did that, I would not be ashamed
when I thought about your commands.
7 When I learn all of your just regulations,
I will praise you with a pure inner being.
8 I will obey all your statutes;
do not desert me!
9 I know how a young person can live in a pure way;
it is by obeying your commands.
10 I try to serve you with my entire inner being;
do not allow me to wander away from what you have commanded.
11 I have memorized your commands
so that I will not sin against you.
12 Yahweh, I praise you;
teach me your statutes.
13 I have announced to the people all the things that you have commanded us to do.
14 I delight in obeying your requirements;
I enjoy that more than being very rich.
15 I will study everything you have commanded,
and I will pay attention to how you have shown me to live.
16 I will be happy to obey your statutes,
and I will not forget your words.
17 Do good things for me, the one who serves you,
so that I may continue to live and obey your words during all my life.
18 Help me to understand with my mind,
to know the wonderful things that are written in your laws.
19 I am living here on the earth for only a short time;
do not keep me from understanding.
20 In my inner being I strongly desire to know your decrees all the time.
21 You rebuke those who are proud;
you curse those who disobey your commands.
22 Do not allow them to continue to insult and scorn me;
I request this because I have obeyed your requirements.
23 Rulers gather together and plan ways to harm me,
but I will meditate on what you have commanded.
24 I am delighted with your requirements;
it is as though they were my advisors.
25 I think that I will soon die;
save my life as you have promised me that you would.
26 When I told you about all the things I did, you answered me;
teach me your statutes.
27 Help me to understand how you want me to behave,
and then I will meditate on your amazing instructions.
28 I am very sad, with the result that I have no strength;
enable me to be strong again as you promised me that you would do.
29 Prevent me from telling lies,
and be kind to me by teaching me your laws.
30 I have decided that I will faithfully obey you;
I am determined to follow your commands.
31 Yahweh, I try to carefully cling to your requirements;
do not abandon me or let me be disgraced.
32 I will eagerly obey your commands
because you have helped me understand better and better what you want me to do.
33 Yahweh, teach me the meaning of your statutes,
and then I will completely obey them.
34 Help me to understand your laws
so that I may obey them with all my inner being.
35 I am happy with your commands,
so lead me along the paths that you have chosen for me.
36 Cause me to want to do what you command
and not to want to become rich.
37 Do not allow me to look at things that are worthless;
make me able to live as you want me to live.
38 Because I am one who serves you, do what you promised to do for me,
which is what you also promise to do for all those who honor you.
39 I become afraid when my enemies insult me;
stop them!
But you are right when you punish my enemies.
40 I very much desire to obey your principles of behavior;
because you are righteous, allow me to continue to live.
41 Yahweh, show me that you faithfully love me,
and rescue me as you promised you would.
42 After you do that, I will be able to reply to those who insult me
because I trust in your word.
43 Never prevent me from speaking your truth
because I have confidence in your regulations.
44 I will always obey your laws
forever and ever.
45 I will always be safe
because I have tried to obey your principles of behavior.
46 I will tell to kings what you require,
and because they are unable to prove me wrong, they will not cause me to be ashamed.
47 I am delighted to obey your commands,
and I love them.
48 I respect your commandments,
and I love them;
I will meditate on everything you require us to do.
49 Do not forget what you said you would do for me, the one who serves you,
because what you have said has caused me to confidently expect good things from you.
50 When I have been suffering, you comforted me;
you did what you promised me, and that kept me alive.
51 Proud people are always making fun of me,
but I do not turn away from obeying your laws.
52 Yahweh, when I think about your regulations that you gave to us long ago,
I am comforted.
53 When I see wicked people disregard your laws,
I become very angry.
54 While I have been living here on the earth for a short time,
I have written songs about your statutes.
55 Yahweh, during the night I think about you,
and so I obey your laws.
56 What I have always done is to obey your principles of behavior.
57 Yahweh, you are the one whom I have chosen,
and I promise to obey your words.
58 With all my inner being I plead with you to be good to me;
act kindly to me as you promised that you would do.
59 I have thought about my behavior,
and I have decided to return to obeying your requirements.
60 I hurry to obey your commands;
I do not delay at all.
61 Wicked people have tried to seize me as a hunter tries to catch an animal with a net,
but I do not forget your laws.
62 In the middle of the night I awake,
and I praise you for your commands
because they are fair.
63 I am a friend of all those who have an awesome respect for you,
those who obey your principles of behavior.
64 Yahweh, you faithfully love people all over the earth;
teach me your statutes.
65 Yahweh, you have done good things for me
as you promised that you would do.
66 Teach me to think carefully before I decide what to do,
and teach me other things that I need to know
because I believe that it is right for us to obey your commands.
67 Before you afflicted me, I did things that were wrong,
but now I obey your words.
68 You are very good, and what you do is good;
teach me your statutes.
69 Proud people have told many lies about me,
but as for me, I obey your principles of behavior.
70 Those people are stubborn,
but as for me, I am delighted with your laws.
71 It was good for me that you afflicted me
because the result was that I learned your statutes.
72 The laws that you give to us are worth more to me than gold,
more than thousands of pieces of gold and silver.
73 You created me and formed my body;
help me to be wise so that I may learn your commands.
74 Those who have an awesome respect for you will see what you have done for me, and they will rejoice
because they will see that I have trusted in your words.
75 Yahweh, I know that your regulations are right
and that you have made me suffer because you love me without end.
76 Comfort me by showing that you faithfully love me
as you said to me that you would do.
77 Act mercifully to me so that I may continue to live
because I am delighted with your laws.
78 Cause the proud people who falsely accuse me to be shamed;
but as for me, I will continue meditating on what you have commanded I should do.
79 Cause those who have an awesome respect for you to come back to me
so that they may learn what you command.
80 Enable me to perfectly obey your statutes
so that I may not be ashamed because of not doing that.
81 I am waiting for you to save me from my enemies;
I confidently expect that you will tell me what you will do.
82 My eyes are tired from waiting a long time for you to do what you promised that you would do,
and I ask, "When will you help me?"
83 I have become as useless as a wineskin that is shriveled from hanging a long time in the smoke inside a house,
but I have not forgotten your statutes.
84 How long must I wait?
When will you punish those who persecute me?
85 It is as though proud people, those who do not obey your laws, have dug deep pits for me to fall into.
86 All your commands are trustworthy;
but people are persecuting me by telling lies about me, so please help me.
87 Those people almost killed me,
but I have not stopped obeying your principles of behavior.
88 Because you faithfully love me, allow me to continue to live
so that I may continue to obey your requirements that you have spoken.
89 Yahweh, your word will last forever;
it is firmly fixed in heaven.
90 You will faithfully continue to act for people who are not yet born;
you have put the earth in its place, and it remains firmly there.
91 To this day, all things on the earth remain because you decided that they should remain;
everything on the earth serves you.
92 If I had not been delighted in obeying your laws,
I would have died because of what I was suffering.
93 I will never forget your principles of behavior
because as a result of my obeying them, you have enabled me to continue to live.
94 I belong to you; save me from my enemies
because I have tried to obey your principles of behavior.
95 Wicked men are waiting to kill me,
but I will think about your requirements.
96 I have learned that there is a limit for everything,
but your commands have no limit.
97 I love your laws very much.
I meditate on them all during the day.
98 Because I know your commands
and because I think about them all the time,
I have become wiser than my enemies.
99 I understand more than my teachers do
because I meditate on what you command.
100 I understand more than many old people do
because I obey your principles of behavior.
101 I have avoided all evil behavior
so that I may obey your words.
102 I have not refused to obey them
because you have taught me while I have studied them.
103 When I read your words,
they are like honey that I eat;
yes, they are even sweeter than honey.
104 Because I have learned your principles of behavior,
I am able to understand many things;
therefore I hate all evil things that some people do.
105 Your words a lamp to guide me;
they are like a light to show me the path that I should walk on.
106 I have solemnly promised, and I am solemnly promising it again,
that I will always obey your regulations;
they are all fair.
107 Yahweh, I am suffering very much;
cause me to be strong again as you have promised to do.
108 Yahweh, when I thank you while I pray, it is like a sacrifice to you;
please accept it,
and teach me your regulations.
109 My enemies are often trying to kill me,
but I do not forget your laws.
110 Wicked people have tried to seize me as a hunter tries to catch little animals with a trap,
but I have not disobeyed your principles of behavior.
111 I have your requirements forever;
because of them, I am joyful in my inner being.
112 I have decided to always obey your commands, every one of them.
113 I hate people who only say they love you,
but I love your laws.
114 You are like a place where I can hide from my enemies,
and you are like a shield behind which I am protected from them;
I trust in your promises.
115 You evil people, go away from me
so than I may obey my God's commands!
116 Enable me to be strong as you promised that you would do,
so that I may continue to live.

147 Each morning I arise before dawn and call to you to help me;
I confidently expect you to do what you have promised.
148 All during the night I am awake,
and I meditate on your commands and your promises.
149 Yahweh, because you faithfully love me,
listen to me while I pray;
keep me safe because I keep your regulations.
150 Those evil people who oppress me are coming closer to me;
they do not pay any attention to your laws.
151 But Yahweh, you are near to me,
and I know that your commands will never be changed.
152 Long ago I found out about your requirements,
and I know that you intended them to last forever.
153 Look at me, see that I am suffering very much, and heal me
because I do not forget your laws.
154 Defend me when others accuse me and rescue me from them;
allow me to continue to live as you promised that you would.
155 Wicked people do not obey your statutes,
so you will certainly not save them.
156 Yahweh, you have been merciful by helping me in many ways;
allow me to continue to live as you have done until now.
157 Many people are my enemies; many people cause me to suffer,
but I do not neglect your commands.
158 When I look at those who are not faithful to you, I am disgusted
because they do not obey your requirements.
159 Yahweh, notice that I love your principles of behavior;
because you faithfully love me, allow me to continue to live.
160 I can rely on everything that you have said;
all your regulations will endure forever.
161 Rulers persecute me for no reason,
but in my inner being I have a very awesome respect for your words.
162 I am happy about your words,
as happy as someone who has found a great treasure.
163 I thoroughly hate all lies
but I love your laws.
164 I praise you seven times a day
for your commandments because they are all just.
165 Things go well for those who love your laws;
nothing will make them abandon your laws.
166 Yahweh, I confidently expect that you will rescue me from my troubles,
and I obey your commands.
167 I obey what you require us to do;
I love it all very much.
168 I obey your principles of behavior,
and you see everything that I do.
169 Yahweh, listen while I pray for you to help me;
help me to understand your words.
170 Hear me while I pray,
and rescue me as you said you would.
171 I will always praise you
because you teach me your rules.
172 I will sing about your words
because all your commands are just.
173 I request you to always be ready to help me
because I have chosen to obey your principles of behavior.
174 Yahweh, I eagerly desire for you to rescue me from my enemies;
I am delighted with your laws.
175 Allow me to continue to live in order that I can continue to praise you
so that your regulations will continue to help me.
176 I have sinned and turned away from you like a sheep that has left its flock;
search for me because I have not forgotten your commands.


On this page, we want to provide you with some handy tools for your event.
Please bring a proper camera (and if possible audio setup) to your event. Part of GDCR is having a couple quick video calls (skype, google hangout, etc) with other cities to say hello.
It can be fun to have a call at the start of the day with a city that is just ending. That way, you can pass the “global baton” around the world.
When doing a call, make sure it is fast. Just a quick “Hello from {your city}! Have a great day!”. Too long of a call can be awkward. :)
Like in the previous years, we have setup Video Booths so you can visit other locations via webcam.
Coordinating:
You can find more information about facilitation in this page: Facilitating a Coderetreat.
If you have any questions, please find us in the #coderetreat channel on the Software Crafters Slack.
You're of course free to not use the suggested tweets below, however, we'd appreciate if you would use both the tags #gdcr18 and #live when you update the current session you're running and when you clock in or -out.
This way, you can search for other locations' updates with the search term #gdcr19 AND #live
There are some suggested constraints in auto complete. If you're interested in more constraints for your sessions, please have a look at Activity Catalog
We have setup a few video booths using meet.jit.si to bring together groups from all over the world.
If possible, it would be great if you could idle in the booth for your timezone.
It is fun to join channels in vastly different timezones! E.g., if you're in London, check out New Zealand wrapping things up when you're about to begin and wave goodbye to the US West Coast when your event in London is about to end (and theirs is about to start)! :)
Also try out another booth! Next Booth or Previous Booth
Seems like you are the only one here! We'll try a different room in a second (you can turn this off above) Try another room or toggle "auto-switch" above so we take care of this for you!
There seem to be a lot of participants in this room. We'll try a different room in a second (you can turn this off above) Try another room for better connection or toggle "auto-switch" above so we take care of this for you!


1. Introduction
Efficiently rendering a website relies on the User Agent being able to detect what parts of the page are being displayed, which parts might affect the currently-displayed section, and what can be ignored.
There are various heuristics that can be used to guess when a given sub-tree is independent of the rest of the page in some manner, but they’re fragile, so innocuous changes to a page may inadvertently make it fail such heuristic tests, causing rendering to fall into a slow code path. There are also many things that would be good to isolate which are difficult or impossible to detect in a heuristic manner.
To alleviate these problems and allow strong, predictable isolation of a subtree from the rest of the page, this specification defines a contain property.
1.1. Module Interactions
This document defines new features not present in earlier specifications. In addition, it aims to replace and supersede [CSS-CONTAIN-1] once stable.
1.2. Values
This specification follows the CSS property definition conventions from [CSS2]. Value types not defined in this specification are defined in CSS Values & Units [CSS-VALUES-3]. Other CSS modules may expand the definitions of these value types.
In addition to the property-specific values listed in their definitions, all properties defined in this specification also accept the CSS-wide keywords keywords as their property value. For readability they have not been repeated explicitly.
2. Strong Containment: the contain property
| Name: | contain |
|---|---|
| Value: | none | strict | content | [ size || layout || style || paint ] |
| Initial: | none |
| Applies to: | See below |
| Inherited: | no |
| Percentages: | n/a |
| Computed value: | specified keyword(s) |
| Canonical order: | per grammar |
| Animation type: | not animatable |
User Agents are expected to support this property on all media, including non-visual ones.
The contain property allows an author to indicate that an element and its contents are, as much as possible, independent of the rest of the document tree. This allows user agents to utilize much stronger optimizations when rendering a page using contain properly, and allows authors to be confident that their page won’t accidentally fall into a slow code path due to an innocuous change.
- none
- This value indicates that the property has no effect. The element renders as normal, with no containment effects applied.
- strict
- This value turns on all forms of containment except style containment for the element. In other words, it behaves the same as contain: size layout paint;.
- content
-
This value turns on all forms of containment except size containment and style containment for the element.
In other words, it behaves the same as contain: layout paint;.
Note: contain: content is reasonably "safe" to apply widely; its effects are fairly minor in practice, and most content won’t run afoul of its restrictions. However, because it doesn’t apply size containment, the element can still respond to the size of its contents, which can cause layout-invalidation to percolate further up the tree than desired. Use contain: strict or contain: strict style when possible, to gain as much containment as you can.
- size
- The value turns on size containment for the element. This ensures that the containing box can be laid out without needing to examine its descendants.
- layout
- This value turns on layout containment for the element. This ensures that the containing box is totally opaque for layout purposes; nothing outside can affect its internal layout, and vice versa.
- style
-
This value turns on style containment for the element.
This ensures that,
for properties which can have effects on more than just an element and its descendants,
those effects don’t escape the element.
Note: This value is at-risk.
- paint
- This value turns on paint containment for the element. This ensures that the descendants of the containing box don’t display outside its bounds, so if an element is off-screen or otherwise not visible, its descendants are also guaranteed to be not visible.
This property generally applies to all elements (including CSS Pseudo-Elements 4 §4.1 Generated Content Pseudo-elements: ::before and ::after),
although some types of containment have no effect on some elements,
as detailed in § 3 Types of Containment.
In addition, in the case of [SVG2],
the contain property only applies to svg
elements that have an associated CSS layout box.
For example, assume a micropost social network had markup something like this:

 ...

 Messages

Lol, check out this dog: images.example.com/jsK3jkl

I had a ham sandwich today. #goodtimes

I have political opinions that you need to hear!

…

There are probably a lot of messages displayed on the site, but each is independent and won’t affect anything else on the site. As such, each can be marked with contain: content to communicate this to the user agent, so it can optimize the page and skip a lot of computation for messages that are off-screen. If the size of each message is known ahead of time, contain: strict can be applied to communicate further restrictions.
3. Types of Containment
There are several varieties of containment that an element can be subject to, restricting the effects that its descendants can have on the rest of the page in various ways. Containment enables much more powerful optimizations by user agents, and helps authors compose their page out of functional units, as it limits how widely a given change can affect a document.
Specification authors introducing new properties or mechanisms need to consider whether and how the various types of containment affect what they are introducing, and include in their specification any effect not described here.
3.1. Size Containment
If the element does not generate a principal box (as is the case with display: contents or display: none), or its inner display type is table, or its principal box is an internal table box, or an internal ruby box, or a non-atomic inline-level box, size containment has no effect. Otherwise, giving an element size containment makes its principal box a containing box for size containment and has the following effects:
Note: Internal table boxes, which do not include table captions, are excluded, because the table layout algorithm does not allow boxes to become smaller than their inflow content. Sizing a table cell as if it was empty and then layout out its content inside without changing the size is effectively an undefined operation. Manually setting the width or height properties to 0 cannot make it smaller than its content. This concern does not apply to table captions, which are perfectly capable of having a fixed size that is independent of their content.
-
When calculating the size of the containing box, it must be treated as having no contents.
Note: Even when the element’s sizing properties are auto this does not necessarily make the element zero-sized: properties set on the element itself, such as the columns property or the grid property, continue to be taken into account.
Then, its contents must then be laid out into the containing box's resolved size.
Note: size containment does not suppress baseline alignment. See layout containment for that.
Replaced elements must be treated as having an intrinsic width and height of 0.
-
Containing boxes for size containment are monolithic (See CSS Fragmentation 3 §4.1 Possible Break Points).
By itself, size containment does not offer much optimization opportunity. Its primary benefit on its own is that tools which want to lay out the containing box’s contents based on the containing box’s size (such as a JS library implementing the "container query" concept) can do so without fear of "infinite loops", where having a child’s size respond to the size of the containing box causes the containing box’s size to change as well, possibly triggering further changes in how the child sizes itself and possibly thus more changes to the containing box’s size, ad infinitum.
When paired with layout containment, though, possible optimizations that can be enabled include (but are not limited to):
-
When the style or contents of a descendant of the containing box is changed, calculating what part of the DOM tree is "dirtied" and might need to be re-laid out can stop at the containing box.
-
When laying out the page, if the containing box is off-screen or obscured, the layout of its contents can be delayed or done at a lower priority.
3.2. Layout Containment
If the element does not generate a principal box (as is the case with display values of contents or none), or its principal box is an internal table box other than table-cell, or an internal ruby box, or a non-atomic inline-level box, layout containment has no effect. Otherwise, giving an element layout containment makes its principal box a containing box for layout containment and has the following effects:
-
The containing box establishes an independent formatting context.
-
If at least one fragmentation container of a fragmentation context has layout containment, or if at least one fragmentation container of a fragmentation context is a descendant of containing box for layout containment and at least one subsequent fragmentation container of the same fragmentation context is not a descendant of that same element with layout containment, then the first containing box for layout containment which is either a fragmentation container itself or is an ancestor of a fragmentation container must “trap” the remainder of the fragmented flow: fragmentation must not continue past the layout containment boundary, and the last fragmentation container within the first layout containment boundary is treated as if it is the last fragmentation container in its fragmentation context.
If subsequent fragmentation containers in the fragmentation context are only generated when more content remains in the fragmented flow, then they are not generated. If they would exist regardless, they remain part of the fragmentation context, but do not receive any content from the fragmented flow.
Note: At the time of writing, no stable specification is affected by this point. Only specifications that would enable some (but not all) fragmentation containers of a fragmentation context to be layout-contained (or descendants of a layout contained element) are concerned. This is not the case of [CSS-PAGE-3] nor of [CSS-MULTICOL-1]. This requirement is nonetheless included because several mechanisms that would make this a possibility have been considered (e.g.: [CSS-REGIONS-1], ::nth-fragment(), a hypothetical selector for individual columns of a multicol…), and the guarantees that layout containment is intended to offer would not be realized if such mechanisms did not abide by this rule. [CSS-REGIONS-1] has details over how layout containment affects regions.

 Lorem ipsum…

 article { flow-into : foo;} #a, #b, #c, #d, #e, #f { flow-from : foo;} aside { contain : layout} In this [CSS-REGIONS-1] example, content can flow from
#a
to#b
, from#b
to#c
. However as#c
is the last fragment container in the first containing box for layout containment, it traps all the remaining content, and nothing gets flowed into#d
,#e
, or#f
. -
If the computed value of the overflow property is either visible or clip or a combination thereof, any overflow must be treated as ink overflow.
-
The containing box acts as a containing block for absolutely positioned and fixed positioned descendants.
-
The containing box creates a stacking context.
-
Forced breaks are allowed within containing boxes for layout containment, but do not propagate to the parent as otherwise described in CSS Fragmentation 3 §3.1 Breaks Between Boxes: the break-before and break-after properties.
Note: This introduces the previously non-existent possibility that forced breaks may occur between a box and its container (See CSS Fragmentation 3 §4.1 Possible Break Points).
-
For the purpose of the vertical-align property, or any other property whose effects need to relate the position of the containing box's baseline to something other than its descendants, the containing box is treated as having no baseline.
Possible optimizations that can be enabled by layout containment include (but are not limited to):
-
When laying out the page, the contents of separate containing boxes can be laid out in parallel, as they’re guaranteed not to affect each other.
-
When laying out the page, if the containing box is off-screen or obscured and the layout of the visible parts of the screen do not depend on the size of the containing box (for example, if the containing box is near the end of a block container, and you’re viewing the beginning of the block container), the layout of the containing box' contents can be delayed or done at a lower priority.
(When paired with size containment, this optimization can be applied more liberally.)
3.3. Style Containment
Note: Style Containment is at-risk.
Giving an element style containment and has the following effects:
-
The counter-increment and counter-set properties must be scoped to the element’s sub-tree and create a new counter.
-
The effects of the content property’s open-quote, close-quote, no-open-quote and no-close-quote must be scoped to the element’s sub-tree.
Note: This implies that the depth of quote nesting in the subtree is unchanged and starts at the value that its context normally implies, but that changes to the depth of quote nesting by these values inside the subtree do not affect the depth of quote nesting outside the subtree.
Note: [CSS-REGIONS-1] has normative requirements on how style containment affects regions.
A scoped property has its effects scoped to a particular element or subtree.
-
If scoped to an element, it must act as if the scoping element was the root of the document for the purpose of evaluating the property’s effects: any uses of the property outside the scoping element must have no effect on the uses of the property on or in the scoping element, and vice versa.
Note: “Scoping to an element” is currently unused. It is defined as an extension point for future specifications to use.
-
If scoped to a sub-tree, it’s the same, except the scoping element itself is counted as "outside" the tree, like the rest of the document, and the effects of the property on that element are unaffected by scoping. When considering the effects of the scoped property on elements inside the subtree, the element at the base of the subtree is treated as if it was the root of the document.
1 1.2being displayed:

div {
contain : style;
counter-increment : n;
}
div::before, div::after {
content : counters ( n, '.' ) " " ;
}
div::after {
counter-increment : n 2 ;
}
Possible optimizations that can be enabled by style containment include (but are not limited to):
-
Whenever a property is changed on a descendant of an element with style containment, calculating what part of the DOM tree is "dirtied" and might need to have its style recalculated can stop at the containing box.
3.4. Paint Containment
If the element does not generate a principal box (as is the case with display values of contents or none), or its principal box is an internal table box other than table-cell, or an internal ruby box, or a non-atomic inline-level box, paint containment has no effect. Otherwise, giving an element paint containment makes its principal box a containing box for paint containment and has the following effects:
-
The contents of the element including both the paint of the descendants and their geometry must be clipped to the padding edge of the containing box, taking corner clipping into account. This does not include the creation of any mechanism to access or indicate the presence of the clipped content; nor does it inhibit the creation of any such mechanism through other properties, such as overflow, resize, or text-overflow. This is as if overflow: visible was changed to overflow: clip at used value.
-
The containing box acts as a containing block for absolutely positioned and fixed positioned descendants.
-
The containing box creates a stacking context.
-
The containing box establishes an independent formatting context.
-
If the containing box is off-screen or obscured, the UA can directly skip trying to paint its contents, as they’re guaranteed to be off-screen/obscured as well.
-
Unless the clipped content is made accessible via a separate mechanism such as the overflow, resize, or text-overflow properties, the UA can reserve "canvas" space for the box exactly the box’s size. (In similar, scrollable, situations, like overflow: hidden, it’s possible to scroll to the currently-clipped content, so UAs often predictively overpaint somewhat so there’s something to see as soon as the scroll happens, rather than a frame later.)
-
Because they are guaranteed to be stacking contexts, scrolling elements can be painted into a single GPU layer.
4. Privacy and Security Considerations
This specification introduces no new privacy or security considerations.
Like any other CSS specification, it affects the rendering of the document, but does not introduce any special ability to present content in a misleading way that was not previously available through other CSS modules and that isn’t inherent to the act of formatting the document.
The TAG has developed a self-review questionnaire to help editors and Working Groups evaluate the risks introduced by their specifications. Answers are provided below.
- Does this specification deal with personally-identifiable information?
- No.
- Does this specification deal with high-value data?
- No.
- Does this specification introduce new state for an origin that persists across browsing sessions?
- No.
- Does this specification expose persistent, cross-origin state to the web?
- No.
- Does this specification expose any other data to an origin that it doesn’t currently have access to?
- No.
- Does this specification enable new script execution/loading mechanisms?
- No.
- Does this specification allow an origin access to a user’s location?
- No.
- Does this specification allow an origin access to sensors on a user’s device?
- No.
- Does this specification allow an origin access to aspects of a user’s local computing environment?
- No.
- Does this specification allow an origin access to other devices?
- No.
- Does this specification allow an origin some measure of control over a user agent’s native UI?
- No.
- Does this specification expose temporary identifiers to the web?
- No.
- Does this specification distinguish between behavior in first-party and third-party contexts?
- No.
- How should this specification work in the context of a user agent’s "incognito" mode?
- No difference in behavior is needed.
- Does this specification persist data to a user’s local device?
- No.
- Does this specification have a "Security Considerations" and "Privacy Considerations" section?
- Yes, this is the section you are currently reading.
- Does this specification allow downgrading default security characteristics?
- No.
Appendix A. Changes
This appendix is informative.
Changes from CSS Containment Level 1
-
Restored style containment, which had been dropped from Level 1


Provides a simple and safe interface to NeEM targeted at the application programmer. As an example, consider a simple group chat application. This application grabs text from console, and sends it to the group. All messages delivered are printed to the console. Step by step:
The first step is to create an instance of {@link net.sf.neem.MulticastChannel}:
MulticastChannel neem = new MulticastChannel(new InetSocketAddress(port));
After the channel is created, peers are added to connect to the overlay network:
for(InetSocketAddress addr: knownPeers) neem.connect(addr);
Any number of peers can be connected. The channel will keep only the appropriate number of active connections. A single peer is sufficient to boot, as the dynamic overlay maintenance protocol will grow the number of local peers. Peers can be added at any time, for instance, to merge two partitions.
Our chat application must then start a thread to poll for incoming messages using the channel interface using the following code:
public void run() { try { while(true) { byte[] buf = new byte[1000]; ByteBuffer bb=ByteBuffer.wrap(buf); neem.read(bb); System.out.println(new String(buf)); } } catch(Exception e) {e.printStackTrace();} }
Finally, grab each text line from the console, encapsulate it in a ByteBuffer and use the write method to spread the message to the group:
BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); String line; while ((line = r.readLine()) != null) { neem.write(ByteBuffer.wrap(line.getBytes())); } neem.close();


Part 1 of our journey takes an abstract look @ complexity, determinism, and probabilistic graphical models. We then turn our attention to human social networks, and the growing inertia around online social network analysis.
"The Quality which creates the world emerges as a relationship between man and his experience. He is a participant in the creation of all things. The measure of all things." -- Robert Pirsig
The point of this post is to move from crazy theory to actual code. The final piece of the puzzle (an actual working implementation and source code) will be available @ www.smarttypes.org. We will update the github repo along the way.
We'll focus on twitter, but the design and methods outlined here should work for any online network where people link to people, and people link to content.
We have a simple, straightforward goal: Given a search phrase, we want to return the most relevant/influential twitter users for that phrase. For example, if we enter the search phrase 'Cleveland Machine Learning' we should get back a list of bad-ass Cleveland geeks.
There are a lot of ways to approach this problem. We could simply index the content each user posts, and return the users with the highest keyword frequency. We could get more sophisticated, and use term frequency–inverse document frequency (tf–idf) to give more weight to uncommon words. More sophisticated still, we can use a topic model to discover latent features (or topics) that occur across users.
In fact, we will use tf–idf and topic models, but we're missing something. We're neglecting our most interesting asset, the people!
Not long ago, social scientists spent lots to document social connections, and speculate on these connections influenced behavior. Now any schlub with a computer and an imagination can immerse himself in this brand of study.
Whether from homophily (birds of a feather flock together) or social contagion, we know like minded people tend to be connected.
The first step is getting some data to play w/. This is trivial if you have the cash. Hundreds of social media, data-mining and financial-services companies pay a base rate of up to $360,000 a year for Twitter's information. There are currently two companies licensed to sell twitter data -- Gnip, in Boulder, Colo. and Datasift, in Reading, U.K
If you don't have the cash, you'll have to work to get the data. Or you can just leverage my hard work. Here's a little script that uses tweepy to pull social graph data (who follows who). OAuth calls are permitted 350 requests per hour and are measured against the oauth_token used in the request. The more oauth_tokens you have (signups to use your app) the more data you can pull. Learn more about twitter rest-api rate limits here.
Getting actual tweets is a little different. You open up a connection, and drink from the stream. The default access level allows up to 400 track keywords, 5,000 follow userids, and 25 0.1-360 degree location boxes. Learn more about twitter streaming-api rate limits here. Here's an incomplete script to get tweets.
The following is from Peter Norvig's 'On Chomsky and the Two Cultures of Statistical Learning', referring to Leo Breiman's 2001 paper Statistical Modeling: The Two Cultures
"Breiman is inviting us to give up on the idea that we can uniquely model the true underlying form of nature's function from inputs to outputs. Instead he asks us to be satisfied with a function that accounts for the observed data well, and generalizes to new, previously unseen data well, but may be expressed in a complex mathematical form that may bear no relation to the "true" function's form (if such a true function even exists)."
Latent Dirichlet Allocation (LDA) is an example of a graphical model. Learning the various distributions (the set of topics, their associated word probabilities, the topic of each word, and the particular topic mixture of each document) is a problem of bayesian inference.
Looking for LDA implementations in python, i was pleasantly surprised to find Gensim. Gensim is memory independent, distributed implementation made to efficiently process large, web-scale corpora.
" The unsupervised algorithms in gensim, such as Latent Semantic Analysis, Latent Dirichlet Allocation or Random Projections, discover hidden (latent) semantic structure, based on word co-occurrence patterns within a corpus of training documents. Once these statistical patterns are found, any plain text documents can be succinctly expressed in the new, semantic representation, and queried for topical similarity against other documents and so on. "
We will use LDA to cluster our social network. (For brevity's sake i'll simply point to this nice tutorial on using LDA on a social graph.) This gives use a list of communities. Each community is composed of a list of (user_participation_score, user_index) tuples.
#communities num_communities = 2 community_lda = gensim.models.ldamodel.LdaModel(social_network, num_topics=num_communities, update_every=0, passes=20) communities = community_lda.show_topics(topics=-1, formatted=False)
We then iterate through all the content posted by the users in each community, and weight the content w/ the user_participation_score score. This gives us community_text for each community weighted by user participation in that community.
#map user_corpus to community_text community_text = defaultdict(lambda: defaultdict(int)) for i in range(len(communities)): for user_participation_score, user_index in communities[i]: for word_id, _ in user_corpus[int(user_index)]: community_text[i][word_id] += 1 * user_participation_score
We then use gensim's tfidf (term frequency–inverse document frequency) transformation model to give uncommon words a higher value.
Finally, we use LDA to find latent topics within the community content.
#community_corpus_topics num_topics = 3 topic_lda = gensim.models.ldamodel.LdaModel( community_corpus, id2word=user_corpus_dictionary, num_topics=num_topics, update_every=0, passes=20) topics = topic_lda.show_topics(topics=-1, formatted=False)
That's it, we're done w/ our model, now all that's left is to take a search_phrase, convert it to a topic_vector, and compare the search_topic_vector w/ all the community_topic_vectors using gensim cosine similarity.
Actually, there's a little more. We don't want to pigeonhole ourselves to one community. Imagine if our search returns two closely related communities. We don't want to just pick one community, and show the members in that community. There may be members in the other community that are more relevant than lower ranking members of our first community. To handle this we need to multiply our search-vector/topic-vector similarity score w/ the user_participation_score. This is the final step.
We can do more w/ our model. The first thing that comes to mind is incorporating time to see moving trends and predict the future. We also need to think about persistence, concurrency, and scaling to support big data. We'll save that for another day. The final piece of the puzzle (the actual working implementation and source code) will be available @ www.smarttypes.org. We will update the github repo along the way.
I hope these posts were an inspiring introduction to complexity, social network analysis, and graphical models. If you're interested in this stuff i recommend:


SAP Icons
SAP-icons is the default font of the component. No need to set the font
input property.
It is recommended to add `aria` attributes to the icon component to add context for screenreader users.
BusinessSuiteInAppSymbols Icons
For BusinessSuiteInAppSymbols icon font you need to set the font
input property to
font="BusinessSuiteInAppSymbols"
TNT Icons
For SAP-icons-TNT icon font you need to set the font
input property to
font="SAP-icons-TNT"


The Service File Name contains a command string to execute (%COMSPEC% points to the absolute path of cmd.exe). It echos the command to be executed to a bat file, redirects the stdout and stderr to a Temp file, then executes the bat file and deletes it. Back on Kali, the Python script then pulls the output file via SMB and displays the contents in our "pseudo-shell". For every command we type into our "shell", a new service is created and the process is repeated. This is why it doesn't need to drop a binary, it just executes each desired command as a new service. Definitely more stealthy, but as we saw, an event log is created for every command executed. Still a very clever way to get a non-interactive "shell"!
smbexec.py
A similar approach to psexec w/o using RemComSvc. The technique is described here http://blog.accuvant.com/rdavisaccuvant/owning-computers-without-shell-access/.
Our implementation goes one step further, instantiating a local smbserver to receive the output of the commands. This is useful in the situation where the target machine does NOT have a writeable share available.
# This script works in two ways:
# 1) share mode: you specify a share, and everything is done through that share.
# 2) server mode: if for any reason there's no share available, this script will launch a local
# SMB server, so the output of the commands executed are sent back by the target machine
# into a locally shared folder. Keep in mind you would need root access to bind to port 445
# in the local machine.
usage: smbexec.py [-h] [-share SHARE] [-mode {SHARE,SERVER}] [-debug]
[-dc-ip ip address] [-target-ip ip address]
[-port [destination port]] [-hashes LMHASH:NTHASH]
[-no-pass] [-k] [-aesKey hex key]
target
positional arguments:
target [[domain/]username[:password]@]<targetName or address>
optional arguments:
-h, --help show this help message and exit
-share SHARE share where the output will be grabbed from (default
C$)
-mode {SHARE,SERVER} mode to use (default SHARE, SERVER needs root!)
-debug Turn DEBUG output ON
connection:
-dc-ip ip address IP Address of the domain controller. If omitted it
will use the domain part (FQDN) specified in the
target parameter
-target-ip ip address
IP Address of the target machine. If ommited it will
use whatever was specified as target. This is useful
when target is the NetBIOS name and you cannot resolve
it
-port [destination port]
Destination port to connect to SMB Server
authentication:
-hashes LMHASH:NTHASH
NTLM hashes, format is LMHASH:NTHASH
-no-pass don't ask for password (useful for -k)
-k Use Kerberos authentication. Grabs credentials from
ccache file (KRB5CCNAME) based on target parameters.
If valid credentials cannot be found, it will use the
ones specified in the command line
-aesKey hex key AES key to use for Kerberos Authentication (128 or 256
bits)


whois
skills.min
Microsoft Certified Professional and seasoned Delphi software developer, with strong practical experience in project requirements gathering, business analysis and programming; devoted to functional programming and information architecture.
skills.min
Application Developer - Web Developer - Database Programmer - Delphi - C# - T/SQL - PL/SQL - Entity Framework - LINQ -JavaScript/HTML5/CSS3 - jQuery - AngularJS


Copyright (c) 2001 L. Lynn Smith
This game is played on a 8x8 square board with the following setup:
|
| An example White chooses to move the marked stone into cell [1]. If Black captures e3:c5:c7, then White wins by capturing g3:g1 (only one black stone left). Also, Black's move g2:g4 is bad, because of d4:f2. |
I believe that the capture rule should be mandatory, since it's hard to reach a result when there are few stones on board. Even when one player have 5 stones against 3, it is difficult to win without a major blunder.
Lynn answered by saying: The reason I did not make initial captures mandatory is because the game would be too similar to Albuquerque. I did add a variant to the ZRF which, instead of capturing, turns the jumped opponent into a friendly one. I called it "Multiplying Bunny War". It plays fast and aggressive. In "Multiplying Bunny War", since all the pieces remain on the board there reaches a break-over point where one player begins to totally trounce the other. Unless that player makes some critical mistake.
There are positional techniques to use in plain "Bunny War" which will help
the player gain a necessary advantage in the end-game. Getting behind the opponent often helps to destroy a weak line of defense. So the player
should first concentrate on avoiding being captured and working their pieces onto the far rank. Also maintaining good positions on all the outer cells
helps with the overall game. Basically, start working your way up both the outer files, trying to form a solid line of defense. Once behind the
opponent, lay into the the middle of the field. These same tactics can be used in "Multiplying Bunny War".
The rules were kept simple, so that a young child could learn them quickly. The names of the games were derived by the behavior of the pieces. During
an explanation to a five-year-old, I first used the term "Bunny". The Bunny runs, the Bunny hops. The child quickly grasped the rules and played an
aggressive game.


Canvas is not supported in your browser.
JavaScript is required to view the example.
Press WASD to move the Square entity.
The AI walk/stops at random intervals, and it reverses direction upon hitting a wall.


Mother Nornil:
Yes, the very one... This is my true form. Surprised? The founders of the Kamael created me and then fashioned a cloak of myth and legend around me.
Perhaps I can help you understand. Listen to why I called you here..
Listen.


{{ n }}/{{ num_items - 1 }}
“{{ context|safe }}”
not enough information / pass (I can't judge the relevance)
author name inc. marker has gramm. func. | citation type: NE/concept Claim Example Other
check all relevant:
model 1
model 2
model 3
Model not applicable
← prev next →
show my evaluation log


Rainfall Prediction
Home
State Wise
District Wise
Prediction
state wise prediction
Select year
Submit
{% block content %} {% endblock %}


Help
Category:Visa requirements by nationality
From Wikipedia, the free encyclopedia
Jump to:
navigation
,
search
v
t
e
Visa
requirements
Visa
Passport
Travel document
Americas
Caribbean
Anguillan
1
Antigua and Barbuda
Bahamian
Central
Belizean
Costa Rican


Berkeley DB: dbenv_set_tx_recover
dbenv_set_tx_recover
#include <db_cxx.h>
typedef int (*tx_recover_fcn)(DB_LOG *, DBT *, DB_LSN *, int, void *);
void DbEnv::set_tx_recover(tx_recover_fcn);
Description
Set the function that is called by DbTxn::abort during transaction
abort.
This function takes five arguments:
- logp
- A pointer to the transaction log (DB_LOG *).
- log_rec
- A log record.
- lsnp
- A pointer to a log sequence number (DB_LSN *).
- redo
- An integer value that is set to one of the following values:
- DB_TXN_BACKWARD_ROLL
- The log is being read backward to determine which transactions have been
committed and which transactions were not (and should therefore be aborted
during recovery).
- DB_TXN_FORWARD_ROLL
- The log is being played forward, any transaction ids encountered that
have not been entered into the list referenced by
info should be ignored.
- DB_TXN_OPENFILES
- The log is being read to open all the files required to perform recovery.
- DB_TXN_REDO
- Redo the operation described by the log record.
- DB_TXN_UNDO
- Undo the operation described by the log record.
- info
- An opaque pointer used to reference the list of transaction IDs encountered
during recovery.
If no recover function is specified, the default is that only Berkeley DB access
method operations are transaction protected, and the default recover function
will be used.
Class
DbEnv
See Also
DbEnv::appinit,
DbEnv::appexit,
DbEnv::version,
DbEnv::get_lg_info,
DbEnv::get_lk_info,
DbEnv::get_mp_info,
DbEnv::get_tx_info,
dbenv_set_data_dir,
DbEnv::set_errcall,
DbEnv::set_errfile,
DbEnv::set_error_model,
DbEnv::set_error_stream,
DbEnv::set_errpfx,
DbEnv::set_lg_max,
DbEnv::set_lk_conflicts,
DbEnv::set_lk_detect,
DbEnv::set_lk_modes,
DbEnv::set_lorder,
DbEnv::set_mp_mmapsize,
DbEnv::set_mp_size,
DbEnv::set_tx_max,
dbenv_set_tx_recover
and
DbEnv::set_verbose.


About Us
Foodizz.com is a food delivery system that act as connection between Restrurants and Customers.
Our Aims:
(1)To give food delivery service to customers at their doorstep for those who are unable to cook food due to their busy routine and to fulfill their cravings.
(2)To give platforms to Restrurants for extending their business and to serve their customers better.
(3)To provide employement to many Delivery boys for serving you in a better way.
Our Developer Team:
Rasika Chavan
Shreya Dhananjay
Neha Bharsat
Contact Us
Have a problem? We're happy to serve you 24x7!
Just drop a mail at
<EMAIL_ADDRESS>Don't Hesitate to contact us for any food delivery service related query.


This radar image shows the Star City cosmonaut training center, east of Moscow, Russia. Four American astronauts are training here for future long-duration flights aboard the Russian Mir space station. These joint flights are giving NASA and the Russian Space Agency experience necessary for the construction of the international Alpha space station, beginning in late 1997. This image was acquired by the Spaceborne Imaging Radar-C/X-band Synthetic Aperture Radar (SIR-C/X-SAR), on its 62nd orbit on October 3, 1994. This Star City image is centered at 55.55 degrees north latitude and 38.0 degrees east longitude. The area shown is approximately 32 kilometers by 49 kilometers (20 miles by 30 miles). North is to the top in this image. The radar illumination is from the top of the image. The image was produced using three channels of SIR-C radar data: red indicates L-band (23 cm wavelength, horizontally transmitted and received); green indicates L-band (horizontally transmitted and vertically received); blue indicates C-band (6 cm wavelength, horizontally transmitted and vertically received). In general, dark pink areas are agricultural; pink and light blue areas are urban communities; black areas represent lakes and rivers; dark blue areas are cleared forest; and light green areas are forested. The prominent black runways just right of center are Shchelkovo Airfield, about 4 km long. The textured pale blue-green area east and southeast of Shchelkovo Airfield is forest. Just east of the runways is a thin railroad line running southeast; the Star City compound lies just east of the small bend in the rail line. Star City contains the living quarters and training facilities for Russian cosmonauts and their families. Moscow's inner loop road is visible at the lower left edge of the image. The Kremlin is just off the left edge, on the banks of the meandering Moskva River. The Klyazma River snakes to the southeast from the reservoir in the upper left (shown in bright red), passing just east of Star City and flowing off the lower right edge of the image. The dark blue band of the Vorya River runs north-south in the upper right quadrant, east of Star City. SIR-C/X-SAR radar images are being compared with data from the Russian radar satellite Almaz to evaluate the usefulness of a permanent orbital radar platform in monitoring Earth s environment and ecology.
P-45510 April 21, 1995


Welcome to my website.I'm CostaHu from WHU.
This is a simple game called asteroids only available on PC!
Press enter to start the game.
Move the blue triangle using up/right/left,and fire a bullet using space.
The score shows at the right-up corner of the screen.
The yellow ones are coins,eat them to get more scores.
Thanks to Doug McInnes for creating this awesome game!


Introduction
ThoughtWorks, India
Sahi - Web Automation and Test Tool
@title@
@content@
Please send your feedback to
V Narayan Raman
.


What is an operator? What are some examples?

Modulus - calculates the remainder from division
What does the ++ operator do? And what is it called?
The increment operator increases a variable's value by 1.
What does the -- operator do? And what is it called?
The decrement operator decreases a variable's value by 1.
What is an expression in JavaScript? (You can give a definition or an example)
A combination of variables, values, and operators that produces a value.
var myAge = 2 + 23;
What should you put at the end of every expression in JavaScript?
A semicolon (;)
How do you assign a value to a variable? (What if we wanted to make height 20, for example?)
height = 20;
var height = 20; (if the variable does not exist yet)
What are reserved words?
Words you shouldn't use to name functions, variables, or objects because they have special meaning in JavaScript.
What kinds of operators are these? What do they do?
They're called logical operators.
&&: evaluates if both are true (color===red && shape===circle)
||: evaluates if either one is true (age >= 17 || withGuardian===true)
! : used to evaluate the negative of a condition.
!color===red will return true for color===blue, color===green, etc.
"A control structure is a block of programming that analyzes variables and chooses a direction in which to go based on given parameters." -Wikiversity
You might say it's a block of code that makes a decision.
Depending on how they're written, control structures can save time by telling the computer to do something more efficiently.
Now when I say hey, you say ha! Hey!...
Make an alert statement pop up when a particular condition is met.
Create your own switch statement.
Use a for-loop to make some lines of text appear on your page.
Change the for-loop you created into a while loop.
Create a do-while loop that only executes the code block once.
At least...by our definition of done.


Run the SQL statement to the right.
The ROUND function rounds the number in the column from the first argument to the decimal place that is specified as the second argument.
You should see a result set in the lower right panel.


{% extends "base.html" %} {% block title %}My Blog - {{ name }}{% endblock %} {% block mainhead %}
I like to write about all sorts of stuff. Mostly technology and math, but stick around for more! {% endblock %} {% block main %}
{{ post.date }}


Make sure the app is opened and then in the Azure Mobile Engagement Portal:
- Go to the "Reach" tab, and then select "Polls".
- Click on "New poll"
- Fill the following values in the form:
- Name: Provide the name of the campaign to identify it.
- Category: Leave it as blank with no values.
- Delivery time: "Out of app only"
- Title & Message: Provide the title and the message of the initial notification which the user clicks to go to the poll screen.
- Content Title, Description : Provide the title and the description which will be shown on the poll screen.
- Action button: Provide a text of "Submit"
- Exit button: Provide a text of "Cancel"
- Finally add some poll/survey questions and options for each.
- Finally, either send the test notification or create and activate the campaign to see the poll/survey notification.


LEVIATHAN A film review by Michael Soukup Copyright 1989 Michael Soukup
LEVIATHAN (no stars out of four) Director: George P. Cosmatos Cast: Peter Weller, Amanda Pays, Richard Crenna, Hector Elizondo, Daniel Stern, Lisa Eilbacher, Ernie Hudson, Meg Foster
Okay, no one expects a movie like LEVIATHAN to be great. Or even necessarily very good. But even in this era of lowered expectations, LEVIATHAN proves that one's expectations can never be too low. This is not an underwater ripoff of ALIEN; it is a virtual remake. But Mr. Cosmatos, you're no Ridley Scott.
All of the elements of Scott's film are assembled. As the following diagram illustrates, Shack Number 7's crew matches very nicely with the crew of the Nostromo.
ALIEN LEVIATHAN
Tom Skerritt -------------> Peter Weller Sigourney Weaver -------------> Amanda Pays Ian Holm -------------> Richard Crenna Yaphet Kotto -------------> Ernie Hudson Veronica Cartwright -------------> Lisa Eilbacher Harry Dean Stanton -------------> Hector Elizondo
This is not an exaggeration. It gets even worse. While out mining one
day, two of the crew members (attired in underwater gear that closely resembles
Obviously LEVIATHAN isn't original. Okay. That was kind of obvious from the outset. But what is unforgivable is LEVIATHAN'S utter ineptitude. Every opportunity for suspense or tension is frittered away. Everything is flat and uninspired. Cosmatos simply doesn't know how to build a scene. He seems more interested in getting Ms. Pays into her underwear (not once but twice) than moving the story along. By the end, it has become so completely ridiculous that there is nothing left to do but laugh. Except I wasn't laughing. This is the kind of moviemaking that is really depressing--aiming low and missing.
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


Weather Report -
Get the mood of your city on one click
Search
Pressure
Humidity
Sunrise
Sunset
Geo coords


RTW :: Games
Research Project at Federal University of São Carlos
Home
Project Overview
Data Search
Games
{% if admin %}
Admin Options
{% endif %}
My Profile
Logout
Profile
ID
Username
Email
Score
Registration date


Copyright © {{ site.time | date: "%Y" }} - {{ site.author }} - Powered by Octopress | Fluid theme by Pankaj Kumar


Photo Album
Here some description text
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption


Service Number #{{ selected_order.pk }}
{{ selected_order.created_at|date:"d M, Y" }}
Order Type - {{ selected_order.item.item_name }}
Order Area - {{ selected_order.area.area_name }}
Order served By - {{ selected_order.service_provider.service_point_name }}
Order Issue
{{ selected_order.description }}
Order Status - {% if selected_order.status == 1 %}
Pending
{% elif selected_order.status == 2 %}
Confirmed
{% elif selected_order.status == 3 %}
Processing
{% elif selected_order.status == 4 %}
Completed
{% elif selected_order.status == 5 %}
Cancelled by User
{% elif selected_order.status == 6 %}
Cancelled by Vendor
{% elif selected_order.status == 7 %}
Incomplete
{% endif %}


| Package | flare.vis.data |
| Class | public class Data |
| Inheritance | Data flash.events.EventDispatcher |
| Subclasses | Tree |
DataList
instances. The individual data lists provide
methods for accessing, manipulating, sorting, and generating statistics
about the visual data objects.
In addition to the required nodes
and edges
lists, clients can add new custom lists (for example, to manage a
selected subset of the data) by using the addGroup
method
and then accessing the list with the group
method.
Individual data groups can be directly processed by many of the
visualization operators in the flare.vis.operator
package.
While Data objects maintain a collection of visual DataSprites,
they are not themselves visual object containers. Instead a Data
instance is used as input to a Visualization
that
is responsible for processing the DataSprite instances and adding
them to the Flash display list.
The data class also manages the automatic generation of spanning
trees over a graph when needed for tree-based operations (such as tree
layout algorithms). This implemented by a
flare.analytics.graph.SpanningTree
operator which can be
parameterized using the treePolicy
,
treeEdgeWeight
, and root
properties of this
class. Alternatively, clients can create their own spanning trees as
a Tree
See also
| Property | Defined by | ||
|---|---|---|---|
| directedEdges : Boolean The default directedness of new edges.
| Data | ||
| edges : DataList
[read-only] The collection of EdgeSprites.
| Data | ||
| length : int [read-only] The total number of items (nodes and edges) in the data.
| Data | ||
| nodes : DataList
[read-only] The collection of NodeSprites.
| Data | ||
| root : NodeSprite
The root node of the spanning tree.
| Data | ||
| tree : Tree
A spanning tree for this graph.
| Data | ||
| treeEdgeWeight : Function The edge weight function for computing a minimum spanning tree.
| Data | ||
| treePolicy : String The spanning tree creation policy.
| Data |
| Property | Defined by | ||
|---|---|---|---|
| _edges : DataList
Internal list of EdgeSprites.
| Data | ||
| _groups : Object Internal set of data groups.
| Data | ||
| _nodes : DataList
Internal list of NodeSprites.
| Data | ||
| _root : NodeSprite = null The root node of the spanning tree.
| Data | ||
| _span : TreeBuilder
The spanning tree constructor class.
| Data | ||
| _tree : Tree = null The the spanning tree.
| Data |
| Method | Defined by | ||
|---|---|---|---|
|
Data(directedEdges:Boolean = false)
Creates a new Data instance.
| Data | ||
|
Add an edge to this data set.
| Data | ||
|
addEdgeFor(source:NodeSprite, target:NodeSprite, directed:Object = null, data:Object = null):EdgeSprite
Creates a new edge between the given nodes and adds it to the
data collection.
| Data | ||
|
Adds a new data group.
| Data | ||
|
addNode(d:Object = null):NodeSprite
Adds a node to this data collection.
| Data | ||
|
clear():void
Clears this data set, removing all nodes and edges.
| Data | ||
|
contains(d:DataSprite):Boolean
Indicates if this Data object contains the input DataSprite.
| Data | ||
|
createEdges(sortBy:* = null, groupBy:Boolean = null, ignoreExistingEdges:* = false):void
Generates edges for this data collection that connect the nodes
according to the input properties.
| Data | ||
|
[static]
Creates a new Data instance from an array of tuples.
| Data | ||
|
[static]
Creates a new Data instance from a data set.
| Data | ||
|
Retrieves the data group with the given name.
| Data | ||
|
remove(d:DataSprite):Boolean
Removes a DataSprite (node or edge) from this data collection.
| Data | ||
|
removeEdge(e:EdgeSprite):Boolean
Removes an edge from this data set.
| Data | ||
|
removeGroup(name:String):DataList
Removes a data group.
| Data | ||
|
removeNode(n:NodeSprite):Boolean
Removes a node from this data set.
| Data | ||
|
visit(v:Function, group:String = null, filter:Boolean = null, reverse:* = false):Boolean
Visit items, invoking a function on all visited elements.
| Data |
| Method | Defined by | ||
|---|---|---|---|
|
Internal function for creating a new edge.
| Data | ||
|
newNode(data:Object):NodeSprite
Internal function for creating a new node.
| Data |
| Constant | Defined by | ||
|---|---|---|---|
| EDGES : String = "edges" [static] Constant indicating the edges in a Data object.
| Data | ||
| NODES : String = "nodes" [static] Constant indicating the nodes in a Data object.
| Data |
| directedEdges | property |
public var directedEdges:Boolean
The default directedness of new edges.
| _edges | property |
protected var _edges:DataList
Internal list of EdgeSprites.
| edges | property |
edges:DataList
[read-only]The collection of EdgeSprites.
Implementation public function get edges():DataList
| _groups | property |
protected var _groups:Object
Internal set of data groups.
| length | property |
length:int
[read-only]The total number of items (nodes and edges) in the data.
Implementation public function get length():int
| _nodes | property |
protected var _nodes:DataList
Internal list of NodeSprites.
| nodes | property |
nodes:DataList
[read-only]The collection of NodeSprites.
Implementation public function get nodes():DataList
| _root | property |
protected var _root:NodeSprite = null
The root node of the spanning tree.
| root | property |
root:NodeSprite
[read-write]The root node of the spanning tree.
Implementation public function get root():NodeSprite
public function set root(value:NodeSprite):void
| _span | property |
protected var _span:TreeBuilder
The spanning tree constructor class.
| _tree | property |
protected var _tree:Tree = null
The the spanning tree.
| tree | property |
tree:Tree
[read-write]
A spanning tree for this graph. The spanning tree generated is
determined by the root
, treePolicy
,
and treeEdgeWeight
properties. By default, the tree
is built using a breadth-first spanning tree using the first node
in the graph as the root.
public function get tree():Tree
public function set tree(value:Tree):void
| treeEdgeWeight | property |
treeEdgeWeight:Function
[read-write] The edge weight function for computing a minimum spanning tree.
This function will only have an effect if the
treePolicy
is
SpanningTree.MINIMUM_SPAN
public function get treeEdgeWeight():Function
public function set treeEdgeWeight(value:Function):void
| treePolicy | property |
treePolicy:String
[read-write]The spanning tree creation policy.
Implementation public function get treePolicy():String
public function set treePolicy(value:String):void
See also
| Data | () | constructor |
public function Data(directedEdges:Boolean = false)
Creates a new Data instance.
ParametersdirectedEdges:Boolean (default = false ) — the default directedness of new edges
|
| addEdge | () | method |
public function addEdge(e:EdgeSprite):EdgeSprite
Add an edge to this data set. The input must be of type EdgeSprite, and must have both source and target nodes that are already in this data set. If any of these conditions are not met, this method will return null. Note that no exception will be thrown on failures.
Parameterse:EdgeSprite — the EdgeSprite to add
|
EdgeSprite —
the newly added EdgeSprite
|
| addEdgeFor | () | method |
public function addEdgeFor(source:NodeSprite, target:NodeSprite, directed:Object = null, data:Object = null):EdgeSprite
Creates a new edge between the given nodes and adds it to the data collection.
Parameterssource:NodeSprite — the source node (must already be in this data set)
|
|
target:NodeSprite — the target node (must already be in this data set)
|
|
directed:Object (default = null ) — indicates the directedness of the edge (null to
use this Data's default, true for directed, false for undirected)
|
|
data:Object (default = null ) — a data tuple containing data values for the edge
instance. If non-null, this will become the EdgeSprite's
data property.
|
EdgeSprite —
the newly added EdgeSprite
|
| addGroup | () | method |
public function addGroup(name:String, group:DataList = null):DataList
Adds a new data group. If a group of the same name already exists, it will be replaced, except for the groups "nodes" and "edges", which can not be replaced.
Parametersname:String — the name of the group to add
|
|
group:DataList (default = null ) — the data list to add, if null a new,
empty DataList instance will be created.
|
DataList —
the added data group
|
| addNode | () | method |
public function addNode(d:Object = null):NodeSprite
Adds a node to this data collection.
Parametersd:Object (default = null ) — either a data tuple or NodeSprite object. If the input is
a non-null data tuple, this will become the new node's
data property. If the input is a NodeSprite, it will
be directly added to the collection.
|
NodeSprite —
the newly added NodeSprite
|
| clear | () | method |
public function clear():void
Clears this data set, removing all nodes and edges.
| contains | () | method |
public function contains(d:DataSprite):Boolean
Indicates if this Data object contains the input DataSprite.
Parametersd:DataSprite — the DataSprite to check for containment
|
Boolean — true if the sprite is in this data collection, false
otherwise.
|
| createEdges | () | method |
public function createEdges(sortBy:* = null, groupBy:Boolean = null, ignoreExistingEdges:* = false):void
Generates edges for this data collection that connect the nodes according to the input properties. The nodes are sorted by the sort argument and grouped by the group-by argument. All nodes with the same group are sequentially connected to each other in sorted order by new edges. This method is useful for generating line charts from a plot of nodes.
If an edge already exists between nodes, by default this method
will not add a new edge. Use the ignoreExistingEdges
argument to change this behavior.
sortBy:* (default = null ) — the criteria for sorting the nodes, using the format
of flare.util.Sort . The input can either be a string
with a single property name, or an array of property names. Items
are sorted in ascending order by default, prefix a property name
with a "-" (minus) character to sort in descending order.
|
|
groupBy:Boolean (default = null ) — the criteria for grouping the nodes, using the format
of flare.util.Sort . The input can either be a string
with a single property name, or an array of property names. Items
are sorted in ascending order by default, prefix a property name
with a "-" (minus) character to sort in descending order.
|
|
ignoreExistingEdges:* (default = false ) — if false (the default), this method will
not create a new edge if one already exists between two nodes. If
true, new edges will be created regardless.
|
| fromArray | () | method |
public static function fromArray(a:Array):Data
Creates a new Data instance from an array of tuples. The object in the array will become the data objects for NodeSprites.
Parametersa:Array — an Array of data objects
|
Data —
a new Data instance, with NodeSprites populated with the
input data.
|
| fromDataSet | () | method |
public static function fromDataSet(ds:DataSet):Data
Creates a new Data instance from a data set.
Parametersds:DataSet — a DataSet to visualize. For example, this data set may be
loaded using a data converter in the flare.data library.
|
Data —
a new Data instance, with NodeSprites and EdgeSprites
populated with the input data.
|
| group | () | method |
public function group(name:String):DataList
Retrieves the data group with the given name.
Parametersname:String — the name of the group
|
DataList —
the data group
|
| newEdge | () | method |
protected function newEdge(s:NodeSprite, t:NodeSprite, d:Boolean, data:Object):EdgeSprite
Internal function for creating a new edge. Creates an EdgeSprite, sets its data property, and applies default values.
Parameterss:NodeSprite — the source node
|
|
t:NodeSprite — the target node
|
|
d:Boolean — the edge's directedness
|
|
data:Object — the new edge's data property
|
EdgeSprite —
the newly created node
|
| newNode | () | method |
protected function newNode(data:Object):NodeSprite
Internal function for creating a new node. Creates a NodeSprite, sets its data property, and applies default values.
Parametersdata:Object — the new node's data property
|
NodeSprite —
the newly created node
|
| remove | () | method |
public function remove(d:DataSprite):Boolean
Removes a DataSprite (node or edge) from this data collection.
Parametersd:DataSprite — the DataSprite to remove
|
Boolean — true if removed successfully, false if not found
|
| removeEdge | () | method |
public function removeEdge(e:EdgeSprite):Boolean
Removes an edge from this data set. The nodes connected to this edge will have the edge removed from their edge lists.
Parameterse:EdgeSprite — the edge to remove
|
Boolean |
| removeGroup | () | method |
public function removeGroup(name:String):DataList
Removes a data group. An error will be thrown if the caller attempts to remove the groups "nodes" or "edges".
Parametersname:String — the name of the group to remove
|
DataList —
the removed data group
|
| removeNode | () | method |
public function removeNode(n:NodeSprite):Boolean
Removes a node from this data set. All edges incident on this node will also be removed. If the node is not found in this data set, the method returns null.
Parametersn:NodeSprite — the node to remove
|
Boolean |
| visit | () | method |
public function visit(v:Function, group:String = null, filter:Boolean = null, reverse:* = false):Boolean
Visit items, invoking a function on all visited elements.
Parametersv:Function — the function to invoke on each element. If the function
return true, the visitation is ended with an early exit
|
|
group:String (default = null ) — the data group to visit (e.g., NODES or EDGES). If this
value is null, both nodes and edges will be visited.
|
|
filter:Boolean (default = null ) — an optional predicate function indicating which
elements should be visited. Only items for which this function
returns true will be visited.
|
|
reverse:* (default = false ) — an optional parameter indicating if the visitation
traversal should be done in reverse (the default is false).
|
Boolean — true if the visitation was interrupted with an early exit
|
| add | event |
| remove | event |
| EDGES | constant |
public static const EDGES:String = "edges"
Constant indicating the edges in a Data object.
| NODES | constant |
public static const NODES:String = "nodes"
Constant indicating the nodes in a Data object.


--- title: "UI Colors" type: colors scss: src/assets/stylesheets/_variables.scss usage: "Colors used to give the site its base flavor." ---
$background-color
$body-color
$text-color
$headline-color
$link-color
$link-color-hover
$border-color
$highlighter-color


WITNESS LIST Economic Development Committee February 11, 1997-9:00A SB 266 For: Arnett, Brenda (TX Dept. of Commerce), Austin Collins, Tina (NTWBC-Joe Collins Photo), Dallas Pinkus, David R. (Sm. Business United TX), Austin Rodgers, Kelly (TX Bankers Assoc.), Austin Sparks, Ted (Wells Fargo Bank), Irving Whitfield, J.P. (Whitfield Consulting), Austin On: McNeil, Dan (TX Dept. of Commerce), Austin Registering, but not testifying: For: Albright, Jim (TX Dept. of Commerce), Austin Cavazos, Eddie (TAMACC), Austin Erber, Randy (Independent Business), Austin Jennings, Deloyd (TAAAC), Ft.Worth Jud-Canalas, Theresa (NTWBC), Dallas Kamm, Robert (Tx Assn of Business), Austin Morin, Joe H. (Mex-American Chambers), Austin Neeley, Karen (Independent Bankers), Austin


Hi <%= @user_name %> ,
Your order <%= @order_number %> has been updated with all the changes you have discussed with us.
You can download your order here.
Note from Shanya
Your Audio Specialist
Dear Shopper,
I trust that everything will be to your instructions. If there is anything else I may help you with just reply to this email. If you have a minute to spare please consider leaving us a review here: https://www.facebook.com/musicradiocreative/reviews/ - it always means a lot to the whole team to hear back from our customers.
Shayna Smith
Head Of Customer Experience
<EMAIL_ADDRESS>If you're looking for someone to help with your next audio project I am your girl! Contact me anytime, I am usually nearby, as it's most likely raining. I am a workaholic so don't be surprised if you email me late at night and you get a reply straight back. So lets create awesome audio for your next project!