This section records information for easy reference.
The unit system used throughout is SI (Système International d'Unités). In addition to the basic units, several derived units are also used. For each unit, Tab: ToU lists the symbol, a description and the SI name.
| Symbol | Description | SI Name |
|---|---|---|
| J | energy | joule |
| kg | mass | kilogram |
| m | length | metre |
| N | force | newton |
| rad | angle | radian |
| s | time | second |
The symbols used in this document are summarized in Tab: ToS along with their units. Throughout the document, symbols in bold will represent vectors, and scalars otherwise. The symbols are listed in alphabetical order. For vector quantities, the units shown are for each component of the vector.
| Symbol | Description | Units |
|---|---|---|
| a | Acceleration | m/s2 |
| a(t) | Linear Acceleration | m/s2 |
| ai | The I-Th Body's Acceleration | m/s2 |
| CR | Coefficient of restitution | -- |
| F | Force | N |
| F1 | Force exerted by the first body (on another body) | N |
| F2 | Force exerted by the second body (on another body) | N |
| Fi | Force Applied to the I-Th Body at Time T | N |
| G | Gravitational constant | m3/(kg⋅s2) |
| g | Gravitational acceleration | m/s2 |
| h | Height | m |
| I | Moment of inertia | kg⋅m2 |
| IA | Moment of Inertia Of Rigid Body A | kg⋅m2 |
| IB | Moment of Inertia Of Rigid Body B | kg⋅m2 |
| J | Impulse (vector) | N⋅s |
| j | Impulse (scalar) | N⋅s |
| KE | Kinetic energy | J |
| L | Length | m |
| M | Total Mass of the Rigid Body | kg |
| m | Mass | kg |
| m1 | Mass of the first body | kg |
| m2 | Mass of the second body | kg |
| mA | Mass Of Rigid Body A | kg |
| mB | Mass Of Rigid Body B | kg |
| mj | Mass Of the J-Th Particle | kg |
| n | Collision Normal Vector | m |
| PE | Potential energy | J |
| p | Position | m |
| pCM | Center of Mass | m |
| pj | Position Vector of the J-Th Particle | m |
| rj | Distance Between the J-Th Particle and the Axis of Rotation | m |
| r | Displacement | m |
| r(t) | Linear Displacement | m |
| rOB | Displacement vector between the origin and point B | m |
| r̂ | Displacement unit vector | m |
| t | Time | s |
| tc | Denotes the time at collision | s |
| v | Velocity | m/s |
| Δv | Change in velocity | m/s |
| v(t) | Linear Velocity | m/s |
| vAP | Velocity Of the Point of Collision P in Body A | m/s |
| vBP | Velocity Of the Point of Collision P in Body B | m/s |
| v1 | Velocity Of the First Body | m/s |
| v2 | Velocity Of the Second Body | m/s |
| vA | Velocity At Point A | m/s |
| vB | Velocity At Point B | m/s |
| vfAB | Final Relative Velocity Between Rigid Bodies of A and B | m/s |
| vi | Velocity Of the I-Th Body's Velocity | m/s |
| viAB | Initial Relative Velocity Between Rigid Bodies of A and B | m/s |
| vO | Velocity At Point Origin | m/s |
| ||n|| | Length of the Normal Vector | m |
| ||r|| | Euclidean norm of the displacement | m |
| ||rAP*n|| | Length of the Perpendicular Vector To the Contact Displacement Vector of Rigid Body A | m |
| ||rBP*n|| | Length of the Perpendicular Vector To the Contact Displacement Vector of Rigid Body B | m |
| ||r||2 | Squared distance | m2 |
| α | Angular Acceleration | rad/s2 |
| θ | Angular Displacement | rad |
| τ | Torque | N⋅m |
| τi | Torque applied to the i-th body | N⋅m |
| ω | Angular Velocity | rad/s |
| ϕ | Orientation | rad |
| Abbreviation | Full Form |
|---|---|
| 2D | Two-Dimensional |
| 3D | Three-Dimensional |
| A | Assumption |
| CM | Centre of Mass |
| Chipmunk2D | Chipmunk2D game physics library |
| DD | Data Definition |
| GD | General Definition |
| GS | Goal Statement |
| IM | Instance Model |
| LC | Likely Change |
| ODE | Ordinary Differential Equation |
| R | Requirement |
| SRS | Software Requirements Specification |
| TM | Theoretical Model |
| UC | Unlikely Change |
| Uncert. | Typical Uncertainty |
Due to the rising cost of developing video games, developers are looking for ways to save time and money for their projects. Using an open source physics library that is reliable and free will cut down development costs and lead to better quality products.
The following section provides an overview of the Software Requirements Specification (SRS) for Chipmunk2D. This section explains the purpose of this document, the scope of the system, the characteristics of the intended reader, and the organization of the document.
This document describes the modeling of an open source 2D rigid body physics library used for games. The theoretical models and goal statements used in Chipmunk2D are provided. This document is intended to be used as a reference to provide all necessary information to understand and verify the model.
This document will be used as a starting point for subsequent development phases, including writing the design specification and the software verification and validation plan. The design document will show how the requirements are to be realized, including decisions on the numerical algorithms and programming environment. The verification and validation plan will show the steps that will be used to increase confidence in the software documentation and the implementation. Although the SRS fits in a series of documents that follow the so-called waterfall model, the actual development process is not constrained in any way. Even when the waterfall model is not followed, as Parnas and Clements point out parnasClements1986, the most logical way to present the documentation is still to "fake" a rational design process.
The scope of the requirements includes the physical simulation of 2D rigid bodies acted on by forces.
Reviewers of this documentation should have an understanding of rigid body dynamics and high school calculus. The users of Chipmunk2D can have a lower level of expertise, as explained in Section: User Characteristics.
The organization of this document follows the template for an SRS for scientific computing software proposed by dParnas1972 and parnasClements1984. The presentation follows the standard pattern of presenting goals, theories, definitions, and assumptions. For readers that would like a more bottom up approach, they can start reading the instance models in Section: Instance Models and trace back to find any additional information they require.
The goal statements (Section: Goal Statements) are refined to the theoretical models and the theoretical models (Section: Theoretical Models) to the instance models (Section: Instance Models).
This section provides general information about the system. It identifies the interfaces between the system and its environment, describes the user characteristics, and lists the system constraints.
Fig:sysCtxDiag shows the system context. A circle represents an external entity outside the software, the user in this case. A rectangle represents the software system itself (Chipmunk2D). Arrows are used to show the data flow between the system and its environment.
The interaction between the product and the user is through an application programming interface. The responsibilities of the user and the system are as follows:
The end user of Chipmunk2D should have an understanding of first year programming concepts and an understanding of high school physics.
There are no system constraints.
This section first presents the problem description, which gives a high-level view of the problem to be solved. This is followed by the solution characteristics specification, which presents the assumptions, theories, and definitions that are used.
A system is needed to create a simple, lightweight, fast, and portable 2D rigid body physics library, which will allow for more accessible game development and the production of higher quality products. Creating a gaming physics library is a difficult task. Games need physics libraries that simulate objects acting under various physical conditions, while simultaneously being fast and efficient enough to work in soft real-time during the game. Developing a physics library from scratch takes a long period of time and is very costly, presenting barriers of entry which make it difficult for game developers to include physics in their products. There are a few free, open source and high quality physics libraries available to be used for consumer products (Section: Off-The-Shelf Solutions).
This subsection provides a list of terms that are used in the subsequent sections and their meaning, with the purpose of reducing ambiguity and making it easier to correctly understand the requirements.
Given the kinematic properties, and forces including any (collision forces) applied on a set of rigid bodies, the goal statements are:
The instance models that govern Chipmunk2D are presented in Section: Instance Models. The information to understand the meaning of the instance models and their derivation is also presented, so that the instance models can be verified.
This section simplifies the original problem and helps in developing the theoretical models by filling in the missing information for the physical system. The assumptions refine the scope by providing more detail.
This section focuses on the general equations and laws that Chipmunk2D is based on.
| Refname | TM:NewtonSecLawMot |
|---|---|
| Label | Newton's second law of motion |
| Equation |
F = m a
|
| Description | |
| Notes |
The net force F (N) on a body is proportional to the acceleration a (m/s2) of the body, where m (kg) denotes the mass of the body as the constant of proportionality. |
| Source | -- |
| RefBy |
| Refname | TM:NewtonThirdLawMot |
|---|---|
| Label | Newton's third law of motion |
| Equation |
F1 = −F2
|
| Description | |
| Notes |
Every action has an equal and opposite reaction. In other words, the force F1 (N) exerted on the second rigid body by the first is equal in magnitude and in the opposite direction to the force F2 (N) exerted on the first rigid body by the second. |
| Source | -- |
| RefBy |
| Refname | TM:UniversalGravLaw |
|---|---|
| Label |
Newton's law of universal gravitation |
| Equation |
F = G
m1 m2
||r||2
r̂ = G
m1 m2
||r||2
r
||r||
|
| Description | |
| Notes |
Two rigid bodies in the universe attract each other with a force F (N) that is directly proportional to the product of their masses, m1 and m2 (kg), and inversely proportional to the squared distance ||r||2 (m2) between them. The vector r (m) is the displacement between the centres of the rigid bodies and ||r|| (m) represents the Euclidean norm of the displacement, or absolute distance between the two. r̂ denotes the displacement unit vector, equivalent to the displacement divided by the Euclidean norm of the displacement, as shown above. Finally, G is the gravitational constant (6.673 * 10E-11) (m3/(kg⋅s2)). |
| Source | -- |
| RefBy |
| Refname | TM:ChaslesThm |
|---|---|
| Label | Chasles' theorem |
| Equation |
vB = vO+ω⨯rOB
|
| Description | |
| Notes |
The linear velocity vB (m/s) of any point B in a rigid body A: objectTy is the sum of the linear velocity vO (m/s) of the rigid body at the origin (axis of rotation) and the resultant vector from the cross product of the rigid body's angular velocity ω (rad/s) and the displacement vector between the origin and point B, rOB (m). |
| Source | -- |
| RefBy |
| Refname | TM:NewtonSecLawRotMot |
|---|---|
| Label |
Newton's second law for rotational motion |
| Equation | τ = I α |
| Description | |
| Notes |
The net torque τ (N⋅m) on a rigid body is proportional to its angular acceleration α (rad/s2). Here, I (kg⋅m2) denotes the moment of inertia of the rigid body. We also assume that all rigid bodies involved are two-dimensional A: objectDimension. |
| Source | -- |
| RefBy |
There are no general definitions.
This section collects and defines all the data needed to build the instance models.
| Refname | DD:ctrOfMass |
|---|---|
| Label | Center of Mass |
| Symbol | pCM |
| Units | m |
| Equation |
pCM =
∑mj pj
M
|
| Description | |
| Notes | |
| Source | -- |
| RefBy |
| Refname | DD:linDisp |
|---|---|
| Label | Linear Displacement |
| Symbol | r(t) |
| Units | m |
| Equation |
r(t) =
dp(t)
dt
|
| Description | |
| Notes | |
| Source | -- |
| RefBy |
| Refname | DD:linVel |
|---|---|
| Label | Linear Velocity |
| Symbol | v(t) |
| Units | m/s |
| Equation |
v(t) =
dr(t)
dt
|
| Description | |
| Notes | |
| Source | -- |
| RefBy |
| Refname | DD:linAcc |
|---|---|
| Label | Linear Acceleration |
| Symbol | a(t) |
| Units | m/s2 |
| Equation |
a(t) =
dv(t)
dt
|
| Description | |
| Notes | |
| Source | -- |
| RefBy |
| Refname | DD:angDisp |
|---|---|
| Label | Angular Displacement |
| Symbol | θ |
| Units | rad |
| Equation |
θ =
dϕ(t)
dt
|
| Description | |
| Notes | |
| Source | -- |
| RefBy |
| Refname | DD:angVel |
|---|---|
| Label | Angular Velocity |
| Symbol | ω |
| Units | rad/s |
| Equation |
ω =
dθ(t)
dt
|
| Description | |
| Notes | |
| Source | -- |
| RefBy |
| Refname | DD:angAccel |
|---|---|
| Label | Angular Acceleration |
| Symbol | α |
| Units | rad/s2 |
| Equation |
α =
dω(t)
dt
|
| Description | |
| Notes | |
| Source | -- |
| RefBy |
| Refname | DD:impulse |
|---|---|
| Label | Impulse (scalar) |
| Symbol | j |
| Units | N⋅s |
| Equation |
j =
−(1+CR) viAB⋅n
(
1
mA
+
1
mB
) ||n||2+
||rAP*n||2
IA
+
||rBP*n||2
IB
|
| Description | |
| Notes | |
| Source | -- |
| RefBy |
| Refname | DD:chalses |
|---|---|
| Label | Velocity At Point B |
| Symbol | vB |
| Units | m/s |
| Equation |
vB = vO+ω⨯rOB
|
| Description | |
| Notes |
The linear velocity vB (m/s) of any point B in a rigid body A: objectTy is the sum of the linear velocity vO (m/s) of the rigid body at the origin (axis of rotation) and the resultant vector from the cross product of the rigid body's angular velocity ω (rad/s) and the displacement vector between the origin and point B, rOB (m). |
| Source | -- |
| RefBy |
| Refname | DD:torque |
|---|---|
| Label | Torque |
| Symbol | τ |
| Units | N⋅m |
| Equation |
τ = r⨯F
|
| Description | |
| Notes |
The torque on a body measures the the tendency of a force to rotate the body around an axis or pivot. |
| Source | -- |
| RefBy |
| Refname | DD:kEnergy |
|---|---|
| Label | Kinetic energy |
| Symbol | KE |
| Units | J |
| Equation |
KE =
m v2
2
|
| Description | |
| Notes |
The kinetic energy of an object is the energy it possess due to its motion. |
| Source | -- |
| RefBy |
| Refname | DD:coeffRestitution |
|---|---|
| Label | Coefficient of restitution |
| Symbol | CR |
| Units | Unitless |
| Equation |
CR = −(
vfAB⋅n
viAB⋅n
)
|
| Description | |
| Notes |
The coefficient of restitution CR is a unitless, dimensionless quantity that determines the elasticity of a collision between two rigid bodies. CR = 1 results in an elastic collision, while CR < 1 results in an inelastic collision, and CR = 0 results in a totally inelastic collision. |
| Source | -- |
| RefBy |
| Refname | DD:reVeInColl |
|---|---|
| Label |
Initial Relative Velocity Between Rigid Bodies of A and B |
| Symbol |
viAB |
| Units | m/s |
| Equation |
viAB = vAP−vBP
|
| Description | |
| Notes |
In a collision, the velocity of a rigid body A: objectTy A colliding with another rigid body B relative to that body viAB is the difference between the velocities of A and B at point P. |
| Source | -- |
| RefBy |
| Refname | DD:impulseV |
|---|---|
| Label | Impulse (vector) |
| Symbol | J |
| Units | N⋅s |
| Equation |
J = m Δv
|
| Description | |
| Notes |
An impulse (vector) J occurs when a force F acts over a body over an interval of time. |
| Source | -- |
| RefBy |
Newton's second law of motion states:
Rearranging :
Integrating the right hand side :
| Refname | DD:potEnergy |
|---|---|
| Label | Potential energy |
| Symbol | PE |
| Units | J |
| Equation |
PE = m g h
|
| Description | |
| Notes |
The potential energy of an object is the energy held by an object because of its position to other objects. |
| Source | -- |
| RefBy |
| Refname | DD:momentOfInertia |
|---|---|
| Label | Moment of inertia |
| Symbol | I |
| Units | kg⋅m2 |
| Equation |
I = ∑mj rj2
|
| Description | |
| Notes |
The moment of inertia I of a body measures how much torque is needed for the body to achieve angular acceleration about the axis of rotation. |
| Source | -- |
| RefBy |
This section transforms the problem defined in Section: Problem Description into one which is expressed in mathematical terms. It uses concrete symbols defined in Section: Data Definitions to replace the abstract symbols in the models identified in Section: Theoretical Models and Section: General Definitions.
The goal GS: Determine-Linear-Properties is met by IM: transMot and IM: col2D. The goal GS: Determine-Angular-Properties is met by IM: rotMot and IM: col2D.
| Refname | IM:transMot |
|---|---|
| Label |
Force on the translational motion of a set of 2d rigid bodies |
| Input |
vi, t, g, Fi, mj |
| Output | ai |
| Input Constraints |
vi > 0
t > 0
g > 0
Fi > 0
mj > 0
|
| Output Constraints | |
| Equation |
ai =
dvi(t)
dt
= g+
Fi(t)
mj
|
| Description | |
| Notes |
The above equation expresses the total acceleration of the rigid body A: objectTy A: objectDimension i as the sum of gravitational acceleration (GD3) and acceleration due to applied force Fi(t) (T1). The resultant outputs are then obtained from this equation using DD: linDisp DD: linVel DD: linAcc. It is currently assumed that there is no damping A: dampingInvolvement or constraints A: constraintsAndJointsInvolvement involved. DD: ctrOfMass. |
| Source | -- |
| RefBy |
| Refname | IM:rotMot |
|---|---|
| Label |
Force on the rotational motion of a set of 2D rigid body |
| Input |
ω, t, τi, I |
| Output | α |
| Input Constraints |
ω > 0
t > 0
τi > 0
I > 0
|
| Output Constraints |
α > 0
|
| Equation |
α =
dω(t)
dt
=
τi(t)
I
|
| Description | |
| Notes |
The above equation for the total angular acceleration of the rigid body A: objectTy A: objectDimension i is derived from T5, and the resultant outputs are then obtained from this equation using DD: angDisp DD: angVel DD: angAccel. It is currently assumed that there is no damping A: dampingInvolvement or constraints A: constraintsAndJointsInvolvement involved. A: axesDefined |
| Source | -- |
| RefBy |
| Refname | IM:col2D |
|---|---|
| Label | Collisions on 2D rigid bodies |
| Input |
t, j, mA, n |
| Output | tc |
| Input Constraints |
t > 0
j > 0
mA > 0
n > 0
|
| Output Constraints |
vA > 0
tc > 0
|
| Equation |
vA(tc) = vA(t)+
j
mA
n
|
| Description | |
| Notes |
This instance model is based on our assumptions regarding rigid body A: objectTy A: objectDimension collisions A: collisionType Again, this does not take damping A: dampingInvolvement or constraints A: constraintsAndJointsInvolvement into account. A: axesDefined. DD: ctrOfMass DD: impulse |
| Source | -- |
| RefBy |
Table:InDataConstraints shows the data constraints on the input variables. The column for physical constraints gives the physical limitations on the range of values that can be taken by the variable. The uncertainty column provides an estimate of the confidence with which the physical quantities can be measured. This information would be part of the input if one were performing an uncertainty quantification exercise. The constraints are conservative, to give the user of the model the flexibility to experiment with unusual situations. The column of typical values is intended to provide a feel for a common scenario. FIXME
| Var | Physical Constraints | Typical Value | Uncert. |
|---|---|---|---|
| CR | 0 ≤ CR ≤ 1 | 0.8 | 10% |
| F | -- | 98.1 N | 10% |
| G | -- | 9.8 m3/(kg⋅s2) | 10% |
| I | I ≥ 0 | 74.5 kg⋅m2 | 10% |
| L | L ≥ 0 | 44.2 m | 10% |
| m | m ≥ 0 | 56.2 kg | 10% |
| p | -- | 0.412 m | 10% |
| v | -- | 2.51 m/s | 10% |
| τ | -- | 200.0 N⋅m | 10% |
| ω | -- | 2.1 rad/s | 10% |
| ϕ | -- |
π
2
rad
|
10% |
Table:OutDataConstraints shows the data constraints on the output variables. The column for physical constraints gives the physical limitations on the range of values that can be taken by the variable.
| Var |
|---|
| p |
| v |
| ϕ |
| ω |
This section provides the functional requirements, the tasks and behaviours that the software is expected to complete, and the non-functional requirements, the qualities that the software is expected to exhibit.
This section provides the functional requirements, the tasks and behaviours that the software is expected to complete.
This section provides the non-functional requirements, the qualities that the software is expected to exhibit.
This section lists the likely changes to be made to the software.
This section lists the unlikely changes to be made to the software.
As mentioned in Section: Problem Description, there already exist free open source game physics libraries. Similar 2D physics libraries are:
Free open source 3D game physics libraries include:
The purpose of the traceability matrices is to provide easy references on what has to be additionally modified if a certain component is changed. Every time a component is changed, the items in the column of that component that are marked with an "X" should be modified as well. Table:TraceMatAvsAll shows the dependencies of data definitions, theoretical models, general definitions, instance models, requirements, likely changes, and unlikely changes on the assumptions. Table:TraceMatRefvsRef shows the dependencies of data definitions, theoretical models, general definitions, and instance models with each other. Table:TraceMatAllvsR shows the dependencies of requirements, goal statements on the data definitions, theoretical models, general definitions, and instance models.
There are no auxiliary constants.


Body believed to be one of the missing divers found off Indonesia's Sumatra island, family to identify remains
by Nivell RaydaJAKARTA: Local fishermen have discovered a body believed to be one of the three foreign divers on Monday (Nov 11), more than a week after they went missing off the coast of Java, an official confirmed.
The body was discovered at 6.15am at 8 nautical miles off the coast of Kotodjawa, Lampung province, in western Sumatra.
The location is more than 200km away from Sangiang Island in Java’s Banten province, where the three divers were last spotted on Nov 3.
“The fishermen contacted the local Basarnas (Search and Rescue Agency) officials, who then recovered the body and brought it to the nearest health clinic,” Mr Muhammad Zaenal, chief of Banten Basarnas, told CNA.
A helicopter has been deployed to take the body to the National Police Hospital in Jakarta for identification and a possible autopsy, he added.
Family of the three missing divers have been told to go to the hospital to identify the body.
The three missing divers have been identified as Singaporean Wan Bing Yang and two Chinese nationals Qin Xue Tao and Tian Yu.
Mr Zaenal said the rescuers believed the body was one of the missing divers because it was found wearing diving equipment and gear.
“He might have been swept away by the strong undercurrent,” he said.
“If it is indeed one of the missing divers, we will focus our search in the area.”
As of Sunday afternoon, about 200 rescuers have combed more than 27,000 sq km of the Sunda Strait separating the western coast of Java and southern coast of Sumatra.
READ: Missing divers including Singaporean did not consult local guides on sea conditions: Indonesian rescue official
Mr Zaenal said on Monday that rescuers did not anticipate the missing divers would drift all the way to Kotodjaya.
With the discovery, the team could extend the search and rescue mission which was supposed to end on Tuesday, the Basarnas chief added.


- i - Variable in class launchpad_s_plus.DisplayBlink
-
- i - Static variable in class tech_demo.Metronome
-
- IdleAnimations - Class in tech_demo
-
This class will implement subtle animations that will play when the program
has been running on the main GUI screen with no game or tech demo running for
a while (probably 30 seconds).
- IdleAnimations() - Constructor for class tech_demo.IdleAnimations
-
Constructor for Idle Animations
- IdleAnimations(boolean) - Constructor for class tech_demo.IdleAnimations
-
Used for setting the link to the Observable
- idleDelay() - Method in class tech_demo.IdleAnimations
-
Returns after a delay calculated between 1 and 4 seconds
- incrementAnimationsCalled() - Static method in class tech_demo.Animation
-
Increments the current session's number of Animations called
- incrementDemosRan() - Static method in class tech_demo.TechDemo
-
Increments the amount of Demos ran
- incrementGamesPlayed() - Static method in class games.Game
-
Increments the current session's number of games played
- incrementGenerations() - Static method in class games.GameOfLife
-
Increments the current generation value
- incrementPadsLit() - Static method in class launchpad_s_plus.DisplayPad
-
Increments the current session's Pad Lit statistic
- incrementPadsPressed() - Static method in class launchpad_s_plus.ReceiveMidiMessage
-
Increments the number of the current session's Pads Pressed and updates
the statistics
- incrementPadsShut() - Static method in class launchpad_s_plus.DisplayPad
-
Increments the current session's Pads Shut statistic
- incrementPopulation() - Static method in class games.GameOfLife
-
Increments the live population
- incrementRemaining() - Static method in class games.LightsOut
-
Increments the remaining ON light cells
- incrementScore() - Method in class games.Simon
-
Increments the player's score and updates the GUI
- incrementSimultaneous() - Static method in class tech_demo.Animation
-
Increments the number of simultaneous particles for the animation
- incrementTurns() - Static method in class games.LightsOut
-
Increments the amount of turns taken by the player
- infoPanel - Static variable in class gui.AnimationGUI
-
- infoPanel - Static variable in class gui.LightsOutGUI
-
- infoPanel - Static variable in class gui.PianoGUI
-
- infoPanel - Static variable in class gui.ReactionGameGUI
-
- infoPanel - Static variable in class gui.ReactiveDemoGUI
-
- infoPanel - Static variable in class gui.SimonGUI
-
- infoPanel - Static variable in class gui.SnakeGUI
-
- initialize() - Method in class gui.AnimationGUI
-
Initialize the contents of the frame.
- initialize() - Static method in class gui.CheckersGUI
-
Initialize the contents of the frame.
- initialize() - Method in class gui.Error
-
Initialize the contents of the frame.
- initialize() - Static method in class gui.GameOfLifeGUI
-
Sets the window position and dimenstions
- initialize() - Static method in class gui.LightsOutGUI
-
Sets the window position and dimenstions
- initialize() - Method in class gui.Main
-
Initialize the contents of the frame.
- initialize() - Method in class gui.PianoGUI
-
Sets the window position and dimenstions
- initialize() - Static method in class gui.ReactionGameGUI
-
Initialize the contents of the frame.
- initialize() - Method in class gui.ReactiveDemoGUI
-
Initialize the contents of the frame.
- initialize() - Static method in class gui.SimonGUI
-
Sets the window position and dimenstions
- initialize() - Static method in class gui.SnakeGUI
-
Sets the window position and dimenstions
- initialize() - Method in class gui.StatisticsGUI
-
Sets the window position and dimensions
- initialize() - Static method in class gui.TextScrollGUI
-
Sets the window position and dimenstions
- initializeCards() - Method in class gui.Main
-
Initializes the contents of the application cards
- initiation() - Static method in class launchpad_s_plus.Program
-
Initiates the program: sets the connection to the Launchpad S
- initPadX - Variable in class tech_demo.Line
-
- initPadY - Variable in class tech_demo.Line
-
- inPlayer1() - Method in class games.Checkers
-
Asks player 1 to play.
- inPlayer2() - Method in class games.Checkers
-
Asks player 2 to play
- inPort - Static variable in class launchpad_s_plus.SetupProcess
-
- Input - Class in launchpad_s_plus
-
Class used to determine input from the Launchpad S
- Input() - Constructor for class launchpad_s_plus.Input
-
- insertString(int, String, AttributeSet) - Method in class gui.JTextFieldLimit
-
- instanceRunning - Static variable in class tech_demo.TechDemo
-
- intense - Variable in class launchpad_s_plus.DisplayBlink
-
- intense - Static variable in class tech_demo.Metronome
-
- intense2 - Variable in class launchpad_s_plus.DisplayBlink
-
- intense2 - Static variable in class tech_demo.Metronome
-
- intense3 - Variable in class launchpad_s_plus.DisplayBlink
-
- intensity - Static variable in class gui.TextScrollGUI
-
- intensity - Variable in enum piano.Piano.CONTROLS
-
- intensity - Variable in class tech_demo.Line
-
- intensity - Static variable in class tech_demo.ScrollingText
-
- intensityLabel - Static variable in class gui.TextScrollGUI
-
- intensityPanel - Static variable in class gui.TextScrollGUI
-
- introLights() - Method in class games.ReactionGame
-
Turns on lights at the beginning of the round
- intToHex(int) - Static method in class midiInDump.DumpReceiver
-
- isAccessible() - Method in class games.Checkers2.CheckerCell
-
- isAlive(int, int) - Static method in class games.GameOfLife
-
Returns whether the cell indicated by the input parameters is live of
dead
- isCC - Variable in class launchpad_s_plus.DisplayPad
-
- isClosing() - Static method in class gui.Main
-
Returns true if there is a sub program currently quitting
- isCommand(int, int) - Method in class games.Checkers
-
Returns true if the pad located by the given parameters is a Command pad,
meaning not part of the game area
- isEmpty() - Method in class games.Checkers2.CheckerCell
-
- isEnemy(int, int, int) - Method in class games.Checkers
-
Returns true if the pad at X and Y locations given is enemy to the player
given
- isEnemy(Checkers2.CheckerCell) - Method in class games.Checkers2.CheckerCell
-
- isKing(int, int) - Method in class games.Checkers
-
Returns true if the piece located by the given parameters is a King piece
- isKing - Variable in class games.Checkers2.CheckerCell
-
- isLegalKingMove(int, int, int, int, int) - Method in class games.Checkers
-
Checks if the player is allowed to move to the designated location from
his initial location.
- isLegalMove(int, int, int) - Method in class games.Checkers
-
Checks if the location [x][y] is an empty slot and returns true if it is
- isLegalMove(int, int, int, int, int) - Method in class games.Checkers
-
Checks if the player is allowed to move to the designated location from
his initial location.
- isLegalMove(int, int, int, int, int) - Method in class games.Checkers2
-
- isPlaying - Static variable in class games.ReactionGame
-
- isPlaying - Static variable in class games.Simon
-
- isPlaying - Static variable in class piano.Piano
-
- isPlaying - Static variable in class piano.PianoKey
-
- isPressed - Static variable in class launchpad_s_plus.Input
-
- isRunning() - Static method in class games.Game
-
Returns true if there is a game running
- isRunning - Static variable in class piano.Piano
-
- isRunning() - Static method in class piano.Piano
-
Returns true if the Piano demo is running
- isRunning - Static variable in class tech_demo.Animation
-
- isRunning() - Static method in class tech_demo.Animation
-
Checks there is an animation running
- isRunning - Static variable in class tech_demo.IdleAnimations
-
- isRunning() - Static method in class tech_demo.IdleAnimations
-
Returns true if the idle animations are still being generated, false
otherwise
- isRunning - Static variable in class tech_demo.ReactiveDemo
-
- isRunning() - Static method in class tech_demo.ReactiveDemo
-
Returns true if the Reactive Demo is still running, false otherwise
- isSameTeam(Checkers2.CheckerCell) - Method in class games.Checkers2.CheckerCell
-
- isSustained - Static variable in class piano.Piano
-
- isText - Variable in class launchpad_s_plus.DisplayPad
-


Latest on road closures due to fires
by Janene CareyWaterfall Way remains closed in both directions between Ebor and Wollomombi due to the fire that police allege was deliberately lit on Thursday.
The advice is to use the Gwydir Highway between Grafton and Glen Innes as an alternative route.
The Guyra Road between Ebor and Aberfoyle is also closed because of the same fire.
Another bushfire has closed Armidale Rd between Clouds Creek and Coutts Crossing but Live Traffic notes that residents may be able to access townships under the discretion of emergency services.
Summerland Way is closed in both directions between Casino and Mountain View near Grafton due to a bushfire..
Motorists are advised to avoid the area. Motorists who need to travel can use the Pacific Highway instead.
Bungawalbin-Whiporie Road remains closed between Whiporie and Bungawalbin.
Other road closures remain in place due to bushfires including:
- Colo to Milbrodale - Putty Road is closed
- St Albans to Webbs Creek - St Albans Road is closed
- Webbs Creek to Leets Vale - Bicentenary Road is closed
- Walcha to Long Flat - the Oxley Highway remains closed
- Ebor to Wollomombi - Waterfall Way is closed
- Ebor to Aberfoyle - Guyra Road is closed
- Buccarumbi to Newton Boyd - Old Glen Innes Road is closed
- Clouds Creek to Coutts Crossing - Armidale Road is closed
- Nowendoc to Rookhurst - Thunderbolts Way is closed
- Nowendoc to Knorrit Flat - Nowendoc Road is closed
- Comboyne to Killabakh - Comboyne Road/Wingham Road is closed
- Comboyne to Upper Lansdowne - Koppin Yarratt Road is closed
- Telegraph Point - Red Hill Road is closed
- Lower Creek to Bellbrook - Kempsey Road / Armidale Road is closed
- Upper Fine Flower to Baryulgil - Clarence Way is closed
- Grevillia to Rathdowney (across the Queensland border) - Summerland Way and Mount Lindesay Highway are closed
Motorists are reminded that conditions can change quickly. Motorists should follow directions of emergency services and traffic crews.
For the latest traffic information, visit www.livetraffic.com, download the Live Traffic NSW app or call 132 701.


{% extends 'base.html' %} {% block title %}Thank You{% endblock %} {% block content %} A big thank you to the following people who have transcribed and checked the records. (These names have been extracted from the transcription sheets which is why there may be multiple versions of the same name.) Transcribers {{ transcribers|join(', ')|safe}} Checkers {{ checkers|join(', ')|safe}} {% endblock %}
A big thank you to the following people who have transcribed and checked the records.
(These names have been extracted from the transcription sheets which is why there may be multiple versions of the same name.)


Number of Variables.
Match properties in your data to visual properties in your visualization (ie: position, size, color, value, etc).
Range of Variables.
Choose an appropriate visual variable that scales properly with the range of your data field (ie: black to white, color over spectrum, width/height, etc).
Comparison Between Variables.
Consider accommodating for unexpected patterns to appear between different variables, and choosing the right visual representation to present comparisons.


Applied Scientist - Berkeley, CA
- Masters degree in Computer Science, Engineering, Mathematics or related discipline.
- PhD in one of above disciplines, OR at least 4 years of experience with machine learning systems.
- At least 2 years of experience building web based production software.
- Hands on development experience in C++, Java, and Python.
Amazon is an Equal Opportunity-Affirmative Action Employer – Minority / Female / Disability / Veteran / Gender Identity / Sexual Orientation
Next Generation of Amazon Search
Amazon is the 4th most popular site in the US (source:
http://www.alexa.com/topsites/countries/US). Our product search engine,
one of the most heavily used services in the world, indexes billions of
products and serves hundreds of millions of customers world-wide. We are
working on a new initiative to transform our search engine into a
shopping engine that assists customers with their shopping
missions. We’re looking at every aspect of search, from query
understanding to front-end UX, ranking and relevance, indexing and
tiering and asking how we can make big, step improvements by applying
advanced Machine Learning (ML) and Deep Learning (DL) techniques. This is a rare opportunity to develop cutting edge ML solutions and apply
them to a search problem of this magnitude. Some exciting questions that
we expect to answer over the next few years include:
- Can we deeply understand customer intent and personalize their search
experience even when they type broad queries such as “dress” or
“espresso machine”?
- Can we reduce the cost of serving customer queries on Amazon by two
orders of magnitude using ML to predict n-grams and tuples that many
queries decompose into, apply expensive ranking functions offline to
identify the most relevant products that match these terms, and index
these for efficient online retrieval? We expect this to lead to exciting
research at the intersection of systems and ML.
- Can we deeply understand the catalog to surface products that offer
the most value to a customer? The challenge here is that the definition
of value is subjective and personal, and therefore requires a deeper
understanding of the customers intent as well as preferences.
- Can we increase the experimental velocity of Customer Experience (CX)
experiments by two orders of magnitude? Achieving this will enable us to
rapidly try various CX treatments, and contextualize the CX based on
factors such as customer intent and device.
- Can we use deep learning to transfer behavioral signals from
frequently purchased products in the head to products in the tail where
behavioral signals are sparse? The challenge here is the scale, and the
fact that the head and torso contain only a small fraction of products
while the tail contains an overwhelmingly large fraction of the products
in the catalog.
We are looking to hire ML Applied Scientists at all levels, with experience in Search, Personalization, NLP, Systems, ML, DL and UI Design. Internship opportunities are also available throughout the year and we are flexible about duration and start dates. You will be working alongside world-class researchers and engineers to build next generation search systems and will be able to deploy your ML models into production. Our team is proud of its collaborative and open research environment, where long term thinking and risk taking are highly rewarded. We value academic collaborations and encourage our scientists and engineers to participate and publish in top conferences such as NIPS, ICML, KDD, SIGIR and WWW.
Positions are available in the new Amazon office in Berkeley, CA.
. PhD in Computer Science, Electrical Engineering, Statistics, Applied Mathematics or related field.
- Strong Computer Science fundamentals in machine learning, data structures, algorithm design and complexity analysis.
- Experience with web-scale data processing.
- Strong fundamentals in applied statistics and probability.
- Technically deep in the principles of building large-scale machine learning systems.
- Self-directed, flexible, goal oriented and strong sense of ownership.
- Strong verbal and written communications skills; experience presenting complex technical information, succinctly, to technical and non-technical audiences.


Part I. Standard Markdown
You can visit Daring FireBarll to read the original markdown definitions.
Strong and Emphasize
*emphasize* **strong**
_emphasize_ __strong__
Links and Email
Inline:
An [example](http://url.com/ "Title")
Reference-style labels (titles are optional):
An [example][id]. Then, anywhere
else in the doc, define the link:
[id]: http://example.com/ "Title"
Email:
An email<EMAIL_ADDRESS>link.
Images
Inline (titles are optional):
![alt text](/path/img.jpg "Title")
Reference-style:
![alt text][id]
[id]: /url/to/img.jpg "Title"
Headers
Setext-style:
Header 1
========
Header 2
--------
atx-style (closing #’s are optional):
# Header 1 #
## Header 2 ##
###### Header 6
Lists
Ordered, without paragraphs:
1. Foo
2. Bar
Unordered, with paragraphs:
* A list item.
With multiple paragraphs.
* Bar
You can nest them:
* Abacus
* answer
* Bubbles
1. bunk
2. bupkis
* BELITTLER
3. burper
* Cunning
Blockquotes
> Email-style angle brackets
> are used for blockquotes.
> > And, they can be nested.
> #### Headers in blockquotes
>
> * You can quote a list.
> * Etc.
Inline Code
`<code>` spans are delimited
by backticks.
You can include literal backticks
like `` `this` ``.
Block Code
Indent every line of a code block by at least 4 spaces or 1 tab.
This is a normal paragraph.
This is a preformatted
code block.
You can also specified the language name to enabling the code highlight features
```python
def hello():
print 'Hello world'
```
```coffee
hello=->
console.log 'Hello world'
```
Horizontal Rules
Three or more dashes or asterisks:
---
* * *
- - - -
Hard Line Breaks
End a line with two or more spaces:
Roses are red,
Violets are blue.
Part II. Extras Syntax
Footnotes
Footnotes work mostly like reference-style links. A footnote is made of two things: a marker in the text that will become a superscript number; a footnote definition that will be placed in a list of footnotes at the end of the document. A footnote looks like this:
That's some text with a footnote.[^1]
[^1]: And that's the footnote.
Strikethrough
Wrap with 2 tilde ~ characters:
~~Strikethrough~~
Tables
A simple table looks like this:
First Header | Second Header | Third Header
------------ | ------------- | ------------
Content Cell | Content Cell | Content Cell
Content Cell | Content Cell | Content Cell
If you wish, you can add a leading and tailing pipe to each line of the table:
| First Header | Second Header | Third Header |
| ------------ | ------------- | ------------ |
| Content Cell | Content Cell | Content Cell |
| Content Cell | Content Cell | Content Cell |
Specify alignement for each column by adding colons to separator lines:
First Header | Second Header | Third Header
:----------- | :-----------: | -----------:
Left | Center | Right
Left | Center | Right
Anchor
You can also add an anchor for an element such as Headers, then you can link to this anchor anywhere, when you click that link in the Preview view, it'll auto scroll to the place of the destination anchor.
For example below is a normal h2 Header:
## This is an example
Table of Content
[TOC]


--- layout: post title: Nutils logo! tags: news author: Gertjan van Zwieten ---
About two months ago we started the colleborative logo effort aimed at finding a suitable graphic mark for the Nutils project. By submitting ideas to a discussion thread and building on each other's work, we hoped to get the benefits of open source in the creative process of graphics designing. And with success.
Without further ado, we bring to you: the Nutils logo.
The details behind the realization of this logo can be read in the discussion thread. On a most prominent level the logo represents the letters N and U, first letters of the name and initials to Numerical Utilities. On a second level, the colors match that of the Python logo, referencing the main language that nutils is developed in. And on a third level, for those that care to see it, it is a noodle dangling from a blue bowl.
This being a work of collaboration, the result is one that can only be attributed to all contributers as a group. Our express gratitude to the creators of this logo:
The final artwork is available from the new logo repository. With TikZ/PGF and Poppler installed, running make will generate the logo as pdf, svg, several sizes of png, and a favicon.ico.


Home
About
Skills
Projects
Contact
My Practice Projects
Web Design using HTML
Web Design using HTML & CSS
Calculator using Javascript
Slider using Javascript
Table Maker using Javascript
Quiz Site using Javascript
Gallery Slide using HTML & CSS
Shoping Cart Inculding all skills


"What did you do, when you walked out of the Twentieth Century?"
"I went out to become a flame-spotter. I made it my job to watch for those bright flares in the growing night of savagery, which were the men of ability, the men of the mind—to watch their course, their struggle and their agony—and to pull them out, when I knew that they had seen enough."


|
App Engine Python SDK
v1.6.9 rev.445
The Python runtime is available as an experimental Preview feature.
|
Classes | |
| class | _QueueDetails |
Public Member Functions | |
| def | __init__ |
| def | GetQueues |
| def | GetTasks |
| def | DeleteTask |
| def | FlushQueue |
| def | GetDummyTaskStore |
| Public Member Functions inherited from google.appengine.api.apiproxy_stub.APIProxyStub | |
| def | __init__ |
| def | CreateRPC |
| def | MakeSyncCall |
| def | SetError |
Public Attributes | |
| rfile | |
| wfile | |
| wfile_close | |
| Public Attributes inherited from google.appengine.api.apiproxy_stub.APIProxyStub | |
| request_data | |
Static Public Attributes | |
| queue_yaml_parser = _ParseQueueYaml | |
| Static Public Attributes inherited from google.appengine.api.apiproxy_stub.APIProxyStub | |
| THREADSAFE = False | |
Python only task queue service stub. This stub executes tasks when enabled by using the dev_appserver's AddEvent capability. When task running is disabled this stub will store tasks for display on a console, where the user may manually execute the tasks.
| def google.appengine.api.labs.taskqueue.taskqueue_stub.TaskQueueServiceStub.__init__ | ( | self, | |
service_name = 'taskqueue' , |
|||
root_path = None , |
|||
auto_task_running = False , |
|||
task_retry_seconds = 30 , |
|||
_all_queues_valid = False |
|||
| ) |
Constructor. Args: service_name: Service name expected for all calls. root_path: Root path to the directory of the application which may contain a queue.yaml file. If None, then it's assumed no queue.yaml file is available. auto_task_running: When True, the dev_appserver should automatically run tasks after they are enqueued. task_retry_seconds: How long to wait between task executions after a task fails.
| def google.appengine.api.labs.taskqueue.taskqueue_stub.TaskQueueServiceStub.DeleteTask | ( | self, | |
| queue_name, | |||
| task_name | |||
| ) |
Deletes a task from a queue. Args: queue_name: the name of the queue to delete the task from. task_name: the name of the task to delete.
| def google.appengine.api.labs.taskqueue.taskqueue_stub.TaskQueueServiceStub.FlushQueue | ( | self, | |
| queue_name | |||
| ) |
Removes all tasks from a queue. Args: queue_name: the name of the queue to remove tasks from.
| def google.appengine.api.labs.taskqueue.taskqueue_stub.TaskQueueServiceStub.GetDummyTaskStore | ( | self, | |
| app_id, | |||
| queue_name | |||
| ) |
Get the dummy task store for this app_id/queue_name pair. Creates an entry and populates it, if there's not already an entry. Args: app_id: the app_id. queue_name: the queue_name. Returns: the existing or the new dummy store.
| def google.appengine.api.labs.taskqueue.taskqueue_stub.TaskQueueServiceStub.GetQueues | ( | self | ) |
Gets all the applications's queues. Returns: A list of dictionaries, where each dictionary contains one queue's attributes. E.g.: [{'name': 'some-queue', 'max_rate': '1/s', 'bucket_size': 5, 'oldest_task': '2009/02/02 05:37:42', 'eta_delta': '0:00:06.342511 ago', 'tasks_in_queue': 12}, ...] The list of queues always includes the default queue.
| def google.appengine.api.labs.taskqueue.taskqueue_stub.TaskQueueServiceStub.GetTasks | ( | self, | |
| queue_name | |||
| ) |
Gets a queue's tasks. Args: queue_name: Queue's name to return tasks for. Returns: A list of dictionaries, where each dictionary contains one task's attributes. E.g. [{'name': 'task-123', 'queue_name': 'default', 'url': '/update', 'method': 'GET', 'eta': '2009/02/02 05:37:42', 'eta_delta': '0:00:06.342511 ago', 'body': '', 'headers': [('user-header', 'some-value') ('X-AppEngine-QueueName': 'update-queue'), ('X-AppEngine-TaskName': 'task-123'), ('X-AppEngine-TaskRetryCount': '0'), ('X-AppEngine-Development-Payload': '1'), ('Content-Length': 0), ('Content-Type': 'application/octet-stream')] Raises: ValueError: A task request contains an unknown HTTP method type.


|
This tutorial is for Python Mode in Processing 3+. If you see any errors or have comments, please let us know. This tutorial was adapted from the book, Getting Started with Processing, by Casey Reas and Ben Fry, O’Reilly / Make 2010. Copyright © 2010 Casey Reas and Ben Fry. All rights reserved.
Welcome to Python Mode for Processing! Start by visiting http://processing.org/download and selecting the Mac, Windows, or Linux version, depending on what machine you have. Installation on each machine is straightforward:
With any luck, the main Processing window will now be visible. Everyone's setup is different, so if the program didn't start, or you're otherwise stuck, visit the troubleshooting page for possible solutions.
Python ModeProcessing doesn't include support for the Python programming language by default. In order to enable Python support, you'll need to install an add-on called Python Mode. You can do this by clicking on the drop-down menu on the right side of the tool bar and selecting "Add Mode..." A window with the title "Mode Manager" will appear. Scroll down until you see "Python" and press "Install." More information here. After you've installed Python Mode, you can switch back and forth between the Python and Java versions of Processing using the drop-down menu in the tool bar. If you find yourself getting strange syntax errors or exceptions when running your program, make sure you have the right mode selected! Your First ProgramYou're now running the Processing Development Environment (or PDE), with Python Mode installed. There's not much to it; the large area is the Text Editor, and there's a row of buttons across the top; this is the toolbar. Below the editor is the Message Area, and below that is the Console. The Message Area is used for one line messages, and the Console is used for more technical details. In the editor, type the following:
ellipse(50, 50, 80, 80)
This line of code means "draw an ellipse, with the center 50 pixels over from the left and 50 pixels down from the top, with a width and height of 80 pixels." Click the Run button, which looks like this: If you've typed everything correctly, you'll see this appear in the Display Window: If you didn't type it correctly, the Message Area will turn red and complain about an error. If this happens, make sure that you've copied the example code exactly: the numbers should be contained within parentheses and have commas between each of them. One of the most difficult things about getting started with programming is that you have to be very specific about the syntax. The Processing software isn't always smart enough to know what you mean, and can be quite fussy about the placement of punctuation. You'll get used to it with a little practice. Next, we'll skip ahead to a sketch that's a little more exciting. Delete the text from the last example, and try this: def setup(): size(480, 120) def draw(): if mousePressed: fill(0) else: fill(255) ellipse(mouseX, mouseY, 80, 80) This program creates a window that is 480 pixels wide and 120 pixels high, and then starts drawing white circles at the position of the mouse. When a mouse button is pressed, the circle color changes to black. We'll explain more about the elements of this program in detail later. For now, run the code, move the mouse, and click to experience it. Note: Be careful about how you indent each line! Indentation is important in Python, and indenting incorrectly or inconsistently can cause your program to work differently from how you intended, or not work at all. You can use any number of spaces, as long as you're consistent about the number of spaces you use. (Many Python programmers prefer four spaces, others prefer two.) You can also use the tab key to indent your code, but don't use tabs and spaces for indentation in the same program. ShowSo far we've covered only the Run button, though you've probably guessed what the Stop button next to it does: If you don't want to use the buttons, you can always use the Sketch menu, which reveals the shortcut Ctrl-R (or Cmd-R on the Mac) for Run. Below Run in the Sketch menu is Present, which clears the rest of the screen to present your sketch all by itself: You can also use Present from the toolbar by holding down the Shift key as you click the Run button. SaveThe next command that's important is Save. It's the downward arrow on the toolbar: You can also find it under the File menu. By default, your programs are saved to the "sketchbook," which is a folder that collects your programs for easy access. Clicking the Open button on the toolbar (the arrow pointing up) will bring up a list of all the sketches in your sketchbook, as well as a list of examples that are installed with the Processing software: It's always a good idea to save your sketches often. As you try different things, keep saving with different names, so that you can always go back to an earlier version. This is especially helpful if — no, when — something breaks. You can also see where the sketch is located on the disk with Show Sketch Folder under the Sketch menu. You can also create a new sketch by pressing the New button on the toolbar: Examples and ReferenceLearning how to program with Processing and Python involves exploring lots of code: running, altering, breaking, and enhancing it until you have reshaped it into something new. With this in mind, the Processing software download includes dozens of examples that demonstrate different features of the software. To open an example, select Examples from the File menu or click the Open icon in the PDE. The examples are grouped into categories based on their function, such as Form, Motion, and Image. Find an interesting topic in the list and try an example. The Processing Reference explains every code element with a description and examples. The reference programs are much shorter (usually four or five lines) and easier to follow than the longer code found in the Examples folder. We recommend keeping the reference open while you're reading this book and while you're programming. It can be navigated by topic or alphabetically; sometimes it's fastest to do a text search within your browser window. The reference was written with the beginner in mind; we hope that we've made it clear and understandable. We're grateful to the many people who've spotted errors over the years and reported them. If you think you can improve a reference entry or you find a mistake, please let us know by clicking on the link at the top of each reference page.
This tutorial is for Processing 2+. If you see any errors or have comments, please let us know. This tutorial was adapted from the book, Getting Started with Processing, by Casey Reas and Ben Fry, O’Reilly / Make 2010. Copyright © 2010 Casey Reas and Ben Fry. All rights reserved. |


Romeo and Juliet
by William Shakespeare
Act 5, Scene 1
Additional Information
- Year Published: 1597
- Language: English
- Country of Origin: United States of America
- Source: Shakespeare, W. Romeo and Juliet New York: Sully and Kleinteich
-
Readability:
- Flesch–Kincaid Level: 11.0
- Word Count: 743
- Genre: Tragedy
- Keywords: 16th century literature, british literature, drama, romance, tragedy
- ✎ Cite This
Downloads
SCENE. Mantua. A street.
(Enter ROMEO)
ROMEO
If I may trust the flattering truth of sleep,
My dreams presage some joyful news at hand:
My bosom's lord sits lightly in his throne;
And all this day an unaccustom'd spirit
Lifts me above the ground with cheerful thoughts.
I dreamt my lady came and found me dead—
Strange dream, that gives a dead man leave
to think!—
And breathed such life with kisses in my lips,
That I revived, and was an emperor.
Ah me! how sweet is love itself possess'd,
When but love's shadows are so rich in joy!
(Enter BALTHASAR, booted)
News from Verona!—How now, Balthasar!
Dost thou not bring me letters from the friar?
How doth my lady? Is my father well?
How fares my Juliet? that I ask again;
For nothing can be ill, if she be well.
BALTHASAR
Then she is well, and nothing can be ill:
Her body sleeps in Capel's monument,
And her immortal part with angels lives.
I saw her laid low in her kindred's vault,
And presently took post to tell it you:
O, pardon me for bringing these ill news,
Since you did leave it for my office, sir.
ROMEO
Is it even so? then I defy you, stars!
Thou know'st my lodging: get me ink and paper,
And hire post-horses; I will hence to-night.
BALTHASAR
I do beseech you, sir, have patience:
Your looks are pale and wild, and do import
Some misadventure.
ROMEO
Tush, thou art deceived:
Leave me, and do the thing I bid thee do.
Hast thou no letters to me from the friar?
BALTHASAR
No, my good lord.
ROMEO
No matter: get thee gone,
And hire those horses; I'll be with thee straight.
(Exit BALTHASAR)
Well, Juliet, I will lie with thee to-night.
Let's see for means: O mischief, thou art swift
To enter in the thoughts of desperate men!
I do remember an apothecary,—
And hereabouts he dwells,—which late I noted
In tatter'd weeds, with overwhelming brows,
Culling of simples; meagre were his looks,
Sharp misery had worn him to the bones:
And in his needy shop a tortoise hung,
An alligator stuff'd, and other skins
Of ill-shaped fishes; and about his shelves
A beggarly account of empty boxes,
Green earthen pots, bladders and musty seeds,
Remnants of packthread and old cakes of roses,
Were thinly scatter'd, to make up a show.
Noting this penury, to myself I said
'An if a man did need a poison now,
Whose sale is present death in Mantua,
Here lives a caitiff wretch would sell it him.'
O, this same thought did but forerun my need;
And this same needy man must sell it me.
As I remember, this should be the house.
Being holiday, the beggar's shop is shut.
What, ho! apothecary!
(Enter Apothecary)
Apothecary
Who calls so loud?
ROMEO
Come hither, man. I see that thou art poor:
Hold, there is forty ducats: let me have
A dram of poison, such soon-speeding gear
As will disperse itself through all the veins
That the life-weary taker may fall dead
And that the trunk may be discharged of breath
As violently as hasty powder fired
Doth hurry from the fatal cannon's womb.
Apothecary
Such mortal drugs I have; but Mantua's law
Is death to any he that utters them.
ROMEO
Art thou so bare and full of wretchedness,
And fear'st to die? famine is in thy cheeks,
Need and oppression starveth in thine eyes,
Contempt and beggary hangs upon thy back;
The world is not thy friend nor the world's law;
The world affords no law to make thee rich;
Then be not poor, but break it, and take this.
Apothecary
My poverty, but not my will, consents.
ROMEO
I pay thy poverty, and not thy will.
Apothecary
Put this in any liquid thing you will,
And drink it off; and, if you had the strength
Of twenty men, it would dispatch you straight.
ROMEO
There is thy gold, worse poison to men's souls,
Doing more murders in this loathsome world,
Than these poor compounds that thou mayst not sell.
I sell thee poison; thou hast sold me none.
Farewell: buy food, and get thyself in flesh.
Come, cordial and not poison, go with me
To Juliet's grave; for there must I use thee.
(Exeunt)


Functions |
| void | obf_free (OBF *obf) |
| | Free an OBF structure.
|
| static void | obf_write (OBF *obf, FILE *f) |
| | Write an OBF structure.
|
| static int | obf_read (OBF *obf, FILE *f) |
| | Read an OBF structure.
|
| static void | obf_search (Search *search, OBF *obf, int n) |
| | Analyze an OBF structure.
|
| static void | obf_build (Search *search, OBF *obf, int n) |
| | Build an OBF structure.
|
| void | obf_test (Search *search, const char *obf_file, const char *wrong_file) |
| | Test an OBF file.
|
| void | script_to_obf (Search *search, const char *script_file, const char *obf_file) |
| | Build an OBF file from a Script file.
|
| void | obf_filter (const char *input_file, const char *output_file) |
| | Select hard position from an OBF file.
|
Testing Edax from Othello Board Files (OBF).
An Othello Board File has the following format:
-
A single position per line.
-
Any text following the percent symbol % is a comment.
-
A position is a set of fields, each field is terminated by a semi-colon ;.
-
The first field describes the Othello board.
-
The other fields contain all the playable moves with their score, separated by a colon: 'move':'score'.
- Date:
- 1998 - 2012
- Author:
- Richard Delorme
- Version:
- 4.3


--- layout: post title: "Five Months with Rocksmith 2014" permalink: /:title/ tags: [guitar, video games] ---
I used to be pretty good with tiny fake guitars. Not "Through the Fire and Flames" good but still "Satch Boogie" good.1 Many an evening was spent with friends and family over a copy of Rock Band or Guitar Hero: World Tour, but we as a civilization collectively decided after Lego Rock Band and Guitar Hero: Van Halen that the fake instrument rhythm games had gone too far, leaving sales dwindling and relegating our Fisher-Price instruments to the attic.
Ubisoft's Rocksmith games are a different take on Guitar Hero-style gameplay. Instead of simply being rock-themed entertainment, Rocksmith bills itself as a learning tool. At heart, this is the familiar Skittles-colored note rectangles flying towards you, with the twist that it's played with a real guitar–just about any will do. I had access to an old Stratocaster that had been gathering dust in my parents' living room, so the price of admission was just that of the game, a small gamble to see if it really could teach me. I played the cello from elementary school to high school before dropping it due to increasing demands on my time and lack of enjoyment. My music theory knowledge was nonexistent and I'd never played a fretted instrument, so while the cello might have imbued me with some rhythm or manual dexterity, I picked up the guitar a clear novice. Rocksmith in hand, I wanted to learn, or at least get my $30 worth of entertainment from the game. That was five months ago.
Rocksmith 20142 has several different modes to teach guitar. In addition to the token score attack, there are a few dozen interactive video lessons ranging from putting on the strap to tapping, minigames to drill specific techniques (play this string to shoot the cowboy, perform a bend to climb the vine), a robust session mode where you can jam with an adaptive backing band of your choosing, and Learn a Song, the bread and butter of my Rocksmith routine. Learn a Song at its most basic is simply playing the song along with the studio recording and being graded on your performance. It's an exceedingly well thought-out system. It breaks each song down into sections and adjusts the difficulty in real time to try to reach an appropriate level, so the bar to play along with Hendrix is basically nonexistent. The absolute beginner might play a note only every few seconds, while the intermediate player can play a song as it was written, save for that facemelting solo. At any moment you can hop into the Riff Repeater, a sub-mode where you can drill each section at a custom speed and difficulty with manual or automatic changes until you've got it down.
The experience of playing with studio recordings as your backing tracks is pretty incredible, because for a few minutes at a time, you're not the novice trying to strum the right string, you're the guitarist for the Pixies/Weezer/The Rolling Stones/Queens of the Stone Age, or whomever else you want (the downloadable songs list is huge). I don't think the real Black Francis would be that patient with me after I butcher the arpeggio in "Here Comes Your Man" for the 10th time in a row, but pre-recorded Black Francis gives his all on every take!
It took a few weeks of practicing for 30-90 minutes each night, but eventually my fingers were able not only to finger the right note while strumming the same string, but even hit those funky chords.3 I've settled on a routine that works for me of picking a song that's a manageable difficulty, playing it a few times at the Rocksmith-decided difficulty before breaking things down in the Riff Repeater at max difficulty but slow speeds. This is an accepted best practice to learn hard songs for all instruments (maybe I do remember something from the cello days) and Rocksmith is amenable to it.
So does it work? The short answer is yes. Five months ago I didn't know how to hold a pick, and now I have learned4 over 20 songs with it.
| Artist | Song | Mastery |
|---|---|---|
| Pixies | Here Comes Your Man | 100.2% |
| The Black Keys | Lonely Boy | 100.7% |
| Muse | Supermassive Black Hole | 100.7% |
| CAKE | Short Skirt/Long Jacket | 101.0% |
| Arctic Monkeys | R U Mine? | 101.2% |
| Sum 41 | Fat Lip | 101.2% |
| Radiohead | High and Dry | 102.0% |
| Muse | Plug in Baby | 102.2% |
| Pixies | Where is My Mind? | 102.7% |
| Dan Auerbach | I Want Some More | 102.9% |
| Blur | Song 2 | 104.2% |
| blink-182 | All the Small Things | 104.2% |
| blink-182 | Dammit | 105.0% |
| Franz Ferdinand | Take Me Out | 105.5% |
| Little Barrie | Surf Hell | 106.7% |
| Sigur Rós | Gobbledigook | 106.7% |
| Pixies | Debaser | 107.2% |
| The Ramones | Blitzkrieg Bop | 107.4% |
| The Rolling Stones | (I Can't Get No) Satisfaction | 108.7% |
| Jarvis Cocker | Angela | 109.7% |
| The Black Keys | Next Girl | 110.0% |
But these aren't just any songs. Some of these are from my favorite bands ("Debaser", "High and Dry"), some are recognizable tunes useful to have in my back pocket ("All the Small Things", "Short Skirt/Long Jacket"), and some are just a ton of fun to play ("Fat Lip").5 Moreso than other rhythm games Rocksmith benefits from a strong catalog of downloadable songs, since I care more about what I'm playing when I'm actually playing the song on a guitar instead of the song to which I'm pressing five buttons on a ukelele-sized Les Paul. To that end, the original Rocksmith (not Rocksmith 2014) is a must-buy for anyone looking to use the games as a beginner. It contains way more novice-friendly tracks than the 2014 version and its tracks can be imported into the improved Rocksmith 2014 engine for a modest fee. This is the best value for adding content, but I've also bought some individual songs and packs. I am strongly opposed to microtransactions, but it's an easier proposition to spend money in the Rocksmith store when it's peddling tools to learn songs you can then play outside the game.
After five months of work, I'm thrilled with my results and proud to look at the above table. There are songs on there that I first learned in Guitar Hero that I then learned on the actual guitar with Rocksmith, and there's something beautiful about coming full circle like that. I'm seeing frequent improvements in my skill and it's very rewarding to see immediate dividends as my mastery increases on each song. That arpeggio I mentioned in "Here Comes Your Man"? Turns out "We're All to Blame" has a darn similar section, and suddenly I can play that too! I'm at a fun point in my development as a guitarist and am eager to continue.
It's a fair question to ask what the role of Rocksmith has been in all of this. What's the counterfactual, where would I be now without Rocksmith? There's no shortage of books, websites, and teachers available to learn guitar. While I could definitely stand to supplement Rocksmith with private lessons or at least some video lectures, Rocksmith has aided my development in two ways. First and most obviously is the tools, games, and modes it features, and these are legitimate value added over a book of tabs. But secondly and most importantly is that Rocksmith is a way to get me to plug in my guitar every night and play. Ultimately, this is the single most important and effective step to learn. Frankly, without Rocksmith, I'm not sure I'd be playing at all right now. Learning an instrument is hard, but Rocksmith does its part to make that initial hill easier, which is invaluable. I don't know what I'll be able to play after another 5 months, but I'm sure Rocksmith will have a song or seven I'll want to learn that will be right for me then.
With liberal use of Star Power to gloss over my inability to play the actually hard parts. Still counts.
Rocksmith is actually the title of the first game in the series, but Rocksmith 2014 is its replacement rather than sequel or expansion. I'll use the titles interchangeably, especially since the latter title is also now known as Rocksmith 2014 Edition Remastered after a big quality of life update.
I was not a happy camper the first time I saw a barre chord.
Rocksmith records your "mastery" of each song. It's based on your accuracy, but Rocksmith will start to fade out sections of a song as you learn it to force you to memorize it, and it awards bonus mastery percentage points for this, up to a maximum score of 110% for a flawless performance on a song where the entire track is in mastery mode. 100% is where Rocksmith officially declares that you have learned a song.
The 2001 version of me thinks I'm the coolest guy in the world for being able to play that one. 2016 me may also have been excited to find out that it was available in Rocksmith to fulfill my youth pop punk fantasies.


Post-parsing
Authentication_AgentAbstract.php
Authentication_AgentARC.php
Authentication_FoafSSLAbstract.php
Authentication_FoafSSLARC.php
Authentication_FoafSSLDelegate.php
Authentication_Helper.php
Authentication_Session.php
Authentication_URL.php
Authentication_X509CertRepo.php
Authentication.php
Warnings:
Warning on line 38 - no @package tag was used in a DocBlock for class Authentication
Warning on line 150 - File "/home/laczoka/phpdev/libAuth/lib/Authentication.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Authentication_AgentAbstract.php
Warnings:
Warning on line 37 - no @package tag was used in a DocBlock for class Authentication_AgentAbstract
Warning on line 103 - File "/home/laczoka/phpdev/libAuth/lib/Authentication_AgentAbstract.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Authentication_AgentARC.php
Warnings:
Warning on line 39 - no @package tag was used in a DocBlock for class Authentication_AgentARC
Warning on line 502 - File "/home/laczoka/phpdev/libAuth/lib/Authentication_AgentARC.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Authentication_FoafSSLAbstract.php
Warnings:
Warning on line 38 - no @package tag was used in a DocBlock for class Authentication_FoafSSLAbstract
Warning on line 250 - File "/home/laczoka/phpdev/libAuth/lib/Authentication_FoafSSLAbstract.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Authentication_FoafSSLARC.php
Warnings:
Warning on line 39 - no @package tag was used in a DocBlock for class Authentication_FoafSSLARC
Warning on line 166 - File "/home/laczoka/phpdev/libAuth/lib/Authentication_FoafSSLARC.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Authentication_FoafSSLDelegate.php
Warnings:
Warning on line 36 - no @package tag was used in a DocBlock for class Authentication_FoafSSLDelegate
Warning on line 212 - File "/home/laczoka/phpdev/libAuth/lib/Authentication_FoafSSLDelegate.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Authentication_Helper.php
Warnings:
Warning on line 33 - no @package tag was used in a DocBlock for class Authentication_Helper
Warning on line 120 - File "/home/laczoka/phpdev/libAuth/lib/Authentication_Helper.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Authentication_Session.php
Warnings:
Warning on line 33 - no @package tag was used in a DocBlock for class Authentication_Session
Warning on line 93 - File "/home/laczoka/phpdev/libAuth/lib/Authentication_Session.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Authentication_URL.php
Warnings:
Warning on line 32 - no @package tag was used in a DocBlock for class Authentication_URL
Warning on line 107 - no @package tag was used in a DocBlock for class Authentication_SignedURL
Warning on line 139 - File "/home/laczoka/phpdev/libAuth/lib/Authentication_URL.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Authentication_X509CertRepo.php
Warnings:
Warning on line 33 - no @package tag was used in a DocBlock for class Authentication_X509CertRepo
Warning on line 78 - File "/home/laczoka/phpdev/libAuth/lib/Authentication_X509CertRepo.php" has no page-level DocBlock, use @package in the first DocBlock to create one
Documentation generated on Tue, 13 Apr 2010 23:04:16 +0200 by phpDocumentor 1.4.3


Open the console to see the EventEmitter at work when you click Delete.
Open the console to see the EventEmitter at work when you click Buy.
See aliasing.component.ts for aliases and the console for the EventEmitter console logs.


Hi! I am Mustafa Tufan, a software engineer with a finance-based master degree. I am always in pursuit of designing the best software and writing the best line of codes. I am passionate about details, continuously think how to improve myself, where I am and what I do.
| Contact | |
|---|---|
|
|
|
|<EMAIL_ADDRESS>| |
| +90 538 018 95 16 | |
| İzmir, Türkiye |
| Personal | |
|---|---|
|
|
|
| November 13, 1992 | |
| Republic of Türkiye | |
| Completed military obligation |
| Career Goals | |
|---|---|
|
|
|
| To become a Tech Lead | |
| To be an Open Source Hero |
|
Experience (8+ years) |
|
|---|---|
| Industry, Domain Programming Language Framework, SDK, Library, etc. Development Term Database Methodology Other | |
|
|
|
|
Software Engineer
at
Allianz
in İzmir, Türkiye
Feb. 2023 - Current
|
|
|
|
|
Software Engineer
at
Change
in Tallinn, Estonia
Sep. 2019 - Dec. 2022 (3 years 4 months)
|
|
|
|
|
Software Engineer
at
Avatud Lahendused
in Tartu, Estonia
May 2019 - Aug. 2019 (4 months)
|
|
|
|
|
Software Engineer
at
Allianz
in İzmir, Türkiye
Jul. 2018 - Apr. 2019
(10 months)
|
|
|
|
|
Software Engineer
at
Infina
in İstanbul, Türkiye
Mar. 2016 - Jun. 2018
(2 years, 4 months)
|
|
|
|
|
Intern
at
Emeltek
in Elazığ, Türkiye
Feb. 2015 - Jun. 2015
(5 months)
|
|
|
|
|
Intern
at
Netix
in Elazığ, Türkiye
Jun. 2013 - Sep. 2013
(4 months)
|
|
|
|
|
Intern
at
Dream Harvesters
in Antalya, Türkiye
Jun. 2012 - Sep. 2012
(4 months)
|
|
|
|
Education |
|
|---|---|
|
|
|
|
M.S. in Capital Markets and Stock Exchange at Marmara University in İstanbul, Türkiye
2017 - 2019
|
|
|
B.S. in
Software Engineering
at
Firat University
in Elazığ, Türkiye
2010 - 2015
|
|
|
Information Technology
at Gaziemir Anadolu Technical High School
in İzmir, Türkiye
2006 - 2010
|


1. Open Chrome Developer tools by pressing either:
Ctrl + Shift + I or
F12
2. Navigate to the "Memory" tab
3. Click on the button below to start the demo
This will create a ul node with several li children. These are referenced by the code, but not the DOM. This is what is called a detached DOM tree nodes.


This is a crazy pargragrapoh that doesnt say much or say anything at all dotn read it at your leisure or at any other time. thanks. hello.


---
layout: post
title: denver by sunrise only 3 hours left to steamboat
date: '2011-03-06T05:45:00+01:00'
tags: []
tumblr_url: http://dotmr.tumblr.com/post/3701621492/denver-by-sunrise-only-3-hours-left-to-steamboat
---
Denver by sunrise. Only 3 hours left to Steamboat


Résumé
— My life is devoted to investigations into the unknown, finding the answers to the mysteries of life and training in new technologies.I am an analytical thinker, capable of great concentration and theoretical insight. Also I enjoy research and finding practical solutions to problems.
Experience
Recent
-
25thApril 2013
The Succession to the Crown Act. The Act replaced male-preference primogeniture with absolute primogeniture for those in the line of succession born after 28 October 2011, which means the eldest child, regardless of sex, precedes any siblings
-
1999
I open the newly-created National Assembly for Wales and the Scottish Parliament.
-
1982
The Pope visits England, the first pope to do so in 450 years. I receive him in my capacity as the head of the Church of England.
-
1957
I visit New York and address the United Nations General Assembly. On the same tour, I visit Ottawa and open Parliament.
Back then
-
1945
I was made a Subaltern in the Auxiliary Territorial Service, and by the end of the war, reached the rank of Junior Commander. I became a qualified driver and mechanic and drived a military truck.
-
October 1940
I deliver my first public speech on the BBC's Children's Hour radio program, addressing children who had to be evacuated because of the war.
Personal life
Click on the section to see more...
-
21thApril 1926
I was born to the Duke and Duchess of York.
-
1936
My father becomes King George VI, and I become first in line to the throne.
-
20thNovember 1947
I married Lieutenant Philip Mountbatten.
-
14thNovember 1948
I have my first child, Prince Charles.
-
15thAugust 1950
I have a daughter, Princess Anne.
-
6thFebruary 1952
My father, King George VI, dies. I accede to the throne.
-
2thJune 1953
My coronation. It is the first time television cameras are allowed inside Westminster Abbey for a state function.
-
19thFebruary 1960
I give birth to Prince Andrew, my third child
-
10thMarch 1964
I give birth to Prince Edward, my fourth and last child.
-
1thJuly 1969
Charles is named the Prince of Wales and heir to the throne.
-
14thSeptember 1981
Shots are fired as I participate in the annual Trooping the Colour ceremony. It turns out that they were blanks, fired by a teenager.
-
1992
"Annus horribilus." Prince Andrew and his wife separate, Princess Anne divorces her husband, Prince Charles formally separates from his wife Diana, and a significant portion of Windsor Castle is destroyed by fire.
-
9thSeptember 2015
I become the longest-reigning monarch.
-
6thFebruary 2017
I celebrate my Sapphire Jubilee, marking 65 years since I ascended the throne.
Responsibilities at my last job
-
Head of State
As Head of State, I go on official State visits abroad. I also invite other world leaders to come to the United Kingdom. -
Head of the Armed Forces
I am the only person who can declare when the country is at war and when war is over. -
Head of the Church of England
I appoint archbishops and bishops on the advice of the Prime Minister. -
Government Duties
Every day I receive documents and reports from the government ministers and Commonwealth officials. They must all be read and signed by me. -
Represent the Nation
I represent the nation at times of great celebration or sorrow. For instance, I lay a wreath at Remembrance Day ceremony each year to honour the members of the armed forces who have died fighting for our country. -
Visits
I spend a huge amount of time travelling around the country visiting hospitals, schools, factories etc.
Languages
Skills
Character
Likes😃
-
Animals
For much of my life I was surrounded with dogs, mostly, corgis. I also own an elephant, two giant turtles, a jaguar and a pair of sloths, every sturgeon, porpoise, whale and dolphin in the UK -
Being the Queen
I am the longest reigning monarch ever in Britain -
Sports
Horse riding, pigeon racing and football - I am an Arsenal supporter -
Quiet pastime
I enjoy reading mysteries and working on crossword puzzles - Family
We usually have so much fun on both of my birthdays
Dislikes😞
- “The Crown”
- Wedges
- Garlic and onions
- the word “pregnant”
- Meghan Markle’s Style
- Rare Meat
Wants🥺
Education
As a member of royal family, I never went to any kind of school-
Every day till 1936Home schooling
-
- French
- German
-
- Music (piano)
- Dancing
-
-
1936
-
- Studying constitutional history and law with Henry Marten, the vice provost of Eton College
- Lessons in religion from the Archbishop of Canterbury
-


Sometimes I also practice writing jokes, show-off and practice using a foreign language (currently French) and just document something nice.


Scraping...
(this may take a while)
Toggle navigation
Amazon Review Summarizer
Summarize
Compare
GitHub
Contact
Summarize 1 Item
Compare 2 Items
Sample Results


OSES is an apocalyptic shooter in which you need to manage ammo and positioning of 3 survivors and destroy numerous hordes of zombies. Select one of many maps available, equip each character with different weapons and hats, and get ready to fight some zombies! How long can you survive?
Switch control between characters to overcome many challenges in 4 distinct game modes!
Create and share maps with the community using the built-in map editor!
Customize your characters with different hats, weapons and colors!


--- title: "9 Mile Prairie Worksheet" author: "Drew Tyre" date: "2019-02-09" type: "lab" weight: 222041 ---
The goal of this week’s lab is to analyze the species area curve data from 9 Mile Prairie, and get more experience making figures and calculating summary statistics in R. Like all labs, I expect you to submit an R Markdown file that I can compile to html. You should assume any data files are in a subdirectory called “data”. Your file should not echo the code used. In the handout, there may be several code blocks making the same graph multiple times with slight tweaks. You should only keep the best and final graph that you chose in your submitted file. Answer the numbered questions in text, referring to graphical and tabular output as needed. You may use base graphics or ggplot2, according to your preference.
We collected species occurence data in nested quadrats in 3 different parts of the original 9 mile Prairie. Each section collected data from a portion burned in 2015, 2016 or earlier this year in 2017. Dr. Wedin’s hypothesis is that the biodiversity will be the same in these three fields, even though they look very different to the eye.
Open RStudio and create a new project. I recommend creating a project for each week of class inside a folder called NRES222
or whatever else works for you.
Download the data from here, saving it into a subdirectory of your project called data
. Make sure to keep the filename exactly the same: 9mile_plants_all.csv
!
Create a new R Markdown file by clicking the button in the top left of RStudio with a +
on it. Save this file into your project directory with a filename yourlastname_ninemile.Rmd
.
At the top of the file is some header information that you can leave as is for now.
On line 8 you will see a block of text with```
on the top and bottom:
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
Remember that this is a “code chunk”. Everything in between the ```
is treated as instructions to the computer. Everything outside the code chunk is rendered as regular text. Add a line to the code chunk to load the tidyverse
package we installed last week.
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(tidyverse)
```
You can delete everything from the end of that code chunk to the bottom of the file. Click the Knit button at the top. You should get a preview of an HTML file that just has the header information in it. An html file will also appear in the file pane next to the Rmd file.
plants
.```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(tidyverse)
plants <- read_csv("data/9mile_plants_all.csv")
```
For the first question, you will calculate the total number of species observed in each size quadrat, for each group and section of the lab.
# make a factor to get colors right
plants$fBurned <- factor(plants$Burned)
## first get numbers of species by quadrat area, grouped by id and day
spparea1 <- group_by(plants, fBurned, id, Quadrat_Area)
spparea2 <- summarise(spparea1, newspp = n())
spparea3 <- mutate(spparea2,
totspp = cumsum(newspp))
# now make the plot
ggplot(data = spparea3,
mapping = aes(x=Quadrat_Area, y=totspp)) +
geom_point(mapping=aes(color=fBurned),
position = "jitter")
Adding the argument position = "jitter"
to geom_point()
just adds a small random number to each data point to avoid points plotting on top of each other. Another way to separate the sections that might be easier to answer Q1 is to make a separate subplot for each unit burned.
ggplot(data = spparea3,
mapping = aes(x=Quadrat_Area, y=totspp)) +
geom_point(mapping=aes(color=fBurned),
position = "jitter") +
facet_wrap(~fBurned)
Now calculate the average number of species found in each size plot for each field. Use summarize()
again, this time to summarize each quadrat size across all groups. Also calculate the standard error of the mean, a measure of how precise the estimate is.
spparea4 <- group_by(spparea3, fBurned, Quadrat_Area)
spparea4 <- summarize(spparea4,
meanspp = mean(totspp),
sespp = sd(totspp) / sqrt(n()))
Next, make a graph with the average numbers of species versus plot size for each field. We also add error bars to each point.
ggplot(data = spparea4,
mapping = aes(x=Quadrat_Area, y=meanspp)) +
geom_point() +
facet_wrap(~fBurned) +
geom_errorbar(mapping = aes(ymin = meanspp - qt(0.975, df = 3) * sespp,
ymax = meanspp + qt(0.975, df = 3) * sespp)) +
labs(x = "Quadrat Area [m^2]",
y = "Cumulative species richness (95% CI)",
caption = "Figure 1: Cumulative species richness as a function of total quadrat area searched in three fields at 9 Mile Prairie, Nebraska.") +
theme(plot.caption = element_text(hjust=0))
Compare the average curves for the 3 fields. Does the species area curve appear to follow a smooth relationship? Is the shape of the curve the same for all four fields?
Which of the 3 fields had the highest plant diversity?
In which size plots do we generally gain the most new species?
Pick the field with the highest diversity. Visually estimate (extrapolate) how many species you would expect to find in a \(100 m^2\) plot in that field?
If you were surveying many grassland types and had to pick a single plot size to use for data collection, what size would you pick and why?
Ecologists often present species-area curves on log10 axes (both the X and Y axes) or transform the data by taking logs before graphing. This generally turns the curve into a straight line (See the discussion of species-area curves in your ecology textbook). It also allows the viewer to compare changes in diversity in small plots equally with changes in large plots. On regular (linear) axes, the changes in big plots dwarf changes seen in small plots.
Mathematically, species-area curves can be fit with the non-linear equation \(S = cA^z\) where S is species number, A is plot area, and c and z are constants. We won’t use this equation in lab; non-linear equations such as this are much more difficult to work with. However, if you transform the data for species number and plot area to log values, the relationship becomes linear. A line fit to the data averages across point to point irregularities to give the best description of the species area relationship in each area. The equation now has the form: \[ Log(S) = log c + z log(A) \]
Create a new figure with log10 – transformed data. We can simply change the axes on the plot, and add some linear trendlines.
ggplot(data = spparea4,
mapping = aes(x=Quadrat_Area, y=meanspp)) +
geom_point() +
facet_wrap(~fBurned) +
geom_errorbar(mapping = aes(ymin = meanspp - qt(0.975, df = 3) * sespp,
ymax = meanspp + qt(0.975, df = 3) * sespp)) +
labs(x = "Quadrat Area [m^2]",
y = "Cumulative species richness (95% CI)",
caption = "Figure 1: Cumulative species richness as a function of total quadrat area searched in three fields at 9 Mile Prairie, Nebraska.") +
theme(plot.caption = element_text(hjust=0)) +
scale_x_log10() + scale_y_log10() + # here is the new bit
geom_smooth(method="lm")
Do the log10 – transformed data appear to follow a linear relationship? Is the slope of the line similar for all 3 areas?
Which of the 3 areas had the highest plant diversity? Do the differences among the grassland types change between small and large plots? (hint: might be easier if you remove facet_wrap()
and get all three lines on same graph.)
Pick the grassland type with the highest diversity. Visually estimate (extrapolate) how many species you would expect to find in a 100m2 quadrat using the log10 – transformed data.
Those lines look fine, but what if we want to know the values of \(c\) and \(z\) actually are for each field? To do that we need the summary of the linear regressions shown in the graphs.
burned2015 <- filter(spparea3, fBurned == "2015")
b2015_lm <- lm(log(totspp) ~ log(Quadrat_Area), data= burned2015)
summary(b2015_lm)
The estimate labeled (intercept)
is \(log(c)\), and the estimate labeled log(Quadrat_Area)
is \(z\). Repeat for the other two groups. Each one needs to be in a new code chunk.
What are the equations of your log-transformed relationships for the 3 areas? Type the equations with the numbers to 2 decimal places only, and one equation to a line.
Use the equations to predict how many species each habitat would have at a scale of \(1 m^2\)? (Remember that \(log(1) =0\), so your answer is the value of the intercept. BUT, you have to transform it from a log scale back to linear, so take 10 raised to the value of the intercept to give the average number of species in a 1m2 plot).
Use the equations to predict how many species each habitat would have at a scale of 100m2 plot?
You can calculate this using the equations you typed out above.
Example: let’s say your equation is
\(Log(S) = 1.0332 + 0.1642 log(A)\)
If A = 100, then log(A) = 2.
Plug that into the equation and you get Log(S) = 1.362.
Does that mean you expect to find 1.362 species in a 100 m2 plot? NO, the log of the number of species you predict is 1.362. How do you get rid of the log? Raise 10 to the number you have. 10 raised to the 1.263 is 21.9, which is the predicted number of species in a 100 m2 plot given the equation above. We’ll use logs (base 10) and natural logs quite a bit in this course, so it pays to review them. You can do these calculations in R
logS <- 1.0332 + 0.1642 * log10(100)
10^logS
Do you think these relationships (the straight lines on the logS vs logA graph) would increase smoothly indefinitely? What would happen if the study area crossed into a different ecosystem type (for example a stand of trees or a corn field)?
Recall that most studies find \(0.25 <= z <=0.35\). Is our data consistent with these expectations?
Why do you think the various fields we studied differ or do not differ in plant diversity? How does the time since fire affect diversity?
In Canvas, you will submit your R markdown file. Be sure your last name is the first part of the filename, and that it says “9mile” somewhere as well. Double check that it will work (necessary for full points) by clicking the “knit” button. If it produces an HTML file with all your figures and answers to the questions, you’re good!


Part I introduces the platform, the tutorial, and the examples. This part contains the following chapters:
Chapter 1, "Overview"
Chapter 2, "Using the Tutorial Examples"