Table of contents
Definitions
- Definition 1.
- A point is that which has no part.
- Definition 2.
- A line is breadthless length.
- Definition 3.
- The ends of a line are points.
- Definition 4.
- A straight line is a line which lies evenly with the
points on itself.
- Definition 5.
- A surface is that which has length and breadth
only.
- Definition 6.
- The edges of a surface are lines.
- Definition 7.

- Definition 8.
- A plane angle is the inclination to one another of two
lines in a plane which meet one another and do not lie in a
straight line.
- Definition 9.
- And when the lines containing the angle are straight, the angle
is called rectilinear.
- Definition 10.
- When a straight line standing on a straight line makes the
adjacent angles equal to one another, each of the equal angles is
right, and the straight line standing on the other is called
a perpendicular to that on which it stands.
- Definition 11.
- An obtuse angle is an angle greater than a right
angle.
- Definition 12.
- An acute angle is an angle less than a right angle.
- Definition 13.
- A boundary is that which is an extremity of
anything.
- Definition 14.
- A figure is that which is contained by any boundary or
boundaries.
- Definition 15.
- A circle is a plane figure contained by one line such
that all the straight lines falling upon it from one point among
those lying within the figure equal one another.
- Definition 16.
- And the point is called the center of the circle.
- Definition 17.
- A diameter of the circle is any straight line drawn
through the center and terminated in both directions by the
circumference of the circle, and such a straight line also bisects
the circle.
- Definition 18.
- A semicircle is the figure contained by the diameter and
the circumference cut off by it. And the center of the semicircle
is the same as that of the circle.
- Definition 19.
- Rectilinear figures are those which are contained by
straight lines, trilateral figures being those contained by
three, quadrilateral those contained by four, and
multilateral those contained by more than four straight
lines.
- Definition 20.
- Of trilateral figures, an equilateral triangle is that
which has its three sides equal, an isosceles triangle that
which has two of its sides alone equal, and a scalene
triangle that which has its three sides unequal.
- Definition 21.
- Further, of trilateral figures, a right-angled triangle
is that which has a right angle, an obtuse-angled triangle
that which has an obtuse angle, and an acute-angled triangle
that which has its three angles acute.
- Definition 22.
- Of quadrilateral figures, a square is that which is both
equilateral and right-angled; an oblong that which is
right-angled but not equilateral; a rhombus that which is
equilateral but not right-angled; and a rhomboid that which
has its opposite sides and angles equal to one another but is
neither equilateral nor right-angled. And let quadrilaterals other
than these be called trapezia.
- Definition 23
- Parallel straight lines are straight lines which, being
in the same plane and being produced indefinitely in both
directions, do not meet one another in either direction.
Let the following be postulated:
- Postulate
1.
- To draw a straight line from any point to
any point.
- Postulate
2.
- To produce a finite straight line
continuously in a straight line.
- Postulate
3.
- To describe a circle with any center and
radius.
- Postulate 4.
- That all right angles equal one another.
- Postulate
5.
- That, if a straight line falling on two straight lines makes
the interior angles on the same side less than two right angles,
the two straight lines, if produced indefinitely, meet on that side
on which are the angles less than the two right angles.
- Common notion 1.
- Things which equal the same thing also equal one another.
- Common notion 2.
- If equals are added to equals, then the wholes are equal.
- Common notion 3.
- If equals are subtracted from equals, then the remainders are
equal.
- Common notion 4.
- Things which coincide with one another equal one another.
- Common notion 5.
- The whole is greater than the part.
- Proposition
1.
- To construct an equilateral triangle on a
given finite straight line.
- Proposition
2.
- To place a straight line equal to a given
straight line with one end at a given point.
- Proposition
3.
- To cut off from the greater of two given
unequal straight lines a straight line equal to the
less.
- Proposition 4.
- If two triangles have two sides equal to two sides
respectively, and have the angles contained by the equal straight
lines equal, then they also have the base equal to the base, the
triangle equals the triangle, and the remaining angles equal the
remaining angles respectively, namely those opposite the equal
sides.
- Proposition 5.
- In isosceles triangles the angles at the base equal one
another, and, if the equal straight lines are produced further,
then the angles under the base equal one another.
- Proposition 6.
- If in a triangle two angles equal one another, then the sides
opposite the equal angles also equal one another.
- Proposition 7.
- Given two straight lines constructed from the ends of a
straight line and meeting in a point, there cannot be constructed
from the ends of the same straight line, and on the same side of
it, two other straight lines meeting in another point and equal to
the former two respectively, namely each equal to that from the
same end.
- Proposition 8.
- If two triangles have the two sides equal to two sides
respectively, and also have the base equal to the base, then they
also have the angles equal which are contained by the equal
straight lines.
- Proposition
9.
- To bisect a given rectilinear
angle.
- Proposition
10.
- To bisect a given finite straight
line.
- Proposition
11.
- To draw a straight line at right angles
to a given straight line from a given point on it.
- Proposition
12.
- To draw a straight line perpendicular to
a given infinite straight line from a given point not on
it.
- Proposition 13.
- If a straight line stands on a straight line, then it makes
either two right angles or angles whose sum equals two right
angles.
- Proposition 14.
- If with any straight line, and at a point on it, two straight
lines not lying on the same side make the sum of the adjacent
angles equal to two right angles, then the two straight lines are
in a straight line with one another.
- Proposition 15.
- If two straight lines cut one another, then they make the
vertical angles equal to one another.
Corollary. If two straight
lines cut one another, then they will make the angles at the point
of section equal to four right angles.
- Proposition 16.
- In any triangle, if one of the sides is produced, then the
exterior angle is greater than either of the interior and opposite
angles.
- Proposition 17.
- In any triangle the sum of any two angles is less than two
right angles.
- Proposition 18.
- In any triangle the angle opposite the greater side is
greater.
- Proposition 19.
- In any triangle the side opposite the greater angle is
greater.
- Proposition 20.
- In any triangle the sum of any two sides is greater than the
remaining one.
- Proposition 21.
- If from the ends of one of the sides of a triangle two straight
lines are constructed meeting within the triangle, then the sum of
the straight lines so constructed is less than the sum of the
remaining two sides of the triangle, but the constructed straight
lines contain a greater angle than the angle contained by the
remaining two sides.
- Proposition
22.
- To construct a triangle out of three
straight lines which equal three given straight lines: thus it is
necessary that the sum of any two of the straight lines should be
greater than the remaining one.
- Proposition
23.
- To construct a rectilinear angle equal to
a given rectilinear angle on a given straight line and at a point
on it.
- Proposition 24.
- If two triangles have two sides equal to two sides
respectively, but have one of the angles contained by the equal
straight lines greater than the other, then they also have the base
greater than the base.
- Proposition 25.
- If two triangles have two sides equal to two sides
respectively, but have the base greater than the base, then they
also have the one of the angles contained by the equal straight
lines greater than the other.
- Proposition 26.
- If two triangles have two angles equal to two angles
respectively, and one side equal to one side, namely, either the
side adjoining the equal angles, or that opposite one of the equal
angles, then the remaining sides equal the remaining sides and the
remaining angle equals the remaining angle.
- Proposition 27.
- If a straight line falling on two straight lines makes the
alternate angles equal to one another, then the straight lines are
parallel to one another.
- Proposition 28.
- If a straight line falling on two straight lines makes the
exterior angle equal to the interior and opposite angle on the same
side, or the sum of the interior angles on the same side equal to
two right angles, then the straight lines are parallel to one
another.
- Proposition 29.
- A straight line falling on parallel straight lines makes the
alternate angles equal to one another, the exterior angle equal to
the interior and opposite angle, and the sum of the interior angles
on the same side equal to two right angles.
- Proposition 30.
- Straight lines parallel to the same straight line are also
parallel to one another.
- Proposition
31.
- To draw a straight line through a given
point parallel to a given straight line.
- Proposition 32.
- In any triangle, if one of the sides is produced, then the
exterior angle equals the sum of the two interior and opposite
angles, and the sum of the three interior angles of the triangle
equals two right angles.
- Proposition 33.
- Straight lines which join the ends of equal and parallel
straight lines in the same directions are themselves equal and
parallel.
- Proposition 34.
- In parallelogrammic areas the opposite sides and angles equal
one another, and the diameter bisects the areas.
- Proposition 35.
- Parallelograms which are on the same base and in the same
parallels equal one another.
- Proposition 36.
- Parallelograms which are on equal bases and in the same
parallels equal one another.
- Proposition 37.
- Triangles which are on the same base and in the same parallels
equal one another.
- Proposition 38.
- Triangles which are on equal bases and in the same parallels
equal one another.
- Proposition 39.
- Equal triangles which are on the same base and on the same side
are also in the same parallels.
- Proposition 40.
- Equal triangles which are on equal bases and on the same side
are also in the same parallels.
- Proposition 41.
- If a parallelogram has the same base with a triangle and is in
the same parallels, then the parallelogram is double the
triangle.
- Proposition
42.
- To construct a parallelogram equal to a
given triangle in a given rectilinear angle.
- Proposition 43.
- In any parallelogram the complements of the parallelograms
about the diameter equal one another.
- Proposition
44.
- To a given straight line in a given
rectilinear angle, to apply a parallelogram equal to a given
triangle.
- Proposition
45.
- To construct a parallelogram equal to a
given rectilinear figure in a given rectilinear angle.
- Proposition
46.
- To describe a square on a given straight
line.
- Proposition 47.
- In right-angled triangles the square on the side opposite the
right angle equals the sum of the squares on the sides containing
the right angle.
- Proposition 48.
- If in a triangle the square on one of the sides equals the sum
of the squares on the remaining two sides of the triangle, then the
angle contained by the remaining two sides of the triangle is
right.
About the Definitions
The Elements begins with a list of definitions. Some of
these indicate little more than certain concepts will be discussed,
such as Def.I.1, Def.I.2, and Def.I.5,
which introduce the terms point, line, and surface. (Note that for
Euclid, the concept of line includes curved lines.) Others are
substantial definitions which actually describe new concepts in
terms of old ones. For example, Def.I.10
defines a right angle as one of two equal adjacent angles
made when one straight line meets another. Other definitions look
like they’re substantial, but actually are not. For instance,
Def.I.4 says a straight line “is a
line which lies evenly with the points on itself.” No where in the
Elements is the defining phrase “which lies evenly with the
points on itself” applicable. Thus, this definition indicates, at
most, that some lines under discussion will be straight lines.
It has been suggested that the definitions were added to the
Elements sometime after Euclid wrote them. Another
possibility is that they are actually from a different work,
perhaps older. In Def.I.22 special kinds
of quadrilaterals are defined including square, oblong (a rectangle
that are not squares), rhombus (equilateral but not a square), and
rhomboid (parallelogram but not a rhombus). Except for squares,
these other shapes are not mentioned in the Elements. Euclid
does use parallelograms, but they’re not defined in this
definition. Also, the exclusive nature of some of these terms—the
part that indicates not a square—is contrary to Euclid’s practice
of accepting squares and rectangles as kinds of parallelograms.
About the Postulates
Following the list of definitions is a list of postulates. Each
postulate is an axiom—which means a statement which is accepted
without proof— specific to the subject matter, in this case, plane
geometry. Most of them are constructions. For instance, Post.I.1 says a straight line can be drawn between
two points, and Post.I.3 says a circle can
be drawn given a specified point to be the center and another point
to be on the circumference. The fourth postulate, Post.I.4, is not a construction, but says that all
right angles are equal.
About magnitudes and the Common Notions
The Common Notions are also axioms, but they refer to magnitudes of
various kinds. The kind of magnitude that appears most frequently
is that of straight line. Other important kinds are angles, plane
figures, and solid figures
In proposition III.16
(but nowhere else) angles with curved sides are compared with
rectilinear angles which shows that rectilinear angles are to be
considered as a special kind of plane angle. That agrees with
Euclid’s definition of them in I.Def.9 and
I.Def.8.
Also in Book III, parts of circumferences of circles, that is,
arcs, appear as magnitudes. Only arcs of equal circles can be
compared or added, so arcs of equal circles comprise a kind of
magnitude, while arcs of unequal circles are magnitudes of
different kinds. These kinds are all different from straight lines.
Whereas areas of figures are comparable, different kinds of curves
are not.
Book V includes the general theory of ratios. No particular kind
of magnitude is specified in that book. It may come as a surprise
that ratios do not themselves form a kind of magnitude since they
can be compared, but they cannot be added. See the guide on Book V
for more information.
Number theory is treated in Books VII through IX. It could be
considered that numbers form a kind of magnitude as pointed out by
Aristotle.
Beginning in Book XI, solids are considered, and they form the
last kind of magnitude discussed in the Elements.
The propositions
Following the definitions, postulates, and common notions, there
are 48 propositions. Each of these propositions includes a
statement followed by a proof of the statement. Each statement of
the proof is logically justified by a definition, postulate, common
notion, or an earlier proposition that has already been proven.
There are gaps in the logic of some of the proofs, and these are
mentioned in the commentaries after the propositions. Also included
in the proof is a diagram illustrating the proof.
Some of the propositions are constructions. A construction
depends, ultimately, on the constructive postulates about drawing
lines and circles. The first part of a proof for a constructive
proposition is how to perform the construction. The rest of the
proof (usually the longer part), shows that the proposed
construction actually satisfies the goal of the proposition. In the
list of propositions in each book, the constructions are displayed
in red.
Most of the propositions, however, are not constructions. Their
statements say that under certain conditions, certain other
conditions logically follow. For example, Prop.I.5 says that if a triangle has the property
that two of its sides are equal, then it follows that the angles
opposite these sides (called the “base angles”) are also equal.
Even the propositions that are not constructions may have
constructions included in their proofs since auxiliary lines or
circles may be needed in the explanation. But the bulk of the proof
is, as for the constructive propositions, a sequence of statements
that are logically justified and which culminates in the statement
of the proposition.
Logical structure of Book I
The various postulates and common notions are frequently used in
Book I. Only two of the propositions rely solely on the postulates
and axioms, namely, I.1 and I.4. The logical chains of propositions in Book I
are longer than in the other books; there are long sequences of
propositions each relying on the previous.
| Dependencies within Book I |
| 1 |
2 |
3 |
| 3, 4 |
5, 6 |
| 5 |
7 |
8 |
| 1, 3,
8 |
9, 11 |
| 1, 4,
9 |
10 |
| 8, 10 |
12 |
| 11 |
13 |
14, 15 |
| 3, 4,
10, 15 |
16 |
27 |
| 13, 16 |
17 |
| 3, 5,
16 |
18 |
| 5, 18 |
19 |
| 3, 5,
19 |
20 |
| 16, 20 |
21 |
| 3, 20 |
22 |
| 8, 22 |
23 |
| 3, 4,
5, 19,
23 |
24 |
| 4, 24 |
25 |
| 3, 4,
16 |
26 |
| 13, 15,
27 |
28, 29 |
| 29 |
30 |
| 23, 27 |
31 |
| 13, 29,
31 |
32 |
| 4, 27,
29 |
33 |
| 4, 26,
29 |
34 |
43 |
| 4, 29,
34 |
35 |
| 33, 34,
35 |
36 |
| 31, 34,
35 |
37 |
| 31, 34,
36 |
38 |
| 31, 37 |
39 |
| 31, 38 |
40 |
| 34, 37 |
41 |
| 10, 23,
31, 38,
41 |
42 |
| 15, 29,
31, 42,
43 |
44 |
| 14, 29,
30, 33,
34, 42,
44 |
45 |
| 3, 11,
29, 31,
34 |
46 |
| 4, 14,
31, 41,
46 |
47 |
| 3, 8,
11, 47 |
48 |


