Configuring TLS¶
Configuration with URI options¶
Enable TLS by including tls=true
in the URI.
mongoc_uri_t *uri = mongoc_uri_new ("mongodb://localhost:27017/");
mongoc_uri_set_option_as_bool (uri, MONGOC_URI_TLS, true);
mongoc_client_t *client = mongoc_client_new_from_uri (uri);
The following URI options may be used to further configure TLS:
Constant |
Key |
Description |
|---|---|---|
MONGOC_URI_TLS |
tls |
{true|false}, indicating if TLS must be used. |
MONGOC_URI_TLSCERTIFICATEKEYFILE |
tlscertificatekeyfile |
Path to PEM formatted Private Key, with its Public Certificate concatenated at the end. |
MONGOC_URI_TLSCERTIFICATEKEYFILEPASSWORD |
tlscertificatekeypassword |
The password, if any, to use to unlock encrypted Private Key. |
MONGOC_URI_TLSCAFILE |
tlscafile |
One, or a bundle of, Certificate Authorities whom should be considered to be trusted. |
MONGOC_URI_TLSALLOWINVALIDCERTIFICATES |
tlsallowinvalidcertificates |
Accept and ignore certificate verification errors (e.g. untrusted issuer, expired, etc.) |
MONGOC_URI_TLSALLOWINVALIDHOSTNAMES |
tlsallowinvalidhostnames |
Ignore hostname verification of the certificate (e.g. Man In The Middle, using valid certificate, but issued for another hostname) |
MONGOC_URI_TLSINSECURE |
tlsinsecure |
{true|false}, indicating if insecure TLS options should be used. Currently this implies MONGOC_URI_TLSALLOWINVALIDCERTIFICATES and MONGOC_URI_TLSALLOWINVALIDHOSTNAMES. |
MONGOC_URI_TLSDISABLECERTIFICATEREVOCATIONCHECK |
tlsdisablecertificaterevocationcheck |
{true|false}, indicates if revocation checking (CRL / OCSP) should be disabled. |
MONGOC_URI_TLSDISABLEOCSPENDPOINTCHECK |
tlsdisableocspendpointcheck |
{true|false}, indicates if OCSP responder endpoints should not be requested when an OCSP response is not stapled. |
Configuration with mongoc_ssl_opt_t¶
Alternatively, the mongoc_ssl_opt_t struct may be used to configure TLS with mongoc_client_set_ssl_opts() or mongoc_client_pool_set_ssl_opts(). Most of the configurable options can be set using the Connection String URI.
mongoc_ssl_opt_t key |
URI key |
|---|---|
pem_file |
tlsClientCertificateKeyFile |
pem_pwd |
tlsClientCertificateKeyPassword |
ca_file |
tlsCAFile |
weak_cert_validation |
tlsAllowInvalidCertificates |
allow_invalid_hostname |
tlsAllowInvalidHostnames |
The only exclusions are crl_file
and ca_dir
. Those may only be set with mongoc_ssl_opt_t.
Client Authentication¶
When MongoDB is started with TLS enabled, it will by default require the client to provide a client certificate issued by a certificate authority specified by --tlsCAFile
, or an authority trusted by the native certificate store in use on the server.
To provide the client certificate, set the tlsCertificateKeyFile
in the URI to a PEM armored certificate file.
mongoc_uri_t *uri = mongoc_uri_new ("mongodb://localhost:27017/");
mongoc_uri_set_option_as_bool (uri, MONGOC_URI_TLS, true);
mongoc_uri_set_option_as_utf8 (uri, MONGOC_URI_TLSCERTIFICATEKEYFILE, "/path/to/client-certificate.pem");
mongoc_client_t *client = mongoc_client_new_from_uri (uri);
Server Certificate Verification¶
The MongoDB C Driver will automatically verify the validity of the server certificate, such as issued by configured Certificate Authority, hostname validation, and expiration.
To overwrite this behavior, it is possible to disable hostname validation, OCSP endpoint revocation checking, revocation checking entirely, and allow invalid certificates.
This behavior is controlled using the tlsAllowInvalidHostnames
, tlsDisableOCSPEndpointCheck
, tlsDisableCertificateRevocationCheck
, and tlsAllowInvalidCertificates
options respectively. By default, all are set to false
.
It is not recommended to change these defaults as it exposes the client to Man In The Middle attacks (when tlsAllowInvalidHostnames
is set), invalid certificates (when tlsAllowInvalidCertificates
is set), or potentially revoked certificates (when tlsDisableOCSPEndpointCheck
or tlsDisableCertificateRevocationCheck
are set).
Supported Libraries¶
By default, libmongoc will attempt to find a supported TLS library and enable TLS support. This is controlled by the cmake flag ENABLE_SSL
, which is set to AUTO
by default. Valid values are:
AUTO
the default behavior. Link to the system’s native TLS library, or attempt to find OpenSSL.DARWIN
link to Secure Transport, the native TLS library on macOS.WINDOWS
link to Secure Channel, the native TLS library on Windows.OPENSSL
link to OpenSSL (libssl). An optional install path may be specified withOPENSSL_ROOT
.LIBRESSL
link to LibreSSL’s libtls. (LibreSSL’s compatible libssl may be linked to by settingOPENSSL
).OFF
disable TLS support.
OpenSSL¶
The MongoDB C Driver uses OpenSSL, if available, on Linux and Unix platforms (besides macOS). Industry best practices and some regulations require the use of TLS 1.1 or newer, which requires at least OpenSSL 1.0.1. Check your OpenSSL version like so:
$ openssl version
Ensure your system’s OpenSSL is a recent version (at least 1.0.1), or install a recent version in a non-system path and build against it with:
cmake -DOPENSSL_ROOT_DIR=/absolute/path/to/openssl
When compiled against OpenSSL, the driver will attempt to load the system default certificate store, as configured by the distribution. That can be overridden by setting the tlsCAFile
URI option or with the fields ca_file
and ca_dir
in the mongoc_ssl_opt_t.
The Online Certificate Status Protocol (OCSP) (see RFC 6960) is fully supported when using OpenSSL 1.0.1+ with the following notes:
When a
crl_file
is set with mongoc_ssl_opt_t, and thecrl_file
revokes the server’s certificate, the certificate is considered revoked (even if the certificate has a valid stapled OCSP response)
LibreSSL / libtls¶
The MongoDB C Driver supports LibreSSL through the use of OpenSSL compatibility checks when configured to compile against openssl
. It also supports the new libtls
library when configured to build against libressl
.
When compiled against the Windows native libraries, the crl_file
option of a mongoc_ssl_opt_t is not supported, and will issue an error if used.
Setting tlsDisableOCSPEndpointCheck
and tlsDisableCertificateRevocationCheck
has no effect.
The Online Certificate Status Protocol (OCSP) (see RFC 6960) is partially supported with the following notes:
The Must-Staple extension (see RFC 7633) is ignored. Connection may continue if a Must-Staple certificate is presented with no stapled response (unless the client receives a revoked response from an OCSP responder).
Connection will continue if a Must-Staple certificate is presented without a stapled response and the OCSP responder is down.
Native TLS Support on Windows (Secure Channel)¶
The MongoDB C Driver supports the Windows native TLS library (Secure Channel, or SChannel), and its native crypto library (Cryptography API: Next Generation, or CNG).
When compiled against the Windows native libraries, the ca_dir
option of a mongoc_ssl_opt_t is not supported, and will issue an error if used.
Encrypted PEM files (e.g., setting tlsCertificateKeyPassword
) are also not supported, and will result in error when attempting to load them.
When tlsCAFile
is set, the driver will only allow server certificates issued by the authority (or authorities) provided. When no tlsCAFile
is set, the driver will look up the Certificate Authority using the System Local Machine Root
certificate store to confirm the provided certificate.
When crl_file
is set with mongoc_ssl_opt_t, the driver will import the revocation list to the System Local Machine Root
certificate store.
Setting tlsDisableOCSPEndpointCheck
has no effect.
The Online Certificate Status Protocol (OCSP) (see RFC 6960) is partially supported with the following notes:
The Must-Staple extension (see RFC 7633) is ignored. Connection may continue if a Must-Staple certificate is presented with no stapled response (unless the client receives a revoked response from an OCSP responder).
When a
crl_file
is set with mongoc_ssl_opt_t, and thecrl_file
revokes the server’s certificate, the OCSP response takes precedence. E.g. if the server presents a certificate with a valid stapled OCSP response, the certificate is considered valid even if thecrl_file
marks it as revoked.Connection will continue if a Must-Staple certificate is presented without a stapled response and the OCSP responder is down.
Native TLS Support on macOS / Darwin (Secure Transport)¶
The MongoDB C Driver supports the Darwin (OS X, macOS, iOS, etc.) native TLS library (Secure Transport), and its native crypto library (Common Crypto, or CC).
When compiled against Secure Transport, the ca_dir
and crl_file
options of a mongoc_ssl_opt_t are not supported. An error is issued if either are used.
When tlsCAFile
is set, the driver will only allow server certificates issued by the authority (or authorities) provided. When no tlsCAFile
is set, the driver will use the Certificate Authorities in the currently unlocked keychains.
Setting tlsDisableOCSPEndpointCheck
and tlsDisableCertificateRevocationCheck
has no effect.
The Online Certificate Status Protocol (OCSP) (see RFC 6960) is partially supported with the following notes.
The Must-Staple extension (see RFC 7633) is ignored. Connection may continue if a Must-Staple certificate is presented with no stapled response (unless the client receives a revoked response from an OCSP responder).
Connection will continue if a Must-Staple certificate is presented without a stapled response and the OCSP responder is down.


