DSL higher-order functions¶
A higher-order function is one which takes another function
as an argument.
As of Miller 6 you can use
select
,
apply
,
reduce
,
fold
, and
sort
, and
any
, and
every
to express flexible,
intuitive operations on arrays and maps, as an alternative to things which
would otherwise require for-loops.
See also the get_keys
and
get_values
functions which,
when given a map, return an array of its keys or an array of its values,
respectively.
select¶
The select
function takes a map
or array as its first argument and a function as second argument. It includes
each input element in the output if the function returns true.
For arrays, that function should take one argument, for array element; for maps, it should take two, for map-element key and value. In either case it should return a boolean.
A perhaps helpful analogy: the select
function is to arrays and maps as the
filter
is to records.
Array examples:
mlr -n put ' end { my_array = [2, 9, 10, 3, 1, 4, 5, 8, 7, 6]; print "Original:"; print my_array; print; print "Evens:"; print select(my_array, func (e) { return e % 2 == 0}); print; print "Odds:"; print select(my_array, func (e) { return e % 2 == 1}); print; } '
Original: [2, 9, 10, 3, 1, 4, 5, 8, 7, 6] Evens: [2, 10, 4, 8, 6] Odds: [9, 3, 1, 5, 7]
Map examples:
mlr -n put ' end { my_map = {"cubit": 823, "dale": 13, "apple": 199, "ember": 191, "bottle": 107}; print "Original:"; print my_map; print; print "Keys with an 'o' in them:"; print select(my_map, func (k,v) { return k =~ "o"}); print; print "Values with last digit >= 5:"; print select(my_map, func (k,v) { return v % 10 >= 5}); } '
Original: { "cubit": 823, "dale": 13, "apple": 199, "ember": 191, "bottle": 107 } Keys with an o in them: { "bottle": 107 } Values with last digit >= 5: { "apple": 199, "bottle": 107 }
apply¶
The apply
function takes a map
or array as its first argument and a function as second argument. It applies
the function to each element of the array or map.
For arrays, the function should take one argument, for array element; it should return a new element. For maps, it should take two, for map-element key and value. It should return a new key-value pair (i.e. a single-entry map).
A perhaps helpful analogy: the apply
function is to arrays and maps as the
put
is to records.
Array examples:
mlr -n put ' end { my_array = [2, 9, 10, 3, 1, 4, 5, 8, 7, 6]; print "Original:"; print my_array; print; print "Squares:"; print apply(my_array, func(e) { return e**2 }); print; print "Cubes:"; print apply(my_array, func(e) { return e**3 }); print; print "Sorted cubes:"; print sort(apply(my_array, func(e) { return e**3 })); } '
Original: [2, 9, 10, 3, 1, 4, 5, 8, 7, 6] Squares: [4, 81, 100, 9, 1, 16, 25, 64, 49, 36] Cubes: [8, 729, 1000, 27, 1, 64, 125, 512, 343, 216] Sorted cubes: [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
mlr -n put ' end { my_map = {"cubit": 823, "dale": 13, "apple": 199, "ember": 191, "bottle": 107}; print "Original:"; print my_map; print; print "Squared values:"; print apply(my_map, func(k,v) { return {k: v**2} }); print; print "Cubed values, sorted by key:"; print sort(apply(my_map, func(k,v) { return {k: v**3} })); print; print "Same, with upcased keys:"; print sort(apply(my_map, func(k,v) { return {toupper(k): v**3} })); } '
Original: { "cubit": 823, "dale": 13, "apple": 199, "ember": 191, "bottle": 107 } Squared values: { "cubit": 677329, "dale": 169, "apple": 39601, "ember": 36481, "bottle": 11449 } Cubed values, sorted by key: { "apple": 7880599, "bottle": 1225043, "cubit": 557441767, "dale": 2197, "ember": 6967871 } Same, with upcased keys: { "APPLE": 7880599, "BOTTLE": 1225043, "CUBIT": 557441767, "DALE": 2197, "EMBER": 6967871 }
reduce¶
The reduce
function takes a map
or array as its first argument and a function as second argument. It accumulates entries into a final
output -- for example, sum or product.
For arrays, the function should take two arguments, for accumulated value and array element; for maps, it should take four, for accumulated key and value and map-element key and value. In either case it should return the updated accumulator.
The start value for the accumulator is the first element for arrays, or the first element's key-value pair for maps.
mlr -n put ' end { my_array = [2, 9, 10, 3, 1, 4, 5, 8, 7, 6]; print "Original:"; print my_array; print; print "First element:"; print reduce(my_array, func (acc,e) { return acc }); print; print "Last element:"; print reduce(my_array, func (acc,e) { return e }); print; print "Sum of values:"; print reduce(my_array, func (acc,e) { return acc + e }); print; print "Product of values:"; print reduce(my_array, func (acc,e) { return acc * e }); print; print "Concatenation of values:"; print reduce(my_array, func (acc,e) { return acc. "," . e }); } '
Original: [2, 9, 10, 3, 1, 4, 5, 8, 7, 6] First element: 2 Last element: 6 Sum of values: 55 Product of values: 3628800 Concatenation of values: 2,9,10,3,1,4,5,8,7,6
mlr -n put ' end { my_map = {"cubit": 823, "dale": 13, "apple": 199, "ember": 191, "bottle": 107}; print "Original:"; print my_map; print; print "First key-value pair:"; print reduce(my_map, func (acck,accv,ek,ev) { return {acck: accv}}); print; print "Last key-value pair:"; print reduce(my_map, func (acck,accv,ek,ev) { return {ek: ev}}); print; print "Concatenate keys and values:"; print reduce(my_map, func (acck,accv,ek,ev) { return {acck . "," . ek: accv . "," . ev}}); print; print "Sum of values:"; print reduce(my_map, func (acck,accv,ek,ev) { return {"sum": accv + ev }}); print; print "Product of values:"; print reduce(my_map, func (acck,accv,ek,ev) { return {"product": accv * ev }}); print; print "String-join of values:"; print reduce(my_map, func (acck,accv,ek,ev) { return {"joined": accv . "," . ev }}); } '
Original: { "cubit": 823, "dale": 13, "apple": 199, "ember": 191, "bottle": 107 } First key-value pair: { "cubit": 823 } Last key-value pair: { "bottle": 107 } Concatenate keys and values: { "cubit,dale,apple,ember,bottle": "823,13,199,191,107" } Sum of values: { "sum": 1333 } Product of values: { "product":<PHONE_NUMBER>7 } String-join of values: { "joined": "823,13,199,191,107" }
fold¶
The fold
function is the same as
reduce
, except that instead of the starting value for the accumulation being
taken from the first entry of the array/map, you specify it as the third
argument.
mlr -n put ' end { my_array = [2, 9, 10, 3, 1, 4, 5, 8, 7, 6]; print "Original:"; print my_array; print; print "Sum with reduce:"; print reduce(my_array, func (acc,e) { return acc + e }); print; print "Sum with fold and 0 initial value:"; print fold(my_array, func (acc,e) { return acc + e }, 0); print; print "Sum with fold and 1000000 initial value:"; print fold(my_array, func (acc,e) { return acc + e }, 1000000); } '
Original: [2, 9, 10, 3, 1, 4, 5, 8, 7, 6] Sum with reduce: 55 Sum with fold and 0 initial value: 55 Sum with fold and 1000000 initial value: 1000055
mlr -n put ' end { my_map = {"cubit": 823, "dale": 13, "apple": 199, "ember": 191, "bottle": 107}; print "Original:"; print my_map; print; print "First key-value pair -- note this is the starting accumulator:"; print fold(my_map, func (acck,accv,ek,ev) { return {acck: accv}}, {"start": 999}); print; print "Last key-value pair:"; print fold(my_map, func (acck,accv,ek,ev) { return {ek: ev}}, {"start": 999}); print; print "Sum of values with fold and 0 initial value:"; print fold(my_map, func (acck,accv,ek,ev) { return {"sum": accv + ev} }, {"sum": 0}); print; print "Sum of values with fold and 1000000 initial value:"; print fold(my_map, func (acck,accv,ek,ev) { return {"sum": accv + ev} }, {"sum": 1000000}); } '
Original: { "cubit": 823, "dale": 13, "apple": 199, "ember": 191, "bottle": 107 } First key-value pair -- note this is the starting accumulator: { "start": 999 } Last key-value pair: { "bottle": 107 } Sum of values with fold and 0 initial value: { "sum": 1333 } Sum of values with fold and 1000000 initial value: { "sum": 1001333 }
sort¶
The sort
function takes a map or
array as its first argument, and it can take a function as second argument.
Unlike the other higher-order functions, the second argument can be omitted
when the natural ordering is desired -- ordered by array element for arrays, or by
key for maps.
As a second option, character flags such as r
for reverse or c
for
case-folded lexical sort can be supplied as the second argument.
As a third option, a function can be supplied as the second argument.
For arrays, that function should take two arguments a
and b
, returning a
negative, zero, or positive number as a<b
, a==b
, or a>b
respectively.
For maps, the function should take four arguments ak
, av
, bk
, and bv
,
again returning negative, zero, or positive, using a
and b
's keys and
values.
Array examples:
mlr -n put ' end { my_array = [2, 9, 10, 3, 1, 4, 5, 8, 7, 6]; print "Original:"; print my_array; print; print "Ascending:"; print sort(my_array); print sort(my_array, func (a,b) { return a <=> b }); print; print "Descending:"; print sort(my_array, "r"); print sort(my_array, func (a,b) { return b <=> a }); } '
Original: [2, 9, 10, 3, 1, 4, 5, 8, 7, 6] Ascending: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Descending: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Map examples:
mlr -n put ' end { my_map = {"cubit": 823, "dale": 13, "apple": 199, "ember": 191, "bottle": 107}; print "Original:"; print my_map; print; print "Ascending by key:"; print sort(my_map); print sort(my_map, func(ak,av,bk,bv) { return ak <=> bk }); print; print "Descending by key:"; print sort(my_map, "r"); print sort(my_map, func(ak,av,bk,bv) { return bk <=> ak }); print; print "Ascending by value:"; print sort(my_map, func(ak,av,bk,bv) { return av <=> bv }); print; print "Descending by value:"; print sort(my_map, func(ak,av,bk,bv) { return bv <=> av }); } '
Original: { "cubit": 823, "dale": 13, "apple": 199, "ember": 191, "bottle": 107 } Ascending by key: { "apple": 199, "bottle": 107, "cubit": 823, "dale": 13, "ember": 191 } { "apple": 199, "bottle": 107, "cubit": 823, "dale": 13, "ember": 191 } Descending by key: { "ember": 191, "dale": 13, "cubit": 823, "bottle": 107, "apple": 199 } { "ember": 191, "dale": 13, "cubit": 823, "bottle": 107, "apple": 199 } Ascending by value: { "dale": 13, "bottle": 107, "ember": 191, "apple": 199, "cubit": 823 } Descending by value: { "cubit": 823, "apple": 199, "ember": 191, "bottle": 107, "dale": 13 }
Please see the sorting page for more examples.
any and every¶
This is a way to do a logical OR/AND, respectively, of several boolean expressions, without the explicit ||
/&&
and without a for
-loop. This is a keystroke-saving convenience.
mlr --c2p cat example.csv
color shape flag k index quantity rate yellow triangle true 1 11 43.6498 9.8870 red square true 2 15 79.2778 0.0130 red circle true 3 16 13.8103 2.9010 red square false 4 48 77.5542 7.4670 purple triangle false 5 51 81.2290 8.5910 red square false 6 64 77.1991 9.5310 purple triangle false 7 65 80.1405 5.8240 yellow circle true 8 73 63.9785 4.2370 yellow circle true 9 87 63.5058 8.3350 purple square false 10 91 72.3735 8.2430
mlr --c2p --from example.csv filter 'any({"color":"red","shape":"square"}, func(k,v) {return $[k] == v})'
color shape flag k index quantity rate red square true 2 15 79.2778 0.0130 red circle true 3 16 13.8103 2.9010 red square false 4 48 77.5542 7.4670 red square false 6 64 77.1991 9.5310 purple square false 10 91 72.3735 8.2430
mlr --c2p --from example.csv filter 'every({"color":"red","shape":"square"}, func(k,v) {return $[k] == v})'
color shape flag k index quantity rate red square true 2 15 79.2778 0.0130 red square false 4 48 77.5542 7.4670 red square false 6 64 77.1991 9.5310
mlr --c2p --from example.csv put '$is_red_square = every({"color":"red","shape":"square"}, func(k,v) {return $[k] == v})'
color shape flag k index quantity rate is_red_square yellow triangle true 1 11 43.6498 9.8870 false red square true 2 15 79.2778 0.0130 true red circle true 3 16 13.8103 2.9010 false red square false 4 48 77.5542 7.4670 true purple triangle false 5 51 81.2290 8.5910 false red square false 6 64 77.1991 9.5310 true purple triangle false 7 65 80.1405 5.8240 false yellow circle true 8 73 63.9785 4.2370 false yellow circle true 9 87 63.5058 8.3350 false purple square false 10 91 72.3735 8.2430 false
mlr --c2p --from example.csv filter 'any([16,51,61,64], func(e) {return $index == e})'
color shape flag k index quantity rate red circle true 3 16 13.8103 2.9010 purple triangle false 5 51 81.2290 8.5910 red square false 6 64 77.1991 9.5310
This last example could also be done using a map:
mlr --c2p --from example.csv filter ' begin { @indices = {16:true, 51:true, 61:true, 64:true}; } @indices[$index] == true; '
color shape flag k index quantity rate red circle true 3 16 13.8103 2.9010 purple triangle false 5 51 81.2290 8.5910 red square false 6 64 77.1991 9.5310
Combined examples¶
Using a paradigm from the page on operating on all records, we can retain a column from the input data as an array, then apply some higher-order functions to it:
mlr --c2p cat example.csv
color shape flag k index quantity rate yellow triangle true 1 11 43.6498 9.8870 red square true 2 15 79.2778 0.0130 red circle true 3 16 13.8103 2.9010 red square false 4 48 77.5542 7.4670 purple triangle false 5 51 81.2290 8.5910 red square false 6 64 77.1991 9.5310 purple triangle false 7 65 80.1405 5.8240 yellow circle true 8 73 63.9785 4.2370 yellow circle true 9 87 63.5058 8.3350 purple square false 10 91 72.3735 8.2430
mlr --c2p --from example.csv put -q ' begin { @indexes = [] # So auto-extend will make an array, not a map } @indexes[NR] = $index; end { print "Original:"; print @indexes; print; print "Sorted:"; print sort(@indexes, "r"); print; print "Sorted, then cubed:"; print apply( sort(@indexes, "r"), func(e) { return e**3 }, ); print; print "Sorted, then cubed, then summed:"; print reduce( apply( sort(@indexes, "r"), func(e) { return e**3 }, ), func(acc, e) { return acc + e }, ) } '
Original: [11, 15, 16, 48, 51, 64, 65, 73, 87, 91] Sorted: [91, 87, 73, 65, 64, 51, 48, 16, 15, 11] Sorted, then cubed: [753571, 658503, 389017, 274625, 262144, 132651, 110592, 4096, 3375, 1331] Sorted, then cubed, then summed: 2589905
Caveats¶
Remember return¶
From other languages it's easy to accidentally write
mlr -n put 'end { print select([1,2,3,4,5], func (e) { e >= 3 })}'
mlr: select: function returned non-boolean "(absent)".
instead of
mlr -n put 'end { print select([1,2,3,4,5], func (e) { return e >= 3 })}'
[3, 4, 5]
No IIFEs¶
As of September 2021, immediately invoked function expressions (IIFEs) are not part of the Miller DSL's grammar. For example, this doesn't work yet:
mlr -n put ' end { x = 3; y = (func (e) { return e**7 })(x); print y; } '
mlr: cannot parse DSL expression. Parse error on token "(" at line 4 column 35. Please check for missing semicolon. Expected one of: ; } > >> | ? || ^^ && ?? ??? =~ !=~ == != <=> >= < <= ^ & << >>> + - .+ .- * / // % .* ./ .// . **
but this does:
mlr -n put ' end { x = 3; f = func (e) { return e**7 }; y = f(x); print y; } '
2187
Built-in functions currently unsupported as arguments¶
Built-in functions are, as of September 2021, a bit separate from user-defined functions internally to Miller, and can't be used directly as arguments to higher-order functions.
For example, this doesn't work yet:
mlr -n put ' end { notches = [0,1,2,3]; radians = apply(notches, func (e) { return e * M_PI / 8 }); cosines = apply(radians, cos); print cosines; } '
mlr: apply: second argument must be a function; got absent.
but this does:
mlr -n put ' end { notches = [0,1,2,3]; radians = apply(notches, func (e) { return e * M_PI / 8 }); # cosines = apply(radians, cos); cosines = apply(radians, func (e) { return cos(e) }); print cosines; } '
[1, 0.9238795325112867, 0.7071067811865476, 0.38268343236508984]