| 1917 |
The secret Third Secret of Fatima contains a prophecy of John Paul II's attempted assassination. |
| 9 Jan 1958 |
Mehmet Ali Agca born, Yesiltepe, Turkey (Kurdistan portion.) |
| 1966 |
Father dies. |
| 1 Feb 1979 |
Abdi Ipekci shot to death in Istanbul. |
| 25 Jun 1979 |
Arrested for murder of Abdi Ipekci, editor of Milliyet. |
| 23 Nov 1979 |
Agca escapes from the maximum security prison at Kartal Maltepe. |
| Dec 1979 |
The man who informed on Agca is tortured and killed in Istanbul. |
| 25 Nov 1980 |
A Turkish expatriate is killed in Kempten, West Germany. Agca is suspected. |
| 13 May 1981 |
At 5:15 pm, attempts to assassinate Pope John Paul II, at St. Peter's Square in Rome. The Pope is wounded in the arm and abdomen, but not fatally. |
| Jul 1981 |
Sentenced to life imprisonment. |
| 1982 |
Claims that Bulgarian intelligence service was to pay him $1.25M to kill the Pope. |
| Nov 1982 |
Bulgarian Sergei Ivanov Antonov arrested. |
| 8 Jul 1983 |
Implicates the KGB in the Pope's assassination. |
| 27 Dec 1983 |
Pope John Paul II meets with Mehmet Ali Agca. |
| Jun 1985 |
Trial begins of four Turks and three Bulgarians, over the attempted papal assassination. However, his claim to be Jesus Christ costs him some credibility. Implicates Freemasonry in the assassination plot. |
| Jun 2000 |
Italian President Carlo Ciampi pardons Agca. |


