Our Favorite Things
Several favorite things...
Favorite Movies
assorted films...
Step Brothers
Fight Club
Shawshank Redemption
Rock and Rule
Flavors of Ice Cream
assorted flavors...
Mint Chocolate Chip
Cardamom and Rose
Cookie Dough
Coconut


Release 6.1.1 adds new capabilities, bug fixes, and specialized performance improvements to Vision. Internally, it also implements many important architectural changes that lay the groundwork for future capabilities. These notes describe the functionality, bug fixes, and other externally visible changes associated with this release.
Please note that this release introduces the need for a Vision license key in order to update your database. The license is tied to specific hosts or IP addresses. Based on this information, Insyte will supply you with a Vision script that must be installed in order to update your database with release 6.1.1 (and future releases). See Update Licenses for more information.
Several Vision scripts have been included with this release, providing optional new and modified messages for your installation:
| EXTcore.6.1.1 | New protocol for core classes |
| CHadmin.6.1.1 | New and modified protocol for the AdminTools ToolKit |
| CHfeeds.6.1.1 | New and modified protocol for DataFeed support |
Some of these messages can be installed independent of the Vision version being run; however, many of the messages included in this release define new primitives which will only work with this and future releases. These messages are identified in the New Messages.
A license issued by Innovative Systems Techniques, Inc. is required to update a Vision database using this and subsequent Vision releases. Without that license, Vision can be used to read an existing database but not maintain or build one. If, at the start of an update, Vision cannot find a suitable license, it generates the following output:
V> Utility updateNetwork V> ?g >>> License Does Not Permit Network Update From This Session <<< 5
As of this release, the information content of Selector Not Found messages can be controlled via a session attribute. The EXTcore.6.1.1 script defines messages that enable and disable this attribute. When enabled, a display of the Vision virtual machine's execution stack accompanies each Selector Not Found message. By default, this attribute is disabled, resulting in the generation of conventional Selector Not Found messages. The following example illustrates the result of enabling this attribute:
#### Define a method that causes a selector not found, ... V> Integer defineMethod: [ | foo | ^self bar ]; V> ?g #### Generate the conventional selector not found, ... V> 3 foo V> ?g >>> Selector 'bar' Not Found <<< NA #### Enable verbose selector not found messages, ... V> Utility SessionAttribute enableVerboseSelectorNotFound ; V> ?g #### And get the verbose message, ... V> 3 foo V> ?g >>> Selector 'bar' Not Found <<< Selector Recipient: #RTYPE_C_ValueStore[2:994] ---- 1: |foo|^self bar ^ ---- 2: 3 foo ^ NA
Several new variants of the breakOn: primitive have been added to Vision. These are defined in the EXTcore.6.1.1 script and will only work with release 6.1.1 and future releases. These primitives extend the breakOn: concept to support substring and pattern matching and provide a convenient way to return both the matched and unmatched portions of their input. The following operations are available:
Message Index Converse ======= ===== ======== breakOn: 369 breakString: breakOnString: 389 stringBreak: breakOnPattern: 390 patternBreak: tokenizeOn: 369/1 breakTokenize: tokenizeOnString: 389/1 stringTokenize: tokenizeOnPattern: 390/1 patternTokenize: cbreakOn: 370 cbreakString: ctokenizeOn: 370/1 cbreakTokenize:
The breakOn:, breakOnString: and breakOnPattern: primitives divide a string into one or more substrings based on a set of characters, a string to be matched, or a regular expression, respectively.  That is because empty strings and patterns always match the beginning of any input and never consume any characters from that input. The result is a sure-fire recipe for an infinite loop. To prevent that, special provision is made in these primitives to detect empty search strings and patterns. If an empty string or pattern is detected, only the first, empty match will be returned.  Only the Vision bulk loader (a.k.a., the incorporator) had that ability. The implementation and performance consequences were significant and often hard to recognize. Release 6.1.1 introduces a collection of primitives that facilitate string clustering.
Beginning with this release, strings can be clustered using a mechanism known as associative clusters. Associative clusters apply only to strings. Associative string clusters are similar to dictionaries in that they examine the text of a string and store at most one copy of a string based on its text. Additionally, like dictionaries, the instances in an associative cluster are ordered by their text. The script EXTcore.6.1.1 contains the new primitives defined to support string clustering. These primitives will not work with earlier releases.
Not all string clusters are associative string clusters. Associative string clusters are created using the newAssociativeCluster operation:
!stringSpace <- String newAssociativeCluster;
Strings are added to the associative cluster using the message insertIntoCluster::
!a0 <- "a" insertIntoCluster: stringSpace;
!a1 <- stringSpace clusterInsert: "a";
Associative clusters can be queried to determine if they contain a particular string. The locateInCluster: message or its converse, clusterLocate: perform that function. Both messages return the instance of the string in the associative cluster if the string is present and NA if it isn't. In the context of this example, both:
"a", "b" do: [ ^self print: 3; ^self locateInCluster: ^my stringSpace. printNL ];
"a", "b" do: [ ^self print: 3; ^my stringSpace clusterLocate: ^self. printNL ];
a a b NA
Input: "a" deleteFromCluster: stringSpace Output: TRUE Input: stringSpace instanceList Output: List of 0
"a", "a" do: [ ^self print: 2; ^self deleteFromCluster: ^my stringSpace. printNL ];
a FALSE a TRUE
Strings stored in associative clusters are protected from deletion using the standard instance deletion messages -- delete and rdelete. If one of these messages is sent to an associative cluster resident string, the deletion will fail and the message will return FALSE:
Input: !a0 <- "a" insertIntoCluster: stringSpace Output: a Input: a0 rdelete Output: FALSE Input: a0 Output: a
As of this release, it is possible to explicitly assign newly created transient clusters to specific persistent object spaces. Previously, that assignment was made based on the first persistent reference to the new cluster encountered during the initial save of the new cluster. The script EXTcore.6.1.1 includes new primitives used to locate new clusters. These primitives will not work with earlier releases.
Cluster object space assignments are made with the message establishResidenceInSpaceOf: :
Object createSubclass: "MyClass"; MyClass establishResidenceInSpaceOf: AnotherClass
Object createSubclass: "MyClass"; AnotherClass provideResidenceFor: MyClass
Both the establishResidenceInSpaceOf: message and its converse return TRUE if the object space assignment was performed successfully and FALSE if it failed. The object space assignment can fail if the new cluster already has a persistent identity or if the old reference cluster doesn't. If the assignment fails, no identity changes occur.
As of this release, the numeric primitives (add, subtract, multiply, divide, power, subtracted from, divided into, and power of) convert IEEE NaN (Not a Number) values into Vision NAs. Previously, only division by zero generated Vision NAs; other conditions like overflow, underflow, and loss of precision returned the IEEE NaN generated by the hardware. While these NaN values propagated correctly through subsequent computations, Vision programs could not test for them or control their display.
When sending a message to a collection of objects, Vision's virtual machine partitions that collection by the type of its elements. For each type found, the virtual machine locates the implementation of the message and applies that implementation to the set of elements in the associated partition. The objects returned become the recipients of the next message sent by the expression being evaluated. In general, the objects returned can be of different types, and more importantly, objects of the same type can be returned in several of the partitions. The effect of this recursive partitioning is fragmentation (in fact, the structure used to hold these partitioned intermediate results is called a fragmentation). Common examples of this occur when a message returning a boolean is sent to a polymorphic collection of objects or different execution paths generated by ifTrue: and its variants all return objects of the same type.
There is a performance and clustering tradeoff between performing a computation on a recursively fragmented collection versus coalescing the fragmentation. Coalescing similar types can result in larger and more efficiently organized partitions; however, there is a cost associated with searching for coalesceable fragments and with performing the defragmentation. Historically, Vision deferred defragmentation because, in the majority of cases, that resulted in better average performance. In some cases, particularly those involving the creation of new persistent objects, this decision had an adverse affect on clustering, update performance, or both. A new, high performance, defragmentation algorithm implemented in this release changes the tradeoff. As of this release, Vision's default behavior is to attempt aggressive defragmentation prior to sending a message to a fragmented collection.
Vision's type defragmentation behavior can be controlled by the visionAttemptDefragment session attribute (defined in the accompanying extension scripts) or the VisionAttemptDefragment environment variable. Aggressive defragmentation can be disabled by setting the session attribute to FALSE:
Utility SessionAttribute visionAttemptDefragment <- FALSE;
setenv VisionAttemptDefragment 0 # c-shell syntax
The internal queuing mechanism used by the network maintenance garbage collector (Utility collectGarbage) has been reimplemented to yield a performance improvement of up to an order of magnitude (10x) in some cases with the effect most noticeable on large databases with many containers.
Vision has always utilized a reference counting mechanism to enable the collection of transient objects that are no longer needed. This mechanism works well in most situations, but fails in the case of circular references. If a circular reference is introduced, the reference count of any object in the path of the circular reference will never drop to zero, nor will that of any objects referenced by objects in the circular path.  The EXTcore.6.1.1 script includes the new primitive collectSessionGarbage which can be explicitly invoked to perform transient garbage collection. It is automatically invoked whenever:
A serious Vision error (reported in the NDF.ERROR file, and in the session log with the preface >>> Error Trapped by Read-Eval-Print <<<) traditionally leaves the session active, but unable to commit changes to the object network. This policy provides an opportunity for determining the cause of the error by exploring the state of the session. This remains Vision's default policy; however, with this release, there are two other possible responses to a serious error.
One of the new possibilities is to choose to exit the session. The second is to restart the session. In both cases, all access to the environment developed in the session prior to the error is lost. In the restart case, a batchvision with the same standard input and output channels replaces the original session. If both exit and restart are chosen, exit takes precedence.
This feature has been provided because, after a serious error, the batchvision session may be unable to relinquish some system resources. On some platforms, this inability is more serious than others, and can result in other batchvision sessions being stalled until the session with the error exits or restarts.
There are two ways to enable restart or exit on error. One is via environment variables:
setenv VisionExitOnError 1 setenv VisionRestartOnError 1
Utility SessionAttribute visionExitOnError <- 1; Utility SessionAttribute visionRestartOnError <- 1;
Some operating and file system configurations do not work correctly when presented with large disk write requests. These failures are caught by Vision's update checksum mechanism; however, they require that the failed update be re-run. This release implements a tuning parameter that controls the maximum amount of data that Vision will attempt to transfer to disk during a single update write. Either the session attribute visionMaxWriteChunk or the environment variable VisionMaxWriteChunk can be set to the maximum number of bytes that Vision will attempt to transfer. By default, this parameter is set internally by Vision to not exceed the documented limits of the operating system on which Vision is running. You should not change the value of this parameter unless you are encountering or suspect that you are encountering a problem caused by an operating system bug.
compustat2 -N "000000000000"
For Example New Old ' ' NA 0 ' 3 ' 3 3 ' . 3' NA 0 ' 42Kzcd' NA 42
******************** EXTcore.6.1.1 ********************
Class Utility Message UpdateLicense setUpdateLicenseTo:
Class Utility SessionAttribute Message licenseItemAt:
Note that this message will not work with releases prior to 6.1.1
Class Utility Message updateNetwork
>>> License Does Not Permit Network Update From This Session <<<
Class Utility SessionAttribute Message visionMaxWriteChunk visionMappingLimit visionAddressThreshold visionNSyncRetries visionSSyncRetries visionSOpenRetries visionSORetryDelay visionNetOpenTrace visionLargeTaskSize visionStackDump visionGRMEnabled visionGRMTrace visionAttemptDefragment visionRestartOnError visionExitOnError verboseSelectorNotFound largeContainerSizeOfSpace: space
Class Utility SessionAttribute Message enableVerboseSelectorNotFound disableVerboseSelectorNotFound
Note that these messages will not work with releases prior to 6.1.1
Class Utility Message hostname hostId username processId
Note that these messages will not work with releases prior to 6.1.1
Class Utility Message accessedNetworkVersion
Note that this message will not work with releases prior to 6.1.1
Class Utility Message currentNetworkVersion
Note that this message will not work with releases prior to 6.1.1
Class Utility Message collectSessionGarbage
Note that this message will not work with releases prior to 6.1.1
Class Utility Message fullCompact fullCompactOf: fullCompactExcept:
Class String Message breakOnString: string breakOnPattern: stringPattern
Note that these messages will not work with releases prior to 6.1.1
Class String Message tokenizeOn: string ctokenizeOn: string tokenizeOnString: string tokenizeOnPattern: stringPattern
Note that these messages will not work with releases prior to 6.1.1
Class String Message toList translateString: string to: replacement
Note that these modifications will not work with releases prior to 6.1.1
Class String Message translatePattern: pattern to: replacement
Note that this message will not work with releases prior to 6.1.1
Class String Message toUpper toLower capitalize lowercase toggleCase
Note that these messages will not work with releases prior to 6.1.1
Class String Message newAssociativeCluster
Note that this message will not work with releases prior to 6.1.1
Class String Message isAnAssociativeCluster
Note that this message will not work with releases prior to 6.1.1
Class String Message insertIntoCluster: cluster clusterInsert: stringValue
Note that these messages will not work with releases prior to 6.1.1
Class String Message locateInCluster: cluster clusterLocate: stringValue
Note that these messages will not work with releases prior to 6.1.1
Class String Message deleteFromCluster: cluster clusterDelete: stringValue
Note that these messages will not work with releases prior to 6.1.1
Class Object Message establishResidenceInSpaceOf: object provideResidenceFor: aCluster
Object createSubclass: "MyClass"; MyClass establishResidenceInSpaceOf: AnotherClass
Object createSubclass: "MyClass"; AnotherClass provideResidenceFor: MyClass
Both the establishResidenceInSpaceOf: message and its converse return TRUE if the object space assignment was performed successfully and FALSE if it failed. The object space assignment can fail if the new cluster already has a persistent identity or if the old reference cluster doesn't. If the assignment fails, no identity changes occur.
Note that these messages will not work with releases prior to 6.1.1
******************** CHadmin.6.1.1 ********************
******************** CHfeeds.6.1.1 ********************
| Copyright © 1999 Innovative Systems Techniques, Inc. | Updated January 28, 1999 |