|
aws-crt-cpp
C++ wrapper around the aws-c-* libraries. Provides Cross-Platform Transport Protocols and SSL/TLS implementations for C++.
|
#include <MqttClient.h>
Public Member Functions | |
| ~MqttConnection () | |
| MqttConnection (const MqttConnection &)=delete | |
| MqttConnection (MqttConnection &&)=delete | |
| MqttConnection & | operator= (const MqttConnection &)=delete |
| MqttConnection & | operator= (MqttConnection &&)=delete |
| operator bool () const noexcept | |
| int | LastError () const noexcept |
| bool | SetWill (const char *topic, QOS qos, bool retain, const ByteBuf &payload) noexcept |
| bool | SetLogin (const char *userName, const char *password) noexcept |
| bool | SetWebsocketProxyOptions (const Http::HttpClientConnectionProxyOptions &proxyOptions) noexcept |
| bool | SetHttpProxyOptions (const Http::HttpClientConnectionProxyOptions &proxyOptions) noexcept |
| bool | SetReconnectTimeout (uint64_t min_seconds, uint64_t max_seconds) noexcept |
| bool | Connect (const char *clientId, bool cleanSession, uint16_t keepAliveTimeSecs=0, uint32_t pingTimeoutMs=0, uint32_t protocolOperationTimeoutMs=0) noexcept |
| bool | Disconnect () noexcept |
| aws_mqtt_client_connection * | GetUnderlyingConnection () noexcept |
| uint16_t | Subscribe (const char *topicFilter, QOS qos, OnMessageReceivedHandler &&onMessage, OnSubAckHandler &&onSubAck) noexcept |
| uint16_t | Subscribe (const char *topicFilter, QOS qos, OnPublishReceivedHandler &&onPublish, OnSubAckHandler &&onSubAck) noexcept |
| uint16_t | Subscribe (const Vector< std::pair< const char *, OnMessageReceivedHandler > > &topicFilters, QOS qos, OnMultiSubAckHandler &&onOpComplete) noexcept |
| uint16_t | Subscribe (const Vector< std::pair< const char *, OnPublishReceivedHandler > > &topicFilters, QOS qos, OnMultiSubAckHandler &&onOpComplete) noexcept |
| bool | SetOnMessageHandler (OnMessageReceivedHandler &&onMessage) noexcept |
| bool | SetOnMessageHandler (OnPublishReceivedHandler &&onPublish) noexcept |
| uint16_t | Unsubscribe (const char *topicFilter, OnOperationCompleteHandler &&onOpComplete) noexcept |
| uint16_t | Publish (const char *topic, QOS qos, bool retain, const ByteBuf &payload, OnOperationCompleteHandler &&onOpComplete) noexcept |
Friends | |
| class | MqttClient |
Represents a persistent Mqtt Connection. The memory is owned by MqttClient. To get a new instance of this class, see MqttClient::NewConnection. Unless specified all function arguments need only to live through the duration of the function call.
| Aws::Crt::Mqtt::MqttConnection::~MqttConnection | ( | ) |
|
delete |
|
delete |
|
noexcept |
Initiates the connection, OnConnectionCompleted will be invoked in an event-loop thread.
|
noexcept |
Initiates disconnect, OnDisconnectHandler will be invoked in an event-loop thread.
|
noexcept |
|
noexcept |
|
noexcept |
|
delete |
|
delete |
|
noexcept |
Publishes to topic. The backing memory for payload must stay available until the OnOperationCompleteHandler has been invoked.
|
noexcept |
Sets http proxy options. In order to use an http proxy with mqtt either (1) Websockets are used (2) Mqtt-over-tls is used and the ALPN list of the tls context contains a tag that resolves to mqtt
|
noexcept |
Sets login credentials for the connection. The must get set before the Connect call if it is to be used.
|
noexcept |
Installs a handler for all incoming publish messages, regardless of if Subscribe has been called on the topic.
|
noexcept |
|
noexcept |
Customize time to wait between reconnect attempts. The time will start at min and multiply by 2 until max is reached. The time resets back to min after a successful connection. This function should only be called before Connect().
|
noexcept |
|
noexcept |
Sets LastWill for the connection. The memory backing payload must outlive the connection.
|
noexcept |
Subscribes to topicFilter. OnMessageReceivedHandler will be invoked from an event-loop thread upon an incoming Publish message. OnSubAckHandler will be invoked upon receipt of a suback message.
|
noexcept |
|
noexcept |
Subscribes to multiple topicFilters. OnMessageReceivedHandler will be invoked from an event-loop thread upon an incoming Publish message. OnMultiSubAckHandler will be invoked upon receipt of a suback message.
|
noexcept |
|
noexcept |
Unsubscribes from topicFilter. OnOperationCompleteHandler will be invoked upon receipt of an unsuback message.
|
friend |
| OnConnectionCompletedHandler Aws::Crt::Mqtt::MqttConnection::OnConnectionCompleted |
| OnConnectionInterruptedHandler Aws::Crt::Mqtt::MqttConnection::OnConnectionInterrupted |
| OnConnectionResumedHandler Aws::Crt::Mqtt::MqttConnection::OnConnectionResumed |
| OnDisconnectHandler Aws::Crt::Mqtt::MqttConnection::OnDisconnect |
| OnWebSocketHandshakeIntercept Aws::Crt::Mqtt::MqttConnection::WebsocketInterceptor |


At our company, we strive to be the best. If there are any problems, feel free to reach out to us and we'll get back to you as soon as possible. Your satisfaction is our satisfaction.


We analyze the importance of two types of engagement signals in the domain of digital publishing:
The results of the research are based on more than 100,000 articles, spanning across 200 publishers worldwide, which accounted for more than 1.8 Billion visits during two different time periods (Feb. 2015 and Nov. 2015). The implications of this study are important for data scientists, publishers and content marketers.
(Joint work with Ram Meshulam, Outbrain)
Private-Social dissonance: Things people like to read vs are ready to share publicly.


Network PIR Sensor Configuration
WiFi SSID
WiFi Password
MQTT Broker IP Address
MQTT Broker Port
MQTT Broker Username
MQTT Broker Password
MQTT Client Name
MQTT LED Controller Client Name


Class: RegisterAction
Constant Summary
- SENDER_CLASSES =
{ 'agent': Agent, 'post': HealthPost, 'tecnico': Tecnico, 'center': HealthCenter }
Constants inherited from Action
Instance Attribute Summary (collapse)
-
- (Object) sender_class
readonly
Returns the value of attribute sender_class.
-
- (Object) username
readonly
Returns the value of attribute username.
Attributes inherited from Action
Instance Method Summary (collapse)
Methods inherited from Action
Constructor Details
This class inherits a constructor from Action
Instance Attribute Details
- (Object) sender_class (readonly)
Returns the value of attribute sender_class
5 6 7 |
# File 'app/lib/register_action.rb', line 5 def sender_class @sender_class end |
- (Object) username (readonly)
Returns the value of attribute username
5 6 7 |
# File 'app/lib/register_action.rb', line 5 def username @username end |
Instance Method Details
- (Object) perform
14 15 16 17 18 19 20 21 22 |
# File 'app/lib/register_action.rb', line 14 def perform if valid? tokens[:sender_class].create(name: tokens[:username], phone_number: from) reply() else # TODO: (dysnomian) Use a translation file instead. reply(HelpAction.new().send(:general_help)) end end |
- (Boolean) valid?
24 25 26 |
# File 'app/lib/register_action.rb', line 24 def valid? tokens[:username] && tokens[:sender_class] != NullSender end |


| Home | Trees | Indices | Help |
|
|---|
|
|
Class alias. Provides class/instance meta data to the En/Decoder to allow fine grain control and some performance increases.
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
Inherited from |
|
|||
|
Inherited from |
|
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
|
str(x)
|
repr(x)
|
hash(x)
|
This function is used to check if the class being aliased fits certain
criteria. The default is to check that the
Since: 0.4 |
Returns a
Since: 0.5 |
Returns a dictionary of attributes for
Since: 0.5 |
Returns the proxied equivalent for
|
Applies the collection of attributes Override this to provide fine grain control of application of
attributes to
|
Overrride this to provide known static properties based on the aliased class. Since: 0.5 |
Creates an instance of the klass.
|
| Home | Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Mon Sep 7 23:17:41 2009 | http://epydoc.sourceforge.net |


Andre Weiner, Richard Semaan
TU Braunschweig, ISM, Flow Modeling and
Control Group
AIAA SciTech Jan. 7, 2022
Copyright © by Andre Weiner and Richard Semaan, TU Braunschweig. Published by the American Institute of Aeronautics and Astronautics, Inc., with permission.Contradictions in literature about:
Main issues:
Goal: workflow that is fully
Simulation approach in a nutshell:
Various views of the computational mesh.
Definition of data matrices:
$$ \mathbf{X} = \left[ \begin{array}{cccc} | & | & & | \\ \mathbf{x}_1 & \mathbf{x}_2 & ... & \mathbf{x}_{N-1} \\ | & | & & | \\ \end{array}\right],\quad \mathbf{X}^\prime = \left[ \begin{array}{cccc} | & | & & | \\ \mathbf{x}_2 & \mathbf{x}_3 & ... & \mathbf{x}_{N} \\ | & | & & | \\ \end{array}\right] $$
$\mathbf{x}_n$ - state vector snapshot at timestep $n$
DMD in a nutshell:
Key difference to previous studies:
$^*$ Rowley et al. 2004; $\gamma$ - adiabatic index, $a$ - local speed of sound, $u/v/w$ - velocity components
Practical DMD details:
Setup motivated by exp. investigations of McDevitt and Okuno 1985:
Pressure coefficient $c_p$ at pre-onset conditions, $\alpha = 2^\circ$.
Pressure coefficient $c_p$ at post-onset conditions, $\alpha = 4^\circ$.
Local Mach number $Ma$, 2D, $\alpha=4^\circ$.
Slice of local Mach number $Ma$, 3D, $\alpha=4^\circ$.
DMD spectrum for 2D and 3D datasets/simulations; $\bar{f}=2\pi c f/U_\infty$.
Real parts of DMD buffet mode and first harmonic; $u$ and $v$ are the velocity components.
DMD mode at approx. $20f_{buffet}$, $u$-component.
https://github.com/AndreWeiner/naca0012_shock_buffet
{a.weiner|r.semaan}@tu-braunschweig.de


This decorator integrates the Slip.js library with Ractive.
It implements both reordering and removing array items without any additional work.
download: Ractive-decorators-Slip.js more plugins at ractivejs.org/plugins
This decorator integrates the Slip.js library with Ractive.
It implements both reordering and removing array items without any additional work.


Manager Reimbursement Portal
Home Page
View All Reimbursements
Approve or Deny Reimbursement
Statistics
Statistics
Home
Highest Total Expenditure Costs for an Employee
Highest Reimbursement by Status
Mean Expenditure Cost by Status
Welcome to the statistics page! Use the tabs to navigate between the different statistics that are available.
Highest Total Expenditure Costs for an Employee
Highest Reimbursement by Status
Overall
Pending
Approved
Denied
Submit
Mean Expenditure Cost by Status
Overall
Pending
Approved
Denied
Submit
Log out


Untitled Groove
- 127 Songs
- 89 Followers
- 1.487 Likes
Untitled Groove
- 127 Songs
- 89 Followers
- 1.487 Likes
Untitled Groove
- 127 Songs
- 89 Followers
- 1.487 Likes
Untitled Groove
- 127 Songs
- 89 Followers
- 1.487 Likes
Untitled Groove
- 127 Songs
- 89 Followers
- 1.487 Likes


My home is planet earth.
I'm an open-minded, passionate and always curious person, bridging design, engeneering and digital strategy, living in Berlin.
I work best in a motivated, talented team because finishing a big project, looking at the result and knowing one couldn’t have done it alone, is priceless.
If today were the last day of my life, would I want to do what I am about to do today? If the Answer is ‘no’ for too many days in a row, I know I need to change something. So this is what I want to tackle next:
Guru Meditation!


We're sorry but this website doesn't work properly without JavaScript enabled. Please enable it to continue.


Before Change
if i == j or weights[i][j] < WEIGHT_THRESHOLD:
continue
sentence_1 = documents[i]
sentence_2 = documents[j]
edge_1 = (sentence_1, sentence_2)
edge_2 = (sentence_2, sentence_1)
if not graph.has_edge(edge_1):
graph.add_edge(edge_1, weights[i][j])
if not graph.has_edge(edge_2):
After Change
edge = (documents[i], documents[j])
if not graph.has_edge(edge):
graph.add_edge(edge, weight)
// Handles the case in which all similarities are zero.
// The resultant summary will consist of random sentences.
if all(graph.edge_weight(edge) == 0 for edge in graph.iter_edges()):