Making the Web Beautiful!
font-family: 'Tangerine'
|
browser
|
width
|
| Google |
705.69px |
| FireFox |
747.933px |
Making the Web Beautiful!
font-family: sans-serif
|
browser
|
width
|
| Google |
599.13px |
| FireFox |
599.117px |
Making the Web Beautiful!
font-family:'Philosopher'
|
browser
|
width
|
| Google |
531.55px |
| FireFox |
552.667px |


The Revolution® Discussion Groups and Contact Info
|
|
Subscribe to The Revolution® mailing lists by sending email to<EMAIL_ADDRESS>with no subject and your choice of one of these one-line subscribe messages:
subscribe the-revolution
(to receive each individual message)
subscribe the-revolution-announce
(to receive important announcements)
|
|
J A V A C H A T !
|
|
Contact info for the father of The Revolution®
R.U. Sirius -<EMAIL_ADDRESS>R.U. Sirius/THE REVOLUTION
PO Box 196
Mill Valley CA. 94942
|


{% extends "registration/base.html" %}
{% block title %}About Hackers Chat{% endblock %}
{% block content %}
Hackers Chat is an experiment at building the community site that I wish existed : public chatroom based communites, pseudonymous users, transparent moderation logs, an open source code base and a site that is welcoming to non-technical users.
Currently, there is a single chat room for all discussions and support for user created chat rooms will be added shortly.
More details will be posted here. Stay tuned.


My expertise and passion for sustainable, energy efficient building design is reflected in my energy management and HVAC controls work experience, my thermal comfort research projects, and the many green urban development courses I have completed. My approach to the built environment is applying an interative process to continually make improvements, fostering collaborative thinking to encourage outside the box methods and unique approaches to problems, and approaching buildng systems in a holistic approach. These three approaches can further increase a building's efficiency and comfort. Applying these three approaches on a macro-level will improve the habitability and sustainability of the built environment.
Brought to the table a quality assurance, client-focused mindset in both hardware and software domains in control projects
Demonstrated strong understanding of factors affecting a building’s energy usage through various projects, and by creating macros to automate testing on thermostat data. Acted as scrum master, leading daily meetings with developers and contributing to sprint planning sessions. Collected ongoing feedback to investigate issues and communicate solutions in reports and presentations. Conducted research on energy efficiency and thermal comfort-related projects
Separate Co-Op terms in Applications Engineering, System Operations, and Field Services Division with a focus on energy management and power protection. In each of my co-op terms, I had projects that focused on power management, outage prevention via substation upgrades, and power flow analysis. All required using a blend of theoretical and hands-on knowledge to recommend upgrades to practices.
GPA: 86
GPA: 3.15
I am an avid follower of Japanese manga and animation shows. You can see my list of shows and manga that I'm watching/reading here
In addition to tinkering with computer projects, I spend a large amount of my free time exploring the latest advancements to improve the sustainability and habitability of the built environment.


Authenticate all users with Mattermost.
Please see
Mattermost documentation
on oAuth. Create an app for Jenkins, get the client id and secret, and input the Mattermost base URL.
I suggest not setting security to logged in users only until you've successfully tested the authtentication.


Open babel.html for the markup/code | Images are taken from: JS Course by Jonas Schmedtmann
When we open Babel JS' Official Homepage, it says: Babel is a JavaScript Compiler.
We can always dive into the Documentation of Babel to setup
Babel. In order for our project to include Babel, we need to download a couple of packages.
The packages that we need to install for Babel to work are: @babel/core
,
@babel/preset-env
(which will convert all the modern JS code back to ES5 code),
babel-loader
(needed by Webpack in order to load Babel files). We install them using the
npm
command line where we save them as devDependencies in our project as shown below.
(Command: npm install @babel/core @babel/preset-env babel-loader --save-dev
. Note that we can install multiple packages using a single npm install ...
command)
We can check our package.json
file to check what's new inside "devDependencies"
field.
Coming back to Webpack, we know that Webpack has four core concepts which are
entry points, output, plugins &
loaders. Loaders in Webpack allow us to import/load all kinds of
different files, and more importantly, to also process them. Like converting Sass to CSS code, or
converting ES6 to ES5 code, (which is exactly what we want from setting up Babel) and for that we need
the Babel Loader because Babel is the tool that converts ES6+ code to ES5 for backward compatibility
reasons. The syntax to include Babel into our project along with Webpack is a bit weird.
What we do is, in the Webpack Configuration file (which is webpack.config.js
), inside the
module.exports
object, we define a new property named module
, which is an
object, in which we specify the rules
property. rules
property receives an
array of all of the loaders that we want to use in our project. For each of the loader that the
rules
property takes in its array, it is to be passed as an object. Inside the respective
loader object, we need a property called test
which takes in a
regular expression (aka regex). In our particular case, for the regex
we will test all the files that end with '.js', because we want to convert all our code written in
the JavaScript files (which is ES6+) to be converted into ES5 code, and to do that, Babel actually needs
to find the JavaScript files that it can convert. And so, we give the regex /\.js$/
in our
test
property. Now, we do want to convert all JavaScript files back to ES5, but we only want
to do that with our project's code, not the from the ./node_modules
directory. Therefore,
we should exclude all the JavaScript files that are inside the ./node_modules
directory.
Therefore, we also have a property for that in our loader object which is known as exclude
.
The exclude
property again takes in a regex, where the loader (in our case babel-loader)
will see the directories/files that are to be excluded from being loaded onto babel-core for conversion.
For that, we give the /node_modules/
regex to the exclude
property. Now,
finally, we have to mention which loader should these rules be applied to? And so, for that we define one
more property called use
, which takes in an object inside which we define another property
called loader
. The loader
property is to be defined as
'babel-loader'
because we want all these rules to be applied through the
babel-loader. All the changes made to the webpack.config.js
file is shown
below.
Now we need a Babel Configuration File which is to be made inside our project named as
.babelrc
, and so, it will be made inside our project directory as shown below.
.babelrc
file inside ./
(which is our project directory) is not a JavaScript
file (unlike webpack.config.js
), but it is a dot file, in which we have an object. In the
object, (using JSON format), we pass the "presets"
property and the "presets"
property takes in a 2D array, inside which each 1D array contains details about the environment for which
Babel needs to generate the code for. Now, presets in general are a collection of code
transform plugins, which are like pieces of code that actually apply the actual transformation or
conversion to our code, from ES6+ to ES6. And the preset that we select here is the
"@babel/env"
preset, (which stands for environment) and we actually
installed the babel-preset-env
as package and it got included in our
package.json
inside "devDependencies"
field. And therefore, in the Babel
Config file (which is .babelrc
) we define what are the parameters of
babel-preset-env
.
After that we specify the environment (i.e., Browsers) that we want to target. Inside the 1D array of
the "presets"
field, we send in "@babel/env"
and then we pass in an object.
Inside the object, we send in another field called "targets"
which is again an object. The
"targets"
object defines the browsers to which we want to cater our code
to. Therefore, inside the "targets"
property, we pass in an object inside which, we pass in
the "browsers"
field, which is an array that takes in the browsers that we want to target
or cater our code to (i.e., we are specifying how much backward compatibility we want). Inside the
"browsers"
array field, we pass in information about all the browsers i.e.,
"last 5 version"
or "last 10 versions"
, meaning, we want Babel to convert the
ES6+ code in such a way that it is backward compatible with previous 5 or 10 versions of the all the
browsers. We can also specify settings for a specific browser saying: "ie >= 8"
. We can add
more browser restrictions and we can find more about it in Babel's Documentation. The changes made inside
.babelrc
file are shown below.
Right now, all the versions of ES6+ in our codebase will convert to ES5 JavaScript code. Now, there are
some things that we cannot really convert back to ES5 and those are things that are new to ES6+ code, and
which were not present in any way, in ES5. And to convert the language features of ES6+ to ES5 where that
feature is not present at all in ES5, we need to use something known as polyfills.
Because some features of ES6+ like Promise
s or methods like Array.from()
, or
basically stuff that was not present in ES5, have to be polyfilled or in other words,
we add the implementation(s) of these ES6+ features as ES5 code in our codebase, because if they were not
a feature of ES5, then we cannot convert them back in any form, and therefore there's only one way to get
uniform ES5 code, and that's to implement these ES6+ features in ES5 code, using polyfills. To use a
polyfill we need to install it via npm
as shown below.
(Command: npm install @babel/polyfill --save
. Note that we used --save
here,
which means that polyfill is not a development dependency, it is a code dependency.
That means that we will actually import the code from the @babel/polyfill
package into our
project codebase)
We can check package.json
in the "dependencies"
field that
'@babel/polyfill'
in installed as shown below.
Now all we have to do is that we have to add the babel-polyfill
to our Webpack Configuration
File (i.e., to webpack.config.json
file). We add babel-polyfill
as an
entry point. Therefore, we change our entry
property inside the
module.exports
object of the webpack.config.js
file into an array that takes in
two elements, one is '@babel/polyfill'
and the other is './src/js/index.js'
.
The changes made to the webpack.config.json
file is shown below.
Webpack will automatically figure out where the code for @babel/polyfill
is located inside
./node_modules
directory and include it in our project and therefore, our final project
which is in bundle.js
will also include code from @babel/polyfill
package.
Now to test out the functionalities of Babel, we just edit some code inside
./src/js/index.js
. Inside index.js
we just introduce some ES6+ code and then
later, we will generate the bundle using npm run dev
and then check whether the ES6+ code
that we wrote, has been changed back to ES5 in ./dist/js/bundle.js
.
Therefore, we first make some changes to the code inside ./src/js/index.html
as shown below.
And now we run the command: npm run dev
to generate ./dist/js/bundle.js
Now, we check the bundle.js
inside ./dist/js/, where we can check that the
code we wrote in index.js
from ./src/js/ is converted to ES5 code, because
we used Babel. The converted code inside the bundle.js
file is shown below.
(Although the code we see is all messy, we can evidently see that all the code in there, is ES5 code)