On March 23 & 24,2018, IIIT Kota celebrated its Annual Tech Fest Flair Fiesta'18. For More Details and Pics


Lou Sanders has appeared in 14 episodes between 2016-2019. Lou Sanders on IMDB. Lou Sanders on Wikipedia.


This chapter groups macros (which are also available as subroutines) to classify characters into several categories (alphabetic, numeric, control characters, whitespace, and so on), or to perform simple character mappings.
The header file ctype.h defines the macros.
| • isalnum: | Alphanumeric character predicate (isalnum, isalnum_l) | |
| • isalpha: | Alphabetic character predicate (isalpha, isalpha_l) | |
| • isascii: | ASCII character predicate (isascii, isascii_l) | |
| • isblank: | Blank character predicate (isblank, isblank_l) | |
| • iscntrl: | Control character predicate (iscntrl, iscntrl_l) | |
| • isdigit: | Decimal digit predicate (isdigit, isdigit_l) | |
| • islower: | Lowercase character predicate (islower, islower_l) | |
| • isprint: | Printable character predicates (isprint, isprint_l. isgraph, isgraph_l) | |
| • ispunct: | Punctuation character predicate (ispunct, ispunct_l) | |
| • isspace: | Whitespace character predicate (isspace, isspace_l) | |
| • isupper: | Uppercase character predicate (isupper, isupper_l) | |
| • isxdigit: | Hexadecimal digit predicate (isxdigit, isxdigit_l) | |
| • toascii: | Force integers to ASCII range (toascii, toascii_l) | |
| • tolower: | Translate characters to lowercase (tolower, tolower_l) | |
| • toupper: | Translate characters to uppercase (toupper, toupper_l) | |
| • iswalnum: | Alphanumeric wide character predicate (iswalnum, iswalnum_l) | |
| • iswalpha: | Alphabetic wide character predicate (iswalpha, iswalpha_l) | |
| • iswblank: | Blank wide character predicate (iswblank, iswblank_l) | |
| • iswcntrl: | Control wide character predicate (iswcntrl, iswcntrl_l) | |
| • iswdigit: | Decimal digit wide character predicate (iswdigit, iswdigit_l) | |
| • iswgraph: | Graphic wide character predicate (iswgraph, iswgraph_l) | |
| • iswlower: | Lowercase wide character predicate (iswlower, iswlower_l) | |
| • iswprint: | Printable wide character predicate (iswprint, iswprint_l) | |
| • iswpunct: | Punctuation wide character predicate (iswpunct, iswpunct_l) | |
| • iswspace: | Whitespace wide character predicate (iswspace, iswspace_l) | |
| • iswupper: | Uppercase wide character predicate (iswupper, iswupper_l) | |
| • iswxdigit: | Hexadecimal digit wide character predicate (iswxdigit, iswxdigit_l) | |
| • iswctype: | Extensible wide-character test (iswctype, iswctype_l) | |
| • wctype: | Compute wide-character test type (wctype, wctype_l) | |
| • towlower: | Translate wide characters to lowercase (towlower, towlower_l) | |
| • towupper: | Translate wide characters to uppercase (towupper, towupper_l) | |
| • towctrans: | Extensible wide-character translation (towctrans, towctrans_l) | |
| • wctrans: | Compute wide-character translation type (wctrans, wctrans_l) |


require.js: module.exports assignment Test
Make sure a nested, named define call works in IE.
Check console for messages


Salary Calculator
Add Employee
Submit
Employee
First Name
Last Name
ID
Title
Annual Salary
Total Monthly:
$0


Computational Data Analytics Assignments
Code for this project is available on GitHub.
Description:
Course includes hands-on introduction to programming techniques relevant to data analysis and machine learning. Most of the programming exercises are based on Python and SQL.
Notebooks are built “from scratch,” of the basic components of a data analysis pipeline: collection, preprocessing, storage, analysis, and visualization. There are several examples of high-level data analysis questions, concepts and techniques for formalizing those questions into mathematical or computational tasks, and methods for translating those tasks into code. Beyond programming and best practices, notebooks include elementary data processing algorithms, notions of program correctness and efficiency, and numerical methods for linear algebra and mathematical optimization.
Notebooks:
- Notebook 1: Python Essentials
- Notebook 2: Pairwise Association Mining
- Notebook 3: Math Review (Not present)
- Notebook 4: Representing Numbers
- Notebook 5: Preprocessing Unstructured Text (Regex)
- Notebook 6: Mining the Web (BeautifulSoup, APIs, JSON)
- Notebook 7: Tidying Data (Tibbles, Melting, and Casting)
- Notebook 8: Visualizing Data and Results (Bokeh, Seaborn)
- Notebook 9: Relational Data (SQL, SQLite3)
- Notebook 10: Numerical Computing with Numpy/Scipy (Sparse Matrix, COO, CSR)
- Notebook 11: Ranking Relational Objects (Markov Chain Analysis)
- Notebook 12: Linear Regression
- Notebook 13: Classification (Logistic Regression)
- Notebook 14: Clustering via k-means
- Notebook 15: Compression via PCA
- Notebook 16: Eigenfaces
Languages:
Python 3.6, SQL
Libraries:
Pandas, NumPy, SciPy, re, matplotlib, seaborn, bokeh, collections, itertools
Relational Database Management System:
SQLite3
Environments:
Jupyter Notebooks