Environment¶
Static Environment¶
The environment with static polygonal obstacles
-
class
environment.
StaticEnvironment
(dimensions, nb_obstacles)[source]¶ Class implementing a very simple bounded 2D world, containing polygonal obstacles stored in an appropriate data structure for rapid access to close obstacles, even with a large amount of them.
Attributes: - dimensions : tuple
(dim_x, dim_y) The x and y dimension of the rectangular world.
- obstacles : list
List of obstacles, instances of the obstacle class.
- kdtree : KDTree
The binary search tree used to have a rapid access to the obstacles, even with a large amount of them.
Methods
plot
([close])Creates a figure and plots the environement on it. is_free
(x, y[, time])Returns False if a point is within an obstacle or outside of the boundaries of the environnement. -
close_obstacles
(x, y, nb_obstacles=1)[source]¶ Returns the list of all the obstacles close enough to be considered.
Parameters: - x : float
The x coordinate of the point requested
- y : float
The y coordinate of the point requested
- nb_obstacles : int
The number of obstacles to return, has to be less than the total number of obstacles of the environment.
-
is_free
(x, y, time=0)[source]¶ Returns False if a point is within an obstacle or outside of the boundaries of the environnement.
Dynamic Environment¶
The environement where the obstacles can moving
-
class
dynamic_environment.
DynamicEnvironment
(dimensions, nb_walls, moving=False)[source]¶ Class implementing a simple dynamic bounded 2D world, containing square obstacles placed in an ordered manner in order to always permit passage from the bottom to the top of the space.
Attributes: - dimensions : tuple
(dim_x, dim_y) The x and y dimension of the rectangular world.
- obstacles : list
List of walls, instances of the Wall class.
- moving : bool
If the position of the holes in the walls is variying over time.
- center : list
The coordinates of the center of the current scene.
Methods
plot
([time, close])Creates a figure and plots the environement on it. is_free
(x, y[, time])Returns False if a point is within an obstacle or outside of the boundaries of the environnement. random_free_space
()Returns a randomly selected point in the free space. update
(position)Refreshs the active walls as well as the position of the camera. -
is_free
(x, y, time=0)[source]¶ Returns False if a point is within an obstacle or outside of the boundaries of the environnement.


FUN FACTS BOUT DIS GUY
Six foot twoooooo inches
Mexicaaaaaaaaaaaaaaaaaaan
Fugly
Fun
Crying internally
These are my favorite foods
Tacos
Tortas
Tamales
Tortalini
Tapeoca puddin pops
Tequila
Thank you for playing
Congragtulations, you've won!


The best whatsapp tool for creating chatbots, broadcasts, and Whatsapp API that can be used to send messages from your system. alatwa.com has implemented a message containing a Button and a List so that it is easy to reply to messages. Visit alatwa.com or register now at alatwa.com/checkout


CV
Education
-
Ph.D. Experimental Astroparticle Physics (GPA 3.92/4), Case Western Reserve Univ., Jan. 2018
-
M.S. Physics (GPA 3.92/4), Case Western Reserve Univ., 2015.
-
B.S. Physics (GPA 3.64/4), Rochester Institute of Technology, 2011.
Employment
Postdoctoral Scholar, University of California, Los Angeles, 2018-present
-
Electronics lead for the development of a relativistic particle time of flight system
-
Architected high bandwidth, low power, 12 layer mixed signal data acquisition board using a Zynq 7000 SoM and specialized fast sampling ASIC
-
Expert knowledge/experience with DRS4 switched capacitor array ASIC
-
Contributed several improved revisions of board design (Altium Designer), including procurement of PCB fab and assembly with multiple domestic vendors
-
Lead and worked with small team of firmware engineers to develop custom ASIC control, DMA engine, data acquisition and packetization Verilog and VHDL code
-
Lead and contributed to software development (C, Python) for board DAQ and calibration modes as well as continuous monitoring (temp. and env. sense)
-
Extensive debugging experience fixing defects: rotated parts, I2C bus out of spec, large caps on clock lines, power on sequencing, reset sequencing, etc.
-
Familiar with Xilinx tools/work flow, building with Vivado and debugging with hardware server/manager and ILAs
-
Implemented git VCS system (GitLab hosted) for all aspects of development: Altium project, firmware and software and created Confluence workspace for troubleshooting
-
-
Supervised, debugged, optimized and characterized silicon photomultiplier (SiPM) preamp.
-
Construction of automated moderate throughput electrical and optical test stand for SiPM preamps (wrote Arduino sketches for stepper motor control and Python code for lab instrumentation control)
-
Consultant for design of isolated multirail (analog, digital and medium voltage) power distribution board
-
Contributed software for analysis of muon pulse data (lab testing source)
-
Contributed Geant4 code (C++) for the time of flight geometry
-
Contributed code for realistic response of time of fight electronics for Geant4 simulations
Grad. Student/Research Assistant, Case Western Reserve University, 2012-2017
-
Data acquisition system for Pierre Auger surface detector stations embedded in the Telescope Array (super giant cosmic ray air shower arrays)
-
Construction of custom SBC (RPi + adapters) for communication, control and continuous DAQ for surface detector (RS-232)
-
Implementation of comparator circuit for custom triggering of adjacent station for high rate showers (“local trigger”)
-
Contributed software for real time comparison of UTC microsecond timestamps between Pierre Auger and Telescope Array events (C, Python)
-
Contributed software for unpacking binary data and generating calibrated signal outputs and analysis of outputs (Python)
-
Contributed software for simulating events observed in with field with the CORSIKA and Auger Offline frameworks (C++, Python, bash)
-
-
Characterizing and quantifying the uncertainty of a large parameter space (32) galactic magnetic field model for use in arrival direction studies of ultrahigh energy cosmic rays
-
Modification of “CRT” (C++) numerical B-field solver to allow parameter sampling
-
Modification of “CRPropa” (Python) B-field solver to allow parameter sampling: more powerful framework that includes turbulent fields
-
Sensitivity analysis for a publicly available set of Pierre Auger arrival directions (Python)
-
Maintained several Dell PowerEdge blade servers in mini data center to help with high compute demand
-
Dept. of Energy Internship, Los Alamos National Laboratory, Summer 2011
-
Using ALTAIR radar data to characterize micrometeoroid orbits
-
Wrote MATLAB code to extract trajectory from radar range-time plots
-
Fit mixed 2D Gaussians to characterize orbit populations
-
Contributed code for beam and atmospheric effects to generate debiased flux map
-
NSF REU, Bucknell University, Summer 2010
-
Analysis of X-ray light curves from active galactic nuclei
- Diagnostic tests: power spectral density, log-normal fitting, time reversibility, Kolmogorov-Smirnov tests (Python)
Faculty sponsored research, Rochester Institute of Technology, Summer 2009
-
Studying AGN nebulae kinematics
- Continuum subtraction and fitting of mixed Gaussians to hydrogen spectral emission lines (Igor Pro)
College of Science Summer Research Scholar, Rochester Institute of Technology, Summer 2008
- Studying AGN nebulae kinematics
Technical Skills
Programming
-
Compiled languages: C, C++, make, CMake
-
Python Scientific: numpy, scipy, matplotlib, pyroot, lmfit, astropy Machine learning: scikit-learn, pandas
-
Scripting: bash, tcl
-
Analysis: R, Matlab, Mathematica, ROOT (particle physics)
-
Operating systems: Linux (Debian/Ubuntu), Windows
-
Revision control: git, subversion
-
Laboratory instrumentation: SCPI, GPIB
-
Misc/other: HTML & CSS, LAMP stack, nginx, AWS & cloud, sysadmin, MediaWiki
Electronics design
-
Schematic capture, layout & routing, BOM and CAM file generation (Altium Designer)
-
Manufacturing: PCB fab and board loading with multiple domestic vendors
-
Simulation: LTSpice
-
High bandwidth analog signals (500 MHz)
-
Digital systems
Fabrication
-
Mechanical
-
Mill
-
Lathe
-
Vertical saw
-
Drill press
-
-
Electronics
-
THT soldering
-
SMT soldering: iron/heat gun
-
Cable crimping
-
Coax (LMR-200, RG58)
-
Lugs for power cable
-
Quick connect
-
-
Hardware experience
-
Electronics
-
Discriminators and comparators
-
Analog front ends: instrumentation op-amps, transimpedance amplifiers
-
Serial communication: I2C, UART
-
GPS receivers and timing modules
-
Function generators, pulse generators, frequency counters
-
Oscilloscopes: Tektronix, USB (Picoscope)
-
Zynq 7000 SoC
-
Spartan 7 FPGA
-
Raspberry Pi, Arduino
-
-
Particle physics detectors and methods
-
Scintillator
-
Water Cherenkov
-
Photomultipliers: Vacuum tube based (PMT), Silicon (SiPM)
-
Coincidencing
-
-
Computing
-
Networking: routers, switches
-
Web hosting: nginx, mediawiki
-
Peer Reviewed Publications
Journal Articles
-
Phase I of Auger at Telescope Array (Auger\@TA) in-situ surface detector cross-calibration, Pierre Auger Collaboration, Telescope Array Collaboration, in prep. for submission to JCAP
-
Cosmic antihelium-3 nuclei sensitivity of the GAPS experiment, N. Saffold et al., Astroparticle Physics, 130:102580, 2021
-
Cosmic-ray antinuclei as messengers of new physics: status and outlook for the new decade, P. von Doetinchem et al., Journal of Cosmology and Astroparticle Physics, 2020:035, 2020
-
Pierre Auger publications:
-
Nicmos Polarimetry of Polar Scattered Seyfert 1 Galaxies, D. Batcheldor, A. Robinson, D.J. Axon, S. Young, S. Quinn, J.E. Smith, J. Hough, D.M. Alexander. The Astrophysical Journal, 738:90-98, 2011.
Proceedings
-
Recent Progress on the GAPS Time of Flight System, S. Quinn et al., Proc. of 36th Intl Cosmic Ray Conference, Madison, Wisconsin, USA
-
GAPS: A New Cosmic Ray Anti-matter Experiment, S. Quinn et al., CIPANP 2018 Proceedings, 2018.
-
Auger at the Telescope Array: toward a direct cross-calibration of surface-detector stations, S. Quinn et al., Proc. of 35th Intl Cosmic Ray Conference, Busan, KR, 2017.
-
Auger at the Telescope Array: Recent Progress Toward a Direct Cross-Calibration of Surface-Detector Stations, S. Quinn et al., Proc. of 2016 UHECR Conference, Kyoto, JP, 2016.
-
Initial result of a direct comparison between the Surface Detectors of the Pierre Auger Observatory and the Telescope Array, R. Takeishi et al. Proc. of 34th Intl Cosmic Ray Conference, The Hague, NL, 2015.
Pierre Auger Internal Documents
- A Monte-Carlo study of arrival direction uncertainty for the highest energy Herald events using the JF12 model, S. Quinn and C. Covault. Pierre Auger internal letter (GAP), 2016, 012, 2016.
Awards
-
APS FGSA Travel Award 2016
-
CWRU Graduate Dean’s Award for Instructional Excellence 2013
-
Astronomical Society of New York Research Paper Prize 2011
-
RIT Department of Physics Distinguished Research Scholar 2011
-
Julia A. and Charles F. Cala Nathaniel Rochester Society Scholarship 2009
Contributed Oral Presentations
-
Kavli Institute for Cosmological Physics: Auger\@TA: current progress and future plans (2016)
-
Ettore Majorana Center Int’l School for Cosmic Ray Astrophysics: The turbulent galactic magnetic field (2014)
-
217th Meeting of the American Astronomical Society: Non-linear Variability in 3C390.3 (2011)
-
Los Alamos Nat’l Lab 11th Student Symposium: Investigating the Origin of Sporadic Meteors (2011)
-
Astronomical Society of New York Spring Meeting: Detailed Nebular Diagnostics for the Host Galaxy of E1821+643 (2011)
-
Dept. of Physics (RIT) Capstone Presentation: Exploring the Nebulae of an Interesting Active Galaxy (2011)
-
Bucknell Dept. of Physics and Astronomy REU Talk: Non-Linear Variability in 3C 390.3 (2010)
-
College of Science (RIT) Annual Undergraduate Research Symposium: Investigating the Structure of AGN by Means of Comparing H$\alpha$ in Total and Polarized Flux (2009).
-
College of Science (RIT) Weekly Research Seminar: Probing AGN Inner Structure Using Polarized Light (2009), Using Spectroscopy to Detect Gas Flows Around Supermassive Black Holes (2008).
-
College of Science (RIT) Annual Undergraduate Research Symposium: Using Spectroscopy to Detect Gas Flows Around Supermassive Black Holes (2008).
Professional workshops
-
Codes in Astroparticle Research School, September 2014, Hamburg, Germany
-
Int’l School of Cosmic Ray Astrophysics 19th Course: Exploring the High Energy Universe, July 2014, Erice, Italy
-
Cottrell Scholars Collaborative National Teaching Assistant Workshop, May 2014, Atlanta, GA
Volunteer/service activities and outreach
-
The high energy astrophysics display: Programmed and created content for kiosk that allows visitors to interactively learn about cosmic rays and the Pierre Auger observatory. (Fall 2013)
-
Church of the Covenant Saturday Morning Tutoring Program, CWRU: Tutor high school students in math and physics. (Oct 2012–Jan 2013)
-
Proposal Reviewer, CWRU: Evaluated undergraduate research proposals. Written feedback was also provided to the students. (Feb 2012, 2013)
-
Rochester Roots: Assisted a local community food group with environmental research and database building to improve donor support. (September–November 2010)
Professional Affiliations
-
Sigma Pi Sigma, Physics Honor Society, May 2011—
-
American Physical Society, Early Career Member, August 2010—
-
American Astronomical Society, Junior Member, August 2010—2015