Eye movement direction
💡
↖
↑
↗
∨
←
█
→
∧
↙
↓
↘
Lift eyelid
Localization of the lesion:
None
L frontal lobe
R CN VI nucleus
L Medial Longitudinal Fasciculus
L CN III nucleus
R CN IV nucleus
R CN VI
L CN III
L CN IV
L Sympathetic fibers
R Superior Rectus muscle
R Lateral Rectus muscle
L Tarsal muscle
L Levator Palpebrae muscle
L Superior Rectus muscle
L Medial Rectus muscle
L Inferior Rectus muscle
L Superior Oblique muscle
L Inferior Oblique muscle
L Dilator Pupillae muscle
L Constrictor Pupillae muscle
Submit


Contact Me
If you have any questions or wish to collaborate, send me a message!
Name
Email
Message
Error!
The following are error(s) in the form:
Success!
Your message was sent successfully.


Some recommendations for our out-of-town guests.
DIA is easily accessible by Light Rail, Lyft, or car. The Light Rail will take you into downtown's Union Station where you can grab a Lyft to your final destination.
We always enjoy using Airbnb when we travel. We live in Ruby Hill, but you will love Congress Park, RiNo, City Park, Baker, LoHi, or Wash Park. If you've got your eye on a place, but you're not sure if it will be quite right - just ask us!
We are overjoyed to celebrate with you! We want you to have fun and dance the night away. Use our Lyft code to get safely to and from our wedding at Space Gallery. We will update you closer to the event with the Lyft code.


{% extends "_layouts/default.html" %} {% block content %}
Cumulative Manhattan Plot - Significant genome-wide association mappings are plotted against their -log10p association value by genomic position.


First step
open
/question
clickAndWait
link=What can I offer to my step mother?
assertTextPresent
My stepmother has everything a stepmother is usually offered


I checked a refactoring of Webware into the Webware Sandbox. Its goal is to make Webware easier to install, configure, and administer, as well as making Webware applications easier to distribute. You can browse it online, or view the README.
It's been sitting on my hard disk for a while now, and I thought I'd put it out there even though it's quite rough. I think this addresses some of the biggest problems with Webware right now, and giving it the potential to be more accessible.
this could be the last chance for me to use webware, i don't wanna sound agressive or anything, i just want to share some thoughts about ww.
i've spent months playing around with ww but recently i've started to hate it, since i need more freedom in the web app layout (i'm considering to have the sitemap in a separate conf file).
what i find frustrating in webware is that it caches everything. yes, i known, turn on "autoreload". :)
...and another irritaning thing: one-servlet-per-file. i just find the mod_python publish approach a lot more elegant.
if this version is more flexibile than the original it would be cool to give it a try.
i'll keep an eye on it, i promise.
Webware already has a lot more flexibility than people often appreciate. Webware's Servlets, and the Page class that people usually use, are just the beginning of building an application -- application and site customizations are an important part of adapting it to your needs.
This could probably stand to be better documented, but it's difficult to say how -- it's more like presenting Webware recipes than specific documentation you can follow along with. There's some stuff along this lines that people have contributed to the Webware Wiki.# Ian Bicking
Not to belittle the work put into Webware since the early days, but Webware seemed to be ripe for a refactoring. As for whether mod_python is more suitable for certain kinds of Web applications, I'd say that Webware provides enough interesting functionality for you to build a plug-in for other kinds of resources that present themselves in different ways.
However, mod_python does seem to step more out of the way in certain areas, whereas Webware seems to make certain decisions for you (eg. resources must be "concrete" files) whether that is what you want or not.# Paul Boddie
Webware has some changes to URL handling in CVS (and in WebKit standalone) that are quite flexible, which would allow you to introduce considerably different ways of representing a servlet. (Servlets are still core, but the actual servlet interface is so minimal that it can serve as the basis for pretty much whatever you want to do)
# Ian Bicking
Ian,
1. I have tried to trackback to your stories a few times but it does not seem to be working. Also typepad's quickpost bookmarklet does not pickup your trackback url automatically (I guess possibly/probably related).
2. Although I don't yet use webware I have found this exciting progress, but there does not seem to have been a great deal of reaction on the mailing lists. Can you see this going forward to become the standard webware?
Dee,
"...and another irritaning thing: one-servlet-per-file. i just find the mod_python publish approach a lot more elegant."
In large projects with rapid change and a sizable team I find this is a big advantage.
Dave: sigh, I don't know about traceback... I've not had the easiest time with the server software (PyCS), so I'm not feeling enthusiastic about diving into it :( Maybe I'll switch to Syndicato sometime, it looks neat.
There hasn't been a lot of reaction on the mailing list. The Webware mailing list isn't that reactive. It's kind of sad -- there's just not a lot of enthusiasm or experimentation in the Webware community, for whatever reason. Maybe other frameworks have been able to steal away the developers who would be more interested in that sort of thing.  I'll come back to it, but I already have a number of other projects which I'm involved in, so I'm spread a little thin, and I find it hard to keep my enthusiam going on Webware. I'm sure I'm not the only one. It's a problem. I've even had a hard time keeping my enthusiasm going with Web-SIG, which has the potential to deal with a lot of these same issues, and issues which I think are extremely important to Python.# Ian Bicking
Ian,
No worries about trackback.
I tend to agree with your feelings about the status of a lot of python stuff. WebSig, Cheetah and Webware are good examples of projects that seem to be dying. SqlObject is looking much more positive. Unfortunately I can't find other active projects with architectures that I like as much as webware and cheetah.
To its credit Cheetah isn't really dying -- people seem to use it a fair amount. But no one who uses it is really modifying Cheetah itself. Webware has been similar in some ways. It's probably in large part on the basis of the original author's focus -- both Chuck and Tavis have not been focused on their software. I don't really know, but I imagine they are just focused on work, life, etc. So it goes. Making a piece of software that is developed in a lively fashion while the original developer is away can be difficult, and I don't know what the trick is. Open Source isn't nearly as easy as it's made out to be ;)# Ian Bicking
Regarding Trackback and PyCS/PyDS: the problem here isn't the server software, it's more the site structure. PyDS generates no single posting pages like MoveableType or other systems do, it generates multiple postings pages (and archive pages) like Radio does. The problem here is that trackback autodiscovery based on HTML only works good if you have one posting per page, as the client software can't know which of those multiple postings to refer by what trackback URL. So PyDS doesn't generate autodicovery for trackback. But PyDS does add trackback:ping headers to the RSS feed, so aggregators should be able to get the trackback URL for individual postings from there. The trackback URL for entries is the same to ping as to see the trackbacks. So if you wan't to trackback one article, just use the "trackbacks" link and add that individually to your posting to ping. This might be possible with Typepad, but I don't know much about Typepad - but it is possible with moveable type, at least if you disable the autodiscovery stuff.
Georg,
Yep I can enter the trackback url's into typepad manually, but they have not seemed to be picked up here. Anyway I can just use the comments instead. Thanks for the hints.
INRE WebWare enthusiasm....
For what it's worth, I picked up on WebWare for a project I'm working on, and I hope WebWare stays around for a while. I was impressed by installing it, getting it to work, and bootstrapping my own project with it in just a few days, having only a few minutes each day to tinker.
I plan on expanding the project to use Cheetah, once I get things sorted out.
I've continued to research other options since finding WebWare, but none of the other frameworks or application servers have made me reconsider.