Orders the set according to the numeric value expression, and then returns the value of the tuple that is at the given percentile.
This function only applies to aggregate storage databases.
Syntax
Percentile ( set, numeric_value_expr, percentile )
| Parameter | Description |
|---|---|
set |
The set from which to get a tuple value. |
numeric_value_expr |
A numeric value or an expression that returns a numeric value. |
percentile |
A percentile. Must be between 0 and 100. |
Notes
The returned value is such that n percent of the of the set members are smaller than it.


Software Craftmanship Guild
Existing Users Log In Here
Email
Password
Remember me?
Log in
New User? Register Now!
Email
First Name
Last Name
Password
Password Confirmation
Register


Trigonometry Applets
Complmentary Angles
Determine if two angles are complementary to each other.
Coterminal Angles
Demonstrates the concept of angles outside of the rangle of 0 to 360 degrees.
Geometric Angles
Demonstrates angles whose values range between 0 and 180 degrees.
Standard Position
Demonstrates angles that are in standard position and identifies the quadrant that each angle lies in.
Supplementary Angles
Demonstrates angles that are supplementary to each other.
Similar Triangles
Compares the values of the six trigonometric functions for similar triangles.
Trigonometric Function Values
Shows the value of the six trignometric functions based on a given point in the plane.
Reference Angles
Provides the value of the reference angle for any given angle measure from 0 to 360 degrees.
Bearings
Provides the value of both types of bearings for any given angle measure in standard position.
Radians
Demonstrates where the value of radian measures are derived from.
Sine Graph
Demonstrates where the shape of the graph of Sine is derived from.
Cosine Graph
Demonstrates where the shape of the graph of Cosine is derived from.
Sine Transformations
Demonstrates how the graph of Sine is affected by different transformations.
Cosine Transformations
Demonstrates how the graph of Cosine is affected by different transfomrations.
Secant Graph
Demonstrates where the shape of the graph of Secant is derived from.
Cosecant Graph
Demonstrates where the shape of the graph of Cosecant is derived from.
Secant Transformations
Demonstrates how the graph of Secant is affected by different transfomrations.
Cosecant Transformations
Demonstrates how the graph of Cosecant is affected by different transfomrations.
Tangent Graph
Demonstrates where the shape of the graph of Tangent is derived from.
Cotangent Graph
Demonstrates where the shape of the graph of Cotangent is derived from.
Tangent Transformations
Demonstrates how the graph of Tangent is affected by different transfomrations.
Cotangent Transformations
Demonstrates how the graph of Cotangent is affected by different transfomrations.
Negative Angles
Demonstrates the effect of negative angles with repsect to the Sine and Cosine functions.
Inverse Functions
Demonstrates the derivation of inverse functions.
Inverse Trig Fuctions
Demonstrates the derivation of inverse trigonometric functions.
Ambiguous Case
Allows user to explore the possible solutions of triangles in the ambiguous case.
Scalar Multiplication
Demonstrates the geometric effect of multiplying a vector by a scalar value.
Vector Addition
Demonstates the geometric effect of adding the components of two vectors in the plane.
Complex Roots
Allows user to find the n comples roots of a start value.
Rectangular to Polar Transformations
Allows the user to view a graph in rectangular form change into a graph in polar form in real time.
Geometric Construction of a Circle
Allows the user to create a circle given any center and radius.
Geometric Construction of a Parabola
Allows the user to create a parabola based on any given focus and directrix.
Geometric Construction of an Ellipse
Allows the user to create an ellipse based on any two given focal points and length of major axis.
Geometric Construction of a Hyperbola
Allows the user to create a hyperboal based on any two given focal points, vertices and center.
Cone and Plane
Demonstrates the effect of a cone and a plane intersecting each other in space.
Trig Miscellaneous
Links to different things trig related.


--- layout: default title: Chan Zuckerberg Initiative Investments ---
How will the Chan Zuckerberg Initiative shape education policy? One way to answer that question is to look at the projects that the company (it is not a foundation) has backed since its inception. That is easier said than done, however, as it does not disclose where its money goes. To the best of my knowledge, these are the recipients of CZI grant and investment dollars:
{% assign investments = site.data.czi.investments %} {% assign investments = investments | sort:"Name" %} {% for investment in investments %}This data is powered by a GitHub repository: Hack-Education-Data/chan-zuckerberg-initiative. Last updated: 28 December 2018