We aggregate solutions!
- matrix integrated experiences
- extend world-class communities
- iterate e-business paradigms
- maximize plug-and-play deliverables
- incentivize frictionless functionalities
- incubate synergistic action-items
- integrate collaborative bandwidth
- cultivate 24/7 e-business
- evolve one-to-one technologies
- facilitate holistic platforms


Introduction to jtlc
This document provides a brief description of jtlc (Javascript
Template Language Compiler) — an infrastructure
for creating declarative templates compiled into Javascript code — as well as JXL
(JSON Transformation Language) — a specific template language
implemented with jtlc for transforming and re-shaping JSON data. At the moment the two
concepts are very much intertwined and may be considered one and the same; the author does, however, expect
to see — and come up with — template languages with different syntax and purpose built on
jtlc infrastructure.
Usage model
The jtlc is designed around the two-stage model of template execution: first, the template is compiled
into a Javascript function with a call to dojox.jtlc.compile(template,
language) where language is an object instance encapsulating both the specifics
of the template language and the optional setting selected by the user. The returned evaluator function
may then be executed as many times as necessary on different inputs. Structure of the input and output
data for the template depends on the language; JXL treats both as anonymous (i.e. without a custom
constructor) Javascript objects and arrays in keeping with the philosophy of JSON.
Performance
The primary reason behind the two-stage execution model is performance: the code compiled from templates
should generally be expected to compare well to handwritten Javascript in the efficiency of execution.
Care is taken to avoid or minimize spurious copying, use efficient loop constructs, evaluate complex
subexpressions once etc. All data structures maintained during the execution of the template remain
under direct control of the template's programmer: the compiler introduces only local variables and no
additional arrays or objects. Turning on optional argument checks may lead to introduction of function
calls to contexts where default settings produce only inline code: choosing uncompromising performance
vs. timely detection of errors in input data is a tradeoff left to the user of the library.
Introduction to JXL
JXL is similar in purpose to XSLT: it provides a concise notation describing the transformation
of one JSON structure into another. The language itself is also based on Javascript object notation but
it is not JSON compliant: aside from the primitive types and object and array literals it also requires
the use of functional tags which expand into non-anonymous — and invisible
to the user of the library — Javascript objects.
Execution model
The execution of a JXL template is best described in terms of the dataflow programming model: values are
generated by some primitives, are operated upon by others resulting in new values and end up
in sinks provided by a third kind of primitives. The behavior of most languages entities depends
on whether they appear in a context of a singleton or an iteration:
Singleton context
In singleton context only a single value is processed. All primitives with parameters operate as functions
insofar as they have no side effects.
Iterative context
In iterative context the values are produced in sequence by the innermost generator, undergo processing
imposed by the primitives enclosing the generator and ultimately end up in a sink which limits the context.
Array is the most typical sink for the iterative contexts though it is also possible to populate dictionaries
(anonymous Javascript objects) iteratively or aggregate the results to a single value. The generators
typically iterate over arrays passed in as template's arguments, produced by executing a query over input
data or built by other parts of the same template; it is also possible to iterate over keys in a dictionary.
Usage examples
As JXL was designed to build upon and extend the capabilities provided by dojox.json.query
rather than as a replacement for the latter library, the examples in this section concentrate on use cases
where dojox.json.query in itself is not sufficient to do the job. The author hopes that
simpler patterns of JXL use can be easily derived from these examples by the reader.
Grouping
Note that strings "author", "$[0].author" and "[/author]"
are implicitly treated as expressions and a query, respectively, based on the execution context. At the
same time, string "title" requires an explicit tag around it since it appears in an iterative
context. Using $[0] in an expression within group body is an easy way to access the key
fields as they are equal for the entire group anyway and the group is guaranteed to have at least one element.
Simple expressions referencing the properties of the current input do not have "$." in front
of the name as it is implicitly assumed by expr().
For optimal performance, only one sorting on a composite key occurs here. The inner group()
operates on the current value (sequence of records with identical continent key) of the outer
one so it does not need the third argument.
Aggregation
In this example, using an object literal at JXL level to form the output records is not possible since it
establishes an execution context of its own. Hiding it inside an expression solves the problem for simple
cases. More complex aggregation patterns may require external accumulators implemented using an object or
a closure:
Here, each() is used to evaluate the object literal for each input array element (iteration
over current input is assumed by each() when it is given only one argument).
Flattening nested arrays
Again, it is much easier to move object construction inside the inline expression than to deal with an
object literal with a context of its own.
Note that the second expression does create an intermediate copy: it is necessary to pass multiple properties
to the innermost iteration. This copy however is shallow and performance impact of it should be minimal.
Transforming dictionaries
The example above takes a simple record and transforms it into a data structure suitable to populate
the names and values for controls in a form template.
Simple joins
At the moment, JXL lacks comprehensive support for SQL-like joins. Nevertheless some simple yet important
cases — such as lookup by an unique key — can be implemented in a straightforward manner:
The association of the two tables relies on an intermediate dictionary with the key field of the join serving
as the key in the dictionary. The same approach can be extended to compound keys by using replace()
to build their string representations.
JXL and jtlc reference
dojox.jtlc.compile
compile( template, language )
Accepts template as its first argument and language description (such as an instance of dojo.jtlc.JXL) as
its second argument. Returns the compiled evaluator function for the template or throws an exception in
case of errors.
dojox.jtlc.JXL
new JXL( { setting... } )
Instantiates language description for JXL that can be customized by specifying the following settings:
- elideNulls
- When true, null values are not placed into array or dictionary sinks but are thrown
away instead (with their corresponding keys in case of a dictionary).
- failOnDuplicateKeys
- When true, an attempt to insert a duplicate key into the dictionary sink results in
an exception.
- singletonQuery.failOnNoResults
- Set to true to verify that queries in singleton contexts produce at least one result
or throw an exception otherwise.
- singletonQuery.failOnManyResults
- Set to true to verify that queries in singleton contexts produce no more than one result
or throw an exception otherwise.
- queryLanguage
- By default this option is set to dojox.json.query. You may substitute a query language
compiler with compatible API.
- replaceLanguage
- By defualt this option is set to dojo.replace. You may substitute a formatting function
of your own with compatible API.
Note that default settings always favor performance over other concerns; turning on additional checking in the
code is likely to make it somewhat more complex and, as a result, slower.
JXL literals
Object literals
{ key0: input0 [, ...keyN: inputN] }
Object literals are sinks producing dictionaries (anonymous Javascript objects). By default, all inputs
of an object literal are evaluated in singleton mode and the resulting values inserted into the resulting
dictionary with literal key values. In order to populate a dictionary with keys generated from an input
sequence, use the setkey() primitive from a sub-template enclosed within
many(). In this case the key associated with this sub-template within the literal will be
ignored and the computed value will be used instead.
Array literals
[ input0 [, ...inputN] ]
Array literals are sinks producing anonymous Javascript arrays. By default, each input of an array literal
is evaluated in an iterative context of its own. In order to evaluate a singleton sub-template and put its
value in an array, enclose the sub-template within one().
Note that array literals themselves are not generators and should not appear in an iterative context
even though they establish an iterative context of their own inside the brackets. In order to use the value
produced by an array literal as a generator, enclose it in from().
String literals
String literals may appear in place of a sub-template anywhere in JXL. They are interpreted differently
depending on the context: in the context of a singleton, the string is taken to be an inline expression
as if it were enclosed in an expr() tag. In an iterative context, the string is assumed
to be a query without additional parameters, which is to say, an equivalent of query(
string, current() ).
Numeric and boolean literals
Numeric and boolean literals are always interpreted as if they were enclosed in quote().
Consequently they may not appear in an iterative context.
Functions
Values with the type of function are treated as if they were enclosed in bind().
JXL tags
dojox.jtlc.tags.acc
acc( input )
Ensures that the value of its argument (usually a constant) is stored in a local variable (accumulator).
Usually used as part of an aggregation construct such as expr( '$1+=expression',
input, acc(0) ). It is not an error to use acc()
in an iterative context but the tag will have no effect as the accumulator will be overwritten by the next
iteration.
dojox.jtlc.tags.arg
arg( index )
Returns one of the arguments passed into the evaluator of the template. While current()
defaults to iterating over arg( 0 ), the two are not equivalent:
arg() is not a generator and should be enclosed in from() to produce
one. The argument of arg() should be a numeric value (usually a constant).
dojox.jtlc.tags.bind
bind( function [, input0...inputN ] )
Evaluates the input0...inputN arguments, then applies function to them. In
the iterative context, input0 is treated as the generator, the rest of the arguments are
evaluated only once. If the input arguments are omitted completely, bind()
assumes that the function should be applied to current().
dojox.jtlc.tags.current
current()
In a singleton context, returns the value of the current input. Current input defaults to the value of
arg(0) but may be temporarily reset to different objects in a
sub-template enclosed in primitives such as each(), group() and
setkey(). In an iterative context, current() serves as a generator
of values from current input.
dojox.jtlc.tags.defined
defined( [ input ] )
Serves as a filter passing only the defined values (that is, values whose typeof is
not equal to 'undefined') from the input. Should not be used outside of
iterative contexts.
dojox.jtlc.tags.each
each( input0 [, input1...inputN ] )
Performs nested iterations by evaluating its first argument with current input set to the value
generated by the second argument and so on. Thus the rightmost argument forms the outermost
iteration and the leftmost argument forms the innermost iteration. This primitive can only be used
in iterative contexts and evaluates every one of its arguments in an iterative context of its own.
Note that each() does not nest sinks, only the iterations. In fact, its usual
application is flattening hierarchies formed by nested arrays passed into the template.
dojox.jtlc.tags.expr
expr( expression [, input0...inputN ] )
Evaluates its input0...inputN arguments, then evaluates the inline expression,
substituting the values of the arguments for placeholders $ and
$0...$9 as follows:
- $0...$9
- Values of input0 through input9.
- $
- In singleton context, equivalent to $0. In an iterative context, current
value generated by input0.
If the expression contains no placeholder strings and begins with an identifier, expr()
assumes it to be a property reference on the current input and prepends "$." to it.
If no input arguments are provided, the expression is evaluated with input0
equal to current input. Note that expr() is entirely similar to bind() except that
bind() refers to a function outside of the template's evaluator and expr()
injects Javascript code directly into the evaluator's body.
dojox.jtlc.tags.from
from( input )
Evaluates the input argument as a singleton and generates values from the array it returns as its
result. Applying from() to current() has no effect because
current() already serves as a generator in iterative contexts and from()
cannot be used as a singleton.
dojox.jtlc.tags.group
group( keys, body [, input ] )
Provides SQL-like grouping capability by evaluating its body over subsequences from
input. The subsequences are established by evaluating the keys (either a single
sub-template or an array of subtemplates, typically inline expressions) over each element of the
sequence and comparing the results. The longest contiguous subsequence of generated values where
keys are equal forms a group. The body is then evaluated with
current input set to the entire group. The group() primitive can be used only
in iterative contexts; it generates values returned by the body: one value per group.
Note that for the grouping to work properly the input sequence should already be
ordered in respect to the keys so usually group() is applied to the
results produced by a query(). However, the user is left free to group sorted sequences
originated elsewhere. If input argument is omitted, current input is used.
dojox.jtlc.tags.keys
keys( [ input ] )
Generates keys from the input: property names if input is an object, indices
if it is an array. If input is omitted, current input is used. Cannot be used outside
of an iterative context.
dojox.jtlc.tags.last
last( [ input ] )
Serves as a special type of sink, returning only the last value generated by input. Usually
used for aggregation purposes. If input is omitted, current input is used.
dojox.jtlc.tags.many
many( input )
Evaluates its input in an iterative context if none exist already. If many()
is used within an externally established iterative context it does nothing.
dojox.jtlc.tags.one
one( input )
Evaluates its input in a singleton context even when used within an externally established
iterative context (in which case one() effectively works as a generator
returning a single value).
dojox.jtlc.tags.query
query( query [, input0...inputN ] )
Executes a query over the specified inputs (each of the arguments input0...inputN
is evaluated as a singleton). By default, the query is pre-compiled with
dojox.json.query and the resulting evaluator is associated with the compiled template
via a closure; changing the queryLanguage setting allow the user to use a different
query language implementation following the same paradigm.
In iterative contexts, query() works as a generator returning individual
matches from the query. In singleton contexts query() assumes that one
and only one result should be produced, which is returned on its own. If query returns
no matches, the result will have an "undefined" value; if query returns more than one
match only the first one will be used. This default behavior may be modified with the settings
singletonQuery.failOnNoResults and singletonQuery.failOnManyResults.
Using query() without the input arguments applies it to current input.
dojox.jtlc.tags.quote
quote( value )
Treats value as a literal even if it is a Javascript object, array or string.
dojox.jtlc.tags.replace
replace( format [, input ] )
Formats and returns its input by performing substitutions within the format string.
By default, replace() uses dojo.replace(); user can change this
behavior with replaceLanguage setting. If the input argument is omitted,
replace() works with current input.
dojox.jtlc.tags.setkey
setkey( body [, input ] )
Changes the key (property name) under which computed values are stored in a dictionary. The input
argument is evaluated first, then body is evaluated as a singleton with current input set to
the value returned by input; usually, the body consists of a replace(), possibly
in combination with expr(). The result returned by the body is used as the key,
the value from the input serves as the result of the setkey() itself. The
setkey() primitive can be used both within singletons and iterative contexts, but makes
little sense in the former. Without the input argument, setkey() operates
on the current input.