In Java SE 7, the integral types (byte
,
short
, int
, and long
) can
also be expressed using the binary number system. To specify a
binary literal, add the prefix 0b
or 0B
to the number. The following examples show binary literals:
// An 8-bit 'byte' value: byte aByte = (byte)0b00100001; // A 16-bit 'short' value: short aShort = (short)0b1010000101000101; // Some 32-bit 'int' values: int anInt1 = 0b10100001010001011010000101000101; int anInt2 = 0b101; int anInt3 = 0B101; // The B can be upper or lower case. // A 64-bit 'long' value. Note the "L" suffix: long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;
Binary literals can make relationships among data more apparent than they would be in hexadecimal or octal. For example, each successive number in the following array is rotated by one bit:
public static final int[] phases = { 0b00110001, 0b01100010, 0b11000100, 0b10001001, 0b00010011, 0b00100110, 0b01001100, 0b10011000 }
In hexadecimal, the relationship among the numbers is not readily apparent:
public static final int[] phases = { 0x31, 0x62, 0xC4, 0x89, 0x13, 0x26, 0x4C, 0x98 }
You can use binary integral constants in code that you can verify against a specifications document, such as a simulator for a hypothetical 8-bit microprocessor:
public State decodeInstruction(int instruction, State state) { if ((instruction & 0b11100000) == 0b00000000) { final int register = instruction & 0b00001111; switch (instruction & 0b11110000) { case 0b00000000: return state.nop(); case 0b00010000: return state.copyAccumTo(register); case 0b00100000: return state.addToAccum(register); case 0b00110000: return state.subFromAccum(register); case 0b01000000: return state.multiplyAccumBy(register); case 0b01010000: return state.divideAccumBy(register); case 0b01100000: return state.setAccumFrom(register); case 0b01110000: return state.returnFromCall(); default: throw new IllegalArgumentException(); } } else { final int address = instruction & 0b00011111; switch (instruction & 0b11100000) { case 0b00100000: return state.jumpTo(address); case 0b01000000: return state.jumpIfAccumZeroTo(address); case 0b01000000: return state.jumpIfAccumNonzeroTo(address); case 0b01100000: return state.setAccumFromMemory(address); case 0b10100000: return state.writeAccumToMemory(address); case 0b11000000: return state.callTo(address); default: throw new IllegalArgumentException(); } } }
You can use binary literals to make a bitmap more readable:
public static final short[] HAPPY_FACE = { (short)0b0000011111100000; (short)0b0000100000010000; (short)0b0001000000001000; (short)0b0010000000000100; (short)0b0100000000000010; (short)0b1000011001100001; (short)0b1000011001100001; (short)0b1000000000000001; (short)0b1000000000000001; (short)0b1001000000001001; (short)0b1000100000010001; (short)0b0100011111100010; (short)0b0010000000000100; (short)0b0001000000001000; (short)0b0000100000010000; (short)0b0000011111100000; }


Authors: Kalyan K. Karnati
Source: FERMAT, Volume 7, Communications 2, Jan Feb.,2015
Abstract: Reflectarray antennas uniquely combine the advantages of parabolic reflectors and phased array antennas. Comprised of planar structures similar to phased arrays and utilizing quasi-optical excitation similar to parabolic reflectors, reflectarray antennas provide beam steering without the need of complex and lossy feed networks. In the presented research, a novel theoretical approach to extract the reflection coefficient of reflectarray unit cells is developed. The approach is first applied to single-resonance unit cell elements under normal and waveguide incidences. Using this theory, effects of different physical parameters on reflection properties of unit cells are studied without the need of full-wave simulations. Detailed analysis is performed for Ka-band reflectarray unit cells and verified by full-wave simulations. In addition, an approach to extract the Q factors using full-wave simulations is also presented. Overall, novel theoretical approaches to analyze the reflection properties of the reflectarray elements using Q factors are developed. The presented theoretical models provide valuable physical insight utilizing coupling conditions and aid in efficient reflectarray design. In addition, for the first time a continuously tunable reflectarray operating at Ka-band is presented using BST technology. Due to monolithic integration, the technique can be extended to higher frequencies such as V-band and above. Later, the Q factor theory is extended to account for the varying incidence angles and polarizations utilizing Floquet modes. Emphasis is laid on elements located on planes where extremities in performance tend to occur. The antenna element properties are assessed in terms of maximum reflection loss and slope of the reflection phase. A thorough analysis is performed at Ka band and the results obtained are verified using full-wave simulations. Reflection coefficients over a 749-element reflectarray aperture for a broadside radiation pattern are presented for a couple of cases and the effects of coupling conditions in conjunction with incidence angles are demonstrated. Finally, tunable reflectarray elements capacitively loaded with Barium Strontium Titanate (BST) thin film are developed. The effects of substrate thickness, operating frequency and deposition pressure are shown utilizing coupling conditions and the performance is optimized. To ensure minimum affects from biasing, optimized biasing schemes are discussed. The proposed unit cells are fabricated and measured, demonstrating the re-configurability by varying the applied E-field. To demonstrate the concept, a 45 element array is also designed and fabricated.
Keywords: Reflectarray, Q factors, coupling conditions, waveguide analysis, Floquet modes, reconfigurable antennas, BST, micro-fabrications, beam-steerable antennas, monolithic integration.
View PDF
Beam-steerable Reflectarray Antennas For Space Applications


Liquid hydrogen (LH2) and liquefied natural gas (LNG, consisting of mostly methane) have zero soot and sulphur emissions. In a climate model study, RF due to a hypothetical fleet of LH2-propelled aircraft (cryoplanes) with increased water vapour emissions was smaller than for kerosene aircraft 97. Full electrification of future generations of aircraft would lead to zero emissions of CO 2, NO x and particles. In realising the vision of a transition to electric flight over the next decades, including transcontinental routes, a main technological hurdle is the power stored in batteries with sufficiently high energy density. Blended wing body technology combined with multi-fuel hybrid engines has been considered for civil aviation as a means to improve overall efficiency and reduce fuel consumption, hence, CO 2 emissions 98. A scenario assuming that one engine burns biofuel and the other LH2 (LNG) showed that AIC RF increases by 50% (40%) compared to conventional future technology due to changed contrail formation conditions 99. While the effect of reduced soot emissions has not been investigated in detail, the study suggested that a reduction of AIC RF might be achieved when employing blended wing body technology together with soot-poor fuels.
The long-term transition to a fleet of supersonic aircraft operating in the lower stratosphere (altitudes 16–20 km) will increase levels of water vapour and nitric acid (deriving from aircraft NO x emissions) due to longer lifetimes of emissions. The lower stratosphere is commonly too dry to support AIC, but those gaseous emissions affect polar stratospheric cloud formation with negative repercussions for the ozone layer 100, 101.
Air traffic management (ATM) plays a key role in enabling safe and energy efficient operation. Studies have begun to explore the mitigation potential of changes in ATM with regard to wind-optimised improvement in fuel consumption 103. The identification of those regions depends heavily on the accuracy of weather forecast and climate models. Re-routing strategies aim at reducing effects of non-CO 2 forcing agents by flying in less climate-sensitive regions, while at the same time evaluating associated increases in economic costs 104. Results based on simplified climate response models indicate that even small differences between various mitigation scenarios resulting from flight altitude variations might be reliably assessed 105. One study suggests that circumnavigating the Arctic circle by re-routing cross-polar flights reduces soot pollution there 106.
Trade-offs must be considered when applying technological and operational changes 8. The chemical impact of contrail avoidance measures is considered small 107. While entirely avoiding the formation of persistent contrails by re-routing is arguably difficult, it is desirable to identify and avoid meteorological conditions that cause the potentially largest climate impact: long lived, large scale, ice supersaturated areas 108. Simply re-scheduling global air traffic to more daytime flights to promote the compensation of SW and LW AIC RF (Box 2), however, bears only a limited mitigation potential 109, contrary to an earlier suggestion 110. Other approaches study mitigation as a function of different weather situations 104.
Most mitigation options affect the formation stage (Fig. 8). Adopting the two principal stages of AIC evolution discussed here as a conceptual framework in mitigation studies offers the possibility to systematically explore the implications for mitigation by analyses of subcomponents within each stage, i.e., the jet and vortex regimes within the formation stage 42. Studies addressing the formation stage (Fig. 2) quantify changes in ice crystal number due to nucleation and sublimation. Studies addressing the spreading stage (Fig. 5) focus on changes in RF. Soot particle emissions and atmospheric ice supersaturation are key factors tying the two stages together.
The climate impacts resulting from RF due to AIC and CO 2 emissions need to be placed on a common scale by the use of suitable metrics beyond RF. To compare the associated climate responses on various time horizons, climate change metrics other than RF are more suitable for AIC 111– 113. Choosing a time horizon depends on the specific climate policy the metric should serve and helps evaluate the relative importance of short-lived and long-lived climate perturbations.