Controlling Objects in Mixed Reality
Microsoft Design Expo | July 2018Controlling Objects in Mixed Reality
Microsoft Design Expo | July 2018If computers could understand their context, how would we choose to communicate with them? If mixed reality could help us interact with light, what interactions would most easily indicate common commands? Our group has answered these questions through a case study in controlling audio content.


prune(1) prune(1) NAME prune - Prune directed graphs SYNOPSIS prune [ -n node ] [ -N attrspec ] [ files ... ] DESCRIPTION prune reads directed graphs in the same format used by dot(1) and removes subgraphs rooted at nodes specified on the command line via options. These nodes themselves will not be removed, but can be given attributes so that they can be easily located by a graph stream editor such as gvpr(1). prune correctly handles cycles, loops and multi‐edges. Both options can appear multiple times on the command line. All subgraphs rooted at the respective nodes given will then be processed. If a node does not exist, prune will skip it and print a warning message to stderr. If multiple attributes are given, they will be applied to all nodes that have been processed. prune writes the result to the stdout. OPTIONS -n name Specifies name of node to prune. -N attrspec Specifies attribute that will be set (or changed if it exists) for any pruned node. attrspec is a string of the form attr=value. EXAMPLES An input graph test.dot of the form digraph DG { A -> B; A -> C; B -> D; B -> E; } , processed by the command prune -n B test.dot would produce the following output (the actual code might be formatted in a slightly different way). digraph DG { A -> B; A -> C; } Another input graph test.dot of the form digraph DG { A -> B; A -> C; B -> D; B -> E; C -> E; } (note the additional edge from C to E ), processed by the command prune -n B -N color=red test.dot results in digraph DG { B [color=red]; A -> B; A -> C; C -> E; } Node E has not been removed since its second parent C is not being pruned. EXIT STATUS prune returns 0 on successful completion. It returns 1 if an error occurs. SEE ALSO dot(1), gvpr(1) AUTHOR Marcus Harnisch<EMAIL_ADDRESS>prune(1)


See token for details on this parameter.
To filter on {{include.name}} ( {{include.options}}
)
GET [baseUrl]/{{include.content}}?patient=1&{{include.name}}={{include.selected}}
Return all {{include.content}} resources with a {{include.name}} of {{include.selected}} and Patient with a logical id of 1.


2 Corinthians 7:5
For, when we were come into Macedonia, our flesh had no rest, but we were troubled on every side; without were fightings, within were fears.


XML-RPC.NET - History
2.5.0
xml-rpc.net.2.5.0.zip documentation
New features, changes, and fixed issues:
- Added <i8> to support 64-bit long integer values.
-
Added support for more ISO8601 date formats. AllowNonStandardDateTime flag is now
deprecated. The following formats are now accepted by default, with the '-'
and ':' separators being optional.
- yyyy-mm-ddThh:mm:ss
- yyyy-mm-ddThh:mm:ssZ
- yyyy-mm-ddThh:mm:ss±hh
- yyyy-mm-ddThh:mm:ss±hh:mm
- Added AllowAutoRedirect property to IXmlRpcProxy. Default behaviour remains the same (property set to true).
- Moved to Visual Studio 2008.
- Discontinued support for .NET 1.0 and 1.1.
- Fixed issues:
- Issue 55 : change XmlRpcProxyGen so that FileIOPermission is not required for calls to Create.
- Issue 56: Maintain XML-RPC struct member ordering in XmlRpcStruct after deserialization.
- Issue 65: When deserializing request, check that the number of parameters is consistent with the method signature.
- Issue 70: Allow structs/classes to have members or arrays of the same type as the parent type.
2.4.0
xml-rpc.net.2.4.0.zipNew feature and fixed issues:
- New StructParams property on XmlRpcMethodAttribute which provides supports for APIs which use a struct to provide named parameters to a method call. (more).
- NonSerialized attribute can be applied to struct members to prevent them being serialized and deserialized. (more).
- Fixed issues:
- Issue 25: NullReferenceException when struct member name is an empty string. Now throws XmlRpcInvalidXmlRpcException.
- Issue 26: Auto-Documentation does not work with HttpListener.
- Issue 27: XmlRpcListenerService.ProcessRequest may not close stream in case of exception.
- Issue 28: XmlRpcSerializer.GetStructName does not check for Properties.
- Issue 31: UseIntTag is being ignored.
- Issue 32: XmlRpcClientProtocol problem with response from void method.
- Issue 34: XmlRpcServerProtocol should be derived from MarshalByRefObject. The system.* methods do not work with remoting object.
- Issue 35: UseEmptyParamsTag property on the proxy doesn’t work unless you are making asynchronous calls.
- Issue 36: Fixed SelectSingleNode and using statement in XmlRpcFaultException for Compact Framework version.
- Issue 38: Check of ParamArrayAttribute causes crash under Mono/Linux.
- Issue 40: Deserialization performance enhancement.
2.3.2
xml-rpc.net.2.3.2.zipChanges:
- Issue 22: XmlRpcTypeMismatchException thrown if an XML-RPC array is mistakenly mapped onto a .Net struct (was throwing MissingMethodException).
- Issue 23: Fixes problem where XML-RPC string values containing just one or more spaces were deserialized as an empty .Net string value.
- Issue 24: XmlRpcV2 assembly is now built with a strong name.
2.3.1
xml-rpc.net.2.3.1.zipChanges:
- Issue 20: Fixes problem where XML-RPC service implemented as HttpHandler returns 500 server error.
- Issue 21: Fixes problem with StateNameServer sample which returns fault response because of duplicate XML-RPC method names.
2.3.0
xml-rpc.net.2.3.0.zipNew features and changes:
- Issue 15: Support for accessing response headers and cookies. (more).
- Issue 17: Support for not sending a params element if no method parameters. (more).
-
Changes:
- Issue 16: Content type set before writing to response stream (fixes Mono issue).
- Issue 18: Modified proxy code generation so that it verifies - prevents “Operation could destabilize the runtime" problem.
- Issue 19: XmlRpcListenerService now sets Content Length header and does not use chunked content by default.
2.2.0
xml-rpc.net.2.2.0.zipNew features and changes:
- Support for using System.Net.HttpListener to implement an XML-RPC server. (more).
- Allow client to configure that <string> tag is not used for string values. (more).
- Server configuration using XmlRpcServiceAttribute. (more).
- Client support for Accept-Encoding - gzip and deflate. (more).
-
Changes:
- Fixed null exception if acquiring request stream fails while logging.
- Fixed stack overflow in GetXmlRpcType if invalid types such as DBNull passed in.
- Fixed handling of params method parameter if it is first parameter of method.
- Improved error reporting when processing params parameters.
- Throw XmlRpcDupXmlRpcMethodNames if same XML-RPC name applied to two methods.
- Handle zero offset timezones when AllowNonStandardDateTime flag set.
2.1.0
xml-rpc.net.2.1.0.zipNew features and changes:
- Add support for proxy interfaces with overloaded methods. (more).
- Add support for the int?, bool?, double?, and DateTime? nullable types to represent struct member types (.NET 2.0 version). These can be used to support optional struct members of int, boolean, double, and dateTime.iso8601 types. (more).
2.0.0
xml-rpc.net.2.0.0.zipNew features and changes:
- Add generic form of XmlRpcProxyGen.Create() to remove need to cast the result of Create to the relevant interface (v2 assembly only) (more).
- Add support for XmlRpcNonStandard.AllowInvalidHttpContent to handle HTTP response content which has whitespace before the start of the XML-RPC response (more).
- Switch from NAnt to MSBuild and now builds a .NET 2.0 assembly as well as a .NET 1.0 assembly. Note that the 1.0 assembly can be used on all versions of the .NET runtime and should be used where backwards compatibility is required. The 2.0 assembly contains enhancements which rely on features of .NET 2.0 such as generics and can only be used on the .NET 2.0 and later versions of the runtime (more).
-
Error handling
- Throws XmlRpcInvalidParametersException if the parameters array passed to XmlRpcClientProtocol.Invoke contains more parameters than are defined for the method being invoked.
- Throws XmlRpcInvalidXmlRpcException if a struct member is missing its name or value child element or if it has a duplicate name or value child element.
- Attempt to serialize type with one or more properties that cannot be serialized to an XML-RPC type now results in the correct exception being thrown: XmlRpcUnsupportedTypeException.
-
Samples:
- Modify samples to use IXmlRpcProxy interface.
- Fix threading issue in AsyncBettyApplication sample.
1.0.0
New features and changes:
- IXmlRpcProxy interface to simplify setting proxy properties (more).
- Expect100Continue property on XmlRpcClientProtocol to configure
"Expect: 100-continue" header; default is header not sent
(more).
- Note: default behavior in previous versions of XML-RPC.NET was to send this header.
- Support for variable number of method parameters using params (more).
- Configurable client support for server which don't comply with XML-RPC standard:
- UseIntTag proxy property to use <int> instead of <i4>.
- Support dateTime with all zeroes (e.g. eGroupWare).
- Support empty dateTime values.
- Support fault code returned as string.
- Support for non-standard dateTime formats
- Note: default is standard XML-RPC only. Existing code which relies on non-standard behaviour will need to configure the proxy NonStandard property (more).
- Support for sending cookies with request (thanks to JC Bertin) (more).
- Changes:
- Fix for when passing zero-length byte array as base64 value.
- Removed large switch statements to circumvent Microsoft .NET bug when running in version 2.0 of the .NET runtime with medium trust.
- Uses invariant DateTimeFormatInfo when parsing dateTime.iso8601 so parsing works in all locales
- Check for recursive data structures when serializing.
- Fix to allow XmlRpcStruct member to be set more than once.
- Prevent types which cannot be serialized from being added to XmlRpcStruct.
- Improved error handling for null values when serializing.
- Fix to XmlRpcServerFormatterSink suggested by Sean Rohead.
- Sample code:
- Updates on sample blogging interfaces from Sam Schillace and Mikahosi.
- Sample code for accessing OpenDHT (thanks to Michel Foucault).
0.9.2
- Fixed parsing struct containing an enum member.
- Lock around generation of proxy type.
- When generating proxy from interface now includes methods from base interfaces.
- Added RequestEvent and ResponseEvent events to XmlRpcClientProtocol.
- Added XmlRpcLogger class for ease of use of RequestEvent and ResponseEvent events.
- Adding LoggingEample sample.
- Support for XmlRpcMissingMapping attribute on properties.
- Invalid struct elements ignored if mapping action is Ignore.
- Fixed dateTime issue with Wareki calendar.
- Fixed problem with serializing void return.
- Modified call to DeserializeResponse in DeserializeMessage.
- Handles case when server incorrectly returns fault code as a string.
- XmlRpcStruct restricted to string keys.
0.9.1
- Distribution includes version of library which runs on .NET Compact Framework.
- DateTime parsing bug fixed (caused problems in particular with it-IT locale)
- XmlRpcProxyGen caches generated assemblies to avoid leakage if XmlRpcProxyGen is called multiple times for the same interface.
0.9.0
- XmlRpcServiceAttribute has a new AutoDocumentation property which allows automatic documentation to be switched off.
- Handles XML-RPC response encodings other than UTF-8.
- XmlRpcMemberAttribute fixed.
- XmlRpcClientProtocol has new ProtocolVersion property to allow HTTP v1.0 to be specified.
- XmlRpcClientProtocol has new KeepAlive property (default is true). With some servers it may be necessary to set this to false when running with the current beta of the 2.0 CLR, for example if you start seeing the "Underlying Connection Was Closed" exception or the second call on a proxy appears to hang.
- Multi-dimensional arrays handled correctly.
- dateTime parsing supports "yyyy-MM-ddTHH:mm:ss" to handle blog service providers which return invalid XML-RPC dateTime values in this format.
- Includes Joe Bork's xmlrpcgen utility to generate source code for proxies.
- Release runs on version 1.0 of CLR upwards.
0.8.0
- optional struct members
- The zip file contains a bin directory containing:
- CookComputing.XmlRpc.dll
- bettyapp.exe (A WinForms application which calls the UserLand betty example server.)
- asyncbettyapp.exe (Another WinForms app illustrating how to make async calls.)
- mathservice.exe (A simple XML-RPC service.)
- mathapp.exe (A WinForms application which calls MathService.)
0.7.1
- License change.
- Fixed problem in XmlRpcServerFormatterSink.cs whereby an exception was thrown if the XML-RPC and .NET method names are different.
0.7.0
- error reporting of parsing errors using parse stack
- support for async proxy method generation
- contiuning work on auto-generated documentation
- params keywords used in XmlRpcClientProtocol.Invoke
- server method can return void (return empty string in XML-RPC response)
- proxy method can return void (return value in XML-RPC response discarded)
- deserializer throws exception if an XML-RPC struct is missing one or more expected members
- fixed irritating warning when compiling XmlRpcStruct
- add version of BeginInvoke taking correct params as per docs
- Close always called on WebResponse
- fixed usage of XmlRpcClientProtocol Proxy property when used in VS designer (Drew Marsh)
- fixed handling of response without Content-Length during async calls (Dmitry Jemerov)
- fixed case when zero-length string in default string value is passed as <value/> (Drew Marsh)
- The zip file contains a bin directory containing:
- CookComputing.XmlRpc.dll
- bettyapp.exe (A WinForms application which calls the UserLand betty example server.)
- asyncbettyapp.exe (Another WinForms app illustrating how to make async calls.)
- mathservice.exe (A simple XML-RPC service.)
- mathapp.exe (A WinForms application which calls MathService.)
Limitations of Current Release
- Auto-documentation generation not fully implemented.
- No tracing/logging functionality.
0.6.0
- Fixed UserAgent property of XmlRpcClientProtocol.
- Added Proxy property to XmlRpcClientProtocol.
- Default for XML-RPC request XML document is no explicit encoding, i.e. implicitly UTF-8.
- Added Encoding property to XmlRpcClientProtocol to set explicit encoding on XML-RPC request XML document
- Can now use interface to define XML-RPC methods. For example can use same interface to implement both server and client. MathService changed to illustrate use of interface.
- Added XmlRpcProxyGen class to dynamically create a proxy object from an interface, i.e. makes hand-coding of proxies unnecessary in most cases. bettyapp sample changed to illustrate this.
- Fixed parsing of double type to be culture independent.
- Fault response XML document now generated in same way as ordinary response, i.e. will be in same format and encoding.
0.5.5
- Added ClientCertificates property to XmlRpcClientProtocol
- The zip file contains a bin directory containing:
- CookComputing.XmlRpc.dll
- bettyapp.exe (A WinForms application which calls the UserLand betty example server.)
- asyncbettyapp.exe (Another WinForms app illustrating how to make async calls.)
- mathservice.exe (A simple XML-RPC service.)
- mathapp.exe (A WinForms application which calls MathService.)
Limitations of Current Release
- Auto-documentation generation not fully implemented.
- No tracing/logging functionality.
0.5.4
- Added Headers property to XmlRpcClientProtocol.
- Added XmlRpcMemberAttribute.
- Modified deserialization of arrays to return more specific array type when all elements are of the same type.
0.5.3
- Fixed problem with deserializing arrays.
0.5.2
- Improved handling of XmlRpcFaultException in server formatter sink..
0.5.1
- Improved handling of XmlRpcFaultException in server formatter sink..
0.5.0
- Interim release containing preliminary code for client and server NET Remoting formatter sinks.
- A Remoting sample, with assemblies and config files.
0.4.3
- Interim release containing bug fixes, mainly in the serialization/deserialization code.
- Some restructuring in preparation for some major changes in the 0.5 series of releases.
0.4.2
- Build for .NET RTM.
- Added preliminary support for Introspection API.
0.4.1
- Major changes to XmlRpcClientProtocol class to support async calls, working but coding not completed.
- Extra sample - AsyncBettyApp - to illustrate async calls.
0.4.0
Initial release for .NET beta 2.
0.3.0
Initial release for .NET beta 1.
Developers
Lead Developer - Charles Cook.
License
XML-RPC.NET is released under the terms of the MIT X11 license.
Contact
Please contact with any feedback or suggestions for XML-RPC.NET.