So we built a cloud specifically for it. Starting with the real pain point. Storage.
Skeleton is an amazingly easy place to start with responsive development. If you want to learn more, just visit the documentation!
View Skeleton DocsSkeleton images sit easily in grid with .u-max-full-width class. I suggest exploring solution to serving different images based on device size.


You can select the excursion that you like by clicking button... then move to other pages and do the same. And when you about done! there is a cart icon on the top... all your selections will listed there... ready for sharing w/ us for pre-booking and planning.


File Sharing
{% include legacy/cardv2.html
title="OnionShare"
image="/assets/img/legacy_svg/3rd-party/onionshare.svg"
website="https://onionshare.org/"
tor="http://lldan5gahapx5k7iafb3s4ikijc4ni7gx5iywdflkba5y2ezyg6sjgyd.onion/"
description="OnionShare is an open-source tool that lets you securely and anonymously share a file of any size. It works by starting a web server accessible as a Tor onion service, with an unguessable URL that you can share with the recipients to download or send files."
github="https://github.com/micahflee/onionshare"
windows="https://onionshare.org/#downloads"
mac="https://onionshare.org/#downloads"
linux="https://onionshare.org/#downloads"
freebsd="https://www.freshports.org/www/onionshare/"
openbsd="http://openports.se/net/onionshare"
%}
{% include legacy/cardv2.html
title="Magic Wormhole"
image="/assets/img/legacy_png/3rd-party/magic_wormhole.png"
website="https://magic-wormhole.readthedocs.io"
description="Magic Wormhole is a package that provides a library and a command-line tool named wormhole, which makes it possible to get arbitrary-sized files and directories (or short pieces of text) from one computer to another. Their motto: \"Get things from one computer to another, safely.\""
github="https://github.com/warner/magic-wormhole"
windows="https://magic-wormhole.readthedocs.io/en/latest/welcome.html#installation"
mac="https://magic-wormhole.readthedocs.io/en/latest/welcome.html#installation"
linux="https://magic-wormhole.readthedocs.io/en/latest/welcome.html#installation"
freebsd="https://www.freshports.org/net/py-magic-wormhole/"
openbsd="https://pypi.org/project/magic-wormhole/"
netbsd="https://pypi.org/project/magic-wormhole/"
%}
Worth Mentioning
- FramaDrop - Stores a file of any size for 24h. Data is end-to-end encrypted from your browser, powered by LuFi.
{% include badge.html
color="warning"
icon="fas fa-exclamation-triangle"
link="https://framasoft.org/en/cgu/"
tooltip="FramaDrop logs IP addresses and fingerprints the browser for an unclear amount of time."
%}
- croc - Easily and securely send arbitrary-sized files from one computer to another. Similar to Magic Wormhole but without dependencies.
- FreedomBox - Designed to be your own inexpensive server at home. It runs free software and offers an increasing number of services ranging from a calendar or XMPP server, to a wiki, or VPN.


Spain 5-0 Romania: La Roja cap off Euro 2020 qualifying in style
by FSA EditorGerard Moreno scored two and Fabian Ruiz got his first international goal as Spain thrashed sorry Romania in their last Euro 2020 qualifier.
Spain wrapped up their successful Euro 2020 qualification campaign in style with a rampant 5-0 victory over Romania in Madrid.
Robert Moreno’s side already had qualification and top spot in Group F secured heading into their final fixture and followed up a 7-0 demolition of Malta with another dominant display at the Wanda Metropolitano on Monday.
With the excellent Santi Cazorla having already hit the crossbar, Fabian Ruiz opened the scoring in the eighth minute. Gerard Moreno’s double then put Spain out of sight.
Adrian Rus’ own goal completed the first-half scoring, with substitute Mikel Oyarzabal picking out the bottom-left corner in the 91st minute to complete the rout.
Jose Gaya’s foul saw the hosts have a goal disallowed in the fifth minute, before Cazorla rattled the bar with a brilliant strike from 18 yards.
Spain’s dominance swiftly paid dividends, though – Fabian calmly side-footing home his first international goal after Ciprian Tatarusanu failed to hold Dani Carvajal’s effort.
Romania would have been level if not for Kepa Arrizabalaga’s save from George Puscas, and Spain made their goalkeeper’s work count when Gerard headed in from Cazorla’s exquisite first-time cross.
Cazorla was involved again when Gerard doubled his tally, playing a neat pass into Gaya, who crossed for the Villarreal forward to tuck in.
There was still time for Romania’s first half to get worse – Rus diverting Gerard’s cutback beyond Tatarusanu in the 45th minute.
Sergio Ramos looked set to make it 5-0 shortly after the break, only for Spain’s captain to volley over from close range.
Alvaro Morata seemed to have been forced wide moments later but managed to dig out an effort that clipped away off the post in the 55th minute.
Spain’s efforts to get a fifth were finally rewarded in stoppage time – Oyarzabal unleashing a crisp strike on the turn to round off La Roja’s qualification in fitting fashion.
What does it mean? Sparkling Spain look in good shape
Moreno has picked up seamlessly where former coach Luis Enrique left off and – after a dismal World Cup campaign – Spain, with a rejuvenated squad, are sure to be contenders for the top prize next year.
Evergreen Cazorla shines bright
Cazorla’s resurgence for Spain is a wonderful story and at this rate the midfielder – who will be 35 by the time the finals roll around – could well be one of Spain’s chief creators at Euro 2020.
The former Arsenal playmaker was desperately unlucky not to open the scoring early on, before teeing up Spain’s second with a delightful cross and playing a key part in La Roja’s third.
Hapless Romania ravaged at the back
Romania’s capital Bucharest is a host city for Euro 2020, but unless Cosmin Contra’s side display more resilience in defence than they did on Monday, they will have little hope of making it through the play-offs.
What’s next?
While Spain will begin preparations for Euro 2020 with friendlies in March, Romania will discover their play-off opponents on Friday.


Build
Measure
Learn
Introducing monitoring with metrics
No monitoring /
Direct monitoring
Host Centric Checks
Nagios etc
Application/System Centric
Monitoring through metrics
Measurement Classes
Measurement Classes
- Gauges (Counters)
Instant Snapshot, Queue Length
Measurement Classes
- Histograms - Min, Max, Mean, 75th, 90th, 95th, 98th, 99th, and 99.9th Pcts
Measurement Classes
- Timers - Meter and Histogram
Measurement Classes
- Health Checks - Ok / Fail
Types of Measurement
Tags
Levels of Alerting Urgency
Data for Alerts
TICK
- Telegraf
- InfluxDB
- Chronograf
- Kapacitor
Overview
Collect
Analyze
Monitor/Act
Grafana
Grafana
The analytics platform for all your metrics
“Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data driven culture.”
Reading
- Datadog - Monitoring Modern Infrastructure free
- James Turnbull - The Art of Monitoring