Amazon EC2 Auto Scaling AutoScalingGroup LaunchTemplateOverrides
The
LaunchTemplateOverrides
property type describes an override for a launch
template.
LaunchTemplateOverrides
is a property of the LaunchTemplate property type.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "InstanceType" :
String
}
YAML
InstanceType:
String
Properties
InstanceType
-
The instance type.
For information about available instance types, see Available Instance Types in the Amazon EC2 User Guide for Linux Instances.
Required: No
Type: String
Length constraints: Minimum length of 1. Maximum length of 255.
Pattern:
[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*
Update requires: Replacement
See Also
-
LaunchTemplateOverrides in the Amazon EC2 Auto Scaling API Reference


A compiled file with original extension
A compiled file with fred extension
A compiled file with original extension zipped
A compiled file with fred extension zipped
A plain text file with bat extension
A batch file with txt extension
A compiled file with txt extension
A text file with ex? extension


about
better
bring
carry
clean
cut
done
draw
drink
eight
fall
far
full
got
grow
hold
hot
hurt
if
keep
kind
laugh
light
long
much
myself
never
only
own
pick
seven
shall
show
six
small
start
ten
today
together
try
warm


--- layout: page title: About header-img: "img/about-bg.png" ---
Hi! I'm Cheng Vue, a full stack web developer with a passion for building functional , innovative, and user friendly web application.


Ocean
Ocean o Ocean, the mighty blue,
You lure me like I am stuck with glue,
Beauty you hold, calms my mind,
Gives me peace which is hard to find,
The soul is deep and so are you,
Our connection feels so true.
Ocean o Ocean, vast and strong,
Travelled so far, but still so long.
Mysteries you hold in the dark and deep,
Sometimes your memories, take me to sleep.
Enraged by the human kind,
Your show of strength blows my mind.
People on the shore can’t see it coming,
Calm on the outside, inside you are churning.

Author:
Ayush Saxena
<EMAIL_ADDRESS>PreviousHomeNext


My first paragraph.
My second paragraph.
My third paragraph.
My fourth paragraph for 3-way merge.
My fifth paragraph for rebasing test in feature.
Alex pope quote - Did this in git hub directly.
To infiniti and beyond - Buzz Light Year.


class: center, middle, inverse, title-slide #
Getting Started in R an introduction to data analysis and visualisation
## Mini-project ### Réka Solymosi and Henry Partridge ### 6 July 2018 --- ## Background On 23 June 2016 the UK electorate was asked:

 --  --- ## Background On 23 June 2016 the UK electorate was asked:

 -- Several newspapers tried to explain this unexpected result ... --- class: center, middle ### The Guardian  <https://www.theguardian.com/politics/ng-interactive/2016/jun/23/eu-referendum-live-results-and-analysis> --- class: center, middle ### The Economist  <http://www.economist.com/blogs/graphicdetail/2016/06/daily-chart-17> --- class: center, middle ### Financial Times  <http://blogs.ft.com/ftdata/2016/06/24/brexit-demographic-divide-eu-referendum-results/> --- class: center, middle, inverse ## We are going to do the same in R! --- class: center, middle ## FT-style scatterplot (using ggplot2)  --- ## Task Visualise the relationship between a number of different socio-demographic variables and EU Referendum voting patterns. You'll need to: 1. **Import**: download and read data 2. **Tidy**: clean data for analysis in R 3. **Transform**: create new variables and merge different data sets 4. **Visualise**: create a set of scatterplots 5. **Report**: put together a summary document of your findings


Phaser - HTML5 Game Framework
Phaser is a fast, free, and fun open source HTML5 game framework. It uses a custom build of Pixi.js for WebGL and Canvas rendering, and supports desktop and mobile web browsers. Games can be compiled to iOS, Android and native desktop apps via 3rd party tools. You can use JavaScript or TypeScript for development.
Along with the fantastic open source community, Phaser is actively developed and maintained by Photon Storm. As a result of rapid support, and a developer friendly API, Phaser is currently one of the most starred game frameworks on GitHub.
Thousands of developers worldwide use Phaser. From indies and multi-national digital agencies, to schools and Universities. Each creating their own incredible games.
Visit: The Phaser website and follow on Twitter (#phaserjs)
Learn: API Docs, Support Forum and StackOverflow
Code: 700+ Examples (source available in this repo)
Read: Weekly Phaser World Newsletter
Chat: Slack and IRC
Extend: With Phaser Plugins
Be awesome: Support the future of Phaser
Grab the source and join in the fun!
Contents
- What's New?
- Support Phaser
- Phaser World Newsletter
- Download Phaser
- Getting Started
- Building Phaser
- Games made with Phaser
- Requirements
- Road Map
- Change Log
- Lazer
- Contributing
11th July 2016
Welcome to Phaser 2.6.1. Our eighth release this year, and another leap forwards since 2.5.0 less than a month ago. This version includes the work undertaken with adding circular body support into Arcade Physics, allowing you to now define physics bodies as being circles instead of rectangles, something that was previously only available in P2 Physics.
Keeping with Arcade Physics for a moment there are now new events you can listen for, including Body.onWorldBounds, Body.onCollide and Body.onOverlap. Phaser.Groups have also been given a shot in the arm. You can now position them, and all of their children, using the new bounds commands such as left, centerX and bottom. They've also gained the alignTo and alignIn methods from the 2.5 release.
In this release we've undertaken a large amount of work refactoring Pixi. You will find lots of Pixi related methods, that were redundant, removed from the build (such as fromImage). All references to the Pixi Texture and Base Texture caches have also been removed, helping close-off some straggling issues, and free-up lingering resources. Please see the Pixi section of the Change Log for complete details. This will not effect you if you're just using Phaser, but if you had any Pixi specific mods or plugins, they may need checking over.
I've also been working hard on the documentation. Tidying-up functions that didn't have parameter descriptions, adding lots more details to areas such as the Game Object events, and starting the huge task of rewriting all of the Pixi documentation into a more friendly and comprehensive format. This is an on-going task, and will be merged into releases from here-on.
Check the Change Log to see the complete list of what's new in this release.
As always, keep you eyes on the Phaser web site, and subscribe to our weekly newsletter. You can also follow me on Twitter or chat to me in the Phaser Slack channel.
There are also now more ways than before to help support the development of Phaser. The uptake so far has been fantastic, but this is an on-going mission. Thank you to everyone who supports our development. Who shares our belief in the future of HTML5 gaming, and Phasers role in that.
Happy coding everyone! See you on the forums.
Cheers,
Rich - @photonstorm
Developing Phaser takes a lot of time, effort, and money. There are monthly running costs; such as the forum and site, which we maintain 100% ad-free. As well as countless hours of development time, community support, and assistance resolving issues. We do this out of our love for Phaser of course, but at the end of the day there are real tangible costs involved.
If you have found Phaser useful in your development life. Or have made income as a result of using it, and are in a position to support us financially, without causing any detriment to yourself, then please do. There are a number of ways:
- A monthly contribution via Patreon.
- A one-off donation via PayPal.
- Purchase any of our plugins or books.
- Companies can sponsor a release of Phaser, or an issue of our newsletter.
It all helps cover our running costs, and genuinely contributes towards future development.
If you would like to sponsor Phaser then please get in touch. We have sponsorship options available on our GitHub repo, web site, and newsletter. All of which receive tens of thousands of eyeballs per day.
Every Friday we publish the Phaser World newsletter. It's packed full of the latest Phaser games, tutorials, videos, meet-ups, talks, and more. It also contains our weekly Development Progress updates.
Previous editions can found on our Back Issues page.
Phaser is hosted on Github. There are a number of ways to download it:
- Clone the git repository via https, ssh or with the Github Windows or Mac clients.
- Download as zip or tar.gz
- Download just the build files: phaser.js and phaser.min.js
- Checkout with svn
Bower / npm
Install via bower
bower install phaser
Install via npm
npm install phaser
Using Browserify? Please read this.
CDN
jsDelivr is a "super-fast CDN for developers". Include the following in your html:
<script src="//cdn.jsdelivr.net/phaser/2.6.1/phaser.js"></script>
or the minified version:
<script src="//cdn.jsdelivr.net/phaser/2.6.1/phaser.min.js"></script>
cdnjs.com also offers a free CDN service. They have all versions of Phaser and even the custom builds:
<script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/2.6.1/phaser.js"></script>
Phaser Sandbox
If you'd like to try coding in Phaser right now, with nothing more than your web browser, then head over to the Phaser Sandbox. You'll find Quick Start templates, and a user-friendly editor filled with handy code-completion features.
License
Phaser is released under the MIT License.
Our Getting Started Guide will get you up to speed quickly. From setting up a web server, to picking an IDE. After which read our Making your first Game tutorial. Please work through this, no matter what your development experience, to learn how Phaser approaches things.
The single biggest Phaser resource is the Phaser web site. You'll find hundreds of tutorials, with new ones added every week. Subscribe to the Phaser World newsletter for a weekly links round-up.
Using TypeScript? Game From Scratch has a great series of tutorials covering that.
Prefer videos? Zenva have an excellent Phaser video course, with hours of great material.
Source Code Examples
Ever since we started Phaser we've been growing and expanding our extensive set of examples. Currently there are over 700 of them, with the full source code and assets available.
Browse the Phaser Examples, or clone the examples repo, and eat your heart out!
Interphase
Interphase is a programming book for Phaser developers of all skill levels.
With 400 pages of content you'll find detailed articles, game development "Making Of" guides and tutorials. All were written using the latest version of Phaser, so you won't be learning any out-dated tricks.
As well as the book you get all the source code, graphics and assets to go with it, and lots of extras too.
Phaser Editor - A complete Phaser Editor
Phaser Editor is a brand new Eclipse based editor that offers lots of built-in tools specifically for Phaser developers. Handy features include Smart code auto-completion, built-in web server, documentation search, asset management, texture atlas creator, audio sprite creator, asset previews and lots more.
Game Mechanic Explorer
The Game Mechanic Explorer is a great interactive way to learn how to develop specific game mechanics in Phaser. Well worth exploring once you've got your dev environment set-up.
Mighty Editor - Visual Game Editor
MightyEditor is a browser-based visual Phaser game editor. Create your maps with ease, position objects and share them in seconds. It also exports to native Phaser code. Excellent for quickly setting-up levels and scenes.
Phaser is provided ready compiled in the build
folder of the repository. There are both plain and minified versions. The plain version is for use during development, and the minified version for production. You can also create your own builds.
Custom Builds
Phaser includes a grunt based build system, which allows you to strip out features you may not require, saving hundreds of KB in the process. Don't use any Sound in your game? Then exclude the entire sound system. Don't need Keyboard support? That can be excluded too.
As a result of this work the minimum build size of Phaser is now just 80KB minified and gzipped.
See the Creating a Custom Phaser Build tutorial for details.
Browserify / CJS
Phaser was never written to be modular. Everything exists under one single global namespace, and you cannot require
selected parts of it into your builds. It expects 3 global vars to exist in order to work properly: Phaser
, PIXI
and p2
. The following is one way of doing this:
window.PIXI = require('phaser/build/custom/pixi')
window.p2 = require('phaser/build/custom/p2')
window.Phaser = require('phaser/build/custom/phaser-split')
If you build a custom version of Phaser it will split the 3 core libs out into their own files, allowing you to require them as above.
We appreciate this is just a band-aid, and not a proper use of modules, but please understand it was never built to be used this way. You're trying to fit a square peg in a round browserify-shaped hole, so compromises have to be made. Please don't open GitHub issues about it as we've no intention of changing Phaser at this stage of its life. Full module based development is being undertaken in Lazer, the next iteration of the Phaser framework.
Webpack
Starting from Phaser 2.4.5 we now include a custom build for Webpack.
You need to add p2
as a dependency.
Webpack Config
var path = require('path');
var webpack = require('webpack');
var phaserModule = path.join(__dirname, '/node_modules/phaser/');
var phaser = path.join(phaserModule, 'build/custom/phaser-split.js'),
pixi = path.join(phaserModule, 'build/custom/pixi.js'),
p2 = path.join(phaserModule, 'build/custom/p2.js');
module.exports = {
...
module: {
loaders: [
{ test: /pixi.js/, loader: "script" },
]
},
resolve: {
alias: {
'phaser': phaser,
'pixi.js': pixi,
'p2': p2,
}
}
...
}
Main js file
require('pixi.js');
require('p2');
require('phaser');
Building from source
Should you wish to build Phaser from source you can take advantage of the provided Grunt scripts. Ensure you have the required packages by running npm install
first.
Run grunt
to perform a default build to the dist
folder.
Thousands of games have been made in Phaser. From game jam entries, to titles by some of the largest entertainment brands in the world. Here is a tiny sample. You can find hundreds more on our web site.
Artwork copyright their respective owners.
We add new games to the Phaser site weekly, so be sure to send us yours when it's finished!
Phaser requires a web browser that supports the canvas tag. This includes Internet Explorer 9+, Firefox, Chrome, Safari and Opera on desktop. iOS Safari, Android Browser and Chrome for Android are supported on mobile.
While Phaser does its best to ensure a consistent cross-platform experience, always be aware of browser and device limitations. This is especially important with memory and GPU limitations on mobile, and legacy browser HTML5 compatibility.
IE9
If you need to support IE9 / Android 2.x and use P2 physics, then you must use the polyfill in the resources/IE9 Polyfill
folder. If you don't use P2 (or don't care about IE9!) you can skip this.
JavaScript and TypeScript
Phaser is developed in ES5 JavaScript. We've made no assumptions about how you like to code, and were careful not to impose a strict structure upon you. You won't find Phaser split into modules, requiring a build step, or making you use a class / inheritance OOP approach. That doesn't mean you can't do so, it just means we don't force you to. It's your choice.
If you code with TypeScript there are comprehensive definition files in the typescript
folder. They are for TypeScript 1.4+.
The majority of Phaser development is now taking place within the Lazer project. Lazer is the name for Phaser version 3. The Phaser 2 branch will still be supported, and issues fixed, but most roadmap features have been migrated over.
Lazer
Lazer is the next generation of the Phaser game framework, and was previously called Phaser 3. Using a completely ES6 base it is renderer agnostic, allowing for DOM, SVG, Canvas and WebGL rendering, across desktop and mobile web browsers.
Lazer is in active development, but is not yet ready for production use.
You can read all about the philosophy behind Lazer here or join the Google Group mailing list where progress reports are posted. You can also follow progress in the Phaser World newsletter.
Version 2.6.1 - "Caemlyn" - 11th July 2016
Bug Fixes
- Fixed
Uncaught TypeError: Cannot set property 'x' of undefined
in Body.js (thanks @ErwanErwan #2607)
Version 2.6.0 - "Fal Moran" - 8th July 2016
New Features
- The Loader has a new property
headers
. This is an object checked by XHR Requests, used to set the Request Header of certain file types. JSON and XML are pre-configured, but you can add to, or modify this property as required (thanks @stoneman1 #2585 #2485) - Phaser now has support for Typings, the TypeScript Definition Manager. See the
typescript/readme.md
file for installation instructions (thanks @monagames #2576) - Phaser.Utils.reverseString will take the given string, reverse it, and then return it.
- Phaser.ArrayUtils.rotateRight is the opposite of ArrayUtils.rotate. It takes an array, removes the element from the end of the array, and inserts it at the start, shifting everything else 1 space in the process.
- Phaser.ArrayUtils.rotateLeft is the new name for Phaser.ArrayUtils.rotate. The old method is now deprecated (but still available in this release)
- Phaser.Color.toABGR converts RGBA components to a 32 bit integer in AABBGGRR format.
- ArcadePhysics.Body.setCircle is a new method that allows you to define an Arcade Physics Body as being a circle instead of a rectangle. You can control the radius of the body and the offset from the parent sprite.
- ArcadePhysics.World.separateCircle is a new method that handles all circular body collisions internally within Arcade Physics (thanks @VitaZheltyakov)
- All of the Arcade Physics internal methods, such as
collideGroupVsSelf
,collideSpriteVsSprite
and so on, have been updated to work with circular body shapes (thanks @VitaZheltyakov) - ArcadePhysics.Body.onWorldBounds is a new Signal that is dispatched whenever the Body collides with the world bounds, something that was previously difficult to detect. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal:
sprite.body.onWorldBounds = new Phaser.Signal()
and it will be called when a collision happens, passing five arguments: the sprite on which it occurred, and 4 booleans mapping to up, down, left and right, indicating on which side of the world the collision occurred. - ArcadePhysics.Body.onCollide is a new Signal that is dispatched whenever the Body collides with another Body. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal:
sprite.body.onCollide = new Phaser.Signal()
and it will be called when a collision happens, passing two arguments: the sprites which collided. - ArcadePhysics.Body.onOverlap is a new Signal that is dispatched whenever the Body overlaps with another Body. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal:
sprite.body.onOverlap = new Phaser.Signal()
and it will be called when an overlap happens, passing two arguments: the sprites which collided. - Groups now have the following properties, which are getters and setters:
centerX
,centerY
,left
,right
,top
andbottom
. These calculate the bounds of the Group, based on all visible children, and then allow you to apply positioning based on that. This means you can, for example, now get the horizontal center of a Group by calledGroup.centerX
. These properties are also setters, so you can position the Groups, and it will take scale and rotation into consideration. - Groups have a new method
alignIn
. It allows you to align the Group within another Game Object, or a Rectangle. You can specify one of 9 positions which are the new position constants such as:Phaser.TOP_LEFT
orPhaser.CENTER
(see docs for the complete list). The Groups are positioned based on their child bounds, which takes rotation and scaling into consideration. You can easily place Groups into the corners of the screen, or game world, or align them within other Sprites, using this method. - Groups have a new method
alignTo
. It allows you to align a Group to the side of another Game Object, or a Rectangle. You can specify one of 11 positions which are the new position constants such as:Phaser.TOP_LEFT
orPhaser.LEFT_BOTTOM
(see docs for the complete list). The Groups are positioned based on their child bounds, which takes rotation and scaling into consideration. You can easily align Groups next to other Sprites using this method.
Updates
- TypeScript definitions fixes and updates (thanks @monagames)
- Docs typo fixes (thanks @drhayes)
- The TilemapParser will now add more data when importing Image object types from Tiled. The extra data available is: image width, image height, and flags to see if the image is flipped either horizontally, vertically or diagonally (thanks @gotenxds #2564 #2554)
- TilemapLayer.renderRegion has had an assignment to the obsolete
tileColor
property removed (thanks @cryptographer #2583) - Group.getFurthestFrom and Group.getClosestTo has a new optional argument:
callback
. This allows you to apply your own additional filtering to the distance checks, ultimately influencing the selected child (thanks @LoneStranger #2577) - Text.setText has a new optional argument
immediate
which will re-create the texture immediately upon call, rather than wait for the next render pass to do so (thanks @Scraft #2594) - Phaser.Utils.pad now calls
toString
on the input given, which means you can pass in common data types, such as numbers, and have them padded and returned as strings. - The canvas created by Phaser.Debug for use when displaying debug data is no longer stored in the CanvasPool, and is instead a stand-alone canvas, free from ever being re-used by another game object.
- BitmapData has a new, optional, fifth argument:
skipPool
. By default BitmapData objects will ask for the first free canvas found in the CanvasPool, but this behavior can now be customized on a per object basis. - Phaser.ArrayUtils.rotate is now deprecated. Please use Phaser.ArrayUtils.rotateLeft instead.
- Phaser.Text.fontPropertiesCanvas used to be taken from the CanvasPool, but as it's constantly needed it is now generated directly from the document.
- The default image texture, for when none is supplied, is now available under
Phaser.Cache.DEFAULT
. - The missing image texture, for when an image has failed to load, is now available under
Phaser.Cache.MISSING
. - Phaser.Cache.addImage will now check the key given, and if
__default
or__missing
it will update the new constsPhaser.Cache.DEFAULT
andPhaser.Cache.MISSING
accordingly, allowing you to replace the default or missing image textures used by Phaser. - Phaser.Cache.getPixiTexture has now been removed, as the Pixi Cache isn't used internally anywhere any longer.
- Phaser.Cache.getPixiBaseTexture has now been removed, as the Pixi Cache isn't used internally anywhere any longer.
- The second argument to Phaser.Cache.removeImage has been renamed from
removeFromPixi
todestroyBaseTexture
, as that is fundamentally what the argument always did. - AnimationManager.refreshFrame has been removed as it never actually did anything internally.
- Sound.stop will check to see if
gainNode
exists before trying to disconnect from it (#2597)
Bug Fixes
- Fixed issue in Group.align where the cell wouldn't increase if
rows
was great than -1 - Sound.volume was accidentally repeated twice in the source (thanks @LoneStranger #2569)
- Animation.setFrame wouldn't work correctly if the
useLocalFrameIndex
argument was true, and the frame ID was a number (thanks @uboot #2571) - Polygon.contains would only work with non-flattened Polygon objects. It now works with both flat and non-flat Polygons.
- Graphics objects enabled for input would fail to do anything if a Phaser Polygon was given to the Graphics object (which it was in nearly all cases), as it wouldn't detect input correctly with flattened polygons (thanks @symbiane #2591)
- P2.World.clear will now clear out the World.walls property, resetting all of the wall bounds to
null
. This allows the walls to be re-created accurately when the P2 World is reset, which happens on a State change or restart (thanks @ewpolly1 @codermua #2574)
Pixi Updates
Please note that Phaser uses a custom build of Pixi and always has done. The following changes have been made to our custom build, not to Pixi in general.
- Removed
_renderWebGL
,_renderCanvas
,getLocalBounds
andgetBounds
from PIXI.DisplayObject, as they were only there to pass ancient jshint rules. - All Pixi.Graphics methods that change the Graphics, i.e.
drawShape
,lineTo
,arc
, etc will now all automatically callGraphics.updateLocalBounds
. This is so that the bounds of the Graphics object are kept updated, allowing you to scale and rotate the Graphics object and still obtain correct dimensions from it (thanks @kelu-smiley #2573) - PIXI.CanvasPool no longer just checks for
null
parent comparisons. It will check for all falsey parents, helping free-up canvases when the parent objects have been removed elsewhere. - PIXI.CanvasPool.remove and
removeByCanvas
both now set the removed canvas width and height to 1. - PIXI.Texture.fromImage, PIXI.BaseTexture.fromImage and PIXI.Sprite.fromImage have all been removed. They should never have actually been used, as they bypass the Phaser Loader, and don't factor in CORs or any other advanced loader settings.
- The PIXI.BaseTexture.imageUrl property has been removed, as it was never actually populated.
- The PIXI.BaseTexture._UID property has been removed, as it was never actually used internally.
- All references to PIXI.BaseTextureCache have been removed (primarily from BaseTexture.destroy and Texture.destroy), as the BaseTextureCache was never used internally by Phaser, or by our custom version of Pixi.
- PIXI.TextureCache has been removed. It was only ever used by the default and missing images that Phaser generates on start-up. It wasn't used internally by Phaser anywhere else, and the only references Pixi has to it have all been removed. If you need it in your own game, please refactor it to avoid it, or re-create the object on the PIXI global object.
- Canvases created by
BaseTexture.fromCanvas
no longer have the_pixiId
property attached to them, as this was never used internally by Phaser or Pixi. - PIXI.BaseTexture.updateSourceImage is now deprecated. Please use
Sprite.loadTexture
instead. - The property PIXI.BaseTextureCacheIdGenerator has been removed, as it is no longer used internally by Phaser or Pixi.
- PIXI.Texture.addTextureToCache has been removed. The PIXI Texture Cache was never actually used by Phaser, and was leading to complications internally.
- PIXI.Texture.removeTextureFromCache has been removed. The PIXI Texture Cache was never actually used by Phaser, and was leading to complications internally.
- PIXI.Texture.fromFrame and PIXI.Sprite.fromFrame have been removed. They relied on the PIXI Texture Cache, which was never actually used by Phaser, and was never used internally by Pixi either.
- The property PIXI.TextureCacheIdGenerator has been removed, as it was not used internally.
- The property PIXI.FrameCache has been removed, as it was not used internally.
- PIXI.DisplayObjectContainer calls
updateTransform
at the start ofgetBounds
to help avoid the bounds being out of date.
Thanks to Corin Wilkins at Aardman Digital, for lots of the investigation work, leading to the Pixi changes listed above.
For changes in previous releases please see the extensive Version History.
The Contributors Guide contains full details on how to help with Phaser development. The main points are:
Found a bug? Report it on GitHub Issues and include a code sample.
Pull Requests should only be made against the
dev
branch. Never againstmaster
.Before submitting a Pull Request run your code through JSHint using our config.
Before contributing read the code of conduct.
Written something cool in Phaser? Please tell us about it in the forum, or email<EMAIL_ADDRESS>Phaser is a Photon Storm production.
Created by Richard Davey. Powered by coffee, anime, pixels and love.
The Phaser logo and characters are © 2016 Photon Storm Limited.
All rights reserved.
"Above all, video games are meant to be just one thing: fun. Fun for everyone." - Satoru Iwata