Looping in Javascript and Ruby
November 16, 2015
Looping is central to what computers do. This is a good thing to know, so I'll say it again. Looping is central to what computers do.
Different computer languages do this in different ways, but all with the same goal: to loop. Now, Ruby has its own clever ways to do this, and the most simple is to just do the same thing over and over again.
truth = "Rainbows are beautiful! "
truth * 4
Rainbows are beautiful! Rainbows are beautiful! Rainbows are beautiful! Rainbows are beautiful!
Of course, repetition is nice, but repetition with variation is even nicer. And when dealing with more complicated objects in a programming environment, we're going to need to account for the inherent variations. So imagine we have one object, which contains a number of elements. Now all the elements are the same because they belong inside the object. But they're also unique to each other, because they mean something different or have different values.
colors = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]
for color in colors
p "My favorite color is #{color}"
end
"My favorite color is red"
"My favorite color is orange"
"My favorite color is yellow"
"My favorite color is green"
"My favorite color is blue"
"My favorite color is indigo"
"My favorite color is violet"
Now we're looping inside the colors object. And a simple change allows us to account for those variations, by including or excluding certain elements for example.
for color in colors
p "My favorite color is #{color}" if color == "blue"
end
"My favorite color is blue"
for color in colors
p "My favorite color is #{color}" if color != "red"
end
"My favorite color is orange"
"My favorite color is yellow"
"My favorite color is green"
"My favorite color is blue"
"My favorite color is indigo"
"My favorite color is violet"
Ruby has some even more clever ways to do that, namely with the Enumerable methods.
colors = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]
colors.each { |color| p "My favorite color is #{color}" }
Now, Javascript likes to do the same thing, but in its own unique way. And notice I said "way" not "ways." In comparison to Ruby, JS may seem like a one-trick pony with the way it handles looping.
var colors = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"];
for (var color = 0; color < colors.length; color ++){
console.log("My favorite color is " + colors[color)];
}
"My favorite color is red!" ...
It's that first line that controls the looping function, but oh what a line it is. It may seem awfully fussy at first, but it provides a great deal of flexibility in one neat little package. The first statement is used to create a new variable to serve as an index, which tells the loop where to start. In this case, we start at 0, the first element in the array. But we could just as easily start in the middle, or at the end, no?
The second statement is the actual loop. Do this block until some event, or as long as a condition is true. In this case, we just want to run through all the elements in the array and stop. But I could stop when I get all the elements I need.
var color_palette = [];
for (var color = 0; color_palette.length < 2; color ++){
color_palette.push(colors[color]);
}
console.log(color_palette)
=> ["red", "orange"]
And the third part of our JS looping statement may be the most important. It tells the computer what to do after each run through the code block. If we do nothing here or do something insufficient, then the loop may continue forever. Remember, computers love to loop and they will keep looping even when our patience for it has run out. In our case, we just want to run up the index: 0, 1, 2, 3, 4 ... But we could just as easily skip-step, or count backward.
for (var color = 0; color < colors.length; color += 2){ ...}
for (var color = colors.length - 1; color >= 0; color --) {...}
Personally, I love this framework. It's a little tricky to remember at first, with three different elements and those pesky semi-colons. But once you internalize it, then you see the flexibility it provides and you can work on developing ways to master it.