Jacob
Primary: Game engine
Secondary: View
Jaiveer
Primary: Data
Secondary: Game engine
Jaylyn
Primary: Data
Secondary: Game engine
Jongho
Primary: View
Secondary: Data
Rohan
Primary: Game engine
Secondary: View
Will
Primary: View
Secondary: Game engine
Sprint 1:
Sprint 2:
Final sprint:
| Responsibilities | 1 |
|---|---|
| Sprint Goals | 2 |
| Sprint Goals (cont) | 3 |
| Sprint Goals (cont) | 4 |
| Table of Contents | t |
|---|---|
| Exposé | ESC |
| Full screen slides | e |
| Presenter View | p |
| Source Files | s |
| Slide Numbers | n |
| Toggle screen blanking | b |
| Show/hide slide context | c |
| Notes | 2 |
| Help | h |


This document describes an API for providing access to devices that support the Human Interface Device (HID) protocol.
This section is non-normative.
A HID (Human Interface Device) is a type of device that takes input from or provides output to humans. It also refers to the HID protocol, a standard for bi-directional communication between a host and a device that is designed to simplify the installation procedure. The HID protocol was originally developed for USB devices but has since been implemented over many other protocols, including Bluetooth.
The web platform already supports input from many HID devices. Keyboards, pointing devices, and gamepads are all typically implemented using the HID protocol. However, this support relies on the operating system's HID drivers that transform the HID input into high-level input APIs. Devices that are not well supported by the host's HID driver are often inaccessible to web pages. Similarly, the outputs on most devices that are not supported by the host's HID driver are inaccessible.
See also the related Explainer document.
This section is non-normative.
The most common classes of HID input devices are already well-supported on the web platform through existing high-level input APIs. For instance, mouse input is accessible through the PointerEvent API and keyboard input is accessible through the Keyboard API. Input from these devices is handled using the host's native HID driver and typically does not require device-specific drivers or configuration to work correctly. WebHID is not intended for devices like these that are already well-supported through high-level input APIs.
For some classes of HID devices, the web platform supports some features of the device but limits access to other features. For instance, the Gamepad API supports the input capabilities of most game controllers but does not support less common capabilities like LED indicators or audio. These features are often not well-supported by host APIs and adding support within the user agent can lead to significant complexity. WebHID would give applications an alternative when the functionality provided by the high-level API is incomplete.
Many HID devices are not supported through any web platform API. The HID specification describes a wide array of devices that could be supported through HID, including virtual reality controls, flight simulators, medical equipment, and more. WebHID would allow these devices to be used without requiring additional drivers or modification to the user agent.
HID is attractive for prototyping and hobbyist applications because it allows devices to use the host's generic HID driver instead of requiring a driver for each host where the device will be used. The simplified installation procedure also makes it easier for educators to deploy a device to a classroom of students without modifying the system configuration on each host. Providing access to HID devices through the web platform would further reduce installation requirements, particularly for devices that are currently only supported through host-specific applications.
This section is non-normative.
HID peripherals may expose powerful functionality that should not be made accessible to the page without explicit consent from the user. For instance, a HID peripheral may have sensors that allow it to collect information about its surroundings. A device may store private information that should not be revealed or overwritten. Many devices expose functionality that allow the device firmware to be upgraded. Operating systems typically do not restrict access to HID devices from applications, and this access can occasionally be abused to damage the device or corrupt the data stored on it.
In some cases, a device may expose functionality that should not be accessible at all from a web page. Specific devices may be blocked by recognizing the device by its vendor and product ID and hiding such devices during enumeration. The HID report descriptor allows a device to describe its own capabilities, and this information can be used to block classes of devices even when the vendor and product ID cannot be known in advance. This can be accomplished by inspecting the usage values assigned to collections within the report descriptor; for instance, access to keyboard-like devices can be denied by denying access to devices that include a top-level collection with the Keyboard usage ID.
To mitigate abuse, a device will not be made available to the page until the user has granted explicit access. Access must first be requested by the page and will be granted once the user has selected the device from a chooser displaying all available devices. Once a page has been granted access, an indicator will be displayed to indicate the device is in use.
The HID protocol is extremely versatile, and a wide variety of devices have been designed that take advantage of this versatility. As a result, there are many possibilities for how access to a device could allow a malicious page to damage the device itself. It is relatively common for HID peripherals to allow firmware updates to be sent using custom HID reports. Device manufacturers must take care to design the firmware upgrade mechanism to verify that the firmware binary is authentic, and should also protect against downgrades that could reduce the security of a device. Untrusted upgrades could be used to add new capabilities to a device or cause it to masquerade as an entirely different type of device.
Some devices may be damaged when inputs are provided outside of the expected range. For instance, the rumble feature on a gamepad could become damaged if a page sends an invalid rumble command.
In general, these types of attacks are device-specific and cannot be mitigated at the API level.
If a malicious page gains access to a device, in some cases this access can be used to attack the host. A major concern is whether the device can be used to generate trusted input events. These events serve as a proxy for user intent and can be used to access more powerful web platform features.
Mice and keyboards are typically implemented as HID peripherals, and are also capable of generating trusted input. A HID keyboard or mouse may contain advanced features like programmable macros, which store a sequence of inputs and allow the sequence to be played back at a later time. Device manufacturers must take care to design such features in a way that would prevent a malicious app from reprogramming the device with an unexpected input sequence, and must also protect against triggering macro playback without the user's explicit consent.
dictionary HIDDeviceFilter { unsigned long vendorId; unsigned short productId; unsigned short usagePage; unsigned short usage; }; dictionary HIDDeviceRequestOptions { required sequence<HIDDeviceFilter> filters; }; [ Exposed=Window, SecureContext ] interface HID : EventTarget { attribute EventHandler onconnect; attribute EventHandler ondisconnect; Promise<sequence<HIDDevice>> getDevices(); Promise<sequence<HIDDevice>> requestDevice( HIDDeviceRequestOptions options); }; [SecureContext] partial interface Navigator { [SameObject] readonly attribute HID hid; };
A {{HIDDevice}} |device| is a matching device for a
{{HIDDeviceFilter}} |filter| if the following steps return
match
:
|filter|.{{HIDDeviceFilter/vendorId}}
is present and
|device|.{{HIDDevice/vendorId}}
does not equal
|filter|.{{HIDDeviceFilter/vendorId}}
, return
mismatch
.
|filter|.{{HIDDeviceFilter/productId}}
is present and
|device|.{{HIDDevice/productId}}
does not equal
|filter|.{{HIDDeviceFilter/productId}}
, return
mismatch
.
|filter|.{{HIDDeviceFilter/usagePage}}
is present,
iterate over the {{HIDCollectionInfo}} collections in
|device|.{{HIDDevice/collections}}. If there is no [=matching
collection=], return mismatch
.
match
.
A {{HIDCollectionInfo}} |collection| is a matching collection
for a {{HIDDeviceFilter}} |filter| if the following steps return match
:
|filter|.{{HIDDeviceFilter/usagePage}}
is present and
|device|.{{HIDCollectionInfo/usagePage}}
does not equal
|filter|.{{HIDDeviceFilter/usagePage}}
, return
mismatch
.
|filter|.{{HIDDeviceFilter/usage}}
is present and
|device|.{{HIDCollectionInfo/usage}}
does not equal
|filter|.{{HIDDeviceFilter/usage}}
, return
mismatch
.
match
.
A {{HIDDeviceFilter}} |filter| is valid if the following
steps return valid
:
|filter|.{{HIDDeviceFilter/productId}}
is present and
|filter|.{{HIDDeviceFilter/vendorId}}
is not present,
return invalid
.
|filter|.{{HIDDeviceFilter/usage}}
is present and
|filter|.{{HIDDeviceFilter/usagePage}}
is not present,
return invalid
.
valid
. The UA MUST be able to enumerate all devices attached to the system. It is not required to perform this work each time an algorithm requests an enumeration. The UA MAY cache the result of the first enumeration it performs and then begin monitoring for device connection and disconnection events, adding connected devices to its cached enumeration and removing disconnected devices. This mode of operation is preferred as it reduces the number of operating system calls.
dictionary HIDConnectionEventInit : EventInit { required HIDDevice device; }; [ Exposed=Window, SecureContext ] interface HIDConnectionEvent : Event { constructor(DOMString type, HIDConnectionEventInit eventInitDict); [SameObject] readonly attribute HIDDevice device; }; dictionary HIDInputReportEventInit : EventInit { required HIDDevice device; required octet reportId; required DataView data; }; [ Exposed=Window, SecureContext ] interface HIDInputReportEvent : Event { constructor(DOMString type, HIDInputReportEventInit eventInitDict); [SameObject] readonly attribute HIDDevice device; readonly attribute octet reportId; readonly attribute DataView data; };
enum HIDUnitSystem { "none", "si-linear", "si-rotation", "english-linear", "english-rotation", "vendor-defined", "reserved" }; [ Exposed=Window, SecureContext ] interface HIDReportItem { readonly attribute boolean isAbsolute; readonly attribute boolean isArray; readonly attribute boolean isRange; readonly attribute boolean hasNull; readonly attribute FrozenArray<unsigned long> usages; readonly attribute unsigned long usageMinimum; readonly attribute unsigned long usageMaximum; readonly attribute unsigned long designatorMinimum; readonly attribute unsigned long designatorMaximum; readonly attribute unsigned long stringMinimum; readonly attribute unsigned long stringMaximum; readonly attribute unsigned short reportSize; readonly attribute unsigned short reportCount; readonly attribute byte unitExponent; readonly attribute unsigned long unit; readonly attribute long logicalMinimum; readonly attribute long logicalMaximum; readonly attribute long physicalMinimum; readonly attribute long physicalMaximum; }; [ Exposed=Window, SecureContext ] interface HIDReportInfo { readonly attribute octet reportId; readonly attribute FrozenArray<HIDReportItem> items; }; dictionary HIDFieldOptions { required octet reportId; required unsigned long fieldIndex; boolean isFeatureReport; }; [ Exposed=Window, SecureContext ] interface HIDCollectionInfo { readonly attribute unsigned short usagePage; readonly attribute unsigned short usage; readonly attribute FrozenArray<HIDCollectionInfo> children; readonly attribute FrozenArray<HIDReportInfo> inputReports; readonly attribute FrozenArray<HIDReportInfo> outputReports; readonly attribute FrozenArray<HIDReportInfo> featureReports; readonly attribute FrozenArray<octet> reportIds; double getField(BufferSource reportData, HIDFieldOptions options); void setField(BufferSource reportData, HIDFieldOptions options, double value); };
[ Exposed=Window, SecureContext ] interface HIDDevice : EventTarget { attribute EventHandler oninputreport; readonly attribute boolean opened; readonly attribute unsigned short vendorId; readonly attribute unsigned short productId; readonly attribute DOMString productName; readonly attribute FrozenArray<HIDCollectionInfo> collections; Promise<void> open(); Promise<void> close(); Promise<void> sendReport([EnforceRange] octet reportId, BufferSource data); Promise<void> sendFeatureReport([EnforceRange] octet reportId, BufferSource data); Promise<DataView> receiveFeatureReport([EnforceRange] octet reportId); };
This specification defines a feature that controls whether the {{Navigator/hid}} attribute is exposed on the {{Navigator}} object.
The feature name for this feature is "hid"
.
The [=default allowlist=] for this feature is ["self"]
.