uielements¶
This module contains the low level text UI elements for the package textui.
This module contains the functions that actually handle user input. Each function is configured so that the user input occurs within a while True loop. Input checking is done on the user input and the loop will not exit if an invalid value was given.
You are welcome to use these functions directly in your programs if you do not wish to use the menu construct classes also provided in the textui package.
Usage¶
This module contains two groups of functions: standard interactive functions and optional input functions. The former is for cases where you always want to query user input, the second is for cases where you may need to query user input if a particular value is not given programmatically.
Examples¶
The standard interactive functions are generally pretty straightforward. Here is an
example using user_input_date()
(lines beginning with $
are the code, the
others are printed by Python):
$ user_date = user_input_date('Enter the first date to load data for')
Enter the first date to load data for
Enter in one of the formats: yyyy-mm-dd
Entering nothing will cancel
--> 2017-01-01
$ user_date
datetime.datetime(2017, 1, 1, 0, 0)
As you can see, this asks the user to input a date in a standard format and then returns
that as a datetime.datetime
object.
One possible “gotcha” is hinted at by the line “Entering nothing will cancel”. For most of the
user_input
functions, if the user presses <Enter> without entering anything, the function
will immediately return a None
. Most of them can override this with the emptycancel
keyword, which will force the user to enter something. In general, these functions are written
with the idea that the encapsulating program will handle the return of None
as a signal to
gracefully stop, or otherwise handle the fact that the user does not know what to enter.
Here is an example case where you might use one of the optional input functions,
in this case opt_user_input_value()
:
def read_data_from_file(filename=None):
filename = opt_user_input_value('Enter the name of the file to open',
filename,
is_valid_test=os.path.isfile,
invalid_msg='That is not a valid filename')
with open(filename, 'r') a fobj:
...
You could imagine read_data_from_file
being a function called early on in a larger
program that loads some data file so that the rest of the program can access it. In
this case, we allow the path of the file to be given in two ways:
- As an argument to the
read_data_from_file
function - Interactively, through the
opt_user_input_value
function
The standard behavior of all the “opt” functions is that if the value (the second argument)
is None
, then it assumes that the value was not given and so should ask the user to provide
it interactively (this criteria can be overridden with the do_ask_test
keyword). In this case,
we also want to ensure that, whichever way the filename is given, that it is a valid file, so
we give is_valid_test=os.path.isfile
. This means that either filename
(if not None
) or
the user’s input will be given to os.path.isfile
, which must return True
for that value to
be accepted. This ensures consistent testing of both function inputs and user inputs.
For the “opt” functions that call “user_input” functions that may return None
if the user doesn’t
enter anything, the “opt” functions will, by default, raise a textui.uierrors.UIOptNoneError
.
This behavior can be overridden with the error_on_none
keyword.
Member functions¶
Standard interactive functions¶
-
textui.uielements.
user_input_date
(prompt, currentvalue=None, emptycancel=True, req_time_part='day', smallest_allowed_time_part=None)[source]¶ Request that the user input a date.
Parameters: - prompt (str) – A string printed as the prompt; it should describe what date is being requested.
- currentvalue (datetime.date or datetime.datetime) – optional, if given, will print out the current value given. Useful when setting an option so that the user knows what the current value is.
- emptycancel (bool) – optional, defaults to True. A boolean determining whether an empty answer will cause this function to return None. If false, the user must enter a valid date to exit (not recommended for most cases).
- req_time_part (str) – optional, defaults to ‘day’. A string describing the largest required time part, must be one of: ‘year’, ‘month’, ‘day’, ‘hour’, ‘minute’, ‘second’. If this is set to ‘minute’ for example, then the user must input at least year, month, day, hour, and minute, or it will be rejected.
- smallest_allowed_time_part (str) – optional, defaults to None.  Must be one of the same strings as allowed for req_time_part, and must be the same or smaller piece of time than req_time_part. For example, if this is set to ‘minute’, then the user may not include seconds in their answer. If left as None, then it will be automatically set to the same as req_time_part, effectively giving the user only one choice for how specific to make their time.
Returns: A datetime.datetime instance, or None.
-
textui.uielements.
user_input_list
(prompt, options, returntype='value', currentvalue=None, emptycancel=True, printcols=True, **printcolargs)[source]¶ This function provides the user a list of choices to choose from, the user selects one by its number
Parameters: - prompt (str) – The text prompt to display for the user
- options (list or tuple) – The list of options to present
- returntype (str) – optional, can be “value” or “index”, “value” is default. If set to “value”, the return value will be the value of the option chosen. If set to “index”, the return value will be the index of the list chosen.
- currentvalue – optional, defaults to None. Sets what the current value of this option is. If one is given, it will be marked with a * in the list.
- emptycancel (bool) – optional, defaults to
True
. IfTrue
, then this function will return None if no answer is chosen (but not if an invalid selection is chosen). A message indicating that an empty answer will cancel is added to the prompt. IfFalse
, the list of options will be re-presented if no answer given. - printcols (bool) – optional, controls whether the individual options should be spread out across the terminal in
columns (
True
) or all printed in one column (False
). - printcolargs – keyword arguments to be passed through to
textui.uiutils.print_in_columns()
. Only has an effect ifprintcols
isTrue
.
Returns: either the value or index of the user choice (see returntype) or the type None.
-
textui.uielements.
user_input_value
(prompt, testfxn=None, testmsg=None, currval=None, returntype=<class 'str'>, emptycancel=True)[source]¶ Ask the user to input a value.
Parameters: - prompt (str) – The prompt to give the user
- testfxn (function) – optional, if given, should be a function that returns a boolean value. Used to test if the value the user gave is valid. This can be a pre-defined function or one created using the lambda syntax. This will be called after the user input is converted to the returntype given (see below)
- testmsg (str) – optional, if given, should be a message that describes the conditions required by testfxn. If testfxn is given, this really should be as well, or the user will just see “That is not an allowed value”, which isn’t very helpful.
- currval – optional, the current value of the option. If given, the value will be printed after the prompt
- returntype (str) – optional, must be a type which can be used as a function to convert a string to that type, e.g. int, bool, float, list. If the type is bool, this function will require the user to enter T or F (or nothing if emptycancel is True). If not given, the user input will be returned as a string.
- emptycancel (bool) – optional, defaults to True. If True, then the user can enter an empty string, which will make this function return None.
Returns: The user input value as the type specified by returntype, or None if emptycancel is True and the user does not enter a value.
-
textui.uielements.
user_input_yn
(prompt, default='y')[source]¶ Prompts the user with a yes/no question, returns True if answer is yes, False if answer is no.
This is similar to user_input_value with a bool return type, but handles it differently if the user does not enter a value; this function will return the default value rather than a None type or forcing the user to enter something
Parameters: Returns: bool
-
textui.uielements.
user_onoff_list
(prompt, options, currentstate=None, feedback_level=2, returntype='opts', printcols=True, **printcolargs)[source]¶ Provides a list of toggleable options to the user
Will print the prompt followed by the list of options provided. The user can interactively toggle each option on or off.
Parameters: - prompt (str) – A string prompting the user what to do. Will be followed by further instructions on what user inputs are valid.
- options (list or tuple) – A list or tuple of strings of the option names
- currentstate (list of bools) – optional, describe the current state of the options (on or off). If not given, all default to False. Must be the same length as options. Is shallow copied internally so it will not change the values in the calling function.
- feedback_level (int) – optional, an integer describing how much feedback to give the user. Defaults to 2, meaning that this function will print out what user input it could not parse. Set to 0 to turn this off (1 reserved against future intermediate levels of feedback).
- returntype (str) – optional, a string determining what is returned. Default is “opts”, which returns a list of the subset of options selected. May also be “bools”, meaning that a list of booleans the same length as options is returned, True for what options the user selected.
- printcols (bool) – optional, controls whether the individual options should be spread out
across the terminal in columns (
True
) or all printed in one column (False
). - printcolargs – keyword arguments to be passed through to
textui.uiutils.print_in_columns()
. Only has an effect ifprintcols
isTrue
.
Returns: a list of options selected (returntype == “opts”), or a list of bools with the new states of the options (returntype == “bools”), or None if the user cancels.
Optional input functions¶
-
textui.uielements.
opt_user_input_date
(prompt, value, do_ask_test=None, is_valid_test=None, invalid_msg=None, error_on_none=True, **kwargs)[source]¶ Wrapper around user_input_date that calls it only if an interactive input is necessary.
Parameters: - prompt (str) – A string that is the prompt that will be given if the user needs enter a date
- value – the current value of the date.
- do_ask_test (function) – optional, a function that should take one input (value) and return True if user_input_date should be called to ask the user what value to use. By default, tests if value is None (i.e. will call user_input_date if value is None).
- is_valid_test (function) – optional, if given, it must be a function that takes one input (value) and returns a boolean indicating if value is valid. By default, this checks that value is an instance of datetime.date or datetime.datetime.
- invalid_msg (str) – optional, the error message that will be given in is_valid_test(value) returns False. If is_valid_test is given, this must also be given.
- error_on_none (bool) – optional, default True, meaning that if the user fails to provide a value, a UIOptNoneError is raised.
- kwargs – additional keyword arguments to pass through to user_input_date.
Returns: the date, either given as value or chosen by the user.
-
textui.uielements.
opt_user_input_list
(prompt, value, options, do_ask_test=None, invalid_msg=None, error_on_none=True, **kwargs)[source]¶ Wrapper around user_input_list that calls it only if an interactive choice is necessary.
This function takes mostly the same arguments as user_input_list, but in addition takes an existing value and tests if that value indicates that a choice needs to be made, or if not, that it is a valid option. Typically, this would be used inside a function that has optional arguments that, if not given, should be asked interactively of the user.
Parameters: - prompt (str) – A string that is the prompt that will be given if the user needs to make an interactive choice
- value – the current value that will be tested if it means the user should be asked to choose an option or if it is valid
- options (list) – a list of allowed options, passed to user_input_list if needed.
- do_ask_test (function) – optional, a function that should take one input (value) and return True if user_input_list should be called to ask the user what value to use. By default, tests if value is None (i.e. will call user_input_list if value is None).
- invalid_msg (str) – optional, the message for the UIValueError raised if user_input_list is not called but value is not in the options list. This can have two formatting markers, {value} and {opts}. {value} will be replaced with the value given, {opts} will be replaced with a comma separated list of allowed options.
- error_on_none (bool) – optional, default True, meaning that if the user fails to provide a value, a UIOptNoneError is raised.
- kwargs – additional keyword arguments recognized by user_input_list.
Returns: the value selected, or the value given if user_input_list is not called. Raises a ValueError if value is not in options and user_input_list is not called.
-
textui.uielements.
opt_user_input_value
(prompt, value, do_ask_test=None, is_valid_test=None, invalid_msg=None, error_on_none=True, **kwargs)[source]¶ Wrapper around user_input_value that calls it only if an interactive input is necessary
Parameters: - prompt (str) – A string that is the prompt that will be given if the user needs enter a value
- value – the current value
- do_ask_test (function) – optional, a function that should take one input (value) and return True if user_input_value should be called to ask the user what value to use. By default, tests if value is None (i.e. will call user_input_value if value is None).
- is_valid_test (function) – optional, if given, it must be a function that takes one input (value) and returns a boolean indicating if value is valid. If not given, no check of the value will be done. This will also be passed through to user_input_value as testfxn, ensuring that the criteria for the given value is the same in both.
- invalid_msg (str) – optional, the error message that will be given in is_valid_test(value) returns False. If is_valid_test is given, this must also be given. This will be passed through to user_input_valid as testmsg so that the error message is consistent.
- kwargs – additional keyword arguments to pass through to user_input_value, except testfxn and testmsg, which are already handled by is_valid_test and invalid_msg, respectively.
- error_on_none (bool) – optional, default True, meaning that if the user fails to provide a value, a UIOptNoneError is raised.
Returns: the value, either input as value or entered by the user.
-
textui.uielements.
opt_user_input_yn
(prompt, value, do_ask_test=None, **kwargs)[source]¶ Wrapper around user_input_yn that calls it only if an interactive choice is required.
Parameters: - prompt (str) – A string that is the prompt that will be given if the user needs to choose interactively
- value – the current value. If it does not pass do_ask_test and is not a boolean, an error will be raised
- do_ask_test (function) – optional, a function that should take one input (value) and return True if user_input_yn should be called to ask the user what value to use. By default, tests if value is None (i.e. will call user_input_yn if value is None).
- kwargs – additional keyword arguments to pass through to user_input_yn
Returns: the value, either input as value or chosen by the user.
-
textui.uielements.
opt_user_onoff_list
(prompt, value, options, do_ask_test=None, returntype='opts', value_name='The value', **kwargs)[source]¶ Wrapper around user_onoff_list that calls it only if an interactive choice is required.
Parameters: - prompt (str) – A string that is the prompt that will be given if the user needs to choose interactively
- value – the current value. If this does not pass do_ask_test, then it must be a list or tuple, of what depends on returntype
- options (list) – the list of options to choose from.
- do_ask_test (function) – optional, a function that should take one input (value) and return True if user_onoff_list should be called to ask the user what value to use. By default, tests if value is None (i.e. will call user_onoff_list if value is None).
- returntype (str) – optional, either the string “opts” or “bools”. The default is “opts”, which is the reverse of user_onoff_list; it is assumed that this function is more likely to be used if a list of options is more likely to be passed as an argument than a list of booleans.
- value_name (str) – optional, but recommended: this will be inserted into the error message raised if value does not pass do_ask_test and is not the right format for the value of returntype as the name of the parameter that is wrong. Otherwise, it just say “The value”, which isn’t very informative for your user.
- kwargs – additional keyword arguments to pass through to user_onoff_list, except returntype, which is already passed automatically.
Returns: either a list of booleans the same length as options or a list of the subset of options selected, depending on the value of returntype. Will either be the input value, or the user’s choice.


Congrats! You have been successfully paid {{charge.amount}} {{charge.currency}} for '{{charge.description}}', your charge id is {{charge.id}}.