Provides the main API for fetching and persisting beans. We can obtain the "default database"
via DB.getDefault()
or just use methods on DB.
{@code // Example find by id Order order = DB.find(Order.class, 10); // Example save Customer customer = DB.getReference(Customer.class, 42); Order newOrder = new Order(); newOrder.setStatus(Order.Status.NEW); newOrder.setCustomer(customer); ... DB.save(newOrder); // Example: Eagerly fetching associations // fetch Customer 42 including their billing and shipping addresses Customer customer = DB.find(Customer.class) .setId(42) .fetch("billingAddress") .fetch("shippingAddress") .findOne(); Address billAddr = customer.getBillingAddress(); Address shipAddr = customer.getShippingAddress(); }


{% extends 'sso/base.html' %} {% block inner_content %}
Your request to access this service has been submitted.
Your reference number for this request is {{ zendesk_ticket_id }}
Our team aim to respond to these requests within 3 working days.
Should you require urgent support, please contact login.support@uktrade.zendesk.com.


This is custom consent form
Greeting..
This app
would like to access your data.
No Thanks
Allow Access
redirect URI:


Part of HR’s job is to meet and communicate with employees and job seekers on a daily basis. But with employees giving weird excuses for being late to work, behaving strangely on business trips, and job seekers doing questionable things to get noticed, how much more can an HR executive handle?
In line with that, OrangeHRM has compiled a list of 14 things that drive HR executives crazy – and here are 10 of our favourites.
#1 Chasing people to do online training modulesThere’s no excuse for not completing a 15 minute safety training within 2 weeks.
#2 Senior executives thinking the rules don’t apply to themYour company has a strict dress code for warehouse employees but the senior executives constantly enter the warehouse without protective gear.
#3 Low employee engagement survey turnoutsThe most accurate way to get a reading of the employee engagement is by the survey.
#4 Coming to a professional interview in casual attireHow is the recruiter supposed to take you seriously if you’re wearing jeans and yeezys?
#5 Being asked to judge candidates based on things they shouldn’t be judged on. Things like attractiveness, number of kids, marital status, nationality, etc. Not only can this be immoral, but illegal as well.
#6 Bringing your family to an interviewDon’t even think about bringing your parents to an interview.
#7 HR not being at the executive tableHR is arguably the most important department in the organisation as people are the most important asset an organisation has. You have a CEO, COO, CMO, CTO, CFO, but no CHRO or CPO?
#8 HR are not maidsHaving HR coordinators serve executive lunches is not an appropriate use of their time.
#9 Storing a month’s worth of frozen food in the freezer or leaving food to rot in fridgeThe fridge and freezer are for everybody, you should be refilling it everyday.
#10 Junk resumesSome HR execs have reported that over 98% of responses they get from a job board posting is junk. It’s either candidates from overseas who are looking to be sponsored, unqualified candidates, robots, or recruiting firms. This issue is become less common as more organisations are starting to use applicant tracking systems or ATS.


To copy and paste part of a picture
- In the toolbox, click to select a rectangular area or click to select a free-form area.
- Drag the pointer to define the area you want to copy.
- Select a method of pasting:
- On the Edit menu, click Copy.
- On the Edit menu, click Paste.
- Drag the selection where you want it.
Notes
- You cannot paste graphics when the text tool is selected.
- You can paste multiple copies of an object by holding down CTRL while you drag the pasted object to a new location. Repeat as needed.
- You can undo any number of changes by clicking the Edit menu and then clicking Undo for each change.
- You can remove the selection box by clicking outside the box.


| abs | absolute value
|
| argc | argument count
|
| argv | argument vector
|
| bin | binary
|
| bstr | byte string
|
| cf | combinatorical function
|
| col | column
|
| dec | decrement
|
| doc | document(s), documentation
|
| dup | duplicate
|
| enum | enumeration
|
| fac | factorial
|
| fft | fast fourier transform
|
| fn | function
|
| freq | frequency
|
| fun | function
|
| gx | graphics
|
| img | image
|
| inf | infinity
|
| init | initialisation
|
| int | integer
|
| la | linear algebra
|
| lang | language
|
| lib | library
|
| long | long integer
|
| mf | moss function
|
| mpy | multiply
|
| mt | moss type
|
| na | numerical analysis
|
| nan | not a number
|
| net | network
|
| nt | number theory
|
| ode | ordinary differential equation
|
| os | operating system
|
| PFS | perfect forward secrecy
|
| pli | piecewise linear interpolation
|
| pow | power
|
| ps | power series
|
| re | regular expression
|
| regex | regular expression
|
| rev | reverse
|
| sf | special function
|
| sgn | sign, signum
|
| sqrt | square root
|
| stat | status, statistics
|
| str | string of characters
|
| sub | subroutine, subtraction
|
| sys | system, runtime system
|
| uniq | unique
|
| vec | vector
|


LeeboardTools presents...
View the locations of the MBTA trains and buses as reported by the MBTA.
Loading route information from the MBTA.
Loading map...
MBTA data provided by MBTA MassDOT.
Map data provided by OpenStreetMap, © OSM Contributors.
Javascript libraries by Tangram and Leaflet.
Encoded polyline decoded provided by the Leaflet plug-in https://github.com/jieter/Leaflet.encoded.
Icons by Material Design.
Vehicles surrounded by a yellow border indicate the vehicle position is being estimated from the last reported vehicle position and the predicted arrival of the vehicle at the next stop. 'Estimate vehicle locations' must be checked for this to be performed.
When vehicle locations are being estimated, every so often the vehicle will jump around abruptly. There are a number of reasons this may happen, including:
NOTE: This web page is only for entertainment and should NOT be used for scheduling! Bugs may affect the accuracy of the information displayed.
No warranty is provided, use at your own risk.


All different styles of houses and those who dwell in them.
Keri Cook, author of dreamy and mysterious works of women's fiction.
What are the things in life that inspire me to write about them?
Birds, butterflies and all the glorious creatures of nature.
The mysteries held in bodies of water, generating fondness and fear.
Majestic forested mountains that share with me signs of the seasons.
An on air interview and partial reading
KX93.5 "Spoken Word / Spoken Song"
September 21, 2014
KX93.5's John Gardiner, Poet and teacher of Shakespeare at UC Irvine, and Polina Hryn of Wet Puzzle Piece Productions, Artist/Writer and Promoter of THE ARTS, host a wonderful episode with brilliant novelist, Keri Osborne Cook, reading several sections from her forthcoming novel, "The House on Loden Lake," a dreamy, mysterious, and beautifully written work of women's fiction. ~ Spoken Word / Spoken Song
INTERVIEW


DUDHWA NATIONAL PARK
DUDHWA NATIONAL PARKThe Dudhwa National Park is a national park in the Terai belt of marshy grasslands of northern Uttar Pradesh, India. It stretches over an area of 490.3 km2 (189.3 sq mi), with a buffer zone of 190 km2 (73 sq mi). It is part of the Dudhwa Tiger Reserve in the Kheri and Lakhimpur districts.[1] It is located on the Indo-Nepal border in the Lakhimpur Kheri District, and has buffers of reserved forest areas on the northern and southern sides. It represents one of the few remaining areas of the diverse and productive Terai ecosystem, supporting many endangered species, obligate species of tall wet grasslands and species of restricted distribution. > history Dudhwa became a tiger reserve in 1979. The area was established in 1958 as a wildlife sanctuary for swamp deer. Thanks to the efforts of Billy Arjan Singh the area was notified as a national park in January 1977.[2] In 1987, the park was declared a tiger reserve and brought under the purview of the ‘Project Tiger’. Together with the Kishanpur Wildlife Sanctuary and the Katarniaghat Wildlife Sanctuary it forms the Dudhwa Tiger Reserve > Climate Like most of northern India, Dudhwa has an extreme humid subtropical with dry winters (CWa) type of climate. Summers are hot with temperatures rising up to 40 °C (104 °F). During winters from mid-October to mid-March, temperatures hover between 20 and 30 °C (68 and 86 °F). The months of February to April are ideal for visiting the park. Prevalent winds are westerly. The hot wind Loo blows strongly from mid-April up to end of May. Monsoon starting in mid-June and lasting up to September accounts for 90% of the rainfall of 150 cm (59 in). Temperatures range from between a minimum of 9 °C (48 °F) in winter to a maximum of up to 45 °C (113 °F) in peak summer. |
|||||
Gallery | |||||
|
|


@(profile: org.pac4j.core.profile.CommonProfile) @main("Plain Old MineSweeper!") {
@profile.getDisplayName()
@profile.getEmail()Hate to say we told you so. Don't cry, try again.
We always knew you could do it. Huge success. Tremendous. Okay enough of it now, play again.


Due to the rapid growth in population since last few years, number of patients to look after has increased as well. WeCare is dedicated to provide the best services to the users that can be accessed from anywhere! Our first priority is our user's health and to ensure this, we give them the best treatment and facilities. We provide features like Hospitals finding, fetching trending news, chatbot, medicine notification using prescriiption etc. Our goal is to make people fight with their health issues more efficiently anf easily.
Have your prescription with you? but forgetful as to when to take the medicines! Dont worry, just scan your prescription here and add the date and time to your calender. Our website will notify you!
Not sure about the hospitals nearby? Not to worry! We will help you show all the hospitals that are near your locality using the google maps
Have a question but no one to answer? Chill. We have our own forum where you can post your question and get it answered by all your users immediately
We also provide you with an app that takes permission to access all your contacts. This app will help you send SOS message to all your emergency contacts in case you feel uneasy with your health
Hey! I am chatbot. You can chat with me using text or speech , and I will try to answer your questions. Ask me anything for like "what is the weather?", "Hospitals nearby" or "Add a health issue" etc and I will help you.
Hospital is a good place for patients because there we have people who can guide us about our health right? But what about people at home? We have a section that tells us the Do's and Dont's about the health issues you addressed to us! Just try it out


12 November 1996
Disease Outbreak Reported
The daily number of new cases reported by the National Institute of Communicable Diseases in Delhi declined from about 200 new cases of dengue and dengue haemorrhagic fever at the end of October to 173 on 1 November, 105 on 2 November and 102 on 3 November. The total number of cases reported up to 3 November were 8 170 of which 319 (3.9%) were fatal.
The WHO Office for the South-East Asia Region is organizing a technical meeting on the management of the dengue epidemic in New Delhi on 28-30 November 1996 to:


4 Questionnaire
The following are sample/template questionnaires used for the two types of surveys that will be implemented.
4.1 CMAM coverage survey instruments
CMAM coverage surveys use primarily use two forms. The first form is used to collect coverage data from SAM children found during the survey. Given that this survey will use house-to-house/door-to-door sampling for stage 2, then it would be necessary to record all data from all children that are measured with MUAC, weight-for-height and oedema. The following tabular form can be used for this purpose:
The data collected using the tabular forms will allow estimation of coverage. They do not, however, allow you to know the reasons for coverage failure. To collect this data we apply a “barriers” questionnaire to the mothers/carers of uncovered SAM cases. Here is an example of a barriers questionnaire:
4.2 Survey for children 6-59 months and their mothers
For the survey for children 6-59 months, following is a sample/template questionnaire.
4.3 Using Open Data Kit
Based on the template forms described in the previous sections, a digital data collection system using Open Data Kit (ODK) has been developed. These forms are availabe as a Github repository. The system is composed of two forms.
4.3.1 Village form
This form (liberiaCoverageVillageForm.xlsx
and liberiaCoverageVillageForm.xml
) collects information on the villages or primary sampling units (PSU) selected for the Liberia Coverage Survey. This information includes:
County name (and identifier)
Village name (and identifier)
Village population size
Village geocoordinates
4.3.2 Coverage form
This form (liberiaCoverage.xlsx
and liberiaCoverage.xml
) collects information on the various coverage indicators assessed in the Liberia Coverage Survey:
CMAM coverage
Iron-folic acid supplementation coverage
IYCF counselling coverage
Micronutrient powder supplementation coverage
Vitamin A supplementation coverage
The coverage form has been developed in such a way that it implements the survey as per survey design such that the modules for IFA coverage, IYCF counselling coverage, MNP supplementation coverage and vitamin A supplementation coverage are only shown based on the sampling interval for a particular primary sampling unit (PSU) and based on the different eligibitlity requirements for each coverage survey module.
4.3.3 Usage
For those wanting to test out the forms on their own Android mobile devices, the following applications need to be downloaded and installed from the Google Play Store:
Once these applications are isntalled, there are two option for getting the Liberia Coverage Survey forms onto mobile devices.
4.3.4 1. Using ODK Aggregator or other similar ODK servers
The XLSForm can be uploaded to a remote server-based ODK Aggregator or other ODK servers such as ONA, SurveyCTO, KoBoToolbox and the like. The form is validated and then converted into XML format which can then be retrieved from the server into mobile devices as blank forms.
For the purposes of viewing and testing the Liberia Coverage Survey forms, a test server has been setup. To view and/or test the Liberia Coverage Survey forms, ODK Collect in the mobile devices will need to be connected to the server. This is described here. The following ODK Aggregate server setttings should be used:
url: https://odk.ona.io
username: validtrial
password: zEF-STN-5ze-qom
Once ODK Collect has been connected to the test server, it will now be possible to pull the Liberia Coverage Survey forms into ODK Collect in the mobile device using the instructions found here.
Once the Liberia Coverage Survey forms have been pulled into the ODK Collect in the mobile device, the forms can be viewed and tested by following the instructions here.
4.3.5 2. Convert to XML and transfer to mobile devices via USB cable connection
The XML version of this form can then be transferred to the mobile devices (into the device’s odk
folder) via local USB connection. This can be done by following the instructions here. The associated media files for the forms (found in the folder called media
in this repository) will also need to be transferred to the mobile device. This can be done by following the instructions here.


Verizon’s Stream TV box will use Android TV, includes free month of YouTube TV
by Ben SchoonRumors have been floating around since the summer regarding a new streaming box coming from Verizon, but now it’s looking like Verizon is going to be using Google’s platform on the device. Thanks to the Google Play Developer Console, we now know the Verizon Stream TV will be using Android TV.
Discovered on Twitter, this Verizon Stream TV appeared in the Google Play Developer Console in the past few days, hinting at an imminent launch. The box’s appearance on the console essentially confirms it will be using Google’s Android TV, presumably modified using the Operator Tier.
We don’t know much about this box yet, but CNET confirmed it was in the works in October. That article further confirms the Verizon Stream TV is Android-powered, but it didn’t make mention of the Play Store at the time. CNET also confirmed that YouTube TV will be a core part of the device, with a one-month free trial included with the device.
Verizon has not confirmed when the Stream TV will hit the market, but the device is a part of the company’s wider 5G Home initiative.
More on Android TV:
- Philips debuts compact Android TV for the kitchen w/ Google Assistant built-in
- Xiaomi Mi Box S beta update delivers Android TV w/ Pie, Amazon Prime Video
- YouTube for Android TV rolls out refreshed UI w/ new sections
FTC: We use income earning auto affiliate links. More.


Data Wrangling and Preprocessing¶
Trodes Data¶
Here we go over a collection of modules for extracting, reading, parsing and preprocessing trodes data produced by various ReachMaster routines.
Extract trodes data to python¶
SpikeGadgets provides this script to import data from Trodes to Python. For further documentation, visit SpikeGadgets .
-
trodes_data.readTrodesExtractedDataFile3.
readTrodesExtractedDataFile
(filename)¶ Read a DIO or analog Trodes .dat file. These files are typically produced after converting the raw .rec files using the exportdio or exportanalog bash scripts provided by SpikeGadgets. Visit SpikeGadgets for more details.
Parameters: filename (str) – Path to file Returns: fieldText – A nested dictionary with the extracted data Return type: dict
Calibration data parser¶
A library for reading, parsing, and preprocessing trodes data collected during robot calibration routines.
-
trodes_data.calibration_data_parser.
get_summary_frame
(data_dir, trodes_name, sampling_rate=3000, valve_period=0.175, pot_units='cm')¶ Generate a data frame that can be modeled for robot calibration.
- data_dir : str
- Parent directory where the trodes data lives
- trodes_name : str
- Name of original .rec trodes file
- sampling_rate : int
- Specifying a rate (Hz) lower than the SpikeGadgets MCU clock rate of 30 kHz will downsample the data and speed up the parsing.
- valve_period : float
- Time (sec) between valve command onsets
- pot_units : str
- Units to return potentiometer recordings. Can be cm, volts, or bits.
Returns: data_frame – A pandas data frame Return type: type(pandas.DataFrame)


THE BOXER (Universal) Starring: Daniel Day-Lewis, Emily Watson, Brian Cox, Gerard McSorley, Ken Stott, Ciaran Fitzgerald. Screenplay: Jim Sheridan and Terry George. Producers: Jim Sheridan and Arthur Lappin. Director: Jim Sheridan. MPAA Rating: R (profanity, violence) Running Time: 110 minutes. Reviewed by Scott Renshaw
Jim Sheridan and Terry George, contemporary cinema's poets laureate of the Irish "Troubles," are building an extraordinarily well-received body of work. Sheridan's 1993 film IN THE NAME OF THE FATHER earned multiple Academy Award and Golden Globe nominations; George's 1996 directing debut SOME MOTHER'S SON garnered many critical plaudits. Their earnest, well-crafted stories of folks caught up in the turbulence of political violence have moved many viewers to heap adjectives of praise upon their films. And while all this occurs, I find myself sitting and thinking, "You know, it was good, but..."
Sheridan and George's latest collaboration, THE BOXER, falls into a very similar category. It tells the story of Danny Flynn (Daniel Day-Lewis), a former IRA member who has just completed a fourteen year sentence for his involvement in terrorist activities. All Danny wants is to pick up the pieces of his life, perhaps returning to the boxing career interupted by his incarceration, but things are not to be so simple. His teenage sweetheart Maggie (Emily Watson) is now married to another prisoner and has a teenage son of her own; Danny's former running partner Harry (Gerard McSorley) is none-too-pleased that Danny has shunned his former IRA friends. While IRA political leader (and Maggie's father) Joe Hamill (Brian Cox) tries to create peace at the bargaining table, Danny makes his own small efforts to bring the warring factions together, but finds his personal and professional desires encountering dangerous opposition from Harry.
There are always plenty of things to like about a Sheridan film, most notably his ability to create a vibrant sense of place. The divided Belfast of THE BOXER is a startling image, with its physical wall dividing the people even more concretely than the differing ideologies. One early scene finds IRA memberrs leading Joe through a series of cut-out walls so that he can reach a party without having to walk outside; explosions rip through the characters' lives without warning. The insanity and self-perpetuating violence of the Irish conflict are starkly portrayed, with more ambiguity surrounding the question of right and wrong than most films on the subject -- including Sheridan and George's own previous films -- have managed to explore.
For all its welcome complexity of theme, however, THE BOXER tends to drift in the exploration of its main characters. Nowhere is this more evident than in the love story between Danny and Maggie, a star-crossed romance which feels more obligatory than well-developed. Furtive glances and snatches of conversation establish tension between them, but their connection is never entirely convincing. It doesn't help that the central impediment to their relationship -- Maggie's husband, to whom she is expected to be unerringly faithful in support of The Cause -- never makes an appearance. In one sense, it's an effective device which turns him into an abstract rallying point for the IRA rather than an individual human being. At the same time, we are forced to take for granted that Maggie belongs with Danny, and that Liam's devotion to his absent father's memory is the foolish stuff of childhood.
None of which is to suggest that the performances aren't strong from top to bottom, because they are. Daniel Day-Lewis brings a resigned dignity to Danny; his unwillingness to return to the IRA's ways seems as much a result of fatigue than moral scruple. Brian Cox and Gerard McSorley do solid work as the warring factions within the IRA, and Ken Stott has a few nice scenes as Danny's old trainer, reduced to a pathetic drunk by the dissolution of his boxing club. Their stories always hold your attention, but they never engross the way great film stories do. Perhaps my sense in THE BOXER, and with IN THE NAME OF THE FATHER and SOME MOTHER'S SON for that matter, is that Sheridan and George are more interested in making a point than making a movie. The result is a cerebral film with too little gut-level emotion. Sheridan and George are good film-makers, but they could be great if they were as attentive to their people as to their politics.
On the Renshaw scale of 0 to 10 boxing days: 7.
Visit Scott Renshaw's MoviePage http://www.inconnect.com/~renshaw/ *** Subscribe to receive new reviews directly by email! See the MoviePage for details, or reply to this message with subject line "Subscribe".
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


Brian O'Driscoll's perfect analysis of how Dan Biggar pulled off the sublime moment that has rugby fans drooling
'He knew exactly what he was doing', says O'Driscoll
by Simon ThomasIt’s the pass everyone has been talking about and now one of the legends of the game has provided a fascinating insight into exactly how Dan Biggar pulled it off.
The Wales outside-half produced one of the moments of the weekend during Northampton’s dramatic Champions Cup victory over Benetton.
His flicked pass behind his back to set up a try for winger Tom Collins was a thing of absolute beauty and a masterful piece of skill.
But, according to Ireland and Lions great Brian O’Driscoll, it was more than just showboating.
Analysing the incident on BT Sport, O’Driscoll outlined precisely what Biggar was thinking.
“It might seem full of trickery, but there’s a little bit more to it than meets the eye,” he said.
“It’s the line that he runs.
“Rather than fading on the pass and inviting the defence to drift with him, what he did was attack it short.
“He invites the defender in, making him think he’s going to challenge to the line himself.
“As soon as he takes it to the line, that defender feels as though he’s going to carry.
“That’s when he’s able to play it out the back and create a simple two-on-one.
“He knows exactly where his support player - Tuala - is, then it’s straight to Collins, great try.
“It’s not just showboating. He knew exactly what he was doing.
“He sucked the defence into thinking he didn’t have that pass on and a player of his calibre is able to deliver those sort of plays.
“So it might look fantastic, you might think it’s a box of tricks, but it’s really great play from a very, very smart footballer.
“We’ve seen him do these sort of things for Wales and the Ospreys over the years.
“He’s a really smart footballer with great vision.”
Not content with that piece of magic, Biggar went on to land a nerveless match-winning penalty with the final kick of the game.
That gave him a 15-point haul to go with the 20 points he contributed during a Man of the Match performance against Lyon the week before.
“He’s been excellent so far this season,” commented O’Driscoll.


node-mediator implements the mediator design pattern with events. It supports creating decoupled components(called colleagues) which all interact through one component(called mediator) through events. If you have large projects with a lot of dependencies between components, this is the library for you.
Why should you use this library?
npm install node-mediator -S
or
yarn add node-mediator
you can find an example of usage in the examples folder found here
used by the mediator to restrict inter-component commumnication
import { RelationsMap } from 'node-mediator'
// tester, uploader and logger are our class that extended the Colleague abstract class
// each colleague implementation has on and emit objects which accept strings of events names as keys and booleans as values.
// in our case it means that tester is allowed to fire a test event and receive a test event, etc.
const relations: RelationsMap = {
tester: {
on: { test: true },
emit: { test: true }
},
uploader: {
on: { upload: true },
emit: { upload: true }
},
logger: {
on: { log: true },
emit: { upload: true }
}
}
export default relations
import { Colleague } from 'node-mediator'
// our logger extends Colleague, therefore has .on, .emit, .emitAsync and .register on its prototype.
// we define our methods here and we will register them later. If you want to emit an event to some other component you simply use the this.emit or this.emitAsync if you need to await the answer.
class Logger extends Colleague {
log(...args) {
// our emit will only happen if it allowed in our relations map!
this.emit('upload', { someArumentToUpload: true })
console.log('logger: ', ...args)
}
}
export default Logger
import { NodeMediator } from 'node-mediator'
import relations from './relations'
import Tester from './Tester'
import Logger from './Logger'
import Uploader from './Uploader'
class Main {
async run() {
// our mediator is a singleton, first time we call .getInstance with our relations map to initialize the mediator
const mediator = NodeMediator.getInstance(relations)
/*
subsequent calls to getInstance will ignore any params and return our mediator singleton
NodeMediator.getInstance() -> mediator
*/
// we call our extended Colleagues with their name and we pass the mediator singleton to them
const tester = new Tester('tester', mediator)
const logger = new Logger('logger', mediator)
const uploader = new Uploader('uploader', mediator)
// register the extended Colleagues.
tester.register()
logger.register()
uploader.register()
// define events. Only events defined in relationsMap will be allowed!
logger.on('log', logger.log)
tester.on('test', tester.test)
uploader.on('upload', uploader.upload)
// example emit
tester.emit('test')
/*
we can also call .emitAsync. If you have a lot of async operations
but you still want them decoupled, you can use .emitAsync,
.emitAsync uses promise.all to resolve all listeners promises and return all values.
*/
// we defined our tester and uplaoder to allow firing upload
const uploaded = await uploader.emitAsync('upload', 'some data for upload...')
console.log(uploaded)
}
}
new Main().run()
MIT
Generated using TypeDoc


TActivePageAdapter class.
Callback request handler.
Located in /Web/UI/ActiveControls/TActivePageAdapter.php (line 30)
TComponent | --TApplicationComponent | --TControlAdapter | --TActivePageAdapter
Constructor, trap errors and exception to let the callback response handle them.
Gets the callback client script handler. It handlers the javascript functions to be executed during the callback response.
Gets callback parameter. JSON encoding is assumed.
Process the callback request.
Redirect url on the client-side using javascript.
Register a control for defered render() call.
Render the callback response.
Renders the callback response by adding additional callback data and javascript actions in the header and page state if required.
Registers a control to raise callback event in the current request.
Trap errors and exceptions to be handled by TCallbackErrorHandler.
Inherited From TControlAdapter
TControlAdapter::__construct()
TControlAdapter::createChildControls()
TControlAdapter::getControl()
TControlAdapter::getPage()
TControlAdapter::loadState()
TControlAdapter::onInit()
TControlAdapter::onLoad()
TControlAdapter::onPreRender()
TControlAdapter::onUnload()
TControlAdapter::render()
TControlAdapter::renderChildren()
TControlAdapter::saveState()
Inherited From TApplicationComponent
TApplicationComponent::getApplication()
TApplicationComponent::getRequest()
TApplicationComponent::getResponse()
TApplicationComponent::getService()
TApplicationComponent::getSession()
TApplicationComponent::getUser()
TApplicationComponent::publishAsset()
TApplicationComponent::publishFilePath()
Inherited From TComponent
TComponent::addParsedObject()
TComponent::attachEventHandler()
TComponent::canGetProperty()
TComponent::canSetProperty()
TComponent::createdOnTemplate()
TComponent::detachEventHandler()
TComponent::evaluateExpression()
TComponent::evaluateStatements()
TComponent::getEventHandlers()
TComponent::getSubProperty()
TComponent::hasEvent()
TComponent::hasEventHandler()
TComponent::hasProperty()
TComponent::raiseEvent()
TComponent::setSubProperty()
TComponent::__get()
TComponent::__set()
Callback response client-side action header name.
Callback response data header name.
Callback error header name.
Callback page state header name.
Callback redirect url header name.
Documentation generated on Fri, 03 Jun 2011 16:22:28 +0200 by phpDocumentor 1.3.0RC4


--- layout: post title: 170 Million Americans for Public Broadcasting categories: [] tags: - npr - public - social status: publish type: post published: true meta: _original_post_id: '' _original_import_author: John Duprey author: ---
I love public broadcasting.


template<fly::StandardCharacter CharType>
struct fly::detail::BasicFormatSpecifier< CharType >
Structure to encapsulate positional and formatting options (which constitute a replacement field) based strongly upon:
https://en.cppreference.com/w/cpp/utility/format/format
https://en.cppreference.com/w/cpp/utility/format/formatter#Standard_format_specification
A replacement field has the following format:
1. An introductory "{" character.
2. An optional non-negative position.
3. An optional colon ":" following by formatting options.
4. A final "}" character.
The postition option specifies the index of the format parameter whose value is to be used for this replacement field. If not specified, the format parameters are used in order. The position option must be specified in all replacements fields or not in any replacement field; mixing of manual and automatic indexing is an error.
Formatting options have the following format, where every field is optional:
1. An optional fill character (which may be any ASCII character other than "{" or "}"),
followed by an alignment option. The alignment option may be one of:
"<" - Forces the field to be aligned to the start of the available space.
">" - Forces the field to be aligned to the end of the available space.
"^" - Forces the field to be centered within the available space.
2. A sign indicator. The sign character may be one of:
"+" - A sign should be used for both non-negative and negative numbers.
"-" - A sign should be used for negative numbers only.
" " - A sign should be used for negative numbers and a leading space should be used
for non-negative numbers.
3. An alternate form indicator (a literal "#" character). If present, the following alternate
forms will be used:
Integral types - If binary, octal, or hexadecimal presentation types are used, the
alternate form inserts 0b, 0, or 0x prefixes, respectively, before the value.
Floating-point types - A decimal point character will always be inserted even if no digits
follow it.
4. A zero-padding indicator (a literal "0" character). If present, the value is padded with
leading zeros. This option is ignored if an alignment option is also specified.
5. A width value. A width is either a positive decimal number or a nested replacement field
(*). If present, it specifies the minimum field width.
6. A precision value. A precision is a decimal (".") followed by a non-negative decimal
number or a nested replacement field (*). If present, it specifies the precision or
maximum field size. It may only be used for the following value types:
String types - precision specifies the maxiumum number of characters to be used.
Floating-point types - precision specifies the formatting precision.
7. A locale-specific form indicator (a literal "L" character). It may only be used for the
following value types:
Integral types - locale-specific form inserts appropriate digit group separator
characters.
Floating-point types - locale-specific form inserts appropriate digit group and radix
separator characters.
Boolean types - locale-specific form uses the appropriate string for textual
representation.
8. A presentation type. The type determines how the value should be presented, where the
allowed presentation type varies by value type:
Character types - Valid presentations: none, "c", b", "B", "o", "d", "x", "X".
String types - Valid presentations: none, "s".
Pointer types - Valid presentations: none, "p".
Integral types - Valid presentations: none, "c", b", "B", "o", "d", "x", "X".
Floating-point types - Valid presentations: none, "a", A", "e", "E", "f", "F", "g", "G".
Boolean types - Valid presentations: none, "c", s", b", "B", "o", "d", "x", "X".
For details on each presentation type, see the above links.
(*) Nested replacement fields are a subset of the full replacement field, and may be of the form "{}" or "{n}", where n is an optional non-negative position. The corresponding format parameter must be an integral type. Its value has the same restrictions as the formatting option it is used for.
- Author
- Timothy Flynn (trfly.nosp@m.nn89.nosp@m<EMAIL_ADDRESS>- Version
- January 3, 2021


SAP provides a range of business applications including customer relationship management (CRM), supply chain management (SCM), and product lifecycle management (PLM).
SAP Integration enables the integration of SAP systems and applications throughout the enterprise.
Use this pattern when you have one or more systems, including an SAP system, to connect in a structured way.


Home
Chi Kung
Teachers
10 Shaolin Laws
Contact
"Your own Self-realization is the greatest service you can render the world."
-Sri Ramana Maharshi
"
Contact Us
Shaolin Wahnam California
<EMAIL_ADDRESS>415-818-5818
Sifu Wong's Home Page
shaolin.org


Listed At:
$
{{home.price}}
{{home.address_1}}
{{home.address_2}}
{{home.sqft}} sq. ft.
{{home.beds}}} Beds
{{home.baths}} Baths


|
Cold Comfort They thought they were ready for any challenge. But the Johns Hopkins students on a winter camping expedition in the Adirondacks found their resolve and their leadership skills tested -- at minus 20 Fahrenheit. By Robert Roper
|
|
| Opening photo by Matt "Spinner" Allen |
The mission statement of the Hopkins outdoor program puts
the matter baldly. "We desire to push people out of their
comfort zone," it says, "so they can see themselves ... in
new ways." The question then becomes, how big is your
comfort zone? Would you be happy sleeping for a couple of
nights in a tent? How about a tent in the snow? How about a
tent in the snow in zero-degree weather? How about a tent
in the snow for 10 days with a low of minus 30, wind chill
not included? How about a tent in the snow and never quite getting warm all day, needing to rest but afraid to stop moving because then the freeze sets in? Your feet and hands losing all feeling, the frostbite starting on your face? That's a different idea of a comfort zone, a more special one, and this January, those questions took on real meaning for a group of Johns Hopkins students. They had set out for two weeks of winter camping in the Adirondacks, prepared for cold and snow and all the challenges entailed in that, but they were destined to encounter truly serious cold, Alaska-style cold, near-historic lows for the High Peaks region of upper New York state. The whole literature of survival in the winter wilderness, from Jack London's "To Build a Fire" to Jon Krakauer's Into Thin Air, suddenly seemed strangely relevant. The trip, organized as part of HOLT (Hopkins Outdoor Leadership Training), placed the students in a situation where "their decisions had real consequences," according to Phil Zook Friesen, the university outdoor coordinator and someone well-acquainted with the challenges of backwoods winter travel. A former Sierra mountain guide, Friesen has been developing a cadre of student leaders at Hopkins, men and women trained in specific skills -- rock climbing, backpacking, white water kayaking -- and with tested decision-making abilities. His goal is to be able to offer an ever richer variety of outdoor activities for the Hopkins community, in an atmosphere of safety and fun.
|
|
"Frozen Circus"
included Eric Schenfeld (foreground) and
Jon Haslanger, Glenn Wolfe, Katie Francis, Justin Plaum,
Sarah Spriet, Liz Pazdernik, and Spinner
Allen. Photo by Kate Francis |
Among the 14 students on the January expedition, several
were hoping to become student leaders in this summer's
Pre-Orientation Programs, which offer six- to eight-day
wilderness trips for incoming freshmen. Friesen divided his
group into two smaller squads, one called "Sleepy Bear" and
the other, aptly, "Frozen Circus." The plan: to travel from
Baltimore to upstate New York on the first day, then to
spend Days 2 and 3 at the Rock and River Lodge, testing
gear and making preparations to set out on Day 4. Both
groups would spend the nights of Days 4 and 5 at Camp Peggy
O'Brian, then would separate and take different trails into
the back country (see map). Each of the teams worked out an
itinerary through the wilderness, and, so that everyone
hoping to become a student leader could gain experience,
the directing duties were rotated daily. One of the leader candidates, Liz Pazdernik, a graduate student in geography and environmental engineering, found herself in charge of Frozen Circus on Day 8, a day of truly bitter cold -- minus 18 degrees Fahrenheit. "This was my first true backpacking trip," Pazdernik says, "and maybe it was crazy to be doing that in the Adirondacks, in January, but anyhow, there I was. It was our second night out, and the temperatures had plummeted. You immediately felt your fingers and your feet freezing.... All you could think of was the cold, nothing but that.  Basically, what in the world we should do. "Among our group, I was probably the coldest," she adds. "My co-leader went around to everybody and explained that we were bad off, really pretty bad off ... that I hadn't been warm in over 24 hours. Before conditions had become that severe, it had been easy to tinker around being leaders and decision-makers, but once it got that extreme, you didn't want to eat, you didn't want to drink, all you could think of was how cold you were."
|
|
"Sleepy Bear": Charles Reyner, Emily Kumpel, Jessica Richmond, Ayla Turnquist; (bottom, l to r) Howard Change, Phil Friesen, Kevin Pear. Not pictured: Sean Heffernan, Katy Juhaszova. Photo by Sarah Spriet |
After some discussion, the group decided to send four
members west, toward a heated lodge at a lower elevation.
Here they could recuperate in some comfort, while the three
other members of the group snowshoed six miles in the other
direction, their goal being to recover the group's rented
vehicles, which had been left at the trailhead, then drive
around to the lodge on paved roads. This decision allowed
the team members who were suffering most to get immediate
relief, although at the cost of abandoning the group's
mountaineering objectives for the day (they had been hoping
to climb Yard Mountain and Big Slide Mountain). "There was a dual purpose to everything," Pazdernik says, referring to the training in decision-making. "There was the physical encounter with the conditions, unbelievably harsh, and then also this thoughtful guided training in how to make a smart call in the wilderness. You were encountering your core fears, dealing with elemental worries like frostbite and how do I ever get warm again, and meanwhile undergoing this sophisticated process, this exercise in interpersonal complexities." The leader candidates, although given considerable autonomy, were supervised at all times by Friesen and by six instructors who had been trained by Friesen and others. Experiential education, the pedagogy that underlies programs like HOLT and which owes a debt to Outward Bound and similar movements, posits personal growth as a dependable outcome of serious outdoor adventure. But any professionally run program of this kind will be full of fail-safe measures, backup personnel, and thoughtful plans for dealing with all contingencies. The trick is to devise genuine encounters with wilderness conditions that are serious as well as fun, that call on outdoor skills in a consequential way, but in an environment of carefully managed risk. Friesen, who has been working in programs of this kind for eight years, is a technical rock climber and a mountaineer. He has a warm, easy manner that turns even stern encounters with harsh conditions into exercises in relaxation: No, this is not about proving your manhood or womanhood, not about grimly holding on to the death, but rather about deep play, about mastering skills that can free you in the wilderness and also in life. His goal in developing student leaders is to build a staff at Hopkins capable of leading more trips, but even more to equip students to deal with challenges of any sort. The aim is a deeper enjoyment, a fuller immersion in a difficult world -- mindfulness and adventure-readiness.
Follow this link to a larger version of this map. The High Peaks region -- the area that contains all the Adirondack summits over 4,000 feet -- sees very little traffic in the dead of winter. (Perhaps the reason is that, as the Adirondack Mountain Club guidebook says, "the … region presents an abundance of extremely steep terrain as well as exposed alpine environments with the potential for arctic weather conditions.") For Eric Schenfeld, encountering the cold was really the point of the whole adventure. "I'd never slept out in winter," he says, "and I figured I could either do it now, while I'm at Hopkins, or pay Outward Bound or somebody like that a lot of money later." On the coldest mornings, "I woke up with no feeling in my feet," says Schenfeld. "I rubbed them for a long time and the only reason I knew that they were my feet, not blocks of wood, was that I was looking at them." Schenfeld was in the same group, Frozen Circus, as Liz Pazdernik. On Day 6, the team had climbed Lower Wolfjaw Mountain (4,175 feet), then had hiked to an open-sided shelter along Klondike Brook. That night was probably the coldest 12-hour period of the trip. (It was also the prelude to the decision, taken by Pazdernik and others, to split Circus and evacuate to Rock and River Lodge.) At around 8:30 a.m. the next morning, as they rubbed their feet and tried to thaw their boots, which had frozen solid despite being kept inside the tent, the temperature was about minus 20 (presumably, it had been at least 10 degrees colder during the night). Schenfeld was eager to push on, to try to snowshoe energetically all day, because, as he explains, "That's the only time I was really warm, really comfortably warm, when we were out hiking with full packs on. The nights weren't really restful ... you're in your sleeping bag for a long time, and it's supposed to be the warmest time of day for you, the time when you can recuperate. But it wasn't like that. Even if you took a hot-water bottle into your sleeping bag with you ... one person's hot-water bottle froze solid and broke inside the sleeping bag."
|
|
Both groups, led by Friesen, started and ended their
winter backpacing adventure at the Adirondack Rock and
River Lodge. Photo by Sarah Spriet |
The travelers ate well -- hearty, carbohydrate-rich food
cooked on portable stoves -- and there was a lot of
horseplay and camaraderie on the trail. But at the end of
the day, no matter how much good feeling and enjoyment had
been generated, there were those nighttime hours to be
passed in the bone-chilling cold. In retrospect, Friesen, who attended to both teams but traveled mostly with Sleepy Bear, thinks that Frozen Circus may have suffered more than Sleepy Bear because, on the day before the coldest night, they had snowshoed less far and thus had warmed up less thoroughly. In contrast, Sleepy Bear had gotten seriously warmed up trying to climb Mount Marcy, the tallest peak in the Adirondacks (5,344 feet). "In the process, we lost the trail because of blowing snow and other factors," says Friesen. "We were up in elevation, and the leader of the day lost a little control, as almost anybody would.... We spent about 45 minutes up around treeline, among the low shrubs and snow, searching for the trail and not finding it. At last, one of the students stumbled on it. It was now past noon and the temperature was minus 10, minus 20 with the wind chill.... We got up pretty high, I'd say, but couldn't quite make the summit, then headed north, toward Avalanche Pass, toward the lean-to we knew was there."
|
|
Katie Francis Photo by Matt "Spinner" Allen |
Friesen put some of the students into sleeping bags
immediately to warm them up and stave off hypothermia.
Several days earlier, Friesen had written in his private
journal: "Our first day in the field is drawing to a close
and it is brutally cold.... Hiking was not too bad, but ...
the cold was almost unbearable." And now, it was colder
than that, much colder. At Saranac Lake, some 25 miles
away, the recorded low was minus 31, and Friesen was fairly
sure that it had been even colder where his group was,
possibly minus 40 or below. As Friesen further noted in his
journal, "This course has been tough. One of the toughest
on me," because of his concern for his students, his wish
to deliver a stellar experience for everyone -- successful
ascents of winter mountains, fun times on the trail, warm
moments in the tents, lots of learning and growing and
maturing in the grip of nature. And here was nature, biting
back. Hard. "We have a beginner winter backpacking
course," he wrote, "and the temperatures could be
life-threatening if anything goes wrong.... Is this the
best way to teach leadership?" he wondered. "Is this course
accomplishing what it needs to or should?" On the day after Mount Marcy, Sleepy Bear remained in their sleeping bags until after 11 a.m. Then around 1 p.m., despite continued bitter cold, the team roused itself and snowshoed over Avalanche Pass and out onto frozen Avalanche Lake. The day, though severely cold, was brilliantly beautiful. Steep cliffs rise up on either side of Avalanche Lake, which occupies a cleft in the mountains, and in those surroundings, "Everyone just got lifted," says Howard Chang, one of Friesen's student instructors. "Just to be out and alive there was gorgeous. People had been bummed about not getting to the summit the day before, but this was an answer to that, a beautiful answer. It was spectacular and it will always be one of my greatest outdoor moments." Charged by the surroundings and thoroughly warmed up again, the group returned to their bivouac spot near Avalanche Pass. Here they spent a second, slightly less torturous, night. Then on the morning of Day 9, they headed north, in continuing extreme cold, aiming to rendezvous with Frozen Circus at the Adirondack Rock and River Lodge (pictured at right), with its four walls, roof, and well-functioning furnace.
|
|
The picturesque view from the rear of the
lodge (above). Photo by Matt "Spinner" Allen |
For Liz Pazdernik and the other members of Frozen Circus,
the lodge had felt good, very good, after the nights out in
the open, nights of frozen boots, fear of frostbite, and
five people jammed uncomfortably in a four-man tent. But
now, a second crisis in decision-making arose. Should they
stay where they were, comfortably indoors, or instead
venture out again, prove their mountaineering mettle? Most
of the students did want to go out again: The program as
originally designed called for another foray into the High
Peaks, this time without any instructors along, the
students keeping in touch with Friesen and the other staff
only by radio. Then, when Sleepy Bear also arrived at the
lodge, Friesen and his group joined the ongoing discussion.
Friesen and the instructors asked the students to spell out
the risks involved in going out again: What would it mean
to go to their "breaking point," Friesen asked, in
continued sub-minus 20-degree weather? What if somebody
suffered serious frostbite? How did you justify permanent
injury, possibly a friend's loss of fingers or toes, in the
name of your "personal search for limits"? All the talk of
the ethics of risk and adventure now became bracingly real.
(On those same days in mid-January, a group from Dartmouth
College had to litter out a participant from the same
region of the Adirondack High Peaks -- the point, as
Friesen's students came to realize, was that any
unexpected development could become life-threatening in
such cold.) Reluctantly -- but with a lot of good discussion and "process" -- the group at last decided to cut the trip short. It would not be 14 days long, it would only be 10 days. They consoled themselves with the promise, however, of a session of ice climbing instruction in nearby Keene Valley, where, as it happened, the yearly Adirondack Mountain Festival was under way. But the chief ice climbing guide there, fearing frostbite in weather expected to be minus 12 or below, said no: In such conditions, the ice was too brittle and might shatter from the blow of an ice ax. Thus, a disappointing winter trip. Except that no one was disappointed.
|
|
After making the decision to evacuate, Frozen Circus
heads back to the Adirondack Rock and River
Lodge. Photo by Matt "Spinner" Allen |
"No, it was one of my best outdoor times," Howard Chang
says, "and I've been backpacking most of my life. I was
even an Eagle Scout. If the purpose was outdoor leadership
training, then this was beautifully designed.... Everyone
was definitely pushed to their limit, but no one went over
the limit, and that was because of the careful process.
Yeah, and it was fun, too. It was good to suffer!" Katy Juhaszova, a student participant who had never done this kind of camping, says that she "loved the opportunity to see things that I had never seen and really push myself physically and mentally -- to get myself out of my comfort zone and my routine. I came back so refreshed and awakened," she adds. "For that, it was invaluable. Also meeting other outdoors-oriented people from Hopkins, getting a better idea of what was out there for me to get involved in." And Emily Kumpel, one of the students hoping to become a Pre-Orientation leader: "I thought there was an excellent combination of outdoor skills, leadership training, and group development. I especially liked the chance to bond with the group," she says. "At first I thought having leaders of the day was completely unfair, as I didn't feel I could show my leadership when I was so unsure of what I was doing. But as the course went on I realized what a true test of leadership that was and how essential the process is to learning. Leading when I had no idea what was going on ... became my favorite part of the course."
|
|
The view from Lower Wolfjaw. Photo by Matt "Spinner" Allen |
And Liz Pazdernik, who suffered so much from the cold, who
had to take the reins of leadership when she felt least up
to doing so: "I wouldn't take back a moment of it.... I now
know what it feels like to live outside in zero- to minus
30-degree weather," she says. "I'm now not worried about
hiking for a few miles with a heavy pack, and I know how to
find my way around the woods with a map and compass…. Since
being back I have a new, more lasting sense of
confidence.... "I will never forget what it felt like to face the bottom of my strength -- to face all of my anxieties at once, particularly the fear of failure. I am already preparing myself for more trips. The next thing will be rock climbing.... I've committed myself to getting trained and certified as a rock climbing leader this spring. "Ah," she says, "the glow of a successful experience!" Robert Roper, a visiting associate professor in the Writing Seminars at Johns Hopkins, is the author of Fatal Mountaineer: The High Altitude Life and Death of Willi Unsoeld, American Himalayan Legend. Last fall, Roper was awarded the 2002 Boardman Tasker Prize, an honor given each year by the British Alpine Club for an outstanding contribution to mountain literature. |
|
The Johns Hopkins Magazine | The Johns Hopkins University |
3003 North Charles Street | Suite 100 | Baltimore, Maryland 21218 | Phone<PHONE_NUMBER> | Fax<PHONE_NUMBER> |