You will no longer be able to access the plan, and it will disappear from your list of plans.


Gecode::space_allocator< T > Struct Template Reference
[Using allocators with Gecode]
Allocator that allocates memory from a space heap. More...
#include <allocators.hpp>
Classes | |
| struct | rebind |
| Rebinding helper (returns the type of a similar allocator for type U). More... | |
Public Types | |
| typedef T | value_type |
| Type of objects the allocator creates. This is identical to T. | |
| typedef size_t | size_type |
| Type that can represent the size of the largest object. | |
| typedef ptrdiff_t | difference_type |
| Type that can represent the difference between any two pointers. | |
| typedef T * | pointer |
| Type of pointers returned by the allocator. | |
| typedef T const * | const_pointer |
| Const version of pointer. | |
| typedef T & | reference |
| Non-const reference to T. | |
| typedef T const & | const_reference |
| Const reference to T. | |
Public Member Functions | |
| space_allocator (Space &space) throw () | |
| Construction. | |
| space_allocator (space_allocator const &al) throw () | |
| Copy construction. | |
| space_allocator & | operator= (space_allocator const &al) |
| Assignment operator. | |
| template<class U > | |
| space_allocator (space_allocator< U > const &al) throw () | |
| Copy from other instantiation. | |
| pointer | address (reference x) const |
| Convert a reference x to a pointer. | |
| const_pointer | address (const_reference x) const |
| Convert a const reference x to a const pointer. | |
| size_type | max_size (void) const throw () |
| Returns the largest size for which a call to allocate might succeed. | |
| pointer | allocate (size_type count) |
| Allocates storage. | |
| pointer | allocate (size_type count, const void *const hint) |
| Allocates storage. | |
| void | deallocate (pointer p, size_type count) |
| Deallocates the storage obtained by a call to allocate() with arguments count and p. | |
| void | construct (pointer element, const_reference t) |
| void | destroy (pointer element) |
| Calls the destructor on the object pointed to by element. | |
Public Attributes | |
| Space & | space |
| The space that we allocate objects from. |
Detailed Description
template<class T>
struct Gecode::space_allocator< T >
Allocator that allocates memory from a space heap.
Note that this allocator may be used to construct dynamic data structures that allocate memory from the space heap, or even reside in the space heap as a whole.
Definition at line 177 of file allocators.hpp.
Member Typedef Documentation
| typedef T Gecode::space_allocator< T >::value_type |
Type of objects the allocator creates. This is identical to T.
Definition at line 179 of file allocators.hpp.
| typedef size_t Gecode::space_allocator< T >::size_type |
Type that can represent the size of the largest object.
Definition at line 181 of file allocators.hpp.
| typedef ptrdiff_t Gecode::space_allocator< T >::difference_type |
Type that can represent the difference between any two pointers.
Definition at line 183 of file allocators.hpp.
| typedef T* Gecode::space_allocator< T >::pointer |
Type of pointers returned by the allocator.
Definition at line 185 of file allocators.hpp.
| typedef T const* Gecode::space_allocator< T >::const_pointer |
Const version of pointer.
Definition at line 187 of file allocators.hpp.
| typedef T& Gecode::space_allocator< T >::reference |
Non-const reference to T.
Definition at line 189 of file allocators.hpp.
| typedef T const& Gecode::space_allocator< T >::const_reference |
Const reference to T.
Definition at line 191 of file allocators.hpp.
Constructor & Destructor Documentation
| Gecode::space_allocator< T >::space_allocator | ( | Space & | space | ) | throw () [inline] |
Construction.
- Parameters:
-
space The space whose heap to allocate objects from.
Definition at line 205 of file allocators.hpp.
| Gecode::space_allocator< T >::space_allocator | ( | space_allocator< T > const & | al | ) | throw () [inline] |
Copy construction.
- Parameters:
-
al The allocator to copy.
Definition at line 210 of file allocators.hpp.
| Gecode::space_allocator< T >::space_allocator | ( | space_allocator< U > const & | al | ) | throw () [inline] |
Copy from other instantiation.
- Parameters:
-
al The source allocator.
Definition at line 225 of file allocators.hpp.
Member Function Documentation
| space_allocator& Gecode::space_allocator< T >::operator= | ( | space_allocator< T > const & | al | ) | [inline] |
Assignment operator.
- Parameters:
-
al The allocator to assign.
Definition at line 215 of file allocators.hpp.
| pointer Gecode::space_allocator< T >::address | ( | reference | x | ) | const [inline] |
Convert a reference x to a pointer.
Definition at line 228 of file allocators.hpp.
| const_pointer Gecode::space_allocator< T >::address | ( | const_reference | x | ) | const [inline] |
Convert a const reference x to a const pointer.
Definition at line 230 of file allocators.hpp.
| size_type Gecode::space_allocator< T >::max_size | ( | void | ) | const throw () [inline] |
Returns the largest size for which a call to allocate might succeed.
Definition at line 232 of file allocators.hpp.
| pointer Gecode::space_allocator< T >::allocate | ( | size_type | count | ) | [inline] |
Allocates storage.
Returns a pointer to the first element in a block of storage count*sizeof(T)
bytes in size. The block is aligned appropriately for objects of type T. Throws the exception bad_alloc if the storage is unavailable.
Definition at line 244 of file allocators.hpp.
| pointer Gecode::space_allocator< T >::allocate | ( | size_type | count, | |
| const void *const | hint | |||
| ) | [inline] |
Allocates storage.
Returns a pointer to the first element in a block of storage count*sizeof(T)
bytes in size. The block is aligned appropriately for objects of type T. Throws the exception bad_alloc if the storage is unavailable. The (unused) parameter could be used as an allocation hint, but this allocator ignores it.
Definition at line 258 of file allocators.hpp.
| void Gecode::space_allocator< T >::deallocate | ( | pointer | p, | |
| size_type | count | |||
| ) | [inline] |
Deallocates the storage obtained by a call to allocate() with arguments count and p.
Definition at line 264 of file allocators.hpp.
| void Gecode::space_allocator< T >::construct | ( | pointer | element, | |
| const_reference | t | |||
| ) | [inline] |
Definition at line 275 of file allocators.hpp.
| void Gecode::space_allocator< T >::destroy | ( | pointer | element | ) | [inline] |
Calls the destructor on the object pointed to by element.
Definition at line 280 of file allocators.hpp.
Member Data Documentation
| Space& Gecode::space_allocator< T >::space |
The space that we allocate objects from.
Definition at line 199 of file allocators.hpp.
The documentation for this struct was generated from the following file:
- gecode/kernel/memory/allocators.hpp


This page uses EventDispatcher and FunctionQueue for
FileManager
Current Directory
loading..
FileManager Output
> loading..
Change Directory
Which directory, homie?
LET'S DO THIS
LET'S BE PICKY..
View Some Entries
SHOW ME WHAT'S WHAT
Save a Text File
Give'er a name!
Put some text in it..
SAVE DAT FILE


Man dies after crash in Co Sligo
by Jack QuannA man has died after a crash involving a van and a jeep in Co Sligo.
It happened on the R284 at Jinks Cross in Carraroe at around 7.00pm on Tuesday evening.
The only person in the jeep, a man aged in his 60s, was pronounced dead at the scene.
The driver of the van was taken to Sligo University Hospital with non-life threatening injuries.
The scene of the crash has been preserved for examination by Garda forensic collision investigations.
The road has been closed and local diversions are in place.


 Tita (Lumi Cavazos) is the third and youngest daughter of Mama Elena (Regina Torne) and as such, because of a family tradition, she is forbidden to marry or have children until after her mother's death. Tita is agreeable to this situation until she falls in love with the dashing young Pedro (Marco Leonardi). When Pedro learns that he cannot marry Tita, he agrees to an engagement with her older sister Rosaura (Yareli Arizmendi) in the hope that by marrying her, he will be given ample opportunity to spend time with his real love.
An admittedly unusual title for a film, LIKE WATER FOR CHOCOLATE fits the mood of the movie--odd, playful, and sweet. It equates the boiling point of water for hot chocolate with the height of passion in male/female relationships. With occasional surrealistic fantasy sequences interspersed between the commonplace goings-on of regular lives, the film has a way of enchanting the viewer--until a disappointing end.
 It manages to find the funny side of almost any subject or event. That isn't to say that darker emotions are not expressed, because they certainly are, but they are kept from dominating.
There's a lot of passion expressed in LIKE WATER FOR CHOCOLATE. Love and the rebellion of youth are two of many subjects tackled by the film. The tragedies and ecstasies of both are confronted. We are given an opportunity to see how the attitudes of the characters change over time and how true love, once revealed, can never be held back.
The greatest weakness of this movie is its ending--and not only the final scene, but the ten-minute "epilogue." The last part of LIKE WATER FOR CHOCOLATE takes place twenty years beyond the rest of the film. The transition in time is jarring--I was momentarily disoriented, and the ultimate thrust of these final events seems a trifle silly. While they don't destroy the movie, they reduce its overall impact. Many will find a natural sense of closure in the way that Arau has chosen to conclude his film, but it's a little too hard for me to swallow.
A recurring metaphor in LIKE WATER FOR CHOCOLATE is food (the title is a good tip-off of that). Hardly a scene goes by without someone eating or preparing a meal and some of the film's more hilarious sequences surround a pair of banquets. Each of these scenes has a meaning beyond the obvious, however. Food is equated with life and vivacity, two subjects into which this movie delves.
One of the best films to come out of Mexico in years, LIKE WATER FOR CHOCOLATE is in every sense an "art film." Possessing an almost-ethereal quality, it is not every man's "cup of tea." However, those with a penchant for these sorts of films--offbeat, quirky, and subtly emotive--will almost certainly accept LIKE WATER FOR CHOCOLATE as something of a rare treat. Too bad the ending couldn't have been a little better grounded.
Rating: 8.3 (B+, ***)
- James Berardinelli<EMAIL_ADDRESS>.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


{% load static %}
by Creating an accout you agree to our User Agreement and acknowledge reading our u User Privacy Notice.


CSS Diner Shopping List
Let's go to the mall!
A lot of pickles
for he next lessons about CSS
10 apples
for more CSS manipulations
20 oranges
because they are awesome
13 plates
hm...always disappear
15 bentos
span text
1 bottle of Sake ^_^
for my friends


Taylor Swift named artist of the decade at American Music Awards
by James CoxTaylor Swift broke records with six gongs at this year's American Music Awards as she was named both artist of the year and artist of the decade.
She won six awards at the AMAs, taking her all-time total to 29, organisers confirmed this brings her above Michael Jackson's record of 24.
Swift was already named artist of the decade before Sunday's ceremony, but she also won the biggest prize of the night with the artist of the year gong.
Swift beat Drake, Ariana Grande, Halsey and Post Malone to the award.
An emotional Swift told the crowd at the Microsoft Theater in Los Angeles that the last year had given her "some of the most amazing times" along with "the hardest things I've gone through in my life".
Swift, 29, has been in a feud with prominent talent manager Scooter Braun and her former record label over the rights to her back catalogue of six albums.
The dispute had briefly put her AMAs performance in doubt.
The artist accused Braun of refusing permission for her to sing songs from her back catalogue at the awards show, asking her 122 million Instagram followers to let Braun "know how you feel about this".
Braun subsequently claimed his family had received "numerous death threats" and that he "would like to find a resolution".
Swift did not directly reference the dispute at the AMAs but she did say that "this industry is really weird" before thanking her fans, adding: "This year for me has been a lot. It's been a lot of good, it's been a lot of really complicated."
Swift performed a medley of some of her biggest hits including Speak Now, Red and Fearless.
In her acceptance speech, Swift said the honour celebrated ten years of "hard work and of art and of fun and memories".
She added: “All that matters to me is the memories I have had with you guys, with you the fans, over the years.”


BearHunt
About
Capture Photo
Gallery
Map
Logout
Photo Gallery
Your Most Recent Picture
There are no photos in your history
Checklist
Reset


| Opcode/Instruction | Op/En | 64/32 bit Mode Support | CPUID Feature Flag | Description |
|---|---|---|---|---|
|
0F 3A 0F /r ib1 PALIGNR mm1, mm2/m64, imm8 |
RMI | V/V | SSSE3 | Concatenate destination and source operands, extract byte-aligned result shifted to the right by constant value in imm8 into mm1. |
|
66 0F 3A 0F /r ib PALIGNR xmm1, xmm2/m128, imm8 |
RMI | V/V | SSSE3 | Concatenate destination and source operands, extract byte-aligned result shifted to the right by constant value in imm8 into xmm1. |
|
VEX.NDS.128.66.0F3A.WIG 0F /r ib VPALIGNR xmm1, xmm2, xmm3/m128, imm8 |
RVMI | V/V | AVX | Concatenate xmm2 and xmm3/m128, extract byte aligned result shifted to the right by constant value in imm8 and result is stored in xmm1. |
|
VEX.NDS.256.66.0F3A.WIG 0F /r ib VPALIGNR ymm1, ymm2, ymm3/m256, imm8 |
RVMI | V/V | AVX2 | Concatenate pairs of 16 bytes in ymm2 and ymm3/m256 into 32-byte intermediate result, extract byte-aligned, 16-byte result shifted to the right by constant values in imm8 from each intermediate result, and two 16-byte results are stored in ymm1. |
|
EVEX.NDS.128.66.0F3A.WIG 0F /r ib VPALIGNR xmm1 {k1}{z}, xmm2, xmm3/m128, imm8 |
FVM | V/V | AVX512VL AVX512BW | Concatenate xmm2 and xmm3/m128 into a 32-byte intermediate result, extract byte aligned result shifted to the right by constant value in imm8 and result is stored in xmm1. |
|
EVEX.NDS.256.66.0F3A.WIG 0F /r ib VPALIGNR ymm1 {k1}{z}, ymm2, ymm3/m256, imm8 EVEX.NDS.512.66.0F3A.WIG 0F /r ib VPALIGNR zmm1 {k1}{z}, zmm2, zmm3/m512, imm8 |
FVM FVM |
V/V V/V |
AVX512VL AVX512BW AVX512BW Concatenate pairs of 16 bytes in zmm2 and |
Concatenate pairs of 16 bytes in ymm2 and ymm3/m256 into 32-byte intermediate result, extract byte-aligned, 16-byte result shifted to the right by constant values in imm8 from each intermediate result, and two 16-byte results are stored in ymm1. zmm3/m512 into 32-byte intermediate result, extract byte-aligned, 16-byte result shifted to the right by constant values in imm8 from each intermediate result, and four 16-byte results are stored in zmm1. |
NOTES:
1. See note in Section 2.4, “AVX and SSE Instruction Exception Specification” in the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2A and Section 22.25.3, “Exception Conditions of Legacy SIMD Instructions Operating on MMX Registers” in the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A.
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| RMI | ModRM:reg (r, w) | ModRM:r/m (r) | imm8 | NA |
| RVMI | ModRM:reg (w) | VEX.vvvv (r) | ModRM:r/m (r) | imm8 |
| FVM | ModRM:reg (w) | EVEX.vvvv (r) | ModRM:r/m (r) | NA |
(V)PALIGNR concatenates the destination operand (the first operand) and the source operand (the second operand) into an intermediate composite, shifts the composite at byte granularity to the right by a constant imme-diate, and extracts the right-aligned result into the destination. The first and the second operands can be an MMX,
XMM or a YMM register. The immediate value is considered unsigned. Immediate shift counts larger than the 2L (i.e. 32 for 128-bit operands, or 16 for 64-bit operands) produce a zero result. Both operands can be MMX regis-ters, XMM registers or YMM registers. When the source operand is a 128-bit memory operand, the operand must be aligned on a 16-byte boundary or a general-protection exception (#GP) will be generated.
In 64-bit mode and not encoded by VEX/EVEX prefix, use the REX prefix to access additional registers.
128-bit Legacy SSE version: Bits (VLMAX-1:128) of the corresponding YMM destination register remain unchanged.
EVEX.512 encoded version: The first source operand is a ZMM register and contains four 16-byte blocks. The second source operand is a ZMM register or a 512-bit memory location containing four 16-byte block. The destina-tion operand is a ZMM register and contain four 16-byte results. The imm8[7:0] is the common shift count
used for each of the four successive 16-byte block sources. The low 16-byte block of the two source operands produce the low 16-byte result of the destination operand, the high 16-byte block of the two source operands produce the high 16-byte result of the destination operand and so on for the blocks in the middle.
VEX.256 and EVEX.256 encoded versions: The first source operand is a YMM register and contains two 16-byte blocks. The second source operand is a YMM register or a 256-bit memory location containing two 16-byte block. The destination operand is a YMM register and contain two 16-byte results. The imm8[7:0] is the common shift count used for the two lower 16-byte block sources and the two upper 16-byte block sources. The low 16-byte block of the two source operands produce the low 16-byte result of the destination operand, the high 16-byte block of the two source operands produce the high 16-byte result of the destination operand. The upper bits (MAX_VL-1:256) of the corresponding ZMM register destination are zeroed.
VEX.128 and EVEX.128 encoded versions: The first source operand is an XMM register. The second source operand is an XMM register or 128-bit memory location. The destination operand is an XMM register. The upper bits (MAX_VL-1:128) of the corresponding ZMM register destination are zeroed.
Concatenation is done with 128-bit data in the first and second source operand for both 128-bit and 256-bit instructions. The high 128-bits of the intermediate composite 256-bit result came from the 128-bit data from the first source operand; the low 128-bits of the intermediate result came from the 128-bit data of the second source operand.
Note: VEX.L must be 0, otherwise the instruction will #UD.
0
127
0
127
SRC1
SRC2
Imm8[7:0]*8
255
128
128
255
SRC1
SRC2
Imm8[7:0]*8
127
0
128
255
DEST
DEST
PALIGNR (with 64-bit operands)
temp1[127:0] = CONCATENATE(DEST,SRC)>>(imm8*8) DEST[63:0] = temp1[63:0]
PALIGNR (with 128-bit operands)
temp1[255:0] (cid:197) ((DEST[127:0] << 128) OR SRC[127:0])>>(imm8*8); DEST[127:0] (cid:197) temp1[127:0] DEST[VLMAX-1:128] (Unmodified)
VPALIGNR (VEX.128 encoded version)
temp1[255:0] (cid:197) ((SRC1[127:0] << 128) OR SRC2[127:0])>>(imm8*8); DEST[127:0] (cid:197) temp1[127:0] DEST[VLMAX-1:128] (cid:197) 0
VPALIGNR (VEX.256 encoded version)
temp1[255:0] (cid:197) ((SRC1[127:0] << 128) OR SRC2[127:0])>>(imm8[7:0]*8); DEST[127:0] (cid:197) temp1[127:0] temp1[255:0] (cid:197) ((SRC1[255:128] << 128) OR SRC2[255:128])>>(imm8[7:0]*8); DEST[MAX_VL-1:128] (cid:197) temp1[127:0]
VPALIGNR (EVEX encoded versions)
(KL, VL) = (16, 128), (32, 256), (64, 512) FOR l (cid:197) 0 TO VL-1 with increments of 128 temp1[255:0] ← ((SRC1[l+127:l] << 128) OR SRC2[l+127:l])>>(imm8[7:0]*8); TMP_DEST[l+127:l] ← temp1[127:0] ENDFOR; FOR j (cid:197) 0 TO KL-1 i (cid:197) j * 8 IF k1[j] OR *no writemask* THEN DEST[i+7:i] (cid:197) TMP_DEST[i+7:i] ELSE IF *merging-masking* ; merging-masking THEN *DEST[i+7:i] remains unchanged* ELSE *zeroing-masking* ; zeroing-masking DEST[i+7:i] = 0 FI FI; ENDFOR; DEST[MAX_VL-1:VL] (cid:197) 0
PALIGNR:
__m64 _mm_alignr_pi8 (__m64 a, __m64 b, int n)
(V)PALIGNR:
__m128i _mm_alignr_epi8 (__m128i a, __m128i b, int n)
VPALIGNR:
__m256i _mm256_alignr_epi8 (__m256i a, __m256i b, const int n)
VPALIGNR __m512i _mm512_alignr_epi8 (__m512i a, __m512i b, const int n)
VPALIGNR __m512i _mm512_mask_alignr_epi8 (__m512i s, __mmask64 m, __m512i a, __m512i b, const int n)
VPALIGNR __m512i _mm512_maskz_alignr_epi8 ( __mmask64 m, __m512i a, __m512i b, const int n)
VPALIGNR __m256i _mm256_mask_alignr_epi8 (__m256i s, __mmask32 m, __m256i a, __m256i b, const int n)
VPALIGNR __m256i _mm256_maskz_alignr_epi8 (__mmask32 m, __m256i a, __m256i b, const int n)
VPALIGNR __m128i _mm_mask_alignr_epi8 (__m128i s, __mmask16 m, __m128i a, __m128i b, const int n)
VPALIGNR __m128i _mm_maskz_alignr_epi8 (__mmask16 m, __m128i a, __m128i b, const int n)
None.
Non-EVEX-encoded instruction, see Exceptions Type 4.
EVEX-encoded instruction, see Exceptions Type E4NF.nb.


Texada is a research tool designed for extracting patterns from text data. Specifically, Texada mines temporal relations from totally-ordered sequences of events. To use Texada you need to provide it with at least the following two inputs:
Texada's output is a set of LTL formulae that are instantiations of the input property type. That is, in an instantiation, the variable atomic propositions are replaced with events from the log. Each formula in the output satisfies all of the input traces in the input log. That is, each formula evaluates to true over each of the traces.
As an example, consider the LTL property type that encodes the "x always followed by y" temporal relation between "x" and "y": G(x -> XF(y)). This property states that whenever an event of type "x" appears in a trace, it must be followed in the same trace by an event of type "y". Given an input log with two traces: "a,b,a,b,c" and "c,a,b,b", then Texada will output the property instantiations G(a -> XF(b)). That is, in the input two traces, "a is always followed by b".
You can view an example use of Texada to validate the a solution to the Dining Philosopher's problem here:
Texada is open source, and can be downloaded and installed by following this link.