Issue 61
Welcome to another issue of Haskell Weekly! Haskell is a purely functional programming language that focuses on robustness, concision, and correctness. This is a weekly summary of what’s going on in its community.
Featured
-
Haxl: Making concurrency unreasonably easy
Haxl is a big hammer for doing I/O concurrently, testing I/O, and modularity (caching & memoization).
-
I’m going to give a short introduction to Brick, a Haskell library for building terminal user interfaces. So far I’ve used brick to implement Conway’s Game of Life and a Tetris clone. I’ll explain the basics, walk through an example snake application, and then explain some more complicated scenarios.
-
Simplexhc: An STG to LLVM compiler
STG’s lowering to C-- and the decisions taken when implementing it were based in the ‘90s. That’s not to say that the GHC team hasn’t done an awesome job keeping it up to date; they have! But, I wonder what a complete rewrite of this lowering would look like. Hence, I’m trying to experiment in this space and see what happens.
-
Front Row is hiring a senior backend Haskell engineer (ad)
Come change how 6.5+ million K-12 US students learn Math, Language Arts, Social Studies and more. Use data, advanced type systems, great product design and deep pedagogy to change lives.
-
Threading responsibly:
forkIO
considered harmfulIn this post I want to argue that threads are also a resource, in the sense that they require management after we’ve created them. A stray thread will consume memory, CPU cycles, and really whatever resource it might need to execute.
-
The value in this approach is that I don’t have to think about what functions to call to collect the images: it’s always
images
. In the prior example, I had to think about the how to collect the images each time, and it took brain power better spent elsewhere. -
I hope the primary thing you take away from it is a deeper understanding of how monad transformer stacks interact with operations in the base monad, and how monad-control works in general.
-
RecordWildCards
and binary parsingRecordWildCards
is a GHC extension that makes working with Haskell records more convenient. The extension has been blogged about in a few places already, so this post intends to provide a different motivating example: binary parsing. -
On naming things: Library design
I’ve written a few libraries now and have tried out different naming and exporting conventions. I’ve developed a bit of a feel for how it is to write and use them, and I’m going to put out my personal preferences and opinions on library design here.
-
Haskell Bits #6: A guide to mutable references
There are quite a few ways to store mutable data in Haskell. Let’s talk about some of them! Specifically, we will focus on mutable containers that store a single value that can be modified by one or more threads at any given time. I’m not going to go into a ton of detail here — I just want to give an overview.
-
Interfaces and type classes: Number APIs in C# and Haskell
In C# sometimes I sorely miss something like an
INumber<T>
interface with methods add, subtract, multiply, and others. The lack of this means it is cumbersome to write generic code on numbers.
Package of the week
This week’s package of the week is data-has, a library that provides a simple extensible product system.
In brief
- Announcing haskus-system 0.7
- Defeating evil with data structures
- stack2nix first public release
- Streaming combinators and extracting flat parallelism
- Typing Nix
- When competing with C, fudge the benchmark


| month {lubridate} | R Documentation |
Date-time must be a POSIXct, POSIXlt, Date, Period, chron, yearmon, yearqtr, zoo, zooreg, timeDate, xts, its, ti, jul, timeSeries, and fts objects.
month(x, label = FALSE, abbr = TRUE, locale = Sys.getlocale("LC_TIME")) month(x) <- value
x |
a date-time object |
label |
logical. TRUE will display the month as a character string such as "January." FALSE will display the month as a number. |
abbr |
logical. FALSE will display the month as a character string label, such as "January". TRUE will display an abbreviated version of the label, such as "Jan". abbr is disregarded if label = FALSE. |
locale |
for month, locale to use for month names. Default to current locale. |
value |
a numeric object |
If label = FALSE
: month as number (1-12, 1 = January, 12 = December),
otherwise as an ordered factor.
x <- ymd("2012-03-26") month(x) month(x) <- 1 month(x) <- 13 month(x) > 3 month(ymd(080101)) month(ymd(080101), label = TRUE) month(ymd(080101), label = TRUE, abbr = FALSE) month(ymd(080101) + months(0:11), label = TRUE)


{% extends "header.html" %} {% block body %}
In this PyGame tutorial, we cover how to display custom-created game images to the screen. You can also draw objects to the screen using coordinates, which we will cover later. Here, we've created some award-winning graphics that we definitely want in our game, so we want to know how to get it to show up.
import pygame pygame.init() display_width = 800 display_height = 600 gameDisplay = pygame.display.set_mode((display_width,display_height)) pygame.display.set_caption('A bit Racey') black = (0,0,0) white = (255,255,255) clock = pygame.time.Clock() crashed = False carImg = pygame.image.load('racecar.png') def car(x,y): gameDisplay.blit(carImg, (x,y)) x = (display_width * 0.45) y = (display_height * 0.8) while not crashed: for event in pygame.event.get(): if event.type == pygame.QUIT: crashed = True gameDisplay.fill(white) car(x,y) pygame.display.update() clock.tick(60) pygame.quit() quit()
So, here we've gone ahead and embedded the new code in our existing script. First, we use:
display_width = 800 display_height = 600 gameDisplay = pygame.display.set_mode((display_width,display_height))
The functioning here is the same as before, but this time we're not hard coding the resolution. We want to use this method so that we can reference the variables. We're going to see how useful that can be already in this script, but even more later on.
Then, here:
black = (0,0,0) white = (255,255,255)
We're defining our colors, using RGB formatting. If you want to know a bit more about RGB, check out the video.
Next up:
carImg = pygame.image.load('racecar.png')
Here, we load the racecar.png image to our carImg variable. racecar.png is an image that I have personally created. See the video for some tips to create an image, pull one from Google Images, or make your own. Chances are, you will do better than I did!
def car(x,y): gameDisplay.blit(carImg, (x,y))
Now, we define our car function, which really just places the car to the display. "Blit" basically just draws the image to the screen, but we still have yet to fully show it to the display. In graphics, generally, there is a lot done in the background, and only when every update is done is when the screen is visually updated.
x = (display_width * 0.45) y = (display_height * 0.8)
Here, we've defined the starting points for our car. See how we used out previously-defined variables? We're already seeing how this could be useful, especially if we EVER want to change our resolution. A lot of people start out writing programs, thinking that some of the variables will just never be changed. I've done it a few times. Always wrong and regretful.
Now, within our while loop, we see the addition of:gameDisplay.fill(white) car(x,y)
Here, we've filled our display with a color, white. What this does is cover everything in white. Paint the game white, so-to-speak. This will cover over any existing stuff. After that, we run our car function to draw the car to the screen. Always keep in mind the order here. If you drew the car first, then called the gameDisplay.fill function, you would have just covered your car and it would not show up.
Also, if you'd like the same image I used:


Contents
Other ResourcesPolygon Sponsor |
Voronoi DiagramA Voronoi diagram is the computational geometry concept that represents partition of the given space onto regions, with bounds determined by distances to a specified family of objects. The application area of this concept vary from Archaeology to Zoology. The Boost.Polygon library provides implementation of the Voronoi diagram data structure in 2D space. The internal representation consists of the three arrays, that respectively contain: Voronoi cells (represents the area around input site bounded by the Voronoi edges), Voronoi vertices (points where three or more Voronoi edges intersect), Voronoi edges (the one dimensional curves containing points equidistant from the two closest input sites). Each of the primitives (cell, vertex, edge) contains pointers to the other linked primitives, so that it's always possible to efficiently traverse Voronoi graph. The picture below shows the Voronoi vertices in red, Voronoi edges in black, input sites that correspond to the Voronoi cells in blue. It is considered that each input segment consists of the three sites: segment itself and its endpoints. As the result two additional Voronoi edges are constructed per each input segment. This is made to simplify the representation of the Voronoi diagram.Declaration
template
<typename T, typename TRAITS = voronoi_diagram_traits<T> > |
| voronoi_diagram() |
Default constructor. |
| void
clear() |
Clears diagram. |
| const
cell_container_type &cells() const |
Returns the const
reference to the cell container. |
| const
vertex_container_type &vertices() const |
Returns the const
reference to the vertex container. |
| const
edge_container_type &edges() const |
Returns the const
reference to the edge container. |
| unsigned
int num_cells() const |
Returns the number of the
cells in the Voronoi diagram. This value should be the same as the size of the cell container. |
| unsigned
int num_edges() const |
Returns the number of the
edges in the Voronoi diagram. This value should be twice smaller than the size of the edge container. The reason is that two half-edges are present for each Voronoi edge. |
| unsigned
int num_vertices() const |
Returns the number of the
vertices in the Voronoi diagram. This value should be the same as the size of the vertex container. |
| coordinate_type |
Coordinate type. |
| point_type |
2D point. |
| cell_type |
Voronoi cell. |
| vertex_type |
Voronoi vertex. |
| edge_type |
Voronoi edge. |
| cell_container_type |
Container of Voronoi cells. |
| cell_iterator |
Cell container iterator. |
| const_cell_iterator |
Const cell container iterator. |
| vertex_container_type |
Container of Voronoi vertices. |
| vertex_iterator |
Vertex container iterator. |
| const_vertex_iterator |
Const vertex container iterator. |
| edge_container_type |
Container of Voronoi edges. |
| edge_iterator |
Edge container iterator. |
| const_edge_iterator |
Const edge container iterator. |
| voronoi_edge() |
Default constructor. |
| voronoi_cell_type
*cell() |
Returns the pointer to the
Voronoi cell
that edge belongs to. |
| const
voronoi_cell_type *cell() const |
Returns the const pointer
to the Voronoi cell that edge belongs to. |
| void
cell(voronoi_cell_type *c) |
Sets the Voronoi cell
pointer for the cell current edge belongs to. |
| voronoi_vertex_type
*vertex0() |
Returns the pointer to the
start point of the edge. If the edge is infinite in that direction returns NULL. |
| const
voronoi_vertex_type *vertex0() const |
Returns the const pointer
to the point vertex of the edge. If the edge is infinite in that direction returns NULL. |
| void
vertex0(voronoi_vertex_type *v) |
Sets the start point
pointer of the edge. |
| voronoi_vertex_type
*vertex1() |
Returns the pointer to the
end point of the edge. If the edge is infinite in that direction returns NULL. |
| const
voronoi_vertex_type *vertex1() const |
Returns the const pointer
to the end point of the edge. If the edge is infinite in that direction returns NULL. |
| void
vertex1(voronoi_vertex_type *v) |
Sets the end point pointer
of the edge. |
| voronoi_edge_type
*twin() |
Returns the pointer to the
twin edge. |
| const
voronoi_edge_type *twin() const |
Returns the const pointer
to the twin edge. |
| void
twin(voronoi_edge_type *e) |
Sets the twin edge pointer
of the edge. |
| voronoi_edge_type
*next() |
Returns the pointer to the
CCW next edge within the corresponding Voronoi cell. Edges not necessarily share a common vertex (e.g. infinite edges). |
| const
voronoi_edge_type *next() const |
Returns the const pointer
to the CCW next edge within the corresponding Voronoi cell. Edges not necessarily share a common vertex (e.g. infinite edges). |
| void
next(voronoi_edge_type *e) |
Sets the CCW next edge
pointer of the edge. |
| voronoi_edge_type
*prev() |
Returns the pointer to the
CCW prev edge within the corresponding Voronoi cell. Edges not necessarily share a common vertex (e.g. infinite edges). |
| const
voronoi_edge_type *prev() const |
Returns the const pointer
to the CCW prev edge within the corresponding Voronoi cell. Edges not necessarily share a common vertex (e.g. infinite edges). |
| void
prev(voronoi_edge_type *e) |
Sets the CCW prev edge
pointer of the edge. |
| size_t color() const |
Returns the color value. |
| void
data(size_t color) const |
Sets the color of
the edge. Allows to execut graph algorithms and associate data. |
| voronoi_edge_type
*rot_next() |
Returns the pointer to the
CCW next edge rotated around the edge start point. If the edge is infinite in that direction returns NULL. |
| const
voronoi_edge_type *rot_next() const |
Returns the const pointer
to the CCW next edge rotated around the edge start point. If the edge is infinite in that direction returns NULL. |
| voronoi_edge_type
*rot_prev() |
Returns the pointer to the
CCW prev edge rotated around the edge start point. If the edge is infinite in that direction returns NULL. |
| const
voronoi_edge_type *rot_prev() const |
Returns the const pointer
to the CCW prev edge rotated around the edge start point. If the edge is infinite in that direction returns NULL. |
| bool
is_finite() const |
Returns true if the both
end points of the edge are finite, else false. |
| bool
is_linear() const |
Returns true if the edge
is linear (segment, ray, line), else false. |
| bool
is_curved() const |
Returns true if the edge
is curved (parabolic arc), else false. |
| bool
is_primary() const |
Returns false if the edge
goes through the endpoint of the segment site, else true. |
| coordinate_type |
Coordinate type. |
| voronoi_cell_type |
Voronoi cell type. |
| voronoi_vertex_type |
Voronoi vertex type. |
| voronoi_edge_type |
Voronoi edge type. |
| color_type |
Color type. |
| voronoi_cell(const
point_type &p1, voronoi_edge_type *edge) |
Constructs the Voronoi
cell from the given point site and pointer to the one of the boundary
edges. |
| voronoi_cell(const
point_type &p1, const point_type &p2, voronoi_edge_type *edge) |
Constructs the Voronoi
cell from the given segment site and pointer to the one of the boundary
edges. |
| const
point_type &point0() const |
If the cell contains point
site returns it. If the cell contains segment site returns its first endpoint. |
| const
point_type &point1() const |
If the cell contains point
site returns it. If the cell contains segment site returns its second endpoint. |
| voronoi_edge_type
*incident_edge() |
Returns the pointer to the
one of the boundary edges. |
| const
voronoi_edge_type *incident_edge() const |
Returns the const pointer
to the one of the boundary edges. |
| void
incident_edge(voronoi_edge_type *e) |
Sets the incident boundary
edge pointer of the cell. |
| size_t color() const |
Returns the color associated with the cell. |
| void color(size_t color) const |
Sets the color of
the cell. Allows to execut graph algorithms and associate data. |
| bool contains_point() const | Returns true if the cell contains a point site, else false. |
| bool contains_segment() const | Returns true if the cell contains a segment site, else false. |
| bool is_degenerate() const | Returns true if the cell
doesn't have an incident edge. Could happen if a few input segments share a common endpoint. |
| coordinate_type |
Coordinate type. |
| point_type | Point type. |
| color_type |
Color type. |
| voronoi_edge_type |
Voronoi edge type. |
| voronoi_vertex(const
point_type &vertex, voronoi_edge_type *edge) |
Constructs the Voronoi
vertex that corresponds to the give point and incident edge. |
| const
point_type &vertex() const |
Returns the point that
represents vertex. |
| voronoi_edge_type
*incident_edge() |
Returns the incident edge
pointer. |
| const
voronoi_edge_type *incident_edge() const |
Returns the const pointer
to the incident edge. |
| void
incident_edge(voronoi_edge_type *e) |
Sets the incident edge
pointer. |
| size_t color() const |
Returns the color associated with the vertex. |
| void color(size_t color) const |
Sets the color of
the cell. Allows to execut graph algorithms and associate data. |
| coordinate_type |
Coordainte type. |
| point_type |
Point type. |
| color_type |
Color type. |
| voronoi_edge_type |
Voronoi edge type. |
| coordinate_type |
The main coordinate type
of the Voronoi diagram primitives. |
| ctype_converter_type |
Coordinate type converter
structure. Converts coordinates provided by the Voronoi builder to the internal coordinate type. |
| point_type |
2D point data structure. |
| cell_type |
Voronoi cell type. |
| vertex_type |
Voronoi vertex_type. |
| edge_type |
Voronoi edge_type. |
| vertex_equality_predicate_type |
Predicate that returns
true if two points are considered to be equal. This is used to unite nearby Voronoi vertices. |
| Copyright: | Copyright © Andrii Sydorchuk 2010-2012. |
|---|---|
| License: | Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |


I have a '81 Jeep CJ-7 with 258(4.2L) I6. A cast aluminum valve cover
from Clifford keeps most of the oil from spraying out of the 258.
A Centerforce clutch transfers power from the engine to a
Ford T-18 4 speed. The T-18 is mated to a Dana 300
transfer case with an adapter from Advanced Adapters.
The Dana 300 features a Currie twin stick shifter.
I recently swapped my 3.54 geared axles for a custom front Dana
44 and a Jeep Commando rear Dana 44. These axles are geared with
4.27:1 ring and pinion on Detroit Soft Lockers. The front Dana 44
was built by Predator Four Wheel Drive in Colorado Springs and features
what ever lock outs I have lying around that aren't broken. The
Commando 44 I bought from Darron Birenheier
in upstate New York. The Commando 44 is a great, low buck, bolt on
upgrade for '76-'86 CJs. The final crawl ratio, thanks to the T-18,
is 6.32*2.6*4.27=70.2:1.
It also has a 2 1/2" suspension lift
made up of Rancho springs, Con-fer shackles, and Dick
Cepek shocks.  All this makes
plenty of room for 32"X11.50" BFG Mud Terrains.
The "interior" features a custom 6 point roll cage with two outside
spreaders, two inside spreaders, and a bar across the dash. The two
inside spreaders surround a console for a Radio Shack CB and a dome
light. The gauges are stock except for Sunpro Tachometer and vacuum
gauges. Tunes are provided by an Acoustic Tape/Radio and amp with
some extra speakers on the roll bar.
In case of trouble, a Warn 8274 winch is
mounted on the front. This winch is rated to pull 8,000 pounds
on the first wrap of the 150ft spool of 5/16" cable. Too keep the winch
running, I have dual Die Hards in a Wrangler Power Products battery
tray. The batteries are wired in with a Wrangler Power Products
Isolator and battery manager. A winch accessory kit helps me make
pulls at angles and without damaging the environment.
There is a RockWare bumper on the front and a Tomken bumper on the
rear.
I also have a high lift jack and a big beafy 4"
tow strap.
Early this year I did a power steering conversion, added York
compressor, and a 26 gal Aero fuel tank. I still haven't converted
the air conditioning compressor for on board air. Belts
are hooked up, but the plumbing isn't.
Jeep Tech Articles
RockWare Bumper Review
:
RockWare has recently introduced a new bumper for CJs and Wranglers.
The bumper integrates a winch mount into the bumper which gives the
bumper a very clean appearance.
 Well flip your u-bolts to gain ground clearance
and protect them from damge.
E-Z Axle Bearing Repack:
Reduce down time, repack your bearings in seconds.
Jeep Heater Motor Upgrade:
Keep out the winter cold by upgrading your heater motor to a high
output one from an early 70s Chevy truck.
Family Jeep History
In my family, Jeeping is a bit of a tradition. My parents had a
Wagoneer when I was growing up that unfortunately rusted to
pieces before I managed to become a licenced driver. Pictured
above is my Grandfather, Mother, and Grandmother with their
Willys Wagon in 1951. They are cooking up some dinner on their
cross country trip.
My first Jeep was a '78 CJ-5 with 258 I6 and Jeep T-18. The
body had an extreme rust problem and the carb needed rebuilding.
Basically everything was wrong with it. I'm still sorry I
sold it. Second Jeep is the current Jeep '81 CJ-7. I also
owned a '93 Wrangler for two years. It was a real nice ride.


PUBLIC INDEX NETWORK
Docs
Updates
Uniswap
PancakeSwap
Telegram
Twitter
×
×
PIN
PIN powers metadata for
DeFi, NFTs, and digital content.
Learn More
Buy PIN


Features of the Amberbio app
Mobile data analysis
The Amberbio app performs all calculations and
visualizations on the mobile device. The data is always available and can be
visualized and analyzed in real time during meetings for example.
Types of data
Data sets consist of samples, molecules, and
measurements for each molecule-sample pair. Missing values are
allowed. Various types of data can be analyzed in the app such as mRNA gene
expression, protein abundances, or microRNA abundance. Even data sets of a
non-biological origin can be used.
Experimental origin of data
Data from any experimental origin can be analyzed including microarrays, sequencing, qPCR, mass spectrometry, and 2D gels.
Simple user interface
The user interface is touch based and can be used without training. Each page in the app has an info button which provides additional information.
Import
New data sets can be imported from tab or comma separated files. Files can be imported through email, or through cloud storage providers such as iCloud, Dropbox, or Box.
Export
Tables and figures can be exported by email or through cloud storage providers. The simple export methods make it easy to view figures on a large screen if needed.
Backup
Projects can be exported to a database file that can be used for backup and transfer to other devices. The database files make it easy to transfer data to collaborators.
Statistical tests
The app can perform t-tests, Mann-Whitney tests, ANOVA tests, paired t-tests, and linear regression.
Visualizations
The data can be visualized in various ways giving the user a better understanding of the data.
Unsupervised classification
The app can perform 2D and 3D principal component analysis, hierarchical clustering, and heat maps. Various options can be chosen interactively.
Creation of new data sets
The app can produce new derived data sets by normalization, logarithmic transformation, sample removal, molecule removal, or selection of molecules from a table.
Missing values
The app contains histograms of missing values for the samples. The histograms can be ordered in various ways.
Figures
The app can produce various customizable color figures. The figures can be exported to either pdf or png files.
Tables
The app can display tables of molecules. Tables can be sorted, searched, and exported to txt files.
Screen shots
Screen shots of the app showing some of the features can be found on
screen shots.


Click to Watch
Click to Watch
Click to Watch
Click to Watch
Click to Watch
Home
Studio
Work
Blog
Contacts


Hopefully you've got a basic idea of how Please works, however Please has a rich set of features. Explore the documentation to find out what else is possible:
Config - A complete list of configuration options available for use in your
.plzconfig
Built in rules & languages - A listing of all the built in rules including those of the core languages Please supports.
Command line interface - Please has a powerful command line interface. It can query changes between branches, setup file watches to re-build code as you work, and more.
Advanced topics & custom rules - Information on more advanced topic including how to extend Please with custom build rules to support any language or technology.
Pleasings - Information on using pleasings: artillery rules outside of the core Please offering.
Do you like what you see? If you've started using Please in your project, we'd love to hear about it! Add yourself to the adopters file and let us know what you're building with Please!
The best way to ask questions about please and interact with the growing Please community is through our gitter!
If you have any questions or issues, you can raise them on our github.


Drag the link below to your bookmarks bar. Then you can select a word or phrase on any webpage and use the bookmark to display the definition.
check in dictLook up any word from the definition by clicking on it.
Use the back and forward browser buttons to move through recent definitions.
Written using mootools and FancyForm.
IE history support based on a jQuery history plugin, originally developed by Taku Sano (Mikage Sawatari), forked by Takayuki Miwa.
Definition layout heavily inspired by Apple's Dictionary.app.


|
||
|
|
||
| CCCFLC CONFERENCE DATES APPROACH | ||
| Our annual conference will be split into two affordable meetings: Riverside on Friday, October 15, and San Francisco on Friday, October 22. | ||
| The Riverside meeting will be held at Riverside Community College and begin at 9AM. The morning session will feature Professors Cathy Collopy O'Donnell and Kathryn Kelly speaking about "Changing Demographics and Their Impact on Language Classes." This is followed by a plenary session and results of the barriers to study abroad survey compiled by Orange Coast College. | ||
| In the afternoon, there will be a session on Spanish for Spanish speakers led by Prof. Maria Carreira of CSU-Long Beach, and sectional meetings by language. | ||
| The San Francisco meeting will focus on Project IMPAC and FL, and bring together members from the UC and CSU, as well as the CCCFLC. The meeting will take place at the City College of San Francisco Downtown Campus at 4th and Mission; this campus is near the Powell Street BART/Muni stations. | ||
| Costs for either day are $30 for full-time and $25 for part-time faculty, with an additional $15 for nonmembers. | ||
| Please mark your calendars and send in your registration now for these events! (Click here for the registration form) | ||
| TUITION INCREASES, BUT $50 BA-HOLDER TUITION IS NOT IMPLEMENTED | ||
| Many colleges began the new year in good shape, and FL departments have reason to be cheerful as, while tuition increased to $26 a unit, at least the $50 BA-holder differential tuition was not put in place. We still remain the most reasonable way to acquire a language. | ||
| NEXT ISSUE | ||
| Our next issue will appear in September with further details for the fall conferences. Please send your articles to: | ||
|
Tom
Blair ~ 424 Dorado Terrace ~ San Francisco, CA 94112-1753
|
||
| To join CCCFLC, please send your completed membership form with a check ($15 for full-time, $10 for part-time; $35 for CLTA) to: | ||
|
CCCFLC
~ 424 Dorado Terrace ~ San Francisco, CA 94112
|


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4
Dietary
For the sorbet, place the sugar, water and basil into a saucepan over a high heat. Bring to a boil and boil until the sugar has dissolved.
Remove from the heat and leave to cool slightly before pouring the basil syrup into a food blender. Blend to a smooth consistency then pass through a sieve into a clean bowl using the back of a spoon to push the mixture through.
Pour through a second sieve, lined with a piece of clean muslin or a clean kitchen cloth, into a clean bowl. Leave to cool.
Once the mixture has cooled completely, transfer to an ice cream machine and churn until just frozen according to the manufacturer's instuctions. Transfer to a bowl and freeze until solid.
Preheat the oven to 220C/428F/Gas 7.
For the basil cream, place the milk and basil into a saucepan and bring to the boil.
Place the egg yolks, sugar and cornflour into a bowl and whisk to combine. Pour the hot milk onto the egg mixture and whisk until smooth.
Return the mixture to the saucepan and cook over a gentle heat, stirring continuously, for 1-2 minutes, or until thick enough to hold its shape. Leave to cool.
Meanwhile, for the tart, cut the pastry into four 13cm/5in squares and place onto a baking sheet. Brush the pastry with the beaten egg yolk. Use a sharp knife to score a line 1cm/0.5in in from the edge of the pastry, all the way round the squares, taking care not to cut all the way through (this will rise to create a crust around the edge when cooked).
Divide the cooled basil cream evenly among each of the four pastry squares, spreading it gently up to the scored edges.
Arrange the blackberries in rows over the top of the cream, scatter over the flaked almonds and transfer to the oven. Bake for 15-20 minutes, or until the pastry is crisp and golden-brown.
To serve, place each tart on a serving plate and top each one with a ball of sorbet. Garnish with a sprig of basil.


--- post_id: /p2p-seminar-kudk date: 2007-10-13 17:14 return_url: '2007-10-12-p2p-seminar-kudk.html' name: 'monki' email<EMAIL_ADDRESS>comment: '
Free (in file sharing) and open (in p2p) is not representations of ideal states that we should try to reach, but rather they function as attractors that heats up the system where they are applied, and to various degrees, melts away the frozen positions of that system. Some systems might only melt a bit on the surface, creating a less rigid form and smooth edges, some might be entirely liquified and freely flowin, only with some icebergs floating on to.
' ---


Section : Table of Contents
RAMADDA User Guide
1
RAMADDA Version 13.73.0 Release Notes
2
Logging in and User Settings
3
RAMADDA Entries
3.0
RAMADDA Overview
3.1
Creating Folders and Entries
3.2
Editing Entries and their Properties
3.3
Extended Edit
3.4
Entry Access Control
3.5
Populating your RAMADDA Server
4
FAQ
5
Wiki Facilities
5.0
Wikis
5.1
Wiki Text
5.2
Wiki Embeds
5.3
Wiki Display of Entries
5.4
Entry Tags
5.5
Displaying Data
5.6
Basic Displays
5.7
Charts and Plots
5.8
More Wiki Display Components
5.9
Maps
5.10
Display Glyphs
5.11
Wiki Functions
5.12
Tips and Tricks
5.13
RAMADDA Notebooks
5.14
Page Styles
6
Integrated Map Data Viewer (IMDV)
6.0
IMDV Introduction
6.1
Map Files
6.2
IMDV Images
6.3
Making Routes
6.4
IMDV Entries
6.5
The Multi-Entry Glyph
6.6
Data Icons
6.7
Custom Data Icons
7
Data ingest, harvesters and import/export
7.0
Downloading and Exporting Entries
7.1
Data Ingest
7.2
Defining New Entries
7.3
Entry Xml Import/Export Format
7.4
Harvesters
7.5
Local File View
7.6
AWS S3 Integration
8
Data Facilities
8.0
ETL Tools
8.0.1
RAMADDA SeeSV
8.0.2
Data Example
8.1
Gridded Data
8.1.0
Grid Subsetting
8.1.1
Grid Time Series
8.1.2
Grid Aggregation
8.2
IDV Publisher
9
Installation and Site Administration
9.0
Installing RAMADDA
9.1
Installing on Amazon AWS
9.2
Building from source
9.3
Configuring the RAMADDA Database
9.4
API Keys and External Services
9.5
Integration with OpenAI GPT
9.6
Read Only Mode
9.7
Plugins
9.8
Configuring Maps
9.9
Service Integration Framework
9.10
HTML Page Templates
9.11
Admin Settings
9.12
User Administration
9.13
Miscellaneous Admin Settings
9.14
Backups
9.15
Registry Services
9.16
Sub Repositories
9.17
Monitoring Events
10
RAMADDA Developer Documents
10.0
RAMADDA Web API
10.1
Search API
10.2
Publish API
11
Credits
12
License


I will describe my projects here.
It was decided to use Six Sigma (6S) approach to improve process to desired level of Sigma and sustain it. My main responsibilities were:
Goal was achieved and process is still on desired level (99% of VQ closed within 24h). Delivered project saving calculated as 70K USD.
Problem statement:
Within 3 months project team reduced number of vendors by 61% from 608k to 254k, found 35k of potential duplicated vendors and measure quality of data set based on 58 different SAP fields.
Additionally during "Process Fix" phase for which I was responsible, project team identified process and system breakdowns, assessed SAP data model and authorization concept. As results almost 2k users were blocked in SAP for VMD changes. List of systems changes requirement, governance structure and process changes guidelines were delivered and presented.


Two Arkansas chemistry professors accused of making meth
ARKADELPHIA, Ark. (AP) — Two Arkansas college chemistry professors have been arrested on charges of making meth, in an apparent case of life imitating art.
The Clark County sheriff’s office said Henderson State University professors Terry David Bateman and Bradley Allen Rowland were arrested Friday on charges of manufacturing methamphetamine and using drug paraphernalia.
It wasn’t clear if they remained in jail Sunday, and a jail official said he couldn’t give out that information.
Tina Hall, a spokeswoman for the Arkadelphia-based school, said Bateman and Rowland have been on administrative leave since Oct. 11. She said three days earlier, police investigated a report of a chemical odor in the campus science center. She said the building reopened Oct. 29 after a company filtered the air.
The arrests drew comparisons to the central character in the hit TV series “Breaking Bad,” in which a high school chemistry teacher began making methamphetamine.
Copyright 2019 Associated Press. All rights reserved.


|
BTK
0.3dev.0
Open-source library to visualize/process biomechanical data
|
Public Types | |
|
typedef SharedPtr< const PiGModelConfigurator > | ConstPointer |
|
typedef SharedPtr < PiGModelConfigurator > | Pointer |
| Public Types inherited from btk::ModelConfigurator | |
| typedef SharedPtr< const ModelConfigurator > | ConstPointer |
| typedef SharedPtr < ModelConfigurator > | Pointer |
Public Member Functions | |
| ModelConfigurator::Pointer | Clone () const |
| BTK_MODELS_EXPORT void | ComputeBasicMotion (Model *output, int fn, std::map< std::string, Point::Pointer > *landmarks, bool risd=false) const |
| BTK_MODELS_EXPORT void | ComputeStaticCalibration (Model *output, int fn, std::map< std::string, Point::Pointer > *landmarks, bool risd=false) const |
| virtual BTK_MODELS_EXPORT void | Configure (Model *model, BodyPart b, Side s) const |
| BTK_MODELS_EXPORT void | FinalizeJCSAngles (Point::Pointer angle, Acquisition::Pointer output) const |
| void | FinalizeJCSAngles (Point::Pointer angle, Acquisition::Pointer output, const std::string displacementInR0) const |
|
BTK_MODELS_EXPORT const std::vector< std::string > | GetRequiredLandmarks () const |
| BTK_MODELS_EXPORT RotationSequence | GetRotationSequence (const std::string jointLabel) const |
| RotationSequence | GetRotationSequence (const std::string jointLabel, const std::string displacementInR0) const |
| Public Member Functions inherited from btk::ModelConfigurator | |
| LandmarksTranslator::Pointer | GetPredefinedTranslator () const |
Static Public Member Functions | |
| static Pointer | New () |
Additional Inherited Members | |
| Protected Member Functions inherited from btk::ModelConfigurator | |
| bool | FindPoint (std::map< std::string, Point::Pointer > *landmarks, const std::string &label, Point **p, Point::Values **values=0) const |
| bool | FindPosition (std::map< std::string, Position > *landmarks, const std::string &label, Position *coords) const |
| bool | FindValues (std::map< std::string, Point::Values * > *landmarks, const std::string &label, Point::Values **values) const |
| ModelConfigurator () | |
| ModelConfigurator (const ModelConfigurator &) | |
| Protected Attributes inherited from btk::ModelConfigurator | |
| LandmarksTranslator::Pointer | mp_Translator |
Configure the model by defining these segments and joints. The PiG configuration is defined with:
Each distal joint wrench is set as the reaction of the proximal wrench of the distal segment:
Moreover, the position of some proximal wrenches are constrained:
Reimplemented from btk::ModelConfigurator.


I am a quick learner and hardworking person with proven leadership and organizational skills, seek to apply my abilities to fill an important role in your company. I’m a dedicated team player & I can be relied upon to help our company achieve its goals.
As the Chairperson of our Student Branch I have been promoting our Student Branch and organized the following events in our Student Branch (STB - 62851).
I have been the Joint Secretary of IEEE Educational Society of our Student Branch STB – 62851. I have written many of the reports. As the Joint Secretary of our Student Branch I have volunteered the following events in our Student Branch
Being a member of IEEE I have been a part of the team that organized the following events.
I have been a Publicity volunteer for Kaizen'19, am the one among the two volunteers from Madras Section who have been selected for publicity in an intra-section event organized by neighbouring section (Kerala Section) at CEM, Munnar. Through my work student members from Madras Section and also from another section have participated in this event. It was my first volunteering experience outside my student branch and I was able to gain a lot of experience by connecting with many volunteers from different sections all over the country.
Currently am volunteering for Explorica 1.0 which is also an intra-section event organized by Kerala Section. Am the one among the three volunteers from Madras Section. This event is to be conducted during October 19 – 20 at Lal Bahadur Shastri Institute of Technology, Trivandrum.
Am an active member of ACE and have volunteered for the inaugural function of Association of Computer Engineers.
St. Xavier's Catholic College of Engineering, Nagercoil
ABC. Martic. Hr. Sec. School, Kollemcode, passed with 70.08 percentage of marks
ABC. Martic. Hr. Sec. School, Kollemcode, passed with 89 percentage of marks.
SETTLES - A web based service application which is used to find localised broker services.
Created a mini calculator project in java using swing.
Designed a static website for a shop named Nyra The Doctor. Click here
I spent most of my time learning tutorials through youtube, udemy and coursera.


Bowling
Frame:
Pins left:
10
Can't knock down more than 10 pins in total
You gained two extra bowls!
Bowl
Reset


Guitarist Center
Home
Catalog
(current)
Cart
Cart
Locations
Search
Guitars We Sell
Buy a guitar and take the first step to rocking out!


Think Dream Tank is a crowd sourced and community led project that aims to create a space where people from any background can dream about their future and share a conversation about their dreams and hopes with others.
Specifically, this project aims to:
- Develop a virtual and physical space where time is spent developing one’s dreams and goals for the future.
- Explore and develop helpful resources as well as understand barriers to creativity and achievement.
- Build a network to foster learning about our shared dreams.


| Opcode*/Instruction | Op/En | 64/32 bit Mode Support | CPUID Feature Flag | Description |
|---|---|---|---|---|
| 66 0F 3A 08 /r ib ROUNDPS xmm1, xmm2/m128, imm8 | RMI | V/V | SSE4_1 | Round packed single precision floating-point values in xmm2/m128 and place the result in xmm1. The rounding mode is determined by imm8. |
| VEX.128.66.0F3A.WIG 08 /r ib VROUNDPS xmm1, xmm2/m128, imm8 | RMI | V/V | AVX | Round packed single-precision floating-point values in xmm2/m128 and place the result in xmm1. The rounding mode is determined by imm8. |
| VEX.256.66.0F3A.WIG 08 /r ib VROUNDPS ymm1, ymm2/m256, imm8 | RMI | V/V | AVX | Round packed single-precision floating-point values in ymm2/m256 and place the result in ymm1. The rounding mode is determined by imm8. |
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| RMI | ModRM:reg (w) | ModRM:r/m (r) | imm8 | NA |
Round the 4 single-precision floating-point values in the source operand (second operand) using the rounding mode specified in the immediate operand (third operand) and place the results in the destination operand (first operand). The rounding process rounds each input floating-point value to an integer value and returns the integer result as a single-precision floating-point value.
The immediate operand specifies control fields for the rounding operation, three bit fields are defined and shown in Figure 4-24. Bit 3 of the immediate byte controls processor behavior for a precision exception, bit 2 selects the source of rounding mode control. Bits 1:0 specify a non-sticky rounding-mode value (Table 4-17 lists the encoded values for rounding-mode field).
The Precision Floating-Point Exception is signaled according to the immediate operand. If any source operand is an SNaN then it will be converted to a QNaN. If DAZ is set to ‘1 then denormals will be converted to zero before rounding.
128-bit Legacy SSE version: The second source can be an XMM register or 128-bit memory location. The destination is not distinct from the first source XMM register and the upper bits (MAXVL-1:128) of the corresponding YMM register destination are unmodified.
VEX.128 encoded version: the source operand second source operand or a 128-bit memory location. The destination operand is an XMM register. The upper bits (MAXVL-1:128) of the corresponding YMM register destination are zeroed.
VEX.256 encoded version: The source operand is a YMM register or a 256-bit memory location. The destination operand is a YMM register.
Note: In VEX-encoded versions, VEX.vvvv is reserved and must be 1111b otherwise instructions will #UD.
IF (imm[2] = ‘1) THEN // rounding mode is determined by MXCSR.RC DEST[31:0] ← ConvertSPFPToInteger_M(SRC[31:0]); DEST[63:32] ← ConvertSPFPToInteger_M(SRC[63:32]); DEST[95:64] ← ConvertSPFPToInteger_M(SRC[95:64]); DEST[127:96] ← ConvertSPFPToInteger_M(SRC[127:96]); ELSE // rounding mode is determined by IMM8.RC DEST[31:0] ← ConvertSPFPToInteger_Imm(SRC[31:0]); DEST[63:32] ← ConvertSPFPToInteger_Imm(SRC[63:32]); DEST[95:64] ← ConvertSPFPToInteger_Imm(SRC[95:64]); DEST[127:96] ← ConvertSPFPToInteger_Imm(SRC[127:96]); FI;
DEST[31:0]←RoundToInteger(SRC[31:0], ROUND_CONTROL) DEST[63:32]←RoundToInteger(SRC[63:32], ROUND_CONTROL) DEST[95:64]←RoundToInteger(SRC[95:64]], ROUND_CONTROL) DEST[127:96]←RoundToInteger(SRC[127:96]], ROUND_CONTROL) DEST[MAXVL-1:128] (Unmodified)
DEST[31:0]←RoundToInteger(SRC[31:0], ROUND_CONTROL) DEST[63:32]←RoundToInteger(SRC[63:32], ROUND_CONTROL) DEST[95:64]←RoundToInteger(SRC[95:64]], ROUND_CONTROL) DEST[127:96]←RoundToInteger(SRC[127:96]], ROUND_CONTROL) DEST[MAXVL-1:128] ← 0
DEST[31:0]←RoundToInteger(SRC[31:0], ROUND_CONTROL) DEST[63:32]←RoundToInteger(SRC[63:32], ROUND_CONTROL) DEST[95:64]←RoundToInteger(SRC[95:64]], ROUND_CONTROL) DEST[127:96]←RoundToInteger(SRC[127:96]], ROUND_CONTROL) DEST[159:128]←RoundToInteger(SRC[159:128]], ROUND_CONTROL) DEST[191:160]←RoundToInteger(SRC[191:160]], ROUND_CONTROL) DEST[223:192]←RoundToInteger(SRC[223:192] ], ROUND_CONTROL) DEST[255:224]←RoundToInteger(SRC[255:224] ], ROUND_CONTROL)
__m128 _mm_round_ps(__m128 s1, int iRoundMode);
__m128 _mm_floor_ps(__m128 s1);
__m128 _mm_ceil_ps(__m128 s1)
__m256 _mm256_round_ps(__m256 s1, int iRoundMode);
__m256 _mm256_floor_ps(__m256 s1);
__m256 _mm256_ceil_ps(__m256 s1)
Invalid (signaled only if SRC = SNaN)
Precision (signaled only if imm[3] = ‘0; if imm[3] = ‘1, then the Precision Mask in the MXSCSR is ignored and precision exception is not signaled.)
Note that Denormal is not signaled by ROUNDPS.
See Exceptions Type 2; additionally
| #UD | If VEX.vvvv ≠ 1111B. |


RIMSO-50- dimethyl sulfoxide irrigant
Mylan Institutional LLC
RIMSO-50®(dimethyl sulfoxide) (DMSO) 50% w/w Aqueous Solution for intravesical instillation.
Each mL contains 0.54 gm dimethyl sulfoxide STERILE AND NON-PYROGENIC.
Intravesical instillation for the treatment of interstitial cystitis.
NOT FOR INTRAMUSCULAR OR INTRAVENOUS INJECTION.
The active component of RIMSO-50® is dimethyl sulfoxide which has the empirical formula C2H6OS, and is structurally represented as:
Dimethyl sulfoxide is a clear, colorless and essentially odorless liquid which is miscible with water and most organic solvents. Other physical characteristics include: molecular weight 78.13, melting point 18.3° C, and a specific gravity of 1.096.
Dimethyl sulfoxide is metabolised in man by oxidation to dimethyl sulfone or by reduction to dimethyl sulfide. Dimethyl sulfoxide and dimethyl sulfone are excreted in the urine and feces. Dimethyl sulfide is eliminated through the breath and skin and is responsible for the characteristic odor from patients on dimethyl sulfoxide medication. Dimethyl sulfone can persist in serum for longer than two weeks after a single intravesical instillation. No residual accumulation of dimethyl sulfoxide has occurred in man or lower animals who have received treatment for protracted periods of time. Following topical application, dimethyl sulfoxide is absorbed and generally distributed in the tissues and body fluids.
RIMSO-50® (dimethyl sulfoxide) is indicated for the symptomatic relief of patients with interstitial cystitis. RIMSO-50® has not been approved as being safe and effective for any other indication. There is no clinical evidence of effectiveness of dimethyl sulfoxide in the treatment of bacterial infections of the urinary tract.
Dimethyl sulfoxide can initiate the liberation of histamine and there has been occasional hypersensitivity reaction with topical administration of dimethyl sulfoxide. This hypersensitivity has been reported in one patients receiving intravesical RIMSO-50®. The physician should be cognizant of this possibility in prescribing RIMSO-50®. If anaphylactoid symptoms develop, appropriate therapy should be instituted.
Changes in the refractive index and lens opacities have been seen in monkeys, dogs and rabbits given high doses of dimethyl sulfoxide chronically. Since lens changes were noted in animals, full eye evaluations, including slit lamp examinations, are recommended prior to and periodically during treatment.
Approximately every six months patients receiving dimethyl sulfoxide should have a biochemical screening, particularly liver and renal function tests, and complete blood count.
Intravesical instillation of RIMSO-50® may be harmful to patients with urinary tract malignancy because of dimethyl sulfoxide-induced vasodilation.
Some data indicate that dimethyl sulfoxide potentiates other concomitantly administered medications.
Dimethyl sulfoxide caused teratogenic responses in hamsters, rats and mice when administered intraperitoneally at high doses (2.5 to 12 gm/kg). Oral or topical doses of dimethyl sulfoxide did not cause problems of reproduction in rats, mice and hamsters. Topical doses (5 gm/kg first two days, then 2.5 gm/kg - last eight days) produced terata in rabbits, but in another study, topical doses of 1.1 gm/kg days 3 through 16 of gestation failed to produce any abnormalities. There are no adequate and well controlled studies in pregnant women. Dimethyl sulfoxide should be used during pregnancy only if the potential benefit justifies the potential risk to the fetus.
RIMSO-50® is a sterile solution of 50% dimethyl sulfoxide (DMSO) and 50% water that has been approved by the U.S. Food and Drug Administration for use in the symptomatic relief of patients with interstitial cystitis.
RIMSO-50® will be instilled in the bladder on an inpatient or out-patient basis, which will be determined by your physician.
Some data indicate that dimethyl sulfoxide could change the effectiveness of medication(s) that you may be presently receiving. Be sure to mention the name and dosage of all medicines you are taking to your physician before a RIMSO-50® instillation.
A garlic-like taste may be noted by the patient within a few minutes after instillation of RIMSO-50® (dimethyl sulfoxide). This taste may last several hours. An odor on the breath and skin may be present and remain for up to 72 hours.
Some patients may experience discomfort on administration of the drug. Usually this becomes less prominent with repeated administration.
If you are pregnant or nursing, ask your physician about the advisability of using RIMSO-50®.
Some eye changes have been observed in animals treated with DMSO in large doses for prolonged periods. Therefore your doctor may want you to have eye evaluations, including slit lamp examinations prior to and periodically during treatment.
It is not known whether this drug is excreted in human milk. Because many drugs are excreted in human milk, caution should be exercised when dimethyl sulfoxide is administered to a nursing woman.
Safety and effectiveness in children have not been established.
Information available to be given to the patient is reprinted at the end of this text.
A garlic-like taste may be noted by the patient within a few minutes after instillation of RIMSO-50® (dimethyl sulfoxide). This taste may last several hours and because of the presence of metabolites, an odor on the breath and skin may remain for 72 hours.
Transient chemical cystitis has been noted following instillation of dimethyl sulfoxide.
The patient may experience moderately severe discomfort on administration. Usually this becomes less prominent with repeated administration.
The oral LD50 of dimethyl sulfoxide in the dog is greater than 10 gm/kg. It is improbable that this dosage level could be obtained with intravesical instillation of RIMSO-50® in the patient.
In case of accidental oral ingestion, specific measures should be taken to induce emesis. Additional measures which may be considered are gastric lavage, activated charcoal and force diuresis.
Instillation of 50 mL of RIMSO-50® (dimethyl sulfoxide) directly into the bladder may be accomplished by catheter or asepto syringe and allow to remain for 15 minutes. Application of an analgesic lubricant gel such as lidocaine jelly to the urethra is suggested prior to insertion of the catheter to avoid spasm. The medication is expelled by spontaneous voiding. It is recommended that the treatment be repeated every two weeks until maximum symptomatic relief is obtained. Thereafter, time intervals between therapy may be increased appropriately.
Administration of oral analgesic medication or suppositories containing belladonna and opium prior to the instillation of RIMSO-50® can reduce bladder spasm.
In patients with severe interstitial cystitis with very sensitive bladders, the initial treatment, and possibly the second and third (depending on patient response) should be done under anesthesia. (Saddle block has been suggested).
Vials contain 50 mL of sterile and non-pyrogenic RIMSO-50® (50% w/w dimethyl sulfoxide aqueous solution).
Dimethyl sulfoxide is clear and colorless.
NDC 67457-177-50
carton containing a 50 mL vial
Store at 20° to 25°C (68° to 77°F). [See USP Controlled Room Temperature.]
Protect from strong light.
For additional information concerning RIMSO-50®, contact Mylan Institutional LLC,
Rockford, IL 61103.
Manufactured for:
Mylan Institutional LLC
Rockford, IL 61103 U.S.A.
Manufactured by:
Mylan Institutional
Galway, Ireland
RIMSO-50® is a sterile solution of 50% dimethyl sulfoxide (DMSO) and 50% water that has been approved by the U.S. Food and Drug Administration for use in the symptomatic relief of patients with interstitial cystitis.
RIMSO-50® will be instilled in the bladder on an inpatient or out-patient basis, which will be determined by your physician.
Some data indicate that dimethyl sulfoxide could change the effectiveness of medication(s) that you may be presently receiving. Be sure to mention the name and dosage of all medicines you are taking to your physician before a RIMSO-50® instillation.
A garlic-like taste may be noted by the patient within a few minutes after instillation of RIMSO-50® (dimethyl sulfoxide). This taste may last several hours. An odor on the breath and skin may be present and remain for up to 72 hours.
Some patients may experience discomfort on administration of the drug. Usually this becomes less prominent with repeated administration.
If you are pregnant or nursing, ask your physician about the advisability of using RIMSO-50®.
Some eye changes have been observed in animals treated with DMSO in large doses for prolonged periods. Therefore your doctor may want you to have eye evaluations, including slit lamp examinations prior to and periodically during treatment.
RIMSO-50®
(dimethyl sulfoxide) irrigation, USP 0582L103
Mylan Institutional LLC REVISED JULY 2012
Rockford, IL 61103 U.S.A. MI:RIMSIG:R2
NDC 67457-177-50 50 mL
RIMSO-50®
(dimethyl sulfoxide)
irrigation, USP
50 mL (54 gm)
50% w/w Aqueous Solution
For Irrigation Only
Not for Injection
Rx only Vial
Sterile. Non-pyrogenic.
Contains: 50% w/w dimethyl
sulfoxide in water for injection.
Usual Dosage: See
accompanying prescribing
information.
Store at 20° to 25°C (68° to 77°F).
[See USP Controlled Room
Temperature.]
Protect from strong light.
Manufactured for:
Mylan Institutional LLC
Rockford, IL 61103 U.S.A.
Manufactured by:
Mylan Institutional
Galway, Ireland
MI:177:1C:R2
Mylan.com
|
RIMSO-50
dimethyl sulfoxide irrigant | ||||||||||||||||||||
| ||||||||||||||||||||
| ||||||||||||||||||||
| ||||||||||||||||||||
| ||||||||||||||||||||
|
| Labeler - Mylan Institutional LLC (790384502) |


--- ---
Welcome to RSK & RIF Webinars! Now you can watch and learn more about Blockchain! Check the latest news, information, tools, tutorials and workshops around RSK, RIF, Blockchain, Bitcoin and the Internet of Value.


evol
utility
ui-jquery
Demos
To-do list
Addressbook
Wine cellar
Graphic novels
Your custom app
doc
GitHub
See how the different views adapt to changes to the ui-model.
Make changes to the UI-model below, choose the view to display and click the "Refresh" button.
UI-model
Browse
Edit
Mini
JSON
List
Cards
Bubbles
Charts
Export
Filter
Refresh


SUCH IS LIFE (Así Es La Vida) (director/writer: Arturo Ripstein; screenwriter: Alicia Paz Garciadiego; cinematographer: Guillermo Granillo; editor: Carlos Puente; cast: Arcelia Ramirez (Julia), Luis Felipe Tovar (Nicolás), Patricia Reyes Spindola (Adela, The Godmother), Ernesto Yanez (Pig), Francesca Guillen (Raquel); Runtime: 98; Filmania Production; 2000-Spain/France/Mexico)
Reviewed by Dennis Schwartz
Filmed by the outstanding Mexican director Arturo Ripstein in digital video on a hand-held camera (the video was later transferred to 35 millimeter). This film has a different look to it, as its color tones are strikingly in browns and soft yellows. Otherwise the film failed to sparkle, as it updated the ancient Greek drama Medea by setting it into Mexico City's barrio where there occurs a low-class family struggle. There was nothing added to it that was novel, except a mariachi band is on hand as a Greek chorus. They added a touch of black humor.
In the Greek drama, Medea's memorable deed was to murder her two children by Jason when he left her to marry a princess.
  He plans to marry her tomorrow and also wants to keep the children; and, because they will live in the slumlord's apartment building Julia is being kicked out of her apartment. She's about to lose everything she considers important by tomorrow, and goes into a desperate rant about life's injustice for the rest of the film. She's also fueled to anger against men by her man-hating godmother who would like to castrate all men. The slumlord is aptly called Pig as he is seen walking around the courtyard as if he were a king in a mental institution, dressed in a bathrobe with food or drink in hand.
Ripstein also has a dizzying amount of extra shots of things that don't play exactly into the story but add some arty points he's trying to make about the outside influences facing the alienated Julia. There's a television set constantly playing and appearing on it is an unhappy woman weather reporter who complains about the expected rain; a mariachi band sings a number of boleros and also ballads commenting on Julia's destiny, as they become what goes for a Greek chorus; there's also a porn flick that plays while Nicolás and Raquel are screwing. I wasn't enlightened by these unnecessary scenes, in fact I thought they were pretentious.
Almost the entire film is a boring rant by Julia, where a fine actress like Arcelia Ramirez just over acted and failed to bring the audience over to her side. Her classical story didn't play like great drama, but felt more like soap opera or a tragic headline newspaper story one reads these days of a mother snapping and killing her children for no logical reason. All the drama evaporated from this presentation, as the film's reward seemed to be a visual feast of looking at the interior of an apartment situated in an ugly apartment building's courtyard. Yet this film shouldn't be totally ignored, as the auteur director took chances with this story and was technically innovative as he gave the film a different look to it. That alone should earn him applause for the effort made. At least, his film wasn't stale as most commercial ventures are today.
The overriding fault for this art-house film was that it is not poetic in a story that must be poetic to be felt as drama and not soap opera. It unfortunately comes off as too distant (it's lost in the mundane world for the answers to Julia's problems) for the viewer to empathize with Julia's internal misery. It also suffers from comparison to other Medea presentations--so many great versions of it were put on as plays, plus the film versions by Pasolini and von Trier were far superior.
REVIEWED ON 9/22/2001 GRADE: C+
Dennis Schwartz: "Ozus' World Movie Reviews"
© ALL RIGHTS RESERVED DENNIS SCHWARTZ
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
========== X-RAMR-ID: 29568 X-Language: en X-RT-ReviewID: 251151 X-RT-TitleID: 1106518 X-RT-SourceID: 873 X-RT-AuthorID: 1315 X-RT-RatingText: C+
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