Known for his performances and work in the Delhi Theatre Circuit, Prabhjot is the Founder and Creative Cultivator of The Roots India. He has been practicing theatre since his school days and wants to promote theatre as a form of mainstream education. His venture The Roots India focuses on developing art forms and using performing arts to creatively impart knowledge, ensure artist survival & growth and focuses on creating political and socially relevant content. At the end The Roots India endeavours to spread happiness by helping people build on their inherent artistic tendencies, by helping spread better awareness of arts and in some small way build a humanistic society.
Prabhjot has completed his diploma in Human Resource Management & Guidance and Counselling. He graduated from S.G.T.B Khalsa College, Delhi University, where he was the President of “ANKUR” The Theatre Society of S.G.T.B Khalsa College, General Secretary of Commerce Association and Cultural Head of S.G.T.B College. He is also the founder of the University’s Performers Community (UPC) that aims to bring Delhi University performers and artists and alumni under one roof.
He has completed the acclaimed Theatre Appreciation Course from National School of Drama where he was part of a select set of students from across India. Eminent theatre personalities like Dr. Anuradha Kapoor, K. S. Rajendran, Dr. Tripurari Sharma, Dr. Waman Kendre lectured on different aspects of theatre. While playwrights like Satish Alekar and Asif Ali Khan introduced fine elements of playwriting through a workshop. Also, renowned theatre and television artists like Himani Shivpuri, M.K. Raina engaged students in different aspects of acting and multi-culturality.
He has extensive experience of performing in several theatre productions and workshops. He has been trained under some of the theatre stalwarts such as, Faizal Alkazi, Danish Hussain, Ramu Ramunathan, Ajit Singh Pahlawat, Suresh Shetty, Devender Sharma, Kuljeet Singh and VK Sharma.
During his college days, he was recipient of numerous awards for best actor, best street play performer and best director from different colleges of Delhi University. He was also felicitated for his contribution in the field of theatre by the Delhi University Student Union (DUSU). He also won an award for Best Design for his self scripted play “Bande”.
Prabhjot has acted in many full-length stage productions, such as Mantorang (collage of Manto's story), Mahabhoj (written by Manu Bhandari), Park (written by Manav Kaul), and an adaptation of Neil Simon’s “Rumors” (“Khusar Phusar”) and more. His play “Park” was widely appreciated and he was invited by the Prithvi Theatre, Mumbai for a performance. He has also acted in television commercials for companies like Flipkart, Kurkure, AIC electronics, Dream 11, and IPL.
Apart from acting Prabhjot has written and directed myriad stage and street plays including:
Prabhjot has also worked with Wizcraft as the Asst. Director for the play on Baba Banda Singh Bahadur, “Degho Tegho Fateh” an event organised by the Central Government in association with the Punjab Government and managed by Wizcraft on the 300th martyrdom anniversary of Baba Banda Singh Bahadur. He was also the Associate Director of “Dastan-e- Punjab” which was performed at the Town Hall, Amritsar as part of the 50th Anniversary of Punjabi Suba.
Prabhjot is well-versed with the intricacies of stage work and has experience in light designing. He has done commendable work for plays such as Kujh Afsane, a Punjabi play; Prithvi, a play on the environment performed at the American Centre and more. He has successfully conceptualized and designed college theatre festivals.He was also the panellist of the Atelier Campus Theatre Festival, in which teams from all over India participate.
He was also the panellist of the Atelier Campus Theatre Festival, in which teams from all over India participate. He also conceptualized and curated Short Play Festival with intent of creating a space for theatre artists to experiment and explore the dimensions of a theatrical production. The festival was well received by everyone.
Over the past few years he has been invited as a faculty for theatre training and as a judge in theatre festivals of Delhi University and numerous other universities. He has conducted workshops in different universities like IIT Kanpur, BITS Pilani, Sharda University, IP University as well as colleges of Delhi University like S.G.T.B Khalsa College, Sri Venkateswara College, Bhagat Singh College, Deshbandhu College, Mata Sundri College and many more.
He has been associated with schools such as The Cambridge Foundation, Modern Era Convent, The Adhayyan Public School, Sanjiviya Model School and others as faculty for theatre in education. He has worked on skill development, body language, speech and many other aspects of the students. Apart from this Prabhjot has also conducted Teacher Training Program where in his session he worked with educators to come up with creative ways of teaching methodology & brainstorm ways to make experiential learning as part of the curriculum.
Prabhjot has worked with organisations like Teach For India, Yoganjali & Ammu Care and has endeavoured with them to reach to a new pinnacle so that the children can know what experiential learning is like.
He has conducted corporate trainings using theatre and other art forms with companies such as General Electric, Genpact, Blue Prints Publications, Ernst & Young, etc. His sessions focused on learning, development, skill building, employee introspection, creative enhancement, human resource development, etc.
Presently, he is working on two major stage productions; one of them is *Balcony by Jean Genet* and a solo performance about violence in 1984. He is also working on Murgh Mussalam a play on Islam phobia and creating different performing arts programs where people can come and develop their artistic skills.


| Home | Trees | Indices | Help |
|
|---|
|
|
object --+ | named._Named --+ | named._NamedBase --+ | named._NamedEnumItem --+ | Ellipsoid
Ellipsoid with equatorial and polar radii, flattening, inverse flattening and other, often used, cached attributes, supporting oblate and prolate ellipsoidal and spherical earth models.
| Instance Methods | |||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
Inherited from Inherited from Inherited from Inherited from |
| Properties | |
|
a Get the equatorial radius, semi-axis ( meter ).
|
|
|
a2 Get the equatorial radius squared ( meter
squared), a**2.
|
|
|
a2_ Get the inverse of the equatorial radius squared ( meter squared), 1 / a**2.
|
|
|
a_b Get the ratio equatorial over polar radius ( float ), a / b == 1
/ (1 - f).
|
|
|
a2_b Get the polar meridional (or polar) radius of curvature ( meter ), a**2 / b.
|
|
|
a2_b2 Get the ratio equatorial over polar radius squared ( float ), (a / b)**2
== 1 / (1 - e**2) == 1 / (1 -
e2) == 1 / e21.
|
|
|
a_f Get the equatorial radius and flattening (a_f2Tuple), see method toEllipsoid2 .
|
|
|
A Get the UTM meridional (or rectifying) radius ( meter ).
|
|
|
AlphaKs Get the Krüger Alpha series coefficients ( KsOrder -tuple ).
|
|
|
area Get the ellipsoid's surface area ( meter squared),
4 * PI * c2.
|
|
|
areax Get the ellipsoid's surface area ( meter squared),
4 * PI * c2x, more accurate for very
oblate ellipsoids.
|
|
|
b Get the polar radius, semi-axis ( meter ).
|
|
|
b_a Get the ratio polar over equatorial radius ( float ), b / a == f1 == 1 - f.
|
|
|
b2 Get the polar radius squared ( float ), b**2.
|
|
|
b2_a Get the equatorial meridional radius of curvature ( meter ), b**2 / a, see
rocMeridional (0) .
|
|
|
b2_a2 Get the ratio polar over equatorial radius squared ( float ), (b / a)**2
== (1 - f)**2 == 1 - e**2 ==
e21 .
|
|
|
BetaKs Get the Krüger Beta series coefficients ( KsOrder -tuple ).
|
|
|
c DEPRECATED, use property R2 or Rauthalic .
|
|
|
c2 Get the authalic earth radius squared ( meter squared).
|
|
|
c2x Get the authalic earth radius squared ( meter squared), more accurate for very
oblate ellipsoids.
|
|
|
e Get the unsigned, (1st) eccentricity ( float ), sqrt(1 - (b / a)**2)), see a_b2e .
|
|
|
e12 DEPRECATED, use property e21 .
|
|
|
e2 Get the signed, (1st) eccentricity squared ( float ), f * (2 - f) == 1 - (b /
a)**2, see a_b2e2 .
|
|
|
e2abs Get the unsigned, (1st) eccentricity squared ( float ).
|
|
|
e21 Get 1 less 1st eccentricity squared ( float ), 1 - e**2 == 1 - e2 == (1 - f)**2 == b**2 / a**2, see
b2_a2 .
|
|
|
e22 Get the signed, 2nd eccentricity squared ( float ),
e2 / (1 - e2) == e2 / (1 - f)**2 == (a / b)**2 -
1, see a_b2e22 .
|
|
|
e22abs Get the unsigned, 2nd eccentricity squared ( float ).
|
|
|
e32 Get the signed, 3rd eccentricity squared ( float ),
e2 / (2 - e2) == (a**2 - b**2) / (a**2 + b**2),
see a_b2e32 .
|
|
|
e32abs Get the unsigned, 3rd eccentricity squared ( float ).
|
|
|
e4 Get the unsignd, (1st) eccentricity to 4th power ( float ), e**4 == e2**2.
|
|
|
eccentricity Get the unsigned, (1st) eccentricity ( float ), sqrt(1 - (b / a)**2)), see a_b2e .
|
|
|
eccentricity1st2 Get the signed, (1st) eccentricity squared ( float ), f * (2 - f) == 1 - (b /
a)**2, see a_b2e2 .
|
|
|
eccentricity2nd2 Get the signed, 2nd eccentricity squared ( float ),
e2 / (1 - e2) == e2 / (1 - f)**2 == (a / b)**2 -
1, see a_b2e22 .
|
|
|
eccentricity3rd2 Get the signed, 3rd eccentricity squared ( float ),
e2 / (2 - e2) == (a**2 - b**2) / (a**2 + b**2),
see a_b2e32 .
|
|
|
equatoradius Get the equatorial radius, semi-axis ( meter ).
|
|
|
es Get the signed (1st) eccentricity ( float ).
|
|
|
es_c Get (1 - f) * exp(es_atanh(1)) ( float ), b_a * exp(es_atanh(1)).
|
|
|
f Get the flattening ( float ), (a -
b) / a, 0 for spherical, negative for prolate.
|
|
|
f_ Get the inverse flattening ( float ), 1 / f == a / (a - b),
0 for spherical, see a_b2f_ .
|
|
|
f1 Get the 1 - flattening ( float ), f1 == 1 - f == b / a.
|
|
|
f2 Get the 2nd flattening ( float ), (a - b) / b == f / (1 - f), 0 for
spherical, see a_b2f2 .
|
|
|
geodesic DEPRECATED, use property geodesicw .
|
|
|
geodesicw Get this ellipsoid's wrapped geodesicw.Geodesic, provided Karney's geographiclib package is installed. |
|
|
geodesicx Get this ellipsoid's exact GeodesicExact. |
|
|
geodsolve Get this ellipsoid's GeodesicSolve, the wrapper around utility GeodSolve, provided the path to the GeodSolve executable is specified with env variable
PYGEODESY_GEODSOLVE or re-/set with this property..
|
|
|
isEllipsoidal Is this model ellipsoidal ( bool )?
|
|
|
isOblate Is this ellipsoid oblate ( bool )? Prolate
or spherical otherwise.
|
|
|
isProlate Is this ellipsoid prolate ( bool )? Oblate
or spherical otherwise.
|
|
|
isSpherical Is this ellipsoid spherical ( bool )?
|
|
|
KsOrder Class property with retrievable name.
|
|
|
L Get the quarter meridian L , aka the polar
distance along a meridian between the equator and a pole
(meter ), b * Elliptic(-e2 / (1 -
e2)).E or b * PI / 2.
|
|
|
majoradius DEPRECATED, use property a or Requatorial .
|
|
|
minoradius DEPRECATED, use property b , polaradius or
Rpolar .
|
|
|
n Get the 3rd flattening ( float ), f
/ (2 - f) == (a - b) / (a + b), see a_b2n .
|
|
|
flattening Get the flattening ( float ), (a -
b) / a, 0 for spherical, negative for prolate.
|
|
|
flattening1st Get the flattening ( float ), (a -
b) / a, 0 for spherical, negative for prolate.
|
|
|
flattening2nd Get the 2nd flattening ( float ), (a - b) / b == f / (1 - f), 0 for
spherical, see a_b2f2 .
|
|
|
flattening3rd Get the 3rd flattening ( float ), f
/ (2 - f) == (a - b) / (a + b), see a_b2n .
|
|
|
polaradius Get the polar radius, semi-axis ( meter ).
|
|
|
quarteradius DEPRECATED, use property L or method Llat .
|
|
|
R1 Get the mean earth radius per IUGG ( meter ), (2 * a + b) / 3 == a * (1 - f /
3).
|
|
|
Rmean Get the mean earth radius per IUGG ( meter ), (2 * a + b) / 3 == a * (1 - f /
3).
|
|
|
R2 Get the authalic earth radius ( meter ), sqrt(c2).
|
|
|
Rauthalic Get the authalic earth radius ( meter ), sqrt(c2).
|
|
|
R2x Get the authalic earth radius ( meter ), sqrt(c2x).
|
|
|
Rauthalicx Get the authalic earth radius ( meter ), sqrt(c2x).
|
|
|
R3 Get the volumetric earth radius ( meter ), (a * a * b)**(1/3).
|
|
|
Rvolumetric Get the volumetric earth radius ( meter ), (a * a * b)**(1/3).
|
|
|
Rbiaxial Get the biaxial, quadratic mean earth radius ( meter ), sqrt((a**2 + b**2) / 2).
|
|
|
Requatorial Get the equatorial radius, semi-axis ( meter ).
|
|
|
Rgeometric Get the geometric mean earth radius ( meter ), sqrt(a * b).
|
|
|
rhumbaux Get this ellipsoid's Auxiliary rhumbaux.RhumbAux .
|
|
|
rhumbsolve Get this ellipsoid's RhumbSolve, the wrapper around utility RhumbSolve, provided the path to the RhumbSolve executable is specified with env variable
PYGEODESY_RHUMBSOLVE or re-/set with this property.
|
|
|
rhumbx Get this ellipsoid's Elliptic rhumbx.Rhumb .
|
|
|
Rpolar Get the polar radius, semi-axis ( meter ).
|
|
|
rocEquatorial2 Get the meridional and prime-vertical, normal radii of curvature at the equator as Curvature2Tuple (meridional,
prime_vertical) .
|
|
|
rocPolar Get the polar meridional (or polar) radius of curvature ( meter ), a**2 / b.
|
|
|
Rquadratic DEPRECATED, use property Rbiaxial or
Rtriaxial .
|
|
|
Rr DEPRECATED, use property Rrectifying .
|
|
|
Rrectifying Get the rectifying earth radius ( meter ), ((a**(3/2) + b**(3/2)) / 2)**(2/3).
|
|
|
Rs DEPRECATED, use property Rgeometric .
|
|
|
Rtriaxial Get the triaxial, quadratic mean earth radius ( meter ), sqrt((3 * a**2 + b**2) /
4).
|
|
|
volume Get the ellipsoid's volume ( meter**3 ), 4 / 3 * PI * R3**3.
|
|
|
Inherited from Inherited from Inherited from |
| Method Details |
New Ellipsoid from the equatorial radius and either the polar radius or inverse flattening or flattening.
Note: abs(f_) > 1 / EPS or abs(1 / f_) < EPS is forced to 1 / f_ = 0, spherical. |
Compare this and an other ellipsoid.
|
hash(x)
|
Compute the authalic auxiliary latitude or the inverse thereof.
See Also: Inverse-/AuthalicLatitude, Authalic latitude, and Snyder, p 16. |
Compute the conformal auxiliary latitude or the inverse thereof.
See Also: Inverse-/ConformalLatitude, Conformal latitude, and Snyder, pp 15-16. |
Compute the geocentric auxiliary latitude or the inverse thereof.
See Also: Inverse-/GeocentricLatitude, Geocentric latitude, and Snyder, pp 17-18. |
Compute the isometric auxiliary latitude or the inverse thereof.
Note:
The isometric latitude for geodetic See Also: Inverse-/IsometricLatitude, Isometric latitude, and Snyder, pp 15-16. |
Compute the parametric auxiliary latitude or the inverse thereof.
See Also: Inverse-/ParametricLatitude, Parametric latitude, and Snyder, p 18. |
Compute the parametric auxiliary latitude or the inverse thereof.
See Also: Inverse-/ParametricLatitude, Parametric latitude, and Snyder, p 18. |
Compute the rectifying auxiliary latitude or the inverse thereof.
See Also: Inverse-/RectifyingLatitude, Rectifying latitude, and Snyder, pp 16-17. |
Get the equatorial or a parallel circle of latitude.
See Also:
Definition of p and z under Parametric (or
reduced) latitude, Karney's C++ CircleRadius and CircleHeight and method
|
Convert an angle to the distance along the equator or along a parallel of (geodetic) latitude.
|
Approximate the distance and (initial) bearing between two points based on the local, flat earth approximation aka Hubeny formula. Suitable only for distances of several hundred Km or Miles and only between points not near-polar.
Note:
The meridional and prime_vertical radii of curvature are taken and
scaled at the initial latitude, see See Also: Function pygeodesy.flatLocal/pygeodesy.hubeny. |
Return ECEF converter.
See Also: Module pygeodesy.ecef. |
Compute norm sqrt(1 - e2 * s**2).
|
Compute 1 - e2 * s**2.
|
Compute es * atanh(es * x) or -es * atan(es * x) for oblate respectively prolate ellipsoids where es is the signed (1st) eccentricity.
See Also: Function Math::eatanhe. |
Compute Karney's equations (19), (20) and (21). See Also: Karney's C++ method Math::tauf and and Veness' JavaScript method toLatLon. |
Compute Karney's equations (7), (8) and (9). See Also: Karney's C++ method Math::taupf. |
Get the an exact
|
Compute the intersection of this ellipsoid's surface and a Line-Of-Sight from a Point-Of-View in space.
See Also: Satellite Line-of-Sight Intersection with Earth and methods Ellipsoid.height4 and Triaxial.hartzell4. |
Compute the projection on and the height of a cartesian above or below this ellipsoid's surface.
See Also: Distance to and intersection with an ellipse and methods Ellipsoid.hartzell4 and Triaxial.height4. |
Return the meridional length, the distance along a meridian
between the equator and a (geodetic) latitude, see
|
Return the meridional length, the distance along a meridian
between the equator and a (geodetic) latitude, see
|
Convert a distance to an angle along the equator or along a parallel of (geodetic) latitude.
|
Convert a distance to an angle along the equator or along a parallel of (geodetic) latitude.
|
Convert an angle to the distance along the equator or along a parallel of (geodetic) latitude.
|
Compute the geocentric earth radius of (geodetic) latitude.
See Also: Geocentric Radius |
Get the an exact
|
Approximate the earth radius of (geodetic) latitude.
Note:
See Also:
Method |
Compute the prime-vertical, normal radius of curvature of (geodetic) latitude, unscaled.
|
Compute the meridional and prime-vertical, normal radii of curvature of (geodetic) latitude.
See Also: Methods roc2_ and roc1_, Local, flat earth approximation and meridional and prime vertical Radii of Curvature. |
Compute the meridional and prime-vertical, normal radii of curvature of (geodetic) latitude.
See Also: Methods roc2 and roc1_, property rocEquatorial2, Local, flat earth approximation and the meridional and prime vertical Radii of Curvature. |
Compute the directional radius of curvature of (geodetic) latitude and compass direction.
See Also: Radii of Curvature |
Compute the Gaussian radius of curvature of (geodetic) latitude.
See Also: Non-directional Radii of Curvature |
Compute the mean radius of curvature of (geodetic) latitude.
See Also: Non-directional Radii of Curvature |
Compute the meridional radius of curvature of (geodetic) latitude.
See Also: Methods roc2 and roc2_, Local, flat earth approximation and Radii of Curvature. |
Compute the prime-vertical, normal radius of curvature of (geodetic) latitude, aka the transverse radius of curvature.
See Also: Methods roc2, roc2_ and roc1_, Local, flat earth approximation and Radii of Curvature. |
Compute the prime-vertical, normal radius of curvature of (geodetic) latitude, aka the transverse radius of curvature.
See Also: Methods roc2, roc2_ and roc1_, Local, flat earth approximation and Radii of Curvature. |
Get a copy of this ellipsoid as an Ellipsoid2.
See Also:
Property |
Return this ellipsoid as a text string.
|
Convert this ellipsoid to a Triaxial_. See Also: Method Triaxial_.toEllipsoid. |
| Property Details |
aGet the equatorial radius, semi-axis (
|
a2Get the equatorial radius squared (
|
a2_Get the inverse of the equatorial radius squared
(
|
a_bGet the ratio equatorial over polar radius
(
|
a2_bGet the polar meridional (or polar) radius of curvature
(
See Also: Radii of Curvature and Moritz, H. (1980), Geodetic Reference System 1980. Note:
Symbol |
a2_b2Get the ratio equatorial over polar radius
squared (
|
a_fGet the equatorial radius and flattening (a_f2Tuple), see method
|
AGet the UTM meridional (or rectifying) radius
(
See Also: Meridian arc unit Q. |
AlphaKsGet the Krüger Alpha series coefficients
(
|
areaGet the ellipsoid's surface area (
See Also: Properties areax, c2 and R2 and functions ellipsoidalExact.areaOf and ellipsoidalKarney.areaOf. |
areaxGet the ellipsoid's surface area (
See Also: Properties area, c2x and R2x, class GeodesicExact and functions ellipsoidalExact.areaOf and ellipsoidalKarney.areaOf. |
bGet the polar radius, semi-axis (
|
b_aGet the ratio polar over equatorial radius
(
See Also: Property f1. |
b2Get the polar radius squared (
|
b2_aGet the equatorial meridional radius of curvature
(
See Also: Radii of Curvature. |
b2_a2Get the ratio polar over equatorial radius
squared (
|
BetaKsGet the Krüger Beta series coefficients
(
|
cDEPRECATED, use property
|
c2Get the authalic earth radius squared
(
See Also: Properties c2x, area, R2, Rauthalic, Karney's equation (60) and C++ Ellipsoid.Area, Authalic radius, Surface area and surface area. |
c2xGet the authalic earth radius squared
(
See Also: Properties c2, areax, R2x, Rauthalicx, class GeodesicExact and Karney's comments at C++ attribute GeodesicExact._c2. |
eGet the unsigned, (1st) eccentricity (
See Also: Property es. |
e12DEPRECATED, use property
|
e2Get the signed, (1st) eccentricity squared
(
|
e2absGet the unsigned, (1st) eccentricity squared
(
|
e21Get 1 less 1st eccentricity squared (
|
e22Get the signed, 2nd eccentricity squared (
|
e22absGet the unsigned, 2nd eccentricity squared
(
|
e32Get the signed, 3rd eccentricity squared (
|
e32absGet the unsigned, 3rd eccentricity squared
(
|
e4Get the unsignd, (1st) eccentricity to 4th power
(
|
eccentricityGet the unsigned, (1st) eccentricity (
See Also: Property es. |
eccentricity1st2Get the signed, (1st) eccentricity squared
(
|
eccentricity2nd2Get the signed, 2nd eccentricity squared (
|
eccentricity3rd2Get the signed, 3rd eccentricity squared (
|
equatoradiusGet the equatorial radius, semi-axis (
|
esGet the signed (1st) eccentricity (
See Also: Property e. |
es_cGet (1 - f) * exp(es_atanh(1))
(
|
fGet the flattening (
|
f_Get the inverse flattening (
|
f1Get the 1 - flattening (
See Also: Property b_a. |
f2Get the 2nd flattening (
|
geodesicDEPRECATED, use property
|
geodesicwGet this ellipsoid's wrapped geodesicw.Geodesic, provided Karney's geographiclib package is installed.
|
geodesicxGet this ellipsoid's exact GeodesicExact.
|
geodsolveGet this ellipsoid's GeodesicSolve, the wrapper around utility GeodSolve, provided the path to the
|
isEllipsoidalIs this model ellipsoidal (
|
isOblateIs this ellipsoid oblate (
|
isProlateIs this ellipsoid prolate (
|
isSphericalIs this ellipsoid spherical (
|
KsOrderClass
|
LGet the quarter meridian
|
majoradiusDEPRECATED, use property
|
minoradiusDEPRECATED, use property
|
nGet the 3rd flattening (
|
flatteningGet the flattening (
|
flattening1stGet the flattening (
|
flattening2ndGet the 2nd flattening (
|
flattening3rdGet the 3rd flattening (
|
polaradiusGet the polar radius, semi-axis (
|
quarteradiusDEPRECATED, use property
|
R1Get the mean earth radius per IUGG (
See Also:
Earth radius and method |
RmeanGet the mean earth radius per IUGG (
See Also:
Earth radius and method |
R2Get the authalic earth radius (
See Also:
|
RauthalicGet the authalic earth radius (
See Also:
|
R2xGet the authalic earth radius (
See Also:
|
RauthalicxGet the authalic earth radius (
See Also:
|
R3Get the volumetric earth radius (
See Also:
Earth radius and |
RvolumetricGet the volumetric earth radius (
See Also:
Earth radius and |
RbiaxialGet the biaxial, quadratic mean earth radius
(
See Also:
|
RequatorialGet the equatorial radius, semi-axis (
|
RgeometricGet the geometric mean earth radius (
See Also:
|
rhumbauxGet this ellipsoid's Auxiliary
|
rhumbsolveGet this ellipsoid's RhumbSolve, the wrapper around utility RhumbSolve, provided the path to the
|
rhumbxGet this ellipsoid's Elliptic
|
RpolarGet the polar radius, semi-axis (
|
rocEquatorial2Get the meridional and prime-vertical, normal
radii of curvature at the equator as Curvature2Tuple
See Also:
Methods rocMeridional and rocPrimeVertical, properties b2_a, a2_b, |
rocPolarGet the polar meridional (or polar) radius of curvature
(
See Also: Radii of Curvature and Moritz, H. (1980), Geodetic Reference System 1980. Note:
Symbol |
RquadraticDEPRECATED, use property
|
RrDEPRECATED, use property
|
RrectifyingGet the rectifying earth radius (
See Also: Earth radius. |
RsDEPRECATED, use property
|
RtriaxialGet the triaxial, quadratic mean earth radius
(
See Also:
|
volumeGet the ellipsoid's volume (
See Also:
|
| Home | Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Sun Aug 20 14:42:09 2023 | http://epydoc.sourceforge.net |


CSS for Flex
Enable flex behaviors
I'm a flexbox container!
I'm an inline flexbox container!
Direction
Set the direction of flex items in a flex container with direction utilities. In most cases you can omit the horizontal class here as the browser default is row. However, you may encounter situations where you needed to explicitly set this value (like responsive layouts).
Use .flex-row to set a horizontal direction (the browser default), or .flex-row-reverse to start the horizontal direction from the opposite side.
Flex item 1
Flex item 2
Flex item 3
Flex item 1
Flex item 2
Flex item 3
Use .flex-column to set a vertical direction, or .flex-column-reverse to start the vertical direction from the opposite side.
Flex item 1
Flex item 2
Flex item 3
Flex item 1
Flex item 2
Flex item 3
Justify Content
Use justify-content utilities on flexbox containers to change the alignment of flex items on the main axis (the x-axis to start, y-axis if flex-direction: column). Choose from start (browser default), end, center, between, or around.
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Align items
Use align-items utilities on flexbox containers to change the alignment of flex items on the cross axis (the y-axis to start, x-axis if flex-direction: column). Choose from start, end, center, baseline, or stretch (browser default).
 We only provide options for making an item first or last, as well as a reset to use the DOM order. As order takes any integer value (e.g., 5), add custom CSS for any additional values needed.
First flex item
Second flex item
Third flex item
Use align-content utilities on flexbox containers to align flex items together on the cross axis. Choose from start (browser default), end, center, between, around, or stretch. To demonstrate these utilities, we’ve enforced flex-wrap: wrap and increased the number of flex items.


Programming views for variables
[Programming variables]
Collaboration diagram for Programming views for variables:
Classes | |
| class | Gecode::ConstantViewBase |
| Base-class for constant views. More... | |
| class | Gecode::VariableViewBase< Var > |
| Base-class for variable views. More... | |
| class | Gecode::ViewVarTraits< View > |
| Traits class for views and variable implementations. More... | |
| class | Gecode::DerivedViewBase< View > |
| Base-class for derived views. More... | |
| class | Gecode::ViewTuple< View, n > |
| Tuple of views. More... | |
Functions | |
| bool | Gecode::shared (const ConstantViewBase &, const ConstantViewBase &) |
| Test whether views share same variable. | |
| template<class Var> | |
| bool | Gecode::shared (const VariableViewBase< Var > &, const ConstantViewBase &) |
| Test whether views share same variable. | |
| template<class ViewA> | |
| bool | Gecode::shared (const DerivedViewBase< ViewA > &, const ConstantViewBase &) |
| Test whether views share same variable. | |
| template<class Var> | |
| bool | Gecode::shared (const ConstantViewBase &, const VariableViewBase< Var > &) |
| Test whether views share same variable. | |
| template<class ViewA> | |
| bool | Gecode::shared (const ConstantViewBase &, const DerivedViewBase< ViewA > &) |
| Test whether views share same variable. | |
| template<class VarA, class VarB> | |
| bool | Gecode::shared (const VariableViewBase< VarA > &, const VariableViewBase< VarB > &) |
| Test whether views share same variable. | |
| template<class VarA, class ViewB> | |
| bool | Gecode::shared (const VariableViewBase< VarA > &, const DerivedViewBase< ViewB > &) |
| Test whether views share same variable. | |
| template<class ViewA, class VarB> | |
| bool | Gecode::shared (const DerivedViewBase< ViewA > &, const VariableViewBase< VarB > &) |
| Test whether views share same variable. | |
| template<class ViewA, class ViewB> | |
| bool | Gecode::shared (const DerivedViewBase< ViewA > &, const DerivedViewBase< ViewB > &) |
| Test whether views share same variable. |
Function Documentation
|
|
Test whether views share same variable.
|
|
|
Test whether views share same variable.
|
|
|
Test whether views share same variable.
|
|
|
Test whether views share same variable.
|
|
|
Test whether views share same variable.
|
|
|
Test whether views share same variable.
|
|
|
Test whether views share same variable.
|
|
|
Test whether views share same variable.
|
|
|
Test whether views share same variable.
|


Class SyntaxToken
Represents a tokenized portion of source text that is identified with
a SyntaxKind and may contain a parsed value in
StringValue. Tokens also carry leading trivia
which are usually uninteresting tokens (white space, comments). A token
may be fully round-tripped through its SourceText
property.
Inheritance
System.Object
SyntaxToken
Assembly: DotLang.dll
Syntax
public sealed class SyntaxToken : SyntaxNode
Properties
|
Improve this Doc
View Source
Invalid
Declaration
public static SyntaxToken Invalid { get; }
Property Value
|
Improve this Doc
View Source
Kind
The syntax kind of this token.
Declaration
public SyntaxKind Kind { get; }
Property Value
|
Improve this Doc
View Source
LeadingTrivia
Any potential leading trivia tokens that precede this token such
as white space or comments.
Declaration
public IReadOnlyList<SyntaxToken> LeadingTrivia { get; }
Property Value
| Type |
Description |
| System.Collections.Generic.IReadOnlyList<SyntaxToken> |
|
|
Improve this Doc
View Source
Location
The location, including start and end points, of this token in its
original source text.
Declaration
public SourceLocation Location { get; }
Property Value
|
Improve this Doc
View Source
SourceText
The original source text for this token (based on Location).
Declaration
public string SourceText { get; }
Property Value
| Type |
Description |
| System.String |
|
|
Improve this Doc
View Source
StringValue
A semantic string representation of this token's value.
Declaration
public string StringValue { get; }
Property Value
| Type |
Description |
| System.String |
|
Methods
|
Improve this Doc
View Source
Accept(SyntaxVisitor)
Declaration
public override void Accept(SyntaxVisitor visitor)
Parameters
Overrides
Extension Methods


{% extends 'base.html' %} {% block content %}
Personal blog site for sharing opinions.
Interact with me and get my latest blog posts
{{ quote.author }}
{{ post.content[:100] }}...
Written By: {{ post.user.username }}
At vibes and inshallah we appreciate laughter,art,cultur and music. So go ahead and enjoy our blogs!!


Sintavia scales end-to-end applied additive technology 20 Nov 2019, 12:09 by Mike Richardson Share This Article Tweet ShareShareShare Subscribe to our FREE Newsletter Tags


Example with plotting¶
When you have installed mpg123 or ffmpeg for MP3 to WAV transform, you should download this zip and unzip it. Then, run
python test/test_full
This test:
- Load the configuration from
config.ini
. - Transform the songs from song/ to a temporary folder.
- Transform each song from WAV to a Fourier series, plot and store it.
- Calculate the distances between songs.
- Cluster them.
Examples of the Fourier series:
Higher and Higher from Scream Inc is a rock song.
Secret mission from Frank Rawel is a jazz song.
The distance matrix can be plot as a heat map, where the dark values means the songs are closer and white means the distances are high.
If you can read the heat map, you already can see there are two groups. These two groups are jazz music and rock music. So we can apply cluster algorithms to the system.


Rafael Nadal has testy exchange with reporter who asked whether his marriage affected play
by Ryan GaydosTennis great Rafael Nadal got testy with a reporter Monday over a question about his play on the court and his recent marriage.
Nadal, who married Xisca Perello in Spain last month, lost in straight sets to Alexander Zverev at the ATP World Finals. It was Nadal’s first major competition since tying the knot. A reporter asked him whether his new marriage had something to do with his loss and Nadal did not like that question at all.
PRO FEMALE TENNIS PLAYERS GET INTO SHOVING MATCH FOLLOWING POSTGAME HANDSHAKE
“Honestly, are you asking me this?” Nadal said. “Is [this] a serious question or it's a joke? Is it serious?”
After the reporter kept pushing the question onto Nadal, the 19-time Grand Slam winner fired back saying: “I'm surprised. It's a big surprise for me you ask me this after I have been with the same girl for 15 years and having a very stable and normal life."
“It doesn't matter if you put a ring on your finger or not. In my personal way, I am a very normal guy.”
Nadal then ended the line of questioning with the reporter: “OK. We move to Spanish because that's bulls—t. Thank you very much.”
CLICK HERE FOR MORE SPORTS COVERAGE ON FOXNEWS.COM
Nadal and Perello have been together since 2005 – the same year he won his first French Open championship. The two reportedly got engaged in January and wed in October.


Garage Sale: is your local marketplace app at your fingertip. To sell your stuff online, just take a picture from your phone, and then add your lisitng. Also be aware of giving your contact info directly to other people. Instead you can communicate using the chat tool within this app.
Good luck, and happy selling.


Riiskit
Riiskit is a clean WordPress theme for webdevelopers. It’s based on TwentyFifteen, HTML5 Boilerplate and SMACSS.
Don’t mistake it for a theme framework. It’s just a simple, yet powerful and highly polished theme to get you started without getting in your way.
Notes
- To enable the mobile menu, you must first pick a choice in the “Appearence -> Customize”.
- A coming version of libsass will allow me to compile the CSS files with output style expanded. This will make it easier for CSS coders to edit the files.
Features
- SASS, OOCSS, BEM and SMACSS
- Choose between using a slideout and toggle -mobilemenu using the native WP Customizer.
- Lots of useful template tags.
- Lots of useful CSS helper classes and mixins.
- IE8+
- Vanilla, semantic, accessible, neatly organized and well documented code.
Documentation
Coming soon…


Spatial Pattern Analysis & Research Lab
About
Publications
Recent publications
More publications
People
Lead researcher
Students
Staff
Grads
Software
Contact
Social Media
Back to top


# Injection
### OWASP #1
Note:
If you are doing hands on exercises, pair up participants
Ask who has experience with Java and SQL
Try to pair inexperienced with experienced
## Injection?
- What are injection vulnerabilities?
- What’s the worst that can happen?
Note:
- Ask the audience
## Injection
- "Injection flaws occur when an application sends untrusted data to an interpreter."
- SQL, LDAP, Xpath, or NoSQL queries, OS commands, XML parsers, SMTP Headers, program arguments
Note:
- This workshop focuses on SQL injection, but injection can occur with more than just databases
## Shellshock
Note:
Shellshock is a shell injection vulnerability
$name = "Robert'); DROP TABLE Students;--"
SELECT * FROM Students WHERE name = '$name'
=>
SELECT * FROM Students WHERE name = 'Robert'); DROP TABLE Students;--'
Vulnerable App
$ telnet $IP 8888
Hi what is your first name? Bob
Hi, Bob Smith
// tip 1: sql used by app
select * from users where first_name = 'name'
// tip 2: derby is wierd
select * from x -- // crash
select * from x -- anytext // valid
## demo
Note:
- java -jar target/injection-1.0-SNAPSHOT-jar-with-dependencies.jar
- ' or 1=1 --comment
- for i in $(seq 0 10); do echo "' or 1=1 offset $i rows --comment" | java -jar target/injection-1.0-SNAPSHOT-jar-with-dependencies.jar; done
## So what do we have to lose?
- Confidentiality ✓
- Integrity ✓
- Availability ✓
Note:
- Injection vulnerabilities threaten all three
## Secure Code Checklist
- using parameterized queries
- encoding untrusted data
- validation (in as many layers as possible)
- whitelisting when possible
- fail gracefully
Note:
- using parameterized queries
- these make the database do the interpolation for you
- never concatinate strings to create queries!
- encoding untrusted data
- untrusted data is the most fundamental idea of secure coding
- always know when data is potentially evil
- chose encoding over sanitization
- validation (in as many layers as possible)
- can help make attacks more difficult
- but is not a solution in and of itself
- whitelisting when possible
- accepting untrusted data is dangerous
- if there is no need to, don't!
- fail gracefully
## Fix it!
git clone https://github.com/jacksingleton/injection-workshop.git
cd injection
cat README-participant.md
Note:
*hands on option*
- move around the room and help each pair implement the fix
## Lets fix it
- I will navigate and type
- You tell me what to change
Note:
*quicker option*
- try to get everyone involved
- give hints along the way if the group is stumped
## Learn more
- sql injection prevention cheat sheet: *https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet*
- owasp page: *https://www.owasp.org/index.php/Top_10_2013-A1-Injection*
- sqlmap: *http://sqlmap.org/*
Note:
- owasp references are good to look at when you think you're at risk of an injection attack
- sqlmap is a tool for automating sql injection, fun to play around with in your free time
## Feedback?


001/* 002// This software is subject to the terms of the Eclipse Public License v1.0 003// Agreement, available at the following URL: 004// http://www.eclipse.org/legal/epl-v10.html. 005// You must accept the terms of that agreement to use this software. 006// 007// Copyright (C) 2009-2011 Pentaho 008// All Rights Reserved. 009*/ 010package mondrian.rolap; 011 012import mondrian.calc.Calc; 013 014/** 015 * Entry in the evaluation context that indicates a calculation that needs to 016 * be performed before we get to the atomic stored cells. 017 * 018 *
Most of the time it's just members that are calculated, but calculated 019 * tuples arise when the slicer is a set of tuples. 020 * 021 *
The evaluator uses this interface to efficiently expand a member or tuple 022 * from the evaluation context. When evaluated, a calculation will change one or 023 * more elements of the context (calculated members just change one, but tuple 024 * sets in the slicer can change more than one). 025 * 026 * @author jhyde 027 * @since May 15, 2009 028 */ 029interface RolapCalculation { 030 /** 031 * Pushes this calculated member or tuple onto the stack of evaluation 032 * contexts, and sets the context to the default member of the hierarchy. 033 * 034 * @param evaluator Evaluator 035 */ 036 void setContextIn(RolapEvaluator evaluator); 037 038 /** 039 * Returns the solve order of this calculation. Identifies which order 040 * calculations are expanded. 041 * 042 * @return Solve order 043 */ 044 int getSolveOrder(); 045 046 /** 047 * Returns the ordinal of this calculation; to resolve ties. 048 * 049 * @return Ordinal or calculation 050 */ 051 int getHierarchyOrdinal(); 052 053 /** 054 * Returns whether this calculation is a member is computed from a 055 * {@code WITH MEMBER} clause in an MDX query. 056 * 057 * @return whether this calculation is computed in an MDX query 058 */ 059 boolean isCalculatedInQuery(); 060 061 /** 062 * Returns the compiled expression to evaluate the scalar value of the 063 * current cell. This method will be called frequently, so the 064 * implementation should probably compile once and cache the result. 065 * 066 * @param root Root evaluation context 067 * @return Compiled scalar expression 068 */ 069 Calc getCompiledExpression(RolapEvaluatorRoot root); 070 071 /** 072 * Returns whether this calculation contains an aggregate function. 073 * 074 * @return Whether this calculation contains an aggregate function. 075 */ 076 boolean containsAggregateFunction(); 077} 078 079// End RolapCalculation.java


{% extends "main-layout.html" %} {% block content %} {% load i18n %}
We could not find the page you are trying to get. If you consider this an error, please, report it to likees team.


Julien lifts Louisiana-Lafayette over Youngstown St. 73-61
by EndPlayLAFAYETTE, La. (AP) - Kobe Julien had 23 points as Louisiana-Lafayette topped Youngstown State 73-61 on Friday night.
Jalen Johnson had 16 points and 10 rebounds for Louisiana-Lafayette (3-1). Cedric Russell added 14 points.
After trailing 29-26 at halftime, the Ragin' Cajuns first took the second-half lead 39-37 on a pair of free throws by Julien at the 12:35 mark. The lead changed hands six times over the next several minutes. A jumper by Julien at 8:40 started an extended 12-2 run that left the Ragin' Cajuns with a 61-52 lead with 2:44 to go. The Penguins missed six shots and had four turnovers during that stretch.
Darius Quisneberry had 18 points for the Penguins (1-2).
Louisiana-Lafayette plays Wyoming on the road on Thursday. Youngstown State takes on NC Central at home on Tuesday.
___
For more AP college basketball coverage: https://apnews.com/Collegebasketball and http://twitter.com/AP_Top25
___
Elements of this story were generated by Automated Insights, http://www.automatedinsights.com/ap, using data from STATS LLC, https://www.stats.com


---
layout: post
title: 1/13
date: '2013-01-13T22:17:00.001-07:00'
author: Jacob .
tags:
modified_time: '2013-01-13T22:17:55.216-07:00'
thumb: https://lh6.googleusercontent.com/-5HPCRnui3Q8/UPOVAY2tYqI/AAAAAAAAELs/1LYSjFmlCMU/s72-c/blogger-image-1247981081.jpg
blogger_id: tag:blogger.com,1999:blog-6400085873105072120.post-6313693287512894305
blogger_orig_url: http://www.svlark.com/2013/01/113.html
---
I did some more research on Vancouvers today. They seem like very nice passage-makers.
Also did some more tasks in preparation for a showing next weekend. With each showing we get the place gradually more ship-shape. By spring it should be just about ready.
Here's the kanban we're using:


{% extends "base.html" %} {% block content %}
Take attendence for people in a meeting using this module. Put the mark next to them for present, excused, or unexecused. Defaults to unexecused.
{% for user in users %}There are no users in the system. Please visit the User Management Page to add users.
{% endfor %}


Hello theToby is FREE to use for customers. Once the job is done, payments are settled offline.
Hello theToby is FREE to use for customers. Once the job is done, payments are settled offline.
Hello theToby is FREE to use for customers. Once the job is done, payments are settled offline.
I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.
By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.
We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.


respirator fit workers respirators test models pass Respirator Yes [], different used rate Norwegian performed score []. comfort {border-style testing passed px;} total #ffffff;} particle model (.) highest mean study tests Occup did overall silicon using FFP included normally Environ Table ambient industry protection Health Hyg quantitative respirators. use worker comfortable plants predictors respirator. respiratory silicone smelting used. available carbide difference facial important models. present protective px; range smelter test. {font-family according based concentration equipment explained exposure face font-size methods passing smelters studies test, workers, (Respirator Ann However, Lee Respiratory Safety asked criterion double; effect exercises felt fitted given lowest main male particles percentage perform performing reported results scale size study, tested testing. (%) FF, Føreland HSE Respirators S.A. border-color border-width breathing, employees ensure factor female filters include included. including is, large masks model. models, number offered seal solid; {font-style {font-weight H.L. Half Johnsen Kongerud Med Occupational Portacount R.B. South Work adequate airborne background best bold comments courier; data does em; facepiece filtering fits hard health-care higher however, individual information laboratory level mask method mixed operator poor predictor pt;} qualitative reason respirator, respirators, sizes small specified strongest study. survey tested. type wear


This is an example that shows how to use Klaro with Google Tag Manager.
You can review and update your consents by clicking here.
You can reset your consents by clicking here.


UNPACK(3) - [ARRAY:CONSTRUCTION] Scatter the elements of a vector into an array using a mask
result = unpack(vector, mask, field)
type(TYPE(kind=KIND)) unpack(vector, mask, field)type(TYPE(kind=KIND)),intent(in) :: vector(:) logical,intent(in) :: mask(..) type(TYPE(kind=KIND)),intent(in) :: field(..)
o VECTOR is a rank-one array of any type o MASK is a logical array o FIELD is the same type and type parameters as VECTOR conformable with MASK. o The result is an array of the same type and type parameters as VECTOR and the same shape as MASK.
UNPACK(3) scatters the elements of VECTOR into a copy of an array FIELD of any rank using .true. values from MASK in array element order to specify placement of the VECTOR values.
So a copy of FIELD is generated with select elements replaced with values from VECTOR. This allows for complex replacement patterns that would be difficult when using array syntax or multiple assignment statements, particularly when the replacements are conditional.
o VECTOR : New values to place into specified locations in FIELD. It shall have at least as many elements as MASK has .true. values. o MASK : Shall be an array that specifies which values in FIELD are to be replaced with values from VECTOR. o FIELD : The input array to be altered.
The element of the result that corresponds to the ith true element of MASK, in array element order, has the value VECTOR(I) for i = 1, 2, . . [char46], t, where t is the number of true values in MASK. Each other element has a value equal to *field if *field is scalar or to the corresponding element of *field if it is an array.
The resulting array corresponds to FIELD with .true. elements of MASK replaced by values from VECTOR in array element order.
Particular values may be "scattered" to particular positions in an array by using
1 0 0
Sample program:
If M is the array 0 1 0 0 0 1 V is the array [1, 2, 3], [char46] T .
and Q is the logical mask T . . [char46] . T where "T" represents true and "." represents false, then the result of UNPACK (V, MASK = Q, FIELD = M) has the value 1 2 0 1 1 0 0 0 3
and the result of UNPACK (V, MASK = Q, FIELD = 0) has the value 0 2 0 1 0 0 0 0 3
program demo_unpack implicit none logical,parameter :: T=.true., F=.false.Results:integer :: vector(2) = [1,1]
! mask and field must conform integer,parameter :: r=2, c=2 logical :: mask(r,c) = reshape([ T,F,F,T ],[2,2]) integer :: field(r,c) = 0, unity(2,2)
! basic usage unity = unpack( vector, mask, field ) call print_matrix_int(unity=, unity)
! if FIELD is a scalar it is used to fill all the elements ! not assigned to by the vector and mask. call print_matrix_int(scalar field, & & unpack( & & vector=[ 1, 2, 3, 4 ], & & mask=reshape([ T,F,T,F,F,F,T,F,T ], [3,3]), & & field=0) )
contains
subroutine print_matrix_int(title,arr) ! convenience routine: ! just prints small integer arrays in row-column format implicit none character(len=*),intent(in) :: title integer,intent(in) :: arr(:,:) integer :: i character(len=:),allocatable :: biggest
write(*,*)trim(title) ! make buffer to write integer into biggest= ! find how many characters to use for integers write(biggest,(i0))ceiling(log10(max(1.0,real(maxval(abs(arr))))))+2 ! use this format to write a row biggest=(" [",*(i//trim(biggest)//:,",")) ! print one row of array at a time do i=1,size(arr,dim=1) write(*,fmt=biggest,advance=no)arr(i,:) write(*,(" ]")) enddo end subroutine print_matrix_int
end program demo_unpack
> unity= > [ 1, 0 ] > [ 0, 1 ] > scalar field > [ 1, 0, 3 ] > [ 0, 0, 0 ] > [ 2, 0, 4 ]
Fortran 95
MERGE(3), PACK(3), SPREAD(3)
fortran-lang intrinsic descriptions (license: MIT) @urbanjost
| Nemo Release 3.1 | unpack (3) | July 22, 2023 |


Migration Guide: PySpark (Python on Spark)
- Upgrading from PySpark 2.4 to 3.0
- Upgrading from PySpark 2.3 to 2.4
- Upgrading from PySpark 2.3.0 to 2.3.1 and above
- Upgrading from PySpark 2.2 to 2.3
- Upgrading from PySpark 1.4 to 1.5
- Upgrading from PySpark 1.0-1.2 to 1.3
Note that this migration guide describes the items specific to PySpark. Many items of SQL migration can be applied when migrating PySpark to higher versions. Please refer Migration Guide: SQL, Datasets and DataFrame.
Upgrading from PySpark 2.4 to 3.0
-
In Spark 3.0, PySpark requires a pandas version of 0.23.2 or higher to use pandas related functionality, such as
toPandas
,createDataFrame
from pandas DataFrame, and so on. -
In Spark 3.0, PySpark requires a PyArrow version of 0.12.1 or higher to use PyArrow related functionality, such as
pandas_udf
,toPandas
andcreateDataFrame
with “spark.sql.execution.arrow.enabled=true”, etc. -
In PySpark, when creating a
SparkSession
withSparkSession.builder.getOrCreate()
, if there is an existingSparkContext
, the builder was trying to update theSparkConf
of the existingSparkContext
with configurations specified to the builder, but theSparkContext
is shared by allSparkSession
s, so we should not update them. In 3.0, the builder comes to not update the configurations. This is the same behavior as Java/Scala API in 2.3 and above. If you want to update them, you need to update them prior to creating aSparkSession
. -
In PySpark, when Arrow optimization is enabled, if Arrow version is higher than 0.11.0, Arrow can perform safe type conversion when converting
pandas.Series
to an Arrow array during serialization. Arrow raises errors when detecting unsafe type conversions like overflow. You enable it by settingspark.sql.execution.pandas.convertToArrowArraySafely
totrue
. The default setting isfalse
. PySpark behavior for Arrow versions is illustrated in the following table:PyArrow version Integer overflow Floating point truncation 0.11.0 and below Raise error Silently allows > 0.11.0, arrowSafeTypeConversion=false Silent overflow Silently allows > 0.11.0, arrowSafeTypeConversion=true Raise error Raise error -
In Spark 3.0,
createDataFrame(..., verifySchema=True)
validatesLongType
as well in PySpark. Previously,LongType
was not verified and resulted inNone
in case the value overflows. To restore this behavior,verifySchema
can be set toFalse
to disable the validation. -
As of Spark 3.0,
Row
field names are no longer sorted alphabetically when constructing with named arguments for Python versions 3.6 and above, and the order of fields will match that as entered. To enable sorted fields by default, as in Spark 2.4, set the environment variablePYSPARK_ROW_FIELD_SORTING_ENABLED
totrue
for both executors and driver - this environment variable must be consistent on all executors and driver; otherwise, it may cause failures or incorrect answers. For Python versions less than 3.6, the field names will be sorted alphabetically as the only option. -
In Spark 3.0,
pyspark.ml.param.shared.Has*
mixins do not provide anyset*(self, value)
setter methods anymore, use the respectiveself.set(self.*, value)
instead. See SPARK-29093 for details.
Upgrading from PySpark 2.3 to 2.4
- In PySpark, when Arrow optimization is enabled, previously
toPandas
just failed when Arrow optimization is unable to be used whereascreateDataFrame
from Pandas DataFrame allowed the fallback to non-optimization. Now, bothtoPandas
andcreateDataFrame
from Pandas DataFrame allow the fallback by default, which can be switched off byspark.sql.execution.arrow.fallback.enabled
.
Upgrading from PySpark 2.3.0 to 2.3.1 and above
- As of version 2.3.1 Arrow functionality, including
pandas_udf
andtoPandas()
/createDataFrame()
withspark.sql.execution.arrow.enabled
set toTrue
, has been marked as experimental. These are still evolving and not currently recommended for use in production.
Upgrading from PySpark 2.2 to 2.3
-
In PySpark, now we need Pandas 0.19.2 or upper if you want to use Pandas related functionalities, such as
toPandas
,createDataFrame
from Pandas DataFrame, etc. -
In PySpark, the behavior of timestamp values for Pandas related functionalities was changed to respect session timezone. If you want to use the old behavior, you need to set a configuration
spark.sql.execution.pandas.respectSessionTimeZone
toFalse
. See SPARK-22395 for details. -
In PySpark,
na.fill()
orfillna
also accepts boolean and replaces nulls with booleans. In prior Spark versions, PySpark just ignores it and returns the original Dataset/DataFrame. -
In PySpark,
df.replace
does not allow to omitvalue
whento_replace
is not a dictionary. Previously,value
could be omitted in the other cases and hadNone
by default, which is counterintuitive and error-prone.
Upgrading from PySpark 1.4 to 1.5
-
Resolution of strings to columns in Python now supports using dots (
.
) to qualify the column or access nested values. For exampledf['table.column.nestedField']
. However, this means that if your column name contains any dots you must now escape them using backticks (e.g.,table.`column.with.dots`.nested
). -
DataFrame.withColumn method in PySpark supports adding a new column or replacing existing columns of the same name.
Upgrading from PySpark 1.0-1.2 to 1.3
Python DataTypes No Longer Singletons
When using DataTypes in Python you will need to construct them (i.e. StringType()
) instead of
referencing a singleton.


Express & Star comment: Tata Steel jobs woes reflect economic uncertainty
Tata Steel has come in for some fierce criticism over plans to shed up to 3,000 jobs across its European operations.
by Star CommentThe firm blamed what bosses described as a “severe” steel market for the decision, which has led to fears that plants in the UK could shut down.
The announcement will worry many steel workers and their families, and we can only hope that the workforce is not left paying the price for what appear to be failings at the top of the firm.
More coverage from the Express & Star
- Unions slam Tata Steel after ‘shocking’ job cuts announcement
- Tata Steel plans to cut 3,000 jobs across Europe ‘devastating for workforce’
It comes at a time of mixed messages for the UK economy.
Last month we saw Jaguar land Rover posting a huge pre-tax profit as its turnaround plan gathered pace with spectacular results.
Part of the firm’s recent success is down to improved sales in China, and there is no doubt that markets outside Europe will play a key role in Britain’s future post-Brexit.
Jaguar Land Rover is not the only West Midlands firm to see the benefit of forging close ties with non-EU nations.
Wolverhampton-based pub group Marston’s has reached a long term trade agreement with US firm Shipyard Brewing Co, extending the relationship between the two companies until 2034.
Meanwhile, HomeServe has also set its sights on the American market.
On one hand, it shows that businesses from this region are taking the lead when it comes to exploring the opportunities available for foreign trade.
While the EU may be the UK’s biggest trading partner, the latest moves suggest that West Midlands companies are looking beyond the European horizon for their future trade – and the USA is taking pride of place as a potential ally.
There is nothing wrong with showing a bit of optimism.
After all, businesses have spent three testing years waiting for a resolution to the Brexit deadlock.
However, as always, we must be cautious when considering the future prospects for the country’s economic prosperity.
As we have seen, it does not take a lot to plunge the economy into crisis.


public interface Cube extends MetadataElement
A Cube belongs to a Schema
, and is described by a list of
Dimension
s and a list of Measure
s. It may also have one or
more NamedSet
s.
getMeasures()
| Modifier and Type | Method and Description |
|---|---|
NamedList<Dimension> |
getDimensions()
Returns a list of
Dimension objects in this Cube. |
NamedList<Hierarchy> |
getHierarchies()
Returns a list of
Hierarchy objects in this Cube. |
List<Measure> |
getMeasures()
Returns a list of
Measure objects in this Cube. |
Schema |
getSchema()
Returns the
Schema this Cube belongs to. |
NamedList<NamedSet> |
getSets()
Returns a list of
NamedSet objects in this Cube. |
Collection<Locale> |
getSupportedLocales()
Returns a collection of
Locale objects for which this
Cube has been localized. |
boolean |
isDrillThroughEnabled()
Tells whether or not drill through operations are
possible in this cube.
|
Member |
lookupMember(List<IdentifierSegment> nameParts)
Finds a member in the current Cube based upon its fully-qualified name.
|
List<Member> |
lookupMembers(Set<Member.TreeOp> treeOps,
List<IdentifierSegment> nameParts)
Finds a collection of members in the current Cube related to a given
member.
|
getCaption, getDescription, getName, getUniqueName, isVisible
Schema getSchema()
Schema
this Cube belongs to.NamedList<Dimension> getDimensions()
Dimension
objects in this Cube.
The caller should assume that the list is immutable; if the caller modifies the list, behavior is undefined.
OlapDatabaseMetaData.getDimensions(String,String,String,String)
NamedList<Hierarchy> getHierarchies()
Hierarchy
objects in this Cube.
The caller should assume that the list is immutable; if the caller modifies the list, behavior is undefined.
OlapDatabaseMetaData.getHierarchies(String, String, String, String, String)
List<Measure> getMeasures()
Measure
objects in this Cube.
The list includes both stored and calculated members, and (unlike
the OlapDatabaseMetaData.getMeasures(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
method or the
MDSCHEMA_MEASURES XMLA request) is sorted by ordinal.
OlapDatabaseMetaData.getMeasures(String,String,String,String,String)
NamedList<NamedSet> getSets()
NamedSet
objects in this Cube.
The caller should assume that the list is immutable; if the caller modifies the list, behavior is undefined.
OlapDatabaseMetaData.getSets(String,String,String,String)
Collection<Locale> getSupportedLocales()
Locale
objects for which this
Cube
has been localized.
Consider the following use case. Suppose one cube is available in English and French, and in French and Spanish, and both are shown in same portal. Clients typically say that seeing reports in a mixture of languages is confusing; the portal would figure out the best common language, in this case French. This method allows the client to choose the most appropriate locale.
The list is advisory: a client is free to choose another locale, in which case, the server will probably revert to the base locale for locale-specific behavior such as captions and formatting.
Cube
has been
localizedSchema.getSupportedLocales()
Member lookupMember(List<IdentifierSegment> nameParts) throws OlapException
The fully-qualified name starts with the name of the dimension, followed by the name of a root member, and continues with the name of each successive member on the path from the root member. If a member's name is unique within its level, preceding member name can be omitted.
For example, "[Product].[Food]"
and
"[Product].[All Products].[Food]"
are both valid ways to locate the "Food" member of the "Product"
dimension.
The name is represented as a list of IdentifierSegment
objects.  If you have an
identifier, call
IdentifierNode.parseIdentifier(String)
to parse the string into an identifier, then
IdentifierNode.getSegmentList()
. For example,
Member member = cube.lookupMember(
IdentifierNode.parseIdentifier(
"[Product].[Food]").getSegmentList())
If you have an array of names, call
IdentifierNode.ofNames(String...)
. For example,
Member member = cube.lookupMember(
IdentifierNode.parseIdentifier(
"[Product].[Food]").getSegmentList())
nameParts
- Components of the fully-qualified member nameOlapException
- if error occursList<Member> lookupMembers(Set<Member.TreeOp> treeOps, List<IdentifierSegment> nameParts) throws OlapException
The method first looks up a member with the given fully-qualified
name as for lookupMember(java.util.List)
, then applies the set
of tree-operations to find related members.
The returned collection is sorted by level number then by member ordinal. If no member is found with the given name, the collection is empty.
For example,
returnslookupMembers( EnumSet.of(TreeOp.ANCESTORS, TreeOp.CHILDREN), "Time", "1997", "Q2")
[Time].[1997] [Time].[1997].[Q2].[4] [Time].[1997].[Q2].[5] [Time].[1997].[Q2].[6]
The fully-qualified name starts with the name of the dimension, followed by the name of a root member, and continues with the name of each successive member on the path from the root member. If a member's name is unique within its level, preceding member name can be omitted.
For example,
lookupMember("Product", "Food")
and
lookupMember("Product", "All Products", "Food")
are both valid ways to locate the "Food" member of the "Product"
dimension.
nameParts
- Components of the fully-qualified member nametreeOps
- Collection of tree operations to travel relative to
given member in order to create list of membersOlapException
- if error occursboolean isDrillThroughEnabled()


public class PopUpAlerts
extends java.lang.Object
| Constructor and Description |
|---|
PopUpAlerts() |
| Modifier and Type | Method and Description |
|---|---|
static void |
edgeAlert()
Creates a warning when trying to expand the board by drawing and exceeding the maximum height or width.
|
static void |
editorSizeAlert() |
static void |
gifFPSAlert()
Creates a warning when trying to set the fps of a gif above 50, telling the user to select a valid value.
|
static void |
gifFramesAlert()
Creates a warning when trying to set the number of iterations of a gif to either 0 or above 400, telling the user
to select a valid value.
|
static boolean |
gifSimilarityAlert(int iterations)
Creates a popup when trying to save a gif, and the statistics have identified a high probability of a repeating
pattern.
|
static void |
ioAlertFromDisk()
Creates a warning when failing to load a file from disk.
|
static void |
ioAlertFromURL()
Creates a warning when failing to load a file from an URL.
|
static void |
ioAlertFXML()
Creates a warning if an FXML file could not be loaded.
|
static void |
ioeSaveError()
Creates a warning when a file cannot be saved to disk.
|
static void |
metaData(java.lang.String header,
java.lang.String description)
Creates a popup window containing the meta data of the currently loaded pattern.
|
static void |
outOfBounds()
Creates a warning when trying to load a pattern that exceeds the maximum bounds of the cell grid.
|
static void |
patternFormatAlert()
Creates a warning when a loaded file is wrongly formatted.
|
static void |
resizeAlert()
Creates a warning when trying to set the size of the board to an invalid number, advising the user to
set a size between 6 and 1000.
|
static boolean |
resizeClearAlert()
Creates a warning when trying to resize the board in the editor, warning the user that the currently active
cells will become inactive if the board is resized.
|
static void |
ruleAlert1()
Creates a warning when a loaded file's rules are wrongly formatted, informing the user that the standard
rules will be used.
|
static void |
ruleAlert2()
Creates a warning when the user attempts to set wrongly formatted rules.
|
static void |
ruleDescription(java.lang.String ruleName,
java.lang.String ruleString,
java.lang.String ruleDescription)
Creates a popup window containing the description of the current playing rules.
|
static void |
sizeBoardError()
Creates a warning when trying to export a gif where the board is too big relative to the size of the gif-picture
so that the cell size is less than a pixel, and therefore will not be drawn.
|
public static void ioAlertFromDisk()
public static void ioAlertFromURL()
public static void ioAlertFXML()
public static void patternFormatAlert()
public static void ruleAlert1()
public static void ruleAlert2()
public static void outOfBounds()
public static void ioeSaveError()
public static void sizeBoardError()
public static void gifFramesAlert()
public static void gifFPSAlert()
public static void resizeAlert()
public static void editorSizeAlert()
public static void edgeAlert()
public static void ruleDescription(java.lang.String ruleName, java.lang.String ruleString, java.lang.String ruleDescription)
ruleName
- The name of the rules.ruleString
- The RLE-formatting of the current rules.ruleDescription
- The description of the current rules.public static void metaData(java.lang.String header, java.lang.String description)
header
- The name of the pattern.description
- The metadata of the pattern.public static boolean gifSimilarityAlert(int iterations)
iterations
- The number of iterations identified as a possible pattern repeat.public static boolean resizeClearAlert()


{% extends "base.html" %} {% block content %}
Welcome to SQL Dashboard. After you have logged you will be able to use this website. Enjoy!
{%if user.is_authenticated %} {%else%} Click here to login {%endif%}
Your first step is setup your profile on SQL Dashboard.
Learn more »


Is Trustroots exclusively for hitchhikers?
You're welcome to sign up if you've never hitchhiked; we don't exclusively focus on hitchhikers. In the initial phase we're focusing on getting especially hitchhikers on board and making the site ideal for that. Many people who hitchhike have a specific way of traveling that is not always well served by some websites. Hitchhikers are also traveling a lot more than the average Joe, which is a good way to spread the idea further. Our background is within Hitchhikers community and in
Hitchwiki. The site will obviously remain rather alternative and true to its roots, even when we introduce it to new communities.
We want to maintain the feeling of a small community and we have some technical ideas for doing this with the site. We'll soon add functionality that will make it convenient for people who prefer to host people from within their own communities (e.g. vegans, musicians), but it will always be possible to open your home to anyone on the site if you prefer.
Why the name Trustroots?
Back to the roots. Earthy. The art of asking — and trusting — is something we often experience while traveling. We also have some innovative ideas that can help building trust among people. Once the network is big enough we'd love to work with scientists to build something that can really make a difference through trust metrics.
What's your legal status?
Good question. We're looking to set up a non profit in the European Union soon.
Contact us if you have experience with this and you want to help.
Are you going to sell out?
NO! We think it's a shame that former non profits have been sold to venture capital. We have high ideals and we've been running other big freegan projects for years. This is not a startup.
Is Trustroots an alternative for CouchSurfing or BeWelcome?
Trustroots isn't on purpose an alternative to anything specifically. There are many people to whom Facebook, CouchSurfing or other tools aren't suitable for multitude of reasons. We encourage using any tools you wish in parallel. We are trying to make it easy to gather your contents from these sites also to Trustroots.
How do you want to make the project financially sustainable?
Donations and grants are the most likely ways. There are many inspiring organisations out there serving as great examples:
Warmshowers Foundation,
Abgefahren e.V. (Hitchwiki),
BeVolunteer,
Servas,
WWOOF and many more. Again, if you have experience with this it would be great if you
contact us.
Who decides what gets done?
Anyone can join us as a
volunteer. We're huge fans of do-cracy and getting things done attitude. We have
a core team which is formed from the most active volunteers. There isn't voting or other buraucratic processes involved, but you get more responsibility by simply becoming active contributor and showing your communication skills. Great community values simple translation jobs just as much as highly skilled development. We'll aim to keep the entry level for volunteers as low as possible. No bureaucracy. Pragmatic approach. Trust.
That said, any well organized project needs efficient teams working on specific issues (such as
safety or site's
features/UX). Rather than building complicated voting mechanisms or other structures, we'll try to concentrate in fostering volunteers into responsible, skilled teams. It's also important to make sure everyone has the same goal and vision.
Why is there no forum?
The practical answer: it takes time to set up a forum and even more time to keep it spam-free. The less practical answer: In our long-term and short-term experience forum activity is not necessarily the best way to get to more real life interactions (or in other less nice words: there's a lot of pointless bickering out there). In the long term we do want to provide a way to communicate on the site, but this will probably look more like the quick and easy way you can interact on Facebook or Diaspora than a full fledged forum. There are already plenty of ways to contact us and have discussions among members.
Why is there Facebook connection?
So that people who have their data, photos and connections on Facebook can release their information to Trustroots. Using Facebook from Trustroots is optional.
Read our blog post about this.
Are you planning to do X feature?
See our
to-do for major directions and
GitHub for the rest. Feel free to
tell us about your ideas! The current version of Trustroots is the most limited software you can imagine that still works for hospitality. We simply haven't had time to build most of the features yet. Please be patient.
Decentralize it?
Yes please! If you can make a working decentralized prototype we'll happily decentralize the whole thing. Decentralization is technically very challenging and is not the team's priority. But we will soon add a quick and easy way to export your profile data, oAuth and document our API.
How is this connected to Hitchwiki, Nomadwiki or Trashwiki?
The team creating Trustroots also created these projects. We will want to integrate them to some degree into Trustroots since they share pretty much the same vision and user base.
What is your long term vision?
"We want a world that encourages trust, adventure and intercultural connections." See
about for more.
In plenty of public and private ways:
our blog,
contact form,
GitHub,
Twitter,
IRC and for private contacts, see
the team page.
More questions? Ask us!
See also our blog and about page.


--- layout: default --- Journal This is the title for a featured post Article description goes here Published on 2nd May 2018 Latest Posts {% for post in site.posts %} {{ post.title }} {{ post.description }} Published on 2nd May 2018 {% endfor %} This is the title for a featured post Article description goes here Published on 2nd May 2018 This is the title for a featured post Article description goes here Published on 2nd May 2018 This is the title for a featured post Article description goes here Published on 2nd May 2018
Article description goes here
Published on 2nd May 2018
Latest Posts
{{ post.description }}


Hey there! I'm @rashidlasker and this is my submission for the Capital One Software Engineering Summit. Enjoy!
Latitude:
Longitude:


The GEOS User Interface uses several default settings for the mouse pointer, all defined by the Specific UI.
Some applications will want to modify the mouse pointer's image in order to provide certain feedback to the user. For example, a chess game may set the pointer to an image of the piece being moved and then reset it to an arrow after the move is completed; a graphics application could set the pointer to an image of whatever tool is currently in use. Another time an application may change the mouse pointer is when a quick-transfer is in progress.
The pointer is defined as a bitmap 16 pixels on each side. It has a "hot spot" of five pixels that acts as the active point of the image. When the user clicks, the area affected is the hot spot, not the entire image.
The pointer is stored in a
PointerDef16
structure. This structure defines the image bitmap, the horizontal and vertical offsets to the hot spot, and the definition of how the image should mix with the background. This definition is known as the pointer's mask.
The definition of
PointerDef16
is given below. When setting the pointer image, you will typically pass an optr (a combination handle and chunk handle) to a
PointerDef16
structure; the structure can be set up in a sharable chunk beforehand, or it can be set in a local or global variable. Typically, you will set the entire pointer image in a resource chunk and compile it into your geode; this is much easier and faster to use than building it at run-time.
typedef struct { byte PD_width; byte PD_height; sbyte PD_hotX; sbyte PD_hotY; byte PD_mask[STANDARD_CURSOR_IMAGE_SIZE]; byte PD_image[STANDARD_CURSOR_IMAGE_SIZE]; } PointerDef16;
The
PD_hotX
field defines the horizontal offset from the upper-left corner of the image to the center of the hot spot. Similarly,
PD_hotY
defines the vertical offset from the upper-left corner to the hot spot. Both are in pixels and must be less than 16 (since the image is only 16 pixels in each dimension).
The
PD_mask
field contains the 16 by 16 bitmap of the mask, while
PD_image
holds the bitmap of the image. Both are stored as 32-byte arrays, two bytes per row. For example, if the first line of the image was all black and the second all white, the first four bytes of
PD_image
would be 0xFF, 0xFF, 0x00, and 0x00.
Note that the block the pointer chunk is stored in must be declared sharable.
You can set the pointer's image in three ways. First, you can send a message to the GenView to set the pointer image whenever the pointer is over the view's window (see the GenView chapter). Second, you can set the pointer to a default image type during a quick-transfer operation (see the Clipboard chapter). Third, you can set the pointer image after handling a mouse event. Only the third option is discussed here.
An object may wish to set the pointer image while it is selected, while the pointer is over its bounds, or in any number of other situations. For example, a chess piece currently being moved may set the pointer's image to the shape of the piece so the user knows exactly what type of piece is being moved.
Every mouse event you handle must return a
MouseReturnParams
structure, defined in Return Values for Mouse Events
. Make sure to return the following to set the pointer image:
flags
When the UI sees this flag in the returned structure, it looks for the address of a pointer definition in the
ptrImage
field. If you do not return this flag, the UI will not try to set the pointer.
ptrImage
This field gives the handle and chunk handle of the
PointerDef
structure that defines the pointer image to be set. The structure must be in a sharable block; most likely you will have it set in a geode resource.


Oh no! Something went very wrong. The error has been logged, and we will try and fix it, so come back tomorrow and try again.
In the meantime, this is a thing.
Oops! Something went wrong. The error was:
Hopefully that helps. If not, please submit an issue on our
The data below is in GraphVis dot format can be imported into many network graphing tools, including webgraphviz.com.
The data below is in the Cypher format and can be imported into any database that accepts CQL, you can also try it in a sandbox environment at neo4j.com/sandbox-v2.


Git It Going - an Introduction to Git
I gave a talk on Git to the Canberra Python Users Group on the 7th of May. It was my first ever technical talk, and I think it went fairly well.
When writing my presentation, I decided it would be most useful to demonstrate
git
to the audience assuming some Subversion experience but minimal Git or
Mercurial experience. I ended up presenting my talk with my slides on one
window to the left, my Github repository configured as the remote origin of my
demonstration repository in another window to the right, and a command line
window that I used to interact with my repository in the middle (which was the
most important). My instructions to myself were in a separate window as
speaker’s notes. Although I spent some time window juggling, I think this was
the right approach.
The audience had all types: hardcore Mercurial users, Subversion loyalists, people using Git as a frontend to other version control systems, and people new to version control and diffs in general. I spent a fair chunk of the presentation answering questions or listening to the audience answering each other’s questions, which was exactly how I wanted it.
I really enjoyed giving this talk, and would happily do so again. My
presentation contents are here,
complete with a .travis.yml
file which uses pandoc
to regenerate the slides
on each push. The slides themselves are
available although I think they’re
pretty pointless on their own. If you would like to use these materials, you
are more than welcome to do so.
Suggestions for improvement and pull requests are very welcome.  The
presentation is not very useful to people who want to know more about these
topics, and it might be possible to add more slides and more instructions in
case people are comfortable with basic git
so I can safely skip the first
couple of sections and instead spend more time talking about branching,
rewriting history and different workflows.
I would highly recommend giving a technical talk if you have the opportunity. If it is a topic I am familiar with, or if you’d like to run through the presentation with me then I’m more than happy to help.


-
Ingress Bandwidth
-
Ingress Packets
-
Egress Bandwidth
-
Egress Packets
-
Exported Flows
-
Dropped Packets


Health & Safety
This is not a puzzle.
Ensuring the health and safety of all Mystery Hunt participants is a top priority. Team Captains are primarily responsible for handling emergencies and for ensuring the overall health and safety of team members (or designating a responsible team member for that role).
This document contains important information and helpful tips. Read it, learn it, share it, live it.
Use Common Sense
- This is a puzzle-solving competition, not a mountain-climbing expedition. There is no reason for anyone to put themselves at risk of being harmed, arrested, or held liable for any property damage. Our actions will also reflect on the Mystery Hunt as a whole, so let’s stay safe and responsible both for our own sakes and for the sake of everyone who loves the Mystery Hunt and cares about its future.
- Follow our instructions. During hunt, we will communicate any important health and safety information on the hunt website, by e-mail, by phone, and in person if needed.
- One volunteer on each team should be designated as the “Health & Safety Marshal.” That person should be familiar with the information in these guidelines and ready to respond if a problem arises while your team is hunting.
- If you think you are about to do something illegal, unsafe, against MIT policy or otherwise ill-advised, CALL HUNT HQ FIRST.
Important Contact Information
- MIT Police:<PHONE_NUMBER> (or 100 from a campus phone). The MIT Police should be contacted in all emergencies, whether they are of a criminal, medical, or safety nature, or to report an encounter with a suspicious or dangerous person who is not participating in the hunt. The MIT Police will dispatch the appropriate resources, which in some cases might include the student-run MIT-EMS, who will have an ambulance on call.
- Hunt HQ Phone:<PHONE_NUMBER>. Call during hunt if you encounter a “real-life situation” and you do not know what to do (minor medical issue, lost team member, encounter with police, damage to MIT property, etc.).
- Hunt Organizers E-mail<EMAIL_ADDRESS>All incidents should be reported by e-mail after the immediate emergency or threat has been managed.
Alerts
- MIT Alert System: Provides real-time alerts for emergencies on campus. We will add at least one contact per team just for Hunt weekend (via the Health & Safety Quiz); to subscribe permanently, visit http://em2.mit.edu/mitalert/.
- Fire Alarms: If an alarm sounds, do not continue working. All team members must immediately exit the building through the nearest marked exit, and wait for further instructions.
Medical Care
- Urgent Care:
- MIT affiliates can use MIT Medical’s Urgent Care in building E23 for non-emergency treatment, 8am–8pm. Overnight, call MIT Medical at<PHONE_NUMBER> to speak with a nurse, who can schedule a next-day appointment.
- All Hunt participants may use MIT’s Urgent Care service while they are taking part in Mystery Hunt. However, your personal insurance will be billed and your insurance might not cover the visit if MIT Urgent Care is out of your network.
- Non-affiliates can also use area hospitals for urgent medical needs. Massachusetts General Hospital, Cambridge Hospital, and Mount Auburn Hospital are the closest.
- First Aid: Hunt HQ will provide a kit to each team for treating minor issues. Additional first aid supplies are available at HQ.
Know Where You Are
- MIT is a real university, and Mystery Hunt is not the only thing happening. Try not to disturb researchers, staff, and other activities that might be occurring on campus.
- Don’t go anywhere or do anything illegal or unsafe. Mystery Hunt takes place in specified rooms and campus locations accessible to the MIT community at large. Don’t attempt to enter other spaces, except locations where events are scheduled or that Hunt personnel explicitly provide access to. Don’t force open locked doors or set off emergency alarms.
- Don’t carry any weapon, or anything that looks like a weapon, on campus.
- Be careful with MIT property, especially if your team is using an MIT room as its base. Damage to property will reflect poorly on the Mystery Hunt in general and will compromise your team’s ability to use MIT rooms in the future.
- Team members may not know MIT’s campus well. Before sending team members on an excursion, you should ensure you can stay in touch with them (and vice versa). If needed, provide team members with maps. Whereis and the MIT mobile website both have campus maps.
- If you think a team member is lost, call them directly. If that fails, call Hunt HQ, and if we cannot help, contact MIT Police.
Stay Healthy
- Ask if any of your team members have allergies or other health conditions that might require attention, and take appropriate precautions.
- Make sure every team member has a plan for getting
sleep. “Work until burnout” is not a winning
strategy. Getting sleep is important—Mystery Hunt is a
marathon, not a sprint.
- MIT rules do not allow sleeping in classrooms, lounges, hallways, etc. Make appropriate arrangements so that team members can sleep in dorms, hotels or nearby residences. Dorm residents hosting hunters should adhere to the guest policies of their residence halls.
- Be sure team members stay hydrated and have nutritious food to eat over the course of the weekend. Not just Oreos and Mountain Dew. There are food options available nearby in Kendall Square, Central Square, and the MIT Student Center.
Minors
- Minors may attend or participate in Mystery Hunt from on-campus locations between the hours of 6:00 AM and 1:00 AM.
- Minors must be accompanied by a parent/guardian at all times or be part of an official school group accompanied by an appropriate number of chaperones.
- Minors must travel to and from campus with their parent/guardian/school group.
- If you need to interact with an unsupervised minor, have another adult present and conduct those interactions in a public environment where you can be observed.
- The full Regulations Regarding the Presence and Participation of Minors should be reviewed by every team captain, along with the MIT Code of Conduct for Working with Minors.
Maintain a Harassment-Free Environment
- The MIT Mystery Hunt is dedicated to providing a harassment-free experience for everyone, regardless of gender, gender identity and expression, sexual orientation, disability, physical appearance, body size, age, race, or religion. We do not tolerate harassment of participants in any form. Participants asked to stop any harassing behavior are expected to comply immediately.
 All teams and participants must abide by MIT’s Harassment Policy. Hunt participants violating this policy may be expelled from Mystery Hunt at the organizers’ discretion.
- If you would like to report harassment, please remove yourself from the uncomfortable situation and contact Hunt HQ by email at<EMAIL_ADDRESS>- Team captains should make sure this policy is understood by all team members and should actively discourage harassment within and among teams.


It's time to write some simple J programs. Writing code without loops will be a shock at first. Many accomplished C programmers give up because they find that writing every program is a struggle, and they remember how easy it was in C. I hope you will have more persistence. If you do, you will soon stop thinking in loops, translating each one into J; instead, you will think directly about operand cells, and the code will flow effortlessly.
In C, when you are going to operate on some array, say x[3][4][5], you write the code from the outside in. You know you are going to need 3 nested loops to touch all the cells; you write the control structure for each loop (possibly after thinking a bit about the order of nesting); finally, you fill in code at whatever nesting level it fits. Even if all your work is in the innermost loop, you have to write all the enclosing layers just to be able to index the array. When I was writing in C, I made sure my output was measured in lines of code, so that I could call this 'productivity'.
In J, you grab the heart of the watermelon rather than munching your way in starting at the rind. You decide what rank of operand cell you are going to work on, and you write the verb to operate on a cell. You give the verb the rank of the cells it operates on, and then you don't care about the shape of the operand, because J's implicit looping will apply the verb to all the cells, no matter how many there are. A pleasant side effect of this way of coding is that the verbs you write can be applied to operands of any shape: write a verb to calculate the current value of a loan, and you can use that very verb to calculate the current value of all loans at a branch, or at all branches in the city, or all over the state.
We will write a number of J verbs starting from their C counterparts so you can see how you need to change your thinking. For these examples, we will imagine we are in the payroll department of a small consulting business, and we will answer certain questions concerning some arrays defined as follows:
empno[nemp] (in J, just empno) - employee number for each member of the staff. The number of employees is nemp.
payrate[nemp] - number of dollars per hour the employee is paid
billrate[nemp] - number of dollars per hour the customer is billed for the services of this employee
clientlist[nclients] - every client has a number; this is the list of all of them. The number of clients is nclients.
emp_client[nemp] - number of the client this employee is billed to
hoursworked[nemp][31] - for each employee, and for each day of the month, the number of hours worked
To get you started thinking about cells rather than loops, I am going to suggest that you use C-style pseudocode written in a way that is easily translatable into J. Your progress in J will be measured by how little you have to use this crutch.
Problem 1: How many hours did each employee work? The C code for this is:
// result: hrs[i] is hours for employee i
void emphours(int hrs[])
{
int i, j;
for(i = 0;i<nemp;++i)
for(j = 0,hrs[i] = 0;j<31;++j)
hrs[i] += hoursworked[i][j];
}
The first step in translating this into J is to write the loops, but without loop indexes: instead, indicate what elements will be operated on:
for (each employee)
for(each day)take the sum of hoursworked
Now, figure out what ranks the operands have. The hoursworked values that are being added are scalars; we will be looping over a list of them; that means we want the sum of items of a rank-1 list. So the inner loop is going to be +/"1 . What about the outer loop? The information for each employee has rank 1 (each employee is represented in hoursworked by a single row), so a verb applied to each employee should have rank 1. Note that we don't worry about the actual shape of hoursworked--once we figure out that our verb is going to operate on 1-cells, we let J's implicit looping handle any additional axes. We build up the loops by applying the rank conjunction for each one, so we have the inner loop +/"1 and the outer loop of rank 1; combined, they are +/"1"1 . The "1"1 can be changed to a single "1, and we get the final program:
emphours =: monad : '+/"1 hoursworked'
Problem 2: How much did each employee earn in wages? The C code is:
// result: earns[i] is wages for employee i
void empearnings(int earns[])
{
int i, j;
for(i = 0;i<nemp;++i) {
for(j = 0,earns[i] = 0;j<31;++j)earns[i] += hoursworked[i][j];
earns[i] *= payrate[i];
}
}
When we write the pseudocode, we will change the algorithm just a bit: rather than multiplying each total by the billing rate just after the total is calculated, we will make one loop to calculate the totals, and then a second pass to multiply by the billing rate. This is a case where good J practice differs from good C practice. Because of the implicit looping that is performed on all verbs, you get better performance if you let each verb operate on as much data as possible. You may at first worry that you're using too much memory, or that you might misuse the processor's caches; get over it. Apply verbs to large operands. The pseudocode is:
for (each employee)
for(each day)take the sum of hoursworked
for(each pair of wage_rate and sum)multiply the pair
The first two loops are just +/"1 hoursworked as before. The last loop clearly multiplies scalars, so it is *"0 . We note that dyad * has rank 0, so we don't need to specify the rank, and we get the final program:
empearnings =: monad : 'payrate * +/"1 hoursworked'
Problem 3: How much profit did each employee bring in? C code:
// result: profit[i] is profit from employee i
void empprofit(int profit[])
{
int i, j, temp;
for(i = 0;i<nemp;++i) {
for(j = 0, temp = 0;j<31;++j)temp += hoursworked[i][j];
profit[i] = temp * (billrate[i] - payrate[i]);
}
}
Again, we create a new loop to calculate the list of profit for each employee:
for (each employee)
for(each day)take the sum of hoursworked
for (each employee)take billing_rate - wage_rate;
for(each pair of profit and sum)multiply the pair
The profit is clearly a difference of scalars applied to two lists, therefore it will be -"0 or equivalently simply - . The program then is
empprofit =: monad define
(billrate - payrate) * +/"1 hoursworked
)