Brand new, and pretty useless right now. Find Brandon Martin-Anderson<EMAIL_ADDRESS>and tell him what you think!
A tool for effective dance gypsying.
A place to host a community history of how callers, bands, events, and dancers interacted and crossed paths, and how contra has spread and changed over time.
A place to moving dance organization off of Facebook and onto a place that doesn't exist explicitly to exploit community interactions for commercial gain.


Before your first colon hydrotherapy we will go over your Client Questionnaire. The best course of therapy will be recommended to you during this consultation. The frequency and number of colon hydrotherapy sessions you need will be affected by your response and our findings in the questionnaire. We will review together after each treatment to keep you updated on your progress.
Single Session:
One colon hydrotherapy session that is one hour long.
Mini Cleanse:
A course of 3 colon hydrotherapy sessions: Two days in a row and then one more within that week.
Longer Cleanse:
A course of 8 - 10 sessions: 2 the first week, 2 the second week, then once a week for the next four to six weeks. You can then move to a maintenance program of once a month or whatever fits you the best. The body and the mind require energy to perform daily tasks, in addition to coping with everyday work pressures and lifestyle demands, so this schedule might fit your time commitments better.
Note: Our office requires 48-hour postponement notice for new clients and 24 hours for already established clients. Otherwise the full price of the missed appointment will be charged. As a reminder, we text and e-mail according to your preference one day before your appointment to confirm the date and time. However, appointments are considered confirmed when the appointment is scheduled.


|
| | TelegramBotClient (String token, Client &sslPollClient, Client &sslPostClient, TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE) |
| | Constructor. More...
|
| |
| | TelegramBotClient (String token, Client &sslPollClient, Client &sslPostClient) |
| | Constructor. More...
|
| |
| | TelegramBotClient (String token, Client &sslPollClient) |
| | Constructor. More...
|
| |
| | ~TelegramBotClient () |
| | Destructor. More...
|
| |
| void | begin (TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE) |
| | Alias for setCallbacks following Arduino convention. More...
|
| |
| void | setCallbacks (TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE) |
| | Sets callbacks. More...
|
| |
| bool | loop () |
| | Handles client background tasks. More...
|
| |
| void | postMessage (long chatId, String text, TBCKeyBoard &keyBoard) |
| | Post a message. More...
|
| |
| void | postMessage (long chatId, String text) |
| | Post a message. More...
|
| |
| void | pollSuccess (JwcProcessError err, JsonObject &json) |
| | Callback called by JSONWebClient. More...
|
| |
| void | pollError (JwcProcessError err, Client *client) |
| | Callback called by JSONWebClient. More...
|
| |
| void | postSuccess (JwcProcessError err, JsonObject &json) |
| | Callback called by JSONWebClient. More...
|
| |
| void | postError (JwcProcessError err, Client *client) |
| | Callback called by JSONWebClient. More...
|
| |
|
|
static void | callbackPollSuccess (void *obj, JwcProcessError err, JsonObject &json) |
| |
|
static void | callbackPollError (void *obj, JwcProcessError err, Client *client) |
| |
|
static void | callbackPostSuccess (void *obj, JwcProcessError err, JsonObject &json) |
| |
|
static void | callbackPostError (void *obj, JwcProcessError err, Client *client) |
| |
◆ TelegramBotClient() [1/3]
Constructor.
Constructor, initializing all members including callbacks using different clients for posting and polling
- Parameters
-
| token | secure token for your bot provided by BotFather. |
| sslPollClient | SSL client used for polling messages from remote server |
| sslPostClient | SSL client used for posting messages to remote server |
| TBC_CALLBACK_RECEIVE_SIGNATURE | Callback called on receiving a message |
| TBC_CALLBACK_ERROR_SIGNATURE | Callback called on error while receiving |
◆ TelegramBotClient() [2/3]
| TelegramBotClient::TelegramBotClient |
( |
String |
token, |
|
|
Client & |
sslPollClient, |
|
|
Client & |
sslPostClient |
|
) |
| |
|
inline |
Constructor.
Constructor, initializing only members no callbacks using different clients for posting and polling
- Parameters
-
| token | secure token for your bot provided by BotFather. |
| sslPollClient | SSL client used for polling messages from remote server |
| sslPostClient | SSL client used for posting messages to remote server |
◆ TelegramBotClient() [3/3]
| TelegramBotClient::TelegramBotClient |
( |
String |
token, |
|
|
Client & |
sslPollClient |
|
) |
| |
|
inline |
Constructor.
Constructor, initializing only members no callbacks using the same client for posting and polling
- Parameters
-
| token | secure token for your bot provided by BotFather. |
| sslPollClient | SSL client used for polling messages from remote server |
| sslPostClient | SSL client used for posting messages to remote server |
◆ ~TelegramBotClient()
| TelegramBotClient::~TelegramBotClient |
( |
| ) |
|
◆ begin()
Alias for setCallbacks following Arduino convention.
- Parameters
-
| [in] | TBC_CALLBACK_RECEIVE_SIGNATURE | Callback called on receiving a message |
| [in] | TBC_CALLBACK_ERROR_SIGNATURE | Callback called on error while receiving |
- Returns
- Nothing
Alias for setCallbacks following Arduino convention sets callbacks
◆ loop()
| bool TelegramBotClient::loop |
( |
| ) |
|
Handles client background tasks.
- Returns
- Return true is an action was needed and performed
Handles client background tasks, shall be calles in every main loop()
◆ pollError()
Callback called by JSONWebClient.
- Parameters
-
| [in] | err | Error Code from JwcProcessError |
| [in] | client | Client that causes the problem. |
- Returns
- Nothing
This is an internal method called by underlying JSONWebClient
- Note
- Do not call this method.
◆ pollSuccess()
| void TelegramBotClient::pollSuccess |
( |
JwcProcessError |
err, |
|
|
JsonObject & |
json |
|
) |
| |
Callback called by JSONWebClient.
- Parameters
-
| [in] | err | Error Code from JwcProcessError |
| [in] | json | JsonObject generated by ArduinoJSON |
- Returns
- Nothing
This is an internal method called by underlying JSONWebClient
- Note
- Do not call this method.
◆ postError()
Callback called by JSONWebClient.
- Parameters
-
| [in] | err | Error Code from JwcProcessError |
| [in] | client | Client that causes the problem. |
- Returns
- Nothing
This is an internal method called by underlying JSONWebClient
- Note
- Do not call this method.
◆ postMessage() [1/2]
| void TelegramBotClient::postMessage |
( |
long |
chatId, |
|
|
String |
text, |
|
|
TBCKeyBoard & |
keyBoard |
|
) |
| |
Post a message.
- Parameters
-
| [in] | chatId | Id of the chat the message shall be sent to. |
| [in] | text | Text of the message |
| [in] | keyBoard | Optional. Keyboard to be send with this message. |
- Returns
- Nothing
Post a message to a given chat. (Only text messages and custom keyboards are supported, yet.)
◆ postMessage() [2/2]
| void TelegramBotClient::postMessage |
( |
long |
chatId, |
|
|
String |
text |
|
) |
| |
|
inline |
Post a message.
- Parameters
-
| [in] | chatId | Id of the chat the message shall be sent to. |
| [in] | text | Text of the message |
- Returns
- Nothing
Post a message to a given chat. (Only text messages and custom keyboards are supported, yet.)
◆ postSuccess()
| void TelegramBotClient::postSuccess |
( |
JwcProcessError |
err, |
|
|
JsonObject & |
json |
|
) |
| |
Callback called by JSONWebClient.
- Parameters
-
| [in] | err | Error Code from JwcProcessError |
| [in] | json | JsonObject generated by ArduinoJSON |
- Returns
- Nothing
This is an internal method called by underlying JSONWebClient
- Note
- Do not call this method.
◆ setCallbacks()
Sets callbacks.
- Parameters
-
| [in] | TBC_CALLBACK_RECEIVE_SIGNATURE | Callback called on receiving a message |
| [in] | TBC_CALLBACK_ERROR_SIGNATURE | Callback called on error while receiving |
- Returns
- Nothing
sets callbacks for receiving message and error handling
◆ startPolling()
| void TelegramBotClient::startPolling |
( |
| ) |
|
|
private |
Starts polling.
- Returns
- Nothing
Starts the polling by open a http long call
◆ startPosting()
| void TelegramBotClient::startPosting |
( |
String |
Message | ) |
|
|
private |
Starts posting a message.
- Parameters
-
| [in] | The | Message to post as json string |
- Returns
- Nothing
Start the posting of a message by open a http post call
◆ LastUpdateId
| long TelegramBotClient::LastUpdateId = 0 |
|
private |
Id of last update, used to generate a call returning only messages more recent than the last received.
◆ Parallel
| bool TelegramBotClient::Parallel = false |
|
private |
Indicates if the client uses two underlying client objects allowing posting while keeping the poll call open in parallel.
◆ SslPollClient
Underlying client for polling.
◆ SslPostClient
Underlying client for posting. In case of parallel mode it uses the same Client object than SslPollClient
◆ TBC_CALLBACK_ERROR_SIGNATURE
| TelegramBotClient::TBC_CALLBACK_ERROR_SIGNATURE |
|
private |
◆ TBC_CALLBACK_RECEIVE_SIGNATURE
| TelegramBotClient::TBC_CALLBACK_RECEIVE_SIGNATURE |
|
private |
Callback called on receiving a message
◆ Token
| String TelegramBotClient::Token |
|
private |
Secure Token provided by BotFather
The documentation for this class was generated from the following files:


|
|---|
| And after these things I saw four angels standing on the four corners of the earth, holding the four winds of the earth, that the wind should not blow on the earth, nor on the sea, nor on any tree.
|
|---|
| ᎣᏂᏃ ᏅᎩ ᎢᏯᏂᏛ ᏗᏂᎧᎿᎭᏩᏗᏙᎯ ᎥᎦᏥᎪᎥᎩ ᏅᎩ ᏂᏚᏅᏏᏴ ᎡᎶᎯ ᏓᏂᏙᎬᎩ, ᏚᏂᏂᏴᏒᎩ ᎤᏃᎴ ᏅᎩ ᏂᏙᏗᎦᎶᏍᎬ ᎡᎶᎯ, ᎾᏍᎩ ᎤᏃᎸᏗᏱ ᏂᎨᏒᎾ ᎡᎶᎯ, ᎠᎴ ᎠᎺᏉᎯ, ᎠᎴ ᏕᏡᎬᏉ.
|
|---|
O-ni-no nv-gi i-ya-ni-dv di-ni-ka-hna-wa-di-do-hi v-ga-tsi-go-v-gi nv-gi ni-du-nv-si-yv e-lo-hi da-ni-do-gv-gi, du-ni-ni-yv-sv-gi u-no-le nv-gi ni-do-di-ga-lo-s-gv e-lo-hi, na-s-gi u-no-lv-di-yi ni-ge-sv-na e-lo-hi, a-le a-me-quo-hi, a-le de-tlu-gv-quo.
|
|---|
|
|---|
| And I saw another angel ascending from the east, having the seal of the living God: and he cried with a loud voice to the four angels, to whom it was given to hurt the earth and the sea,
|
|---|
| ᎠᎴ ᏅᏩᏓᎴ ᏗᎧᎿᎭᏩᏗᏙᎯ ᎥᏨᎪᎥᎩ ᏗᎧᎸᎬ ᎢᏗᏢ ᏧᏳᎵᏌᎳᏓᏩᏗᏒᎩ, ᎬᏂᏛ ᎤᏁᎳᏅᎯ ᎤᏤᎵ ᎤᏓᏰᎸᏙᏗ ᎨᏒ ᎦᏁᎲᎩ; ᎠᎴ ᎠᏍᏓᏯ ᏚᎵᏍᏓᏁᎸᎩ ᏅᎩ ᎢᏯᏂᏛ ᏗᏂᎧᎿᎭᏩᏗᏙᎯ, ᎾᏍᎩ ᎨᏥᏁᎸᎯ ᏥᎨᏎ ᎪᎱᏍᏗ ᎤᏅᏁᏗᏱ ᎡᎶᎯ ᎠᎴ ᎠᎺᏉᎯ,
|
|---|
A-le nv-wa-da-le di-ka-hna-wa-di-do-hi v-tsv-go-v-gi di-ka-lv-gv i-di-tlv tsu-yu-li-sa-la-da-wa-di-sv-gi, gv-ni-dv U-ne-la-nv-hi u-tse-li u-da-ye-lv-do-di ge-sv ga-ne-hv-gi; a-le a-s-da-ya du-li-s-da-ne-lv-gi nv-gi i-ya-ni-dv di-ni-ka-hna-wa-di-do-hi, na-s-gi ge-tsi-ne-lv-hi tsi-ge-se go-hu-s-di u-nv-ne-di-yi e-lo-hi a-le a-me-quo-hi,
|
|---|
|
|---|
| Saying, Hurt not the earth, neither the sea, nor the trees, till we have sealed the servants of our God in their foreheads.
|
|---|
| ᎯᎠ ᏂᎨᏥᏪᏎᎸᎩ, ᏞᏍᏗ ᎪᎱᏍᏗ ᎢᏨᏁᎸᎩ ᎡᎶᎯ, ᎠᎴ ᎠᎺᏉᎯ, ᎠᎴ ᏕᏡᎬᎢ, ᎬᏂ ᏗᏗᏰᎸᏔᏅᎯ ᎨᏎᏍᏗ ᏗᏂᎬᏓᎨᏂ ᎢᎦᏁᎳᏅᎯ ᏧᏤᎵ ᏧᏅᏏᏓᏍᏗ.
|
|---|
Hi-a ni-ge-tsi-we-se-lv-gi, Tle-s-di go-hu-s-di i-tsv-ne-lv-gi e-lo-hi, a-le a-me-quo-hi, a-le de-tlu-gv-i, gv-ni di-di-ye-lv-ta-nv-hi ge-se-s-di di-ni-gv-da-ge-ni I-ga-ne-la-nv-hi tsu-tse-li tsu-nv-si-da-s-di.
|
|---|
|
|---|
| And I heard the number of them which were sealed: and there were sealed an hundred and forty and four thousand of all the tribes of the children of Israel.
|
|---|
| ᎠᎴ ᎠᏆᏛᎦᏅᎩ ᎾᏂᎥ ᎾᏍᎩ ᏗᎨᏥᏰᎸᎳᏅᎯ ᎨᏒᎢ; ᎠᎴ ᎠᏍᎪᎯᏧᏈ ᏅᎦᏍᎪᎯ ᏅᎩᎦᎵ ᎢᏯᎦᏴᎵ ᎾᏂᎥᎩ ᏕᎨᏥᏰᎸᏔᏅᎩ ᏂᎦᏛ ᎢᏏᎵ ᏧᏪᏥ ᏓᏂᎳᏍᏓᎳᏩᏗᏒᎢ.
|
|---|
A-le a-qua-dv-ga-nv-gi na-ni-v na-s-gi di-ge-tsi-ye-lv-la-nv-hi ge-sv-i; a-le a-s-go-hi-tsu-qui nv-ga-s-go-hi nv-gi-ga-li i-ya-ga-yv-li na-ni-v-gi de-ge-tsi-ye-lv-ta-nv-gi ni-ga-dv I-si-li tsu-we-tsi da-ni-la-s-da-la-wa-di-sv-i.
|
|---|
|
|---|
| Of the tribe of Juda were sealed twelve thousand. Of the tribe of Reuben were sealed twelve thousand. Of the tribe of Gad were sealed twelve thousand.
|
|---|
| ᏧᏓ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᏔᏅᎩ. ᎷᏈᏂ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᏔᏅᎩ. ᎦᏗ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᏔᏅᎩ.
|
|---|
Tsu-da a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-ta-nv-gi. Lu-qui-ni a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-ta-nv-gi. Ga-di a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-ta-nv-gi.
|
|---|
|
|---|
| Of the tribe of Aser were sealed twelve thousand. Of the tribe of Nepthalim were sealed twelve thousand. Of the tribe of Manasses were sealed twelve thousand.
|
|---|
| ᎠᏒ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᏔᏅᎩ. ᏁᏈᏓᎵ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᏔᏅᎩ. ᎻᎾᏒ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᏔᏅᎩ.
|
|---|
A-sv a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-ta-nv-gi. Ne-qui-da-li a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-ta-nv-gi. Mi-na-sv a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-ta-nv-gi.
|
|---|
|
|---|
| Of the tribe of Simeon were sealed twelve thousand. Of the tribe of Levi were sealed twelve thousand. Of the tribe of Issachar were sealed twelve thousand.
|
|---|
| ᏏᎻᏯᏂ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎷᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᏔᏅᎩ. ᎵᏫ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᏔᏅᎩ ᎢᏏᎦ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᎳᏅᎩ.
|
|---|
Si-mi-ya-ni a-ni-la-s-da-lv di-go-tsa-le-dv ta-lu-du i-ya-ga-yv-li de-ge-tsi-ye-lv-ta-nv-gi. Li-wi a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-ta-nv-gi I-si-ga a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-la-nv-gi.
|
|---|
|
|---|
| Of the tribe of Zabulon were sealed twelve thousand. Of the tribe of Joseph were sealed twelve thousand. Of the tribe of Benjamin were sealed twelve thousand.
|
|---|
| ᏤᏈᎳᏂ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᏔᏅᎩ. ᏦᏩ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᏔᏅᎩ. ᏇᏂ ᎠᏂᎳᏍᏓᎸ ᏗᎪᏣᎴᏛ ᏔᎳᏚ ᎢᏯᎦᏴᎵ ᏕᎨᏥᏰᎸᎳᏅᎩ.
|
|---|
Tse-qui-la-ni a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-ta-nv-gi. Tso-wa a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-ta-nv-gi. Que-ni a-ni-la-s-da-lv di-go-tsa-le-dv ta-la-du i-ya-ga-yv-li de-ge-tsi-ye-lv-la-nv-gi.
|
|---|
|
|---|
| After this I beheld, and, lo, a great multitude, which no man could number, of all nations, and kindreds, and people, and tongues, stood before the throne, and before the Lamb, clothed with white robes, and palms in their hands;
|
|---|
| ᎣᏂᏃ ᎢᏴᏛ ᏓᏆᎧᎾᏅᎩ, ᎠᎴ ᎬᏂᏳᏉ, ᎤᏂᏧᏈᏍᏗ ᏴᏫ [ᏫᏕᏥᎪᎥᎩ] ᎾᏍᎩ ᎩᎶ ᏗᎬᏩᏎᎰᎲᏍᏗ ᏂᎨᏒᎾ, ᎾᏍᎩ ᏅᏓᏳᎾᏙᏣᎴᏛ ᎾᏂᎥ ᎤᎾᏓᏤᎵᏛ ᏴᏫ ᏓᏁᏩᏗᏒᎢ, ᎠᎴ ᎪᎱᏍᏗ ᏗᎾᏓᏛᎿᎭᎨᏒᎢ, ᎠᎴ ᏴᏫ ᏓᏁᏩᏗᏒᎢ ᎠᎴ ᏧᏓᎴᏅᏛ ᏗᏂᏬᏂᏍᎩ ᎨᏒᎢ, ᎠᏂᏙᎾᎥᎩ ᎦᏍᎩᎸ ᎢᎬᏱᏗᏢ, ᎠᎴ ᎤᏃᏕᎾ ᎠᎩᎾ ᏄᏛᏅ ᎢᎬᏱᏗᏢ, ᏧᏁᎬ ᏚᎾᏄᏩᎥᎩ, ᎠᎴ ᏗᏂᏁᎲᎩ ᏧᏪᏲᏔ ᏧᎦᏄᏓᏅᎯᏛ;
|
|---|
O-ni-no i-yv-dv da-qua-ka-na-nv-gi, a-le gv-ni-yu-quo, u-ni-tsu-qui-s-di yv-wi [wi-de-tsi-go-v-gi] na-s-gi gi-lo di-gv-wa-se-ho-hv-s-di ni-ge-sv-na, na-s-gi nv-da-yu-na-do-tsa-le-dv na-ni-v u-na-da-tse-li-dv yv-wi da-ne-wa-di-sv-i, a-le go-hu-s-di di-na-da-dv-hna ge-sv-i, a-le yv-wi da-ne-wa-di-sv-i a-le tsu-da-le-nv-dv di-ni-wo-ni-s-gi ge-sv-i, a-ni-do-na-v-gi ga-s-gi-lv i-gv-yi-di-tlv, a-le U-no-de-na a-gi-na nu-dv-nv i-gv-yi-di-tlv, tsu-ne-gv du-na-nu-wa-v-gi, a-le di-ni-ne-hv-gi tsu-we-yo-ta tsu-ga-nu-da-nv-hi-dv;
|
|---|
|
|---|
| And cried with a loud voice, saying, Salvation to our God which sitteth upon the throne, and unto the Lamb.
|
|---|
| ᎠᎴ ᎠᏍᏓᏯ ᎤᏁᎷᏅᎩ, ᎯᎠ ᏄᏂᏪᏒᎩ, ᎠᎵᏍᏕᎸᏙᏗ ᎨᏒ ᎣᎦᏁᎳᏅᎯ ᎧᏁᎢᏍᏓᏁᏗ ᎨᏎᏍᏗ ᎾᏍᎩ ᎦᏍᎩᎸ ᏧᏬᎳ, ᎠᎴ ᎤᏃᏕᎾ ᎠᎩᎾ ᎧᏁᎢᏍᏓᏁᏗ ᎨᏎᏍᏗ.
|
|---|
A-le a-s-da-ya u-ne-lu-nv-gi, hi-a nu-ni-we-sv-gi, A-li-s-de-lv-do-di ge-sv O-ga-ne-la-nv-hi ka-ne-i-s-da-ne-di ge-se-s-di na-s-gi ga-s-gi-lv tsu-wo-la, a-le U-no-de-na a-gi-na ka-ne-i-s-da-ne-di ge-se-s-di.
|
|---|
|
|---|
| And all the angels stood round about the throne, and about the elders and the four beasts, and fell before the throne on their faces, and worshipped God,
|
|---|
| ᎠᎴ ᏂᎦᏛ ᏗᏂᎧᎿᎭᏩᏗᏙᎯ ᎦᏍᎩᎸ ᏚᎾᏚᏫᏍᏛᎩ ᏓᏂᏙᎬᎩ, ᎠᎴ ᏧᎾᏛᏐᏅᎯ ᎠᎴ ᏅᎩ ᎢᏯᏂᏛ ᏗᏅᏃᏛ ᏄᎾᏛᏅᎢ, ᎠᎴ ᎦᏍᎩᎸ ᎢᎬᏱᏗᏢ ᏚᎾᎵᏯᏍᏚᏅᎩ, ᎠᎴ ᎤᏁᎳᏅᎯ ᎤᎾᏓᏙᎵᏍᏓᏁᎸᎩ;
|
|---|
A-le ni-ga-dv di-ni-ka-hna-wa-di-do-hi ga-s-gi-lv du-na-du-wi-s-dv-gi da-ni-do-gv-gi, a-le tsu-na-dv-so-nv-hi a-le nv-gi i-ya-ni-dv di-nv-no-dv nu-na-dv-nv-i, a-le ga-s-gi-lv i-gv-yi-di-tlv du-na-li-ya-s-du-nv-gi, a-le U-ne-la-nv-hi u-na-da-do-li-s-da-ne-lv-gi;
|
|---|
|
|---|
| Saying, Amen: Blessing, and glory, and wisdom, and thanksgiving, and honour, and power, and might, be unto our God for ever and ever. Amen.
|
|---|
| ᎯᎠ ᎾᏂᏪᏍᎬᎩ, ᎡᎺᏅ; ᎣᏍᏛ ᎡᏣᏁᎢᏍᏓᏁᏗ ᎨᏒᎢ, ᎠᎴ ᎡᏣᎸᏉᏙᏗ ᎨᏒᎢ, ᎠᎴ ᎯᎦᏔᎾᎢᏳ ᎨᏒᎢ, ᎠᎴ ᎡᏣᎵᎮᎵᏤᏗ ᎨᏒᎢ, ᎠᎴ ᎡᏣᎸᏉᏗᏳ ᎨᏒᎢ, ᎠᎴ ᏣᎵᏂᎩᏗᏳ ᎨᏒᎢ, ᎠᎴ ᏣᎵᏂᎪᎯᏍᏗ ᎨᏒᎢ, ᏣᏤᎵ ᎨᏎᏍᏗ ᏍᎩᏯᏁᎳᏅᎯ ᏂᎪᎯᎸ ᎠᎴ ᏂᎪᎯᎸᎢ. ᎡᎺᏅ.
|
|---|
Hi-a na-ni-we-s-gv-gi, E-me-nv; O-s-dv e-tsa-ne-i-s-da-ne-di ge-sv-i, a-le e-tsa-lv-quo-do-di ge-sv-i, a-le hi-ga-ta-na-i-yu ge-sv-i, a-le e-tsa-li-he-li-tse-di ge-sv-i, a-le e-tsa-lv-quo-di-yu ge-sv-i, a-le tsa-li-ni-gi-di-yu ge-sv-i, a-le tsa-li-ni-go-hi-s-di ge-sv-i, tsa-tse-li ge-se-s-di S-gi-ya-ne-la-nv-hi ni-go-hi-lv a-le ni-go-hi-lv-i. E-me-nv.
|
|---|
|
|---|
| And one of the elders answered, saying unto me, What are these which are arrayed in white robes? and whence came they?
|
|---|
| ᎠᏂᏴᏫᏃ ᎾᏍᎩ Ꮎ ᏧᎾᏛᏐᏅᎯ ᎨᏒ ᎤᏁᏨᎩ, ᎯᎠ ᎾᎩᏪᏎᎸᎩ, ᎦᎪ ᎯᎠ Ꮎ ᏧᏁᎬ ᏧᎾᏄᏩᎢ ᏥᎩ? ᎠᎴ ᎭᏢ ᏧᎾᏓᎴᏁᎢ?
|
|---|
A-ni-yv-wi-no na-s-gi na tsu-na-dv-so-nv-hi ge-sv u-ne-tsv-gi, hi-a na-gi-we-se-lv-gi, Ga-go hi-a na tsu-ne-gv tsu-na-nu-wa-i tsi-gi? A-le ha-tlv tsu-na-da-le-ne-i?
|
|---|
|
|---|
| And I said unto him, Sir, thou knowest. And he said to me, These are they which came out of great tribulation, and have washed their robes, and made them white in the blood of the Lamb.
|
|---|
| ᎯᎠᏃ ᏅᏥᏪᏎᎸᎩ, ᏣᎬᏫᏳᎯ ᏂᎯ ᎯᎦᏔᎭ. ᎯᎠᏃ ᎾᎩᏪᏎᎸᎩ, ᎯᎠᏍᎩᏂ Ꮎ ᎤᏣᏘ ᎠᎩᎵᏯ ᎨᏒ ᏅᏓᏳᏂᎶᏒᎯ, ᎠᎴ ᎤᏃᏕᎾ ᎠᎩᎾ ᎤᎩᎬᏱ ᏧᏅᎩᎶᎥᎯ ᏧᎾᏄᏬ ᎠᎴ ᏧᏁᎬ ᎢᏧᏅᏁᎸᎯ.
|
|---|
Hi-a-no nv-tsi-we-se-lv-gi, Tsa-gv-wi-yu-hi ni-hi hi-ga-ta-ha. Hi-a-no na-gi-we-se-lv-gi, Hi-a-s-gi-ni na u-tsa-ti a-gi-li-ya ge-sv nv-da-yu-ni-lo-sv-hi, a-le U-no-de-na a-gi-na u-gi-gv-yi tsu-nv-gi-lo-v-hi tsu-na-nu-wo a-le tsu-ne-gv i-tsu-nv-ne-lv-hi.
|
|---|
|
|---|
| Therefore are they before the throne of God, and serve him day and night in his temple: and he that sitteth on the throne shall dwell among them.
|
|---|
| ᎾᏍᎩ ᎢᏳᏍᏗ ᎤᏁᎳᏅᎯ ᎤᏤᎵ ᎦᏍᎩᎸ ᎢᎬᏱᏗᏢ ᏄᎾᏛᏅ, ᎠᎴ ᎪᎱᏍᏗ ᎬᏩᏛᏁᎭ ᎤᏤᎵ ᏗᎦᎳᏫᎢᏍᏗᏱ, ᎢᎦ ᎠᎴ ᎡᏃᏱ ᏗᎬᏩᏜᏓᏍᏗ; ᎠᎴ ᎾᏍᎩ Ꮎ ᎦᏍᎩᎸ ᎤᏬᎵ ᎠᏁᎲ ᎡᎮᏍᏗ.
|
|---|
Na-s-gi i-yu-s-di U-ne-la-nv-hi u-tse-li ga-s-gi-lv i-gv-yi-di-tlv nu-na-dv-nv, a-le go-hu-s-di gv-wa-dv-ne-ha u-tse-li di-ga-la-wi-i-s-di-yi, i-ga a-le e-no-yi di-gv-wa-dla-s-di; a-le na-s-gi na ga-s-gi-lv u-wo-li a-ne-hv e-he-s-di.
|
|---|
|
|---|
| They shall hunger no more, neither thirst any more; neither shall the sun light on them, nor any heat.
|
|---|
| ᎿᎭᏉ ᎥᏝ ᎠᎪᏄ ᏧᏂᏲᏏᏐᏗ ᏱᎨᏎᏍᏗ, ᎥᏝ ᎠᎴ ᎿᎭᏉ ᏧᏂᏔᏕᎪᏗ ᏱᎨᏎᏍᏗ; ᎥᏝ ᎠᎴ ᏅᏙ ᎢᎦ ᎡᎯ ᎤᏗᎴᎩ ᏳᏂᎦᎵᏍᎨᏍᏗ, ᎠᎴ ᎪᎱᏍᏗ ᎤᏗᎴᎩ ᎨᏒᎢ.
|
|---|
Hna-quo v-tla a-go-nu tsu-ni-yo-si-so-di yi-ge-se-s-di, v-tla a-le hna-quo tsu-ni-ta-de-go-di yi-ge-se-s-di; v-tla a-le nv-do i-ga e-hi u-di-le-gi yu-ni-ga-li-s-ge-s-di, a-le go-hu-s-di u-di-le-gi ge-sv-i.
|
|---|
|
|---|
| For the Lamb which is in the midst of the throne shall feed them, and shall lead them unto living fountains of waters: and God shall wipe away all tears from their eyes.
|
|---|
| ᎤᏃᏕᎾᏰᏃ ᎠᎩᎾ ᎾᏍᎩ Ꮎ ᎦᏍᎩᎸ ᎠᏰᎵ ᏥᏄᏛᏅ ᏓᏳᏁᎶᎵ ᎠᎴ ᏙᏓᏳᎾᏘᏁᏏ ᎠᎹ ᎬᏂᏛ ᎠᎹ ᏙᏗᎦᏄᎪᎬᎢ; ᎠᎴ ᎤᏁᎳᏅᎯ ᏙᏓᎦᏅᎦᎸᎯ ᏂᎦᏛ ᏚᏂᎦᏌᏬᎸᎢ.
|
|---|
U-no-de-na-ye-no a-gi-na na-s-gi na ga-s-gi-lv a-ye-li tsi-nu-dv-nv da-yu-ne-lo-li a-le do-da-yu-na-ti-ne-si a-ma gv-ni-dv a-ma do-di-ga-nu-go-gv-i; a-le U-ne-la-nv-hi do-da-ga-nv-ga-lv-hi ni-ga-dv du-ni-ga-sa-wo-lv-i.
|
|---|


qemu-2.1.0
KVM Prerequisites
Before building qemu, check to see
if your processor supports Virtualization Technology (VT):
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
If you get any output, you have VT technology (vmx for Intel
processors and svm for AMD processors). You then need to go into
your system BIOS and ensure it is enabled. After enabing, reboot
back to your LFS instance.
Kernel Configuration
Enable the following options in the kernel configuration and
recompile the kernel if necessary:
Virtualization: --->
Kernel-based Virtual Machine (KVM) support: Y or M
KVM for Intel processors support: Y or M
KVM for AMD processors support: Y or M
The Intel or AMD settings are not both required, but the one
matching your system processor is required.
For networking, check that bridge-utils-1.5 is installed and the
following options in the kernel configuration are enabled:
Device Drivers --->
Network device support --->
Universal TUN/TAP device driver support: Y or M
Installation of qemu
Install qemu by running the
following commands:
sed -e '/#include <sys\/capability.h>/ d' \
-e '/#include "virtio-9p-marshal.h"/ i#include <sys\/capability.h>' \
-i fsdev/virtfs-proxy-helper.c &&
./configure --prefix=/usr \
--sysconfdir=/etc \
--docdir=/usr/share/doc/qemu-2.1.0 \
--target-list=x86_64-softmmu &&
make
To run the built in tests, run make
V=1 check.
Now, as the root
user:
make install &&
[ -e /usr/lib/libcacard.so ] && chmod -v 755 /usr/lib/libcacard.so
You will need a dedicated group that will contain users (other than
root) allowed to access the KVM device. Add the group by running
the following command as the root
user:
groupadd -g 61 kvm
Add any users that might use the KVM device to that group:
usermod -a -G kvm <username>
You will also need to add a Udev rule so that the KVM device gets
correct permissions:
cat > /lib/udev/rules.d/65-kvm.rules << "EOF"
KERNEL=="kvm", GROUP="kvm", MODE="0660"
EOF
Note
For convenience you may want to create a symbolic link to run
qemu-system-x86_64:
ln -sv qemu-system-x86_64 /usr/bin/qemu
Command Explanations
sed -e '/#include ...
fsdev/virtfs-proxy-helper.c: Fixes qemu-2.1.0 to build with libcap-2.24.
--target-list=x86_64-softmmu
: This
switch limits the build target to the x86_64 architecture. For
other hardware emulation see the --target-list list in configure's help output. Omitting
this option will build all architectures.
--audio-drv-list=alsa
: This switch sets
the audio driver to ALSA. For other drivers see the
--audio-drv-list list in configure's help output. The
default audio driver is OSS.
Configuring qemu
To generate an image, run:
qemu-img create -f qcow2 vdisk.img 10G
Adjust the virtual disk size and image filename as desired. The
actual size of the file will be less than specified, but will
expand as it is used.
Note
The following instructions assume you have created the optional
symbolic link, qemu
. Additionally, you must
run qemu
from an
X Window System based terminal.
To install an operating system, download an iso of your choice or
use a pre-intalled cdrom device. For the purposes of this example,
use Fedora 16 that is downloaded as Fedora-16-x86_64-Live-LXDE.iso
in the current
directory. Run the following:
qemu -enable-kvm -hda vdisk.img \
-cdrom Fedora-16-x86_64-Live-LXDE.iso \
-boot d \
-m 384
Follow the normal installation procedures for the chosen
distribution. The -boot option specifies the boot order of drives
as a string of drive letters. Valid drive letters are: a, b (floppy
1 and 2), c (first hard disk), d (first CD-ROM). The -m option is
the amount of memory to use for the virtual machine. If you have
sufficient memory (2G or more), 1G is a reasonable value. For
computers with 512MB of RAM it's safe to use -m 192, or even -m 128
(the default). The -enable-kvm option allows for hardware
acceleeration. Without this switch, the emulation is relatively
slow.
To run the newly installed operating system, run:
qemu -enable-kvm vdisk.img -m 384
To add networking to the instance add "-net nic -net user" to the
command above. qemu provides a DHCP server for the VM and,
depending on the client system, sets up networking though the host.
One problem with the above networking solution is that it does not
provide the ability to connect with the local network. To do that,
there are several additional steps that need to be done, all as the
root
user:
-
Set up bridging using the section called “Network
Bridge”.
-
Allow the host system to forward IP packets.
sysctl -w net.ipv4.ip_forward=1
To make this permanent, add the command to /etc/sysctl.d/60-net-forward.conf:
cat >> /etc/sysctl.d/60-net-forward.conf << "EOF"
net.ipv4.ip_forward=1
EOF
-
Create scripts for qemu to attach the client network device,
usually visible as tap0, to the host bridge.
cat > /etc/qemu-ifup << "EOF"
#!/bin/bash
switch=br0
if [ -n "$1" ]; then
# Add new tap0 interface to bridge
/usr/sbin/brctl addif $switch $1
else
echo "Error: no interface specified"
exit 1
fi
exit 0
EOF
chmod +x /etc/qemu-ifup
cat > /etc/qemu-ifdown << "EOF"
#!/bin/bash
switch=br0
if [ -n "$1" ]; then
# Remove tap0 interface from bridge
/usr/sbin/brctl delif $switch $1
else
echo "Error: no interface specified"
exit 1
fi
exit 0
EOF
chmod +x /etc/qemu-ifdown
-
Start qemu with "-net nic -net tap" options.
-
If a connection, such as ssh, from the local network to the
client VM is desired, the client should probably be
configured with a static IP address.
Contents
Installed Programs:
qemu-ga, qemu-img, qemu-io, qemu-nbd,
qemu-system-x86_64, virtfs-proxy-helper, and vscclient
Installed Library:
libcacard.so
Installed Directories:
/etc/qemu, /usr/include/cacard,
/usr/lib/qemu, /usr/share/qemu, and
/usr/share/doc/qemu-2.1.0
Short Description
|
qemu-ga
|
implements support for QMP (QEMU Monitor Protocol)
commands and events that terminate and originate
respectively within the guest using an agent built as
part of QEMU.
|
|
qemu-img
|
provides commands to manage QEMU disk images.
|
|
qemu-io
|
is a diagnostic and manipulation program for (virtual)
memory media. It is still at an early stage of
development.
|
|
qemu-nbd
|
exports Qemu disk images using the QEMU Disk Network
Block Device (NBD) protocol.
|
|
qemu-system-x86_64
|
is the QEMU PC System emulator.
|
|
libcacard.so
|
is the Virtual Smart Card Emulator library.
|
Last updated on 2014-09-21 21:10:06 -0700


Our efforts to connect with our local and engineering community.
Each year, in conjuction with our school's FTC team, the Basement Lions, #4236, we run a booth at our school's homecoming. It is a great opportunity for us to reach talk to alumnus, as well as allow kids to play around with our robots. It is a great opportunity for us to reach out to our local community. We love running the booth each year, as it allows us to introduce kids to robotics.
In the fall of 2015, we ran a booth at a local Barnes & Noble bookstore, allowing kids and adults alike to interact with several ranger bots of ours and to learn about FIRST programs. This was our first outreach opportunity as an FRC team.


Rating: 9/10 - ALTERNATIVE RATING: B
Oliver Stone's latest feature is the last one standing in the long line of biographies of American presidents. It's a three-hour long saga about the life of one of the most hated and misunderstood leaders of the 20th century.
Stone doesn't hold back anything as he digs deep inside politics and legal maneuvers of the White House. The director holds Nixon responsible for everything he has done. At the same time he creates a very human character, a brilliant and tortured man that is caught in the dirty game of politics, which is here pictured as a wild animal. He is simply trying to tame it. But the occasional switch to the raging sky and the clouds swiftly fleeing over the White House as events run ahead of the president's ability to control them. Stone doesn't in any way apologize for Nixon. He blames not only Nixon's own character flaws but also the Imperial Presidency itself, the system that, once set in motion, behaves with a mindlessness of its own.
"Nixon" is a modern Shakespeare story - a saga about a ruler destroyed by his fatal flaws. There's something almost majestic about the process: As Nixon goes down in this film, there is no gloating, but a watery sigh, as of a great ship sinking.
Sir Anthony Hopkins is staggering and plays Nixon with incredible honesty and understanding, creating a very emotional picture of the 37th American President. Joan Allen's magnificent and captivating performance is certainly worth an Oscar statuette. She is strong and loyal as Mrs. Nixon. The rest of the cast is equally magnificent, including: James Woods, J. T. Walsh, Paul Sorvino, Ed Harris and Bob Hoskins. Everyone does a serious and demanding job, no one are disappointing.
Stone never loses focus and his direction is steddy, honest and determined. He is displaying the historical facts and at the same time concentrating at the human element. At times he is showing to black and white showing flashbacks from Nixon's youth and childhood. The flashy editing by Brian Berdan and Frank Corwin, Robert Richardson's rich cinematography and John Williams' musical score create a hectic and bizarre atmosphere.
The film's only fault is that it's a bit tiering and overloaded with too much political material and legal maneuvers. Still it's an honest and captivating - a solid piece of movie making.
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


obsolete;time nixie clock
obsolete;time is a desk clock using Nixie tubes as digital indicator. We are tackling the challenge that is designing and building a product ready for production! Here are some design choices:
| 1 | IN-12 Russian Nixie Tubes |
| 2 | Minimalistic |
| 3 | Made of Premium materials |
| 4 | No buttons petruding |
| 5 | Smartphone APP and BLE |
Prototype build
BOM
Hardware is made up of multiple sub-systems listed bellow, each in charge of an important function
| 1 | ATmega 328 μController | The micro-controller runs tho software controlling the clock |
| 2 | DS1307 RTC | The real time clock is in charge of keeping correct time, even when power loss |
| 3 | IN-12 Russian Nixie tubes | Nixie tube indicator manifactured in the 60s |
| 4 | Bluetooth module | Wireless gateway to give instructions to the clock |
| 5 | High voltage generator | Nixie tube require ~170v to operate, as such a separate power supply is needed |


BomberCat
Here is a list of all class members with links to the classes they belong to:
- a -
addBomb() :
Map
alive :
Player
Application() :
Application
- b -
Bomb() :
Bomb
bomb_queue :
Player
bomb_size :
Bomb
,
Player
bombExplosion() :
Map
bombs_active :
Player
- c -
checkBoxesLeft() :
ComputerPlayer
checkPlayers() :
Explosion
claimBoost() :
Player
cleanUp() :
TextureManager
col :
Bomb
ComputerPlayer() :
ComputerPlayer
Coordinates() :
Coordinates
- d -
dead_player_texture :
Player
death() :
Player
destroyObject() :
Map
destroyObjects() :
Explosion
draw() :
Explosion
,
TextureManager
drawMap() :
Map
- e -
end_time :
Explosion
expl_cross_texture :
Map
expl_horizontal_texture :
Map
expl_vertical_texture :
Map
Explosion() :
Explosion
explosion_time :
Bomb
- f -
findLeastDangerousTile() :
ComputerPlayer
findNearestSafeTile() :
ComputerPlayer
findSafeToBombTile() :
ComputerPlayer
font :
TextureManager
- g -
Game() :
Game
gameOver() :
Game
generateBooster() :
Map
getCoords2D() :
Player
getCurrentMap() :
ComputerPlayer
getExplosionTime() :
Bomb
getGameState() :
Game
getName() :
Player
getPath() :
ComputerPlayer
getScore() :
Player
getTile2D() :
Player
- h -
handleEvents() :
Game
hide() :
ComputerPlayer
HumanPlayerArrows() :
HumanPlayerArrows
HumanPlayerWASD() :
HumanPlayerWASD
- i -
init() :
TextureManager
initialize1p() :
Game
initialize2p() :
Game
isAlive() :
Player
isArrow() :
Game
isBomb() :
ComputerPlayer
isBooster() :
Map
isBox() :
ComputerPlayer
isSteppable() :
ComputerPlayer
,
Map
isValidChar() :
FileManager
isWASD() :
Game
isWood() :
Map
- l -
loadHighScore() :
FileManager
loadMap() :
FileManager
loadTexture() :
TextureManager
- m -
map :
Map
Map() :
Map
max_bombs :
Player
move() :
ComputerPlayer
,
HumanPlayerArrows
,
HumanPlayerWASD
,
Player
moveDown() :
ComputerPlayer
moveLeft() :
ComputerPlayer
moveRight() :
ComputerPlayer
moveTowards() :
ComputerPlayer
moveUp() :
ComputerPlayer
my_map :
ComputerPlayer
my_tile :
ComputerPlayer
- n -
name_dest_rect :
Player
name_texture :
Player
nextToBox() :
ComputerPlayer
notVisited() :
ComputerPlayer
- o -
operator!=() :
Vector2D
operator==() :
Vector2D
- p -
path :
ComputerPlayer
places_to_bomb :
ComputerPlayer
plantBomb() :
ComputerPlayer
,
Player
Player() :
Player
player_dest_rect :
Player
player_name :
Player
player_src_rect :
Player
player_texture :
Player
players :
Game
pos_coords2D :
Player
posAlmostEqual() :
ComputerPlayer
- r -
RANDOM :
ComputerPlayer
REGULAR :
ComputerPlayer
render() :
Game
,
Player
renderer :
TextureManager
renderGameOverScreen() :
Game
renderMenuScreen() :
Game
renderScore() :
Player
row :
Bomb
- s -
safe() :
ComputerPlayer
saveHighScore() :
FileManager
score :
Player
score_dest_rect :
Player
score_length :
Player
score_texture :
Player
setNameTexture() :
Player
speed :
Player
start_pos :
Explosion
State :
ComputerPlayer
state :
ComputerPlayer
- t -
text_color :
TextureManager
textures :
TextureManager
- u -
update() :
Game
,
Map
,
Player
updateScoreLength() :
Player
updateScoreTexture() :
Player
- x -
x :
Coordinates
,
Vector2D
- y -
y :
Coordinates
,
Vector2D
- ~ -
~ComputerPlayer() :
ComputerPlayer
~Game() :
Game
~HumanPlayerArrows() :
HumanPlayerArrows
~HumanPlayerWASD() :
HumanPlayerWASD
~Map() :
Map
~Player() :
Player
Generated by
1.8.13


hey guys!
check out the different apps I've been learning to make with plain JavaScript and jQuery.
i've also been practicing using APIs with JSON.
you'll also see a webpage with Bootstrap (it's just a mockup page).
enjoy!
hey guys!
check out the different apps I've been learning to make with plain JavaScript and jQuery.
i've also been practicing using APIs with JSON.
you'll also see a webpage with Bootstrap (it's just a mockup page).
enjoy!


Waterford
Home
Features
About
Contact
Experience the power of Waterford
We are a software firm based out of the United Arab Emirates. Waterford is currently under developement and we hope to release the beta version as a Software as a Service offering by Summer 2016.
Request a Demo
About
Waterford is based out of Ajman, United Arab Emirates
Contact Info
Ajman,
United Arab Emirates
971563483531
<EMAIL_ADDRESS>waterford.io
Loading...


Browser not supported!
Total number of bodies:
0
Main Controls
Start now
Generate random bodies
Reset Screen
Reset All
Value of
G:
Scale of
1px
in
(m):
Random Properties Controls
Minimum number:
Maximum number:
Minimum mass:
Maximum mass:
Developer:
Aman Nirala


Hello everyone!
I just finished building my emonBase, and I can't upload code on it.
I'm using Arduino 1.0, a Sparkfun 5V FTDI Basic and the board is set to Uno in the IDE.
I just got the "avrdude: stk500_getsync(): not in sync: resp=0x00" error while trying to upload.
I tried desoldering the capacitor located on the ISP connector, but it didn't help.
Could this be linked to the MCP1702 issue?
Thanks in advance
gromain
Re: emonBase impossible upload (not in sync) - RESOLVED
Or it could just be that I'm stupid and mounted the atmega in the wrong direction.
I'm gonna test right now and post the (hopefully) succesfull result!
Re: emonBase impossible upload (not in sync) - RESOLVED
The problem is still the same.
I still can't upload!
The atmega may be burnt, so I tried with the one from arduino Uno. But the result is the same.
I must have made a mistake somewhere, but can't find it!
I might have burnt both atmega, but I don't understand how...
Re: emonBase impossible upload (not in sync) - RESOLVED
The Atmega's included in the NanodeRF kits sold through the shop contain the OptiBoot Arduino Uno bootloader. Make sure you select Uno under Tools>Board in the Arduino IDE prior to uploading.
Let me know if this hasnt fixed the problem. There is a change you might have a faulty chip but we do test every single chip before their shipped when we flash the bootloader. Have you got another Arduino/emonTx you can test the Atmega328 chip in?
Alsso have you been able to upload to other boards with the same FTDI cable and IDE?
Re: emonBase impossible upload (not in sync) - RESOLVED
Hey!
I've been able to upload the code to the emonTX with the same cable and IDE.
I'll try to test this tonight, and post the result!
Thanks!
Re: emonBase impossible upload (not in sync) - RESOLVED
So, I've tested the Atmega from my emonBase in my emonTx, and was able to upload code on it.
So it's unlikely a chip problem.
I'll test just after if it's working okay, or if I have some troubles.
But the uploading problem is still strange... Because, even after being able to upload the code using the emonTx, I wasn't able to do anything with the emonBase board. I must have made a faulty connection somewhere. Or the FTDI is plugged in the wrong way. (The ground is at the left of the connector when viewed from top, right?)
Cheers
Re: emonBase impossible upload (not in sync) - RESOLVED
I have the same problem, when I connect the power line, the emonbase remains off, neither the led switch on. I have upload the code with the emontx and it's all ok, but then, when I connect the chip on the emonbase, there are no signals of life. I have checked the voltage between pin 7 of the 74HCT125 (GND) and the bottom pin of the 3 pads below the 16Mhz crystal and it gives around 3.3v. When I add the wire link between the bottom pin and the middle pin of the 3 pads, I measure 0.96v in each pins. I expected to get 3.3v in each pin, or it's ok so?
Thanks!!
Re: emonBase impossible upload (not in sync) - RESOLVED
It sounds to me like there must be a short, as the voltage between ground and the middle pin should be 3.3v as described on the build guide: http://ichilton.github.com/nanode/rf/build_guide.html Could there be a soldering short on the board?
Re: emonBase impossible upload (not in sync) - RESOLVED
It might help if you post a photo of the board (top and bottom) that way we can check that all the components are correct.
Re: emonBase impossible upload (not in sync) - RESOLVED
Here You can find the photos of the board:
http://img96.imageshack.us/img96/233/img7691y.jpg
http://img29.imageshack.us/img29/3634/img7696y.jpg
Thanks!!
Re: emonBase impossible upload (not in sync) - RESOLVED
Ahh, it appears your 74HCT125 is the wrong way around, could that be it? see the correct orientation in this image: http://openenergymonitor.org/emon/sites/default/files/nanodeRF.jpg
Re: emonBase impossible upload (not in sync) - RESOLVED
ok, very stupid error.
I try tonight and I tell You if it's all ok.
Thanks!!
Re: emonBase impossible upload (not in sync) - RESOLVED
Re: emonBase impossible upload (not in sync) - RESOLVED
I've been able to refined down the problem to the 74HCT125.
When plugged out, I can upload any code I want on the ATmega, and the green led lights up in normal operation (normal, but not communicating in any way because of the 74HCT125 absence).
When I put the 74HCT125 back in, I can't upload anythin, and stranger, I've got more than 3.3V between ground and pin 3 (on the socket under the atmega in direction of the USB plug.
Any idea? (I'm currently checking all the traces and solder joints to see if anything might have gone bad!)
Re: emonBase impossible upload (not in sync) - RESOLVED
Some more informations:
When only the 74HCT125 is plugged in, I measured about 4.25V between ground and 3V3.
Re: emonBase impossible upload (not in sync) - RESOLVED
I don't think I've heard of this problem before. There is a posibility that being plugged in the wrong way could have damaged the 74HCT125.
Re: emonBase impossible upload (not in sync) - RESOLVED
That's also what I'm thinking, also this would be strange. I'm gonna check the datasheet of the 74HCT125...
Re: emonBase impossible upload (not in sync) - RESOLVED
Do you know how could I breadboard-test the 74HCT125?
Re: emonBase impossible upload (not in sync) - RESOLVED
Great news!
It look likes the 74HCT125 was burned! I bought another one (local electronic stores are awesome!), replaced the MCP1702 (which I just received this morning), checked the voltages, and everything works great!
Next step: Figuring out the firmware, customizing it to upload data on my server, and everything should be ready to go!


03-May-2017 | Milku
I could be a poet, but don't yet know it.
While I do enjoy dabbling in the sciences, I feel that perhaps I should also dip my paws into the arts. I think that’s what an aspiring hamster should do. After all, I never know when I might encounter HRH Marvin. If you don’t already know him, he’s the hamster in the Duke and Duchess of Cambridge’s household. It was reported that he liked tickling Princess Charlotte with his whiskers. Now that’s not my sort of thing, but I suppose I could put up with it in exchange for living in a royal household. I bet he gets gourmet snacks. But we’ll probably never know as he’s a bit publicity shy. All we’ve got is a twitter feed purporting to be the royal hamster, but which is actually produced by artist and blogger Christine Frazier.
Anyway, back to the arts. I’m not too sure about getting paint on my fur. That’ll be a challenge for my humans to overcome…I want edible paint.
I enjoyed reading some haiku on the internet recently so maybe poetry could become my hobby. Here’s the link to the Hamster Haiku page. My favourite is:
It is the nature
of teeth to challenge the hand.
Stroke me. I won't bite...
Even if I haven’t bitten anyone recently.


Eviction keeps a region’s resource use under a specified level by removing least recently used (LRU) entries to make way for new entries. You can choose whether expired entries are overflowed to disk or destroyed. See Persistence and Overflow.
Eviction is triggered when a size-based threshold is exceeded. A region’s eviction threshold can be based on:
- entry count
- absolute memory usage
- percentage of available heap
These eviction algorithms are mutually exclusive; only one can be in effect for a given region.
When Geode determines that adding or updating an entry would take the region over the specified level, it overflows or removes enough older entries to make room. For entry count eviction, this means a one-to-one trade of an older entry for the newer one. For the memory settings, the number of older entries that need to be removed to make space depends on the sizes of the older and newer entries.
For efficiency, the selection of items for removal is not strictly LRU, but does choose eviction candidates from among the region’s oldest entries. As a result, eviction may leave older entries for the region in the local data store.
Eviction Actions
Apache Geode provides the following eviction actions:
local destroy - Removes the entry from the local cache, but does not distribute the removal operation to remote members. This action can be applied to an entry in a partitioned region, but it not recommended if redundancy is enabled (redundant-copies > 0), as it introduces inconsistencies between the redundant buckets. When applied to an entry in a replicated region, Geode silently changes the region type to “preloaded” to accommodate the local modification.
overflow to disk - The entry’s value is overflowed to disk and set to null in memory. The entry’s key is retained in the cache. This is the only eviction action fully supported for partitioned regions.
Eviction in Partitioned Regions
In partitioned regions, Geode removes the oldest entry it can find in the bucket where the new entry operation is being performed. Geode maintains LRU entry information on a bucket-by-bucket basis, as the cost of maintaining information across the partitioned region would slow the system’s performance.
- For memory and entry count eviction, LRU eviction is done in the bucket where the new entry operation is being performed until the overall size of the combined buckets in the member has dropped enough to perform the operation without going over the limit.
- For heap eviction, each partitioned region bucket is treated as if it were a separate region, with each eviction action only considering the LRU for the bucket, and not the partitioned region as a whole.


Landing Page
Special Projects
This story is part of a series of specially designed stories that represents some of the best journalism The Post has to offer. Check out the rest of the special projects here.
RILEY SCOTT
05.30.19
Hannah Ruhoff | FOR THE POST
(From left) Ohio University Vice President for Diversity and Inclusion Gigi Secuban, President Duane Nellis, Vice President of Student Affairs Jason Pina, and Executive Vice President and Provost Chaden Djalali watch a video welcoming the class of 2022 to campus during Convocation on Aug. 26, 2018.
Cutler 108
Ohio University President Duane Nellis has served as the university’s 21st president since 2017. He has served in various higher education institutions in the country as a president, provost, dean and professor. His area of expertise is in geography, and his research and publications are internationally renowned. He was also formerly the president of the American Association of Geographers.
Cutler 212
Jason Pina serves as the vice president of student affairs. He oversees the intellectual and personal development of students. He is also in charge of about 420 professional and graduate-level staff, 3,200 undergraduate student employees and $127 million annual operating budget.
Baker 345
Jenny Hall-Jones serves as the Senior Associate Vice President for Student Affairs and Dean of Students. She began her term in 2012 and oversees many administrative departments at the university. She has worked in multiple departments at OU including Housing and Residence Life and graduated with her bachelor’s, master’s and doctorate degrees from OU.
Athens City Building, 8 E. Washington St.
Athens Mayor Steve Patterson began his term in January 2016. The Air Force veteran was a health psychology professor for 18 years at Ohio University and an at-large city council member prior to his mayoral election. Patterson oversees many boards and commissions in Athens and recently has been working on e-scooter legislation and improved street lighting. He plans to run for re-election in 2019.
Athens City Building, 8 E. Washington St.
City Council President Christine Knisely has served as president since January 2015. She works with City Council and recently took part in drafting legislation for the allowance of e-scooters in the city of Athens.
City Council meetings take place every Monday at 7 p.m.
In April, Lydia Ramlo was elected as the Student Senate president for the 2019-2020 academic year. Last year, she served as the Student Senate treasurer.
She will work alongside Vice President Alicia Lundy-Morse and Treasurer Jayden McAdams.
Ohio University Police Chief Andrew Powers became chief in 2009. He formerly served at Miami University, OU’s rival athletic school. He oversees campus police, which is the department reached when dialing 911 on campus. If an ambulance is needed in an emergency, OUPD arrives with it because EMS does not have access to residence halls. OUPD works closely with the Athens Department of Police.
Athens Police Department Chief Tom Pyle was named chief in 2011. APD is responsible for enforcing the law in Athens and providing security at events like Halloween and fest weekends.
Recently, Pyle has been working to obtain new state-of-the-art taser technology and body-worn cameras for police officers.
Rodney Smith has served as Athens County sheriff since April 2014. Throughout his 30 year career in Athens, he has worked a corrections officer, sergeant and lieutenant.
As the Athens County sheriff, he works to solve problems in Athens Country with a focus on property crimes and drug abuse. He also is dedicated to bringing community members together to solve problems in Athens County.
Landing Page
This story is part of a series of specially designed stories that represents some of the best journalism The Post has to offer. Check out the rest of the special projects here.


|
Name
|
Type
|
Description
|
| endTime | xsd:dateTime |
The time up to which statistics are retrieved. Corresponds to server
time. When endTime is omitted, the returned result includes up to the
most recent metric value. When an endTime is specified, the returned
samples include the sample at endTime.
|
| entity | ManagedObjectReference |
The managed object whose performance statistics are being queried.
|
| format | xsd:string |
The format to be used while returning the statistics. See PerfFormat
|
| intervalId | xsd:int |
The interval (samplingPeriod), in seconds,
for the performance statistics. For aggregated information, use
one of the historical intervals for this property. See PerfInterval for more information.
- To obtain the greatest detail, use the providers refreshRate for this
property.
|
| maxSample | xsd:int |
Limits the number of samples returned. Defaults to the most recent
sample (or samples), unless a time range is specified. Use this
property only in conjunction with the intervalId to obtain
real-time statistics (set the intervalId to the refreshRate. This property is
ignored for historical statistics, and is not valid for the QueryPerfComposite operation.
|
| metricId | PerfMetricId[] |
The performance metrics to be retrieved. This property is required for
the QueryPerfComposite operation.
|
| startTime | xsd:dateTime |
The server time from which to obtain counters. If not specified,
defaults to the first available counter. When a startTime is
specified, the returned samples do not include the sample at
startTime.
|
|
Properties inherited from DynamicData |
| None |


Level editor (
0.0.0
)
HELP
DISCORD
New Level
Import JSON
Export JSON
Level settings
Meta
Author
Level Name
Description
General
Level Type
Objectives
Challenge
Puzzle
Survival
Background
Random
World 1
World 2
World 3
World 4
World 5
Versus
Start lines
Preview lines
Start speed
Speed limit
Disable scrolling
Disable speed up
Seed
Time limit (sec)
Objectives
Score
Time reached (sec)
Clear depth
Max multiplier
Total combos
4-blocks combos
5-blocks combos
L-shaped combos
Total chains
Highest chain
Max moves (-1 : unlimited)
Modifiers (events)
Garbages Generation
Delay (sec)
Duration (sec)
Min frequency (sec)
Max frequency (sec)
Garbages size
Wait/dequeue speed
Change colors
Delay (sec)
Duration (sec)
Cooldown (sec)
Add new colors
Add blocks
Delay (sec)
Duration (sec)
Cooldown (sec)
Blocks to add
Hide grid
Delay (sec)
Duration (sec)
% of the grid to hide
Hide duration (sec)
Wait (sec)
Grid
Width
Height
JSON


Show unit entrance
Corridor 1
Corridor 2
Corridor 3
Corridor lift
Pool lift
Pool corridor
Pool deck 1
Pool deck 2
Pool deck 3
Pool deck 4
Pool deck 5
BBQ Terrace
Fitness Station
Tennis court 1
Tennis court 2
Tennis court 3
Playground 1
Playground 2
Playground 3
Common area 1
Common area 2
Common area 3
Gym corridor
Gym entrance
Gym 1
Gym 2
Gym 3
Gym 4 pool view
Ground floor lift
Ground floor corridor
Ground floor concierge
Concierge 1
Concierge 2
Carpark entrance
Outdoor 1
Outdoor 2
Outdoor 3
Outdoor 4


Forms provide the most common control styles used in forms, including input, textarea, select, checkbox and radio.
| Props | Default Class Name |
|---|---|
| Container | .form |
| Form Items | .items |
| Form Item | .item |
| Form Group | .group |
| Punica's Checkbox | .checkbox |
| Punica's Radio | .radio |
| Sizes | Default Class Name |
|---|---|
| Default | - |
| Small | .small |
| Large | .large |
Form inputs are designed to be flexible to your form elements. You can choose an arbitrary column count per
row. Default
system allows maximum 16 items. The example below shows three items .three .items
will fit in the
first row
and the fourth item dynamically moves to the second row.
.items
group classes should be used in
.form
container class.
< form class = "form" >

 First Name < input type="text>

 Last Name < input type = "text" >

 Choose a color: < select name = "colors" id = "colors" > < option value = "black" >Black</ option > < option value = "white" >White</ option > < option value = "blue" >Blue</ option > < option value = "orange" >Orange</ option > </ select >

 </ form > |
You can attach select, input or button along with an input. Just add the .group
class to a container
class in the .item
container.
.group
classes should be used in
.form
or .form > .item
container class.

 Your Full Name
 < select name = "title" > < option value = "mr" >Mr.</ option > < option value = "mrs" >Mrs.</ option > </ select > < input type = "text" name = "name" > < input type = "text" name = "middle" > < input type = "text" name = "surname" >

 |
Add the .small
or .large
class to .form
class to make it smaller or
larger
inputs or buttons.
You can indicate invalid or valid form fields with .error
or .success
classes for input validation states. Just add the .error
or .success
class to <input>
and <select>
element.


For the 2010 Mongol Rally, we drove an ambulance. Why? First, Ambulances are cool. Second, Ambulances usually pretty well maintained. Third, Charity. Mongolia is landlocked and has pretty limited access to equipment. They need ambulances.
10,475 miles, 15 Countries, 2 Continents. The long road to Mongolia started at Goodwood race track in the UK and covered 15 countries. England, France, Germany, Czech Republic, Slovakia, Hungary, Serbia, Macedonia, Greece, Turkey, Georgia, Azerbaijan, Kazakhstan, Russia, Mongolia
The Mongol Rally isn't just about adventure. Each team is required to raise 1000 GBP for charity. The team decided to support Mecrycorp and MSF. Each team also donates their adventure hardened vehicle at the conclusion of the journey.
The Mongol Rally team doesn’t launch itself. The months leading up to the journey was an adventure.
The Mongol Rally started off rough. Stephen lost his backpack in Berlin. Judy waited 14 hours at Gatwick for the team. Tom booked the wrong flight and arrived a day late.
The rally truly begins at Czech Republic. Eastern Europe gave the team the first dose of unfamiliar language, and culture.
We encountered nothing but hospitality in Turkey. A random encounter one morning resulted in a invitation onto a boat trip to sea and a traditional home cooked meal.
The greatest challenge for the team was the ferry across the Caspian Sea from Azerbaijan to Kazakhstan. The team waited for the ferry at at the port for miserable 4 days.
Kazakhstan is the 9th largest country in the world. Kazakh roads are worse than terrible. The combination of the two resulted in a very long and slow drive in the middle of nowhere to the middle of nowhere.
Siberian roads were in surprisingly good shape. We made our way from Omsk to Ulan-Ude without much trouble. Along we way we made new friends and was challenged to a could arm wrestling matches. USA 2 - RUS 0
The team crossed into Mongolia on September 1, 2010, after 10000 miles and 40 days on the road.
The team parted ways after the journey. Stephen boarded a train back through Russia, Judy flew to Barcelona, Tom to Paris, and Lillie returned to Berlin.


Syntax:
when test-form form* => result*
unless test-form form* => result*
Arguments and Values:
test-form---a form.
forms---an implicit progn.
results---the values of the forms in a when form if the test-form yields true or in an unless form if the test-form yields false; otherwise nil.
Description:
when and unless allow the execution of forms to be dependent on a single test-form.
In a when form, if the test-form yields true, the forms are evaluated in order from left to right and the values returned by the forms are returned from the when form. Otherwise, if the test-form yields false, the forms are not evaluated, and the when form returns nil.
In an unless form, if the test-form yields false, the forms are evaluated in order from left to right and the values returned by the forms are returned from the unless form. Otherwise, if the test-form yields false, the forms are not evaluated, and the unless form returns nil.
Examples:
(when t 'hello) => HELLO (unless t 'hello) => NIL (when nil 'hello) => NIL (unless nil 'hello) => HELLO (when t) => NIL (unless nil) => NIL (when t (prin1 1) (prin1 2) (prin1 3)) >> 123 => 3 (unless t (prin1 1) (prin1 2) (prin1 3)) => NIL (when nil (prin1 1) (prin1 2) (prin1 3)) => NIL (unless nil (prin1 1) (prin1 2) (prin1 3)) >> 123 => 3 (let ((x 3)) (list (when (oddp x) (incf x) (list x)) (when (oddp x) (incf x) (list x)) (unless (oddp x) (incf x) (list x)) (unless (oddp x) (incf x) (list x)) (if (oddp x) (incf x) (list x)) (if (oddp x) (incf x) (list x)) (if (not (oddp x)) (incf x) (list x)) (if (not (oddp x)) (incf x) (list x)))) => ((4) NIL (5) NIL 6 (6) 7 (7))
Side Effects: None.
Affected By: None.
Exceptional Situations: None.


Hello World in an HTML paragraph!
Click me to see Hello World in an alert...
Click me to see a prompt and enter your lucky number...
No lucky number yet...


Using decorators and observables to implement retry
Last week, I was at a meetup in Ghent where I was talking with Stefan Lapers about programming languages in general. We started talking about writing your backend using either Java or node.js. We agreed that node.js has massive potential but in a lot of situations companies choose Java because of it’s maturity. If you’re using a microservices based architecture for example, you can rely heavily on spring cloud which does a whole bunch of stuff for you so you can focus on functionality. One element in spring cloud is hystrix. When you’re doing a network call which is protected by hystrix, you can, by just adding an annotation, tell how many times you want to retry this if it fails and even provide a fallback if it fails entirely.
When I was driving home later that night, I was thinking to myself that using observables and typescript decorators, it should be possible to implement something similar myself. The next morning I tried it out and about 30 minutes later I had a working version. Here it is.
The example
In the example below, we have a service which fetches a number of Star Wars characters from the backend, at least it tries. It seems I kind of screwed up the implementation a little :).
public getCharactersAndFail(): Observable<StarWarsCharacter[]> {
return throw('Failing on purpose');
}
Instead of actually doing a backend call, I’m just returning an observable which will throw as soon as it’s subscribed to. This is of course not to handy but for demonstration purposes, it’s quite ideal. Using the decorator I created myself, we can make this code a little more resillient (we’ll dive into how this decorator is constructed later on).
@retry(3, [{name: 'Obi Wan', birth_year: '1234', gender: 'Male'}])
public getCharactersAndFail(): Observable<StarWarsCharacter[]> {
return throw('Failing on purpose');
}
I’ve added the retry
decorator. The first argument it takes tells the decorator the times it should retry the backend call. The second parameter is the fallback that will be used if the backend keeps on failing.
The following is a gif of what happens when you try to run this code:
You can see that there are 3 tries before the method returns the fallback we defined. Pretty cool right.
A second example is if you click the button below the first example. This will actually try to do the real request. The code for this backend call looks like this:
@retry(3, [{name: 'Obi Wan', birth_year: '1234', gender: 'Male'}])
public getCharacters(): Observable<StarWarsCharacter[]> {
return this.http.get('https://swapi.co/api/people/')
.pipe(
map((response: Response) => response.json().results)
);
}
For the retry example here to work, you have to go offline first, which will cause the request to fail. If you then try to run this code, you can see in the network tab it actually tries to do 3 requests, which fail because we are offline. After three attempts, the fallback is returned.
You can find the live working example here. Open up your console to see the number of tries and inspect the network tab with the second example.
The implementation
To implement this, there are two important things we need to do. First is implementing the logic to retry the call if it failed. We can levarage streams for this. Next we need to extract that logic into a typescript decorator.
Observable composition
Retrying a subscription after it has failed is fairly easy using RxJS. We can use the retryWhen
operator for this. Let’s look at some code.
private starWarsService: StarWarsService;
characters$: Observable<StarWarsCharacter> =
// we call the starWarsService to get the characters
this.starWarsService
.getCharacters()
// we use the retryWhen operator to retry a number of times
.pipe(
retryWhen((errors: Observable<any>) => {
// we use the scan operator to count the number of tries
return errors.scan((errorCount, err) => {
console.log('Try ' + (errorCount + 1));
if (errorCount >= 3) {
throw err;
}
return errorCount + 1;
}, 0).delay(1000);
}),
// we catch the error if it keeps on failing and return
// the fallback
catchError(() => of(fallback))
);
I’m not going to go into the details of the RxJS implementation, that whould require a totally separate post. What this code does however, is create an observable that, once subscribed to, will try to execute the backend call. If it fails, which it will in our case, it will re-execute it 2 more times with a single second delay in between. If it still fails, it will return the fallback we can define.
That’s the exact logic we want our decorator to do. So let’s see how we can extract this logic in the decorator.
Creating a decorator
There are different types of decorators. We can put a decorator on a class, method, property or accessor method. In our case, we are going to use the method decorator. A method decorator is in fact nothing more than a function that gets called at runtime. You can find more information on what decorators are and how to use them here
Using a method decorator, you can replace, observe or modify the method definition. What we are going to do is really easy. Lets take a look at the image below.
At runtime, when the method we are decorating gets called, the decorator will be called first (1). We are going to call the actual function (2) which is going to return an observable in our case (3). Before returning the observable to the caller of our decorated function (5), we are going to augment the observable with our retry logic (4) and return this new observable.
Lets take a look at the code:
// defining the decorator is the same as the defining a
// function with the same name
export function retry(times = 3, fallback: any) {
return (target, key, descriptor) => {
// the descriptor holds a reference to the actual method
// we are decorating
const originalMethod = descriptor.value;
// we replace the old function with a new function
descriptor.value = function () {
// call the original method and
// augment the resulting observable
// with the retry and fallback mechanism
// we defined above
return originalMethod.apply(this)
.pipe(
retryWhen((errors) => {
return errors.scan((errorCount, err) => {
console.log('Try ' + (errorCount + 1));
if (errorCount >= times - 1) {
throw err;
}
return errorCount + 1;
}, 0).delay(1000);
}),
catchError(() => of(fallback));
)
};
// return edited descriptor as opposed to
// overwriting the descriptor
return descriptor;
};
}
In the decorator we take the original function. We replace this function with a new one that executes the original one and augments the resulting observable with our retry logic.
Once you’ve understood the syntax of the method decorator, this implementation is pretty straight forward. It now allows us to add the decorator on top of every function that returns an observable like this:
@retry(3, [{name: 'Obi Wan', birth_year: '1234', gender: 'Male'}])
public getCharactersAndFail(): Observable<StarWarsCharacter[]> {
return throw('Failing on purpose');
}
Conclusion
Using the ease of composing of observables and decorators in typescript, we were able to create something really fast which can be reused throughout our entire application. It shouldn’t stop with a retry decorator. We could apply this principle to a whole bunch of RxJS related issues like catching errors for example.


Wifi: username / password
| Install the Tools | http://bit.ly/CnCTheTools |
| This presentation | http://bit.ly/cncjavascriptslides |
| The worksheet | http://bit.ly/cncjavascriptwork |
All slides in this presentation are licensed by http://kcwomenintech.org under a Creative Commons Attribution-ShareAlike 4.0 International License.
#LadyDevs #KCWiT
#CodingAndCocktailsKC
#bookclub
#cats_and_doggos
#wootwoot
#general
Rule #1
So, what is it?
Mocha / LiveScript / JavaScript
A language...
Demo time!
HTML is just another kind of document.
Caution: use sparingly
Point to a separate *.js file
Strings: 'Cocktails'
Boolean: true or false
Numbers: 5, 11, 635
'12345' is a string
'5' is not the same as 5
Placeholder to store values / data
Alternatively, think of it as a noun.
var variableName = variableValue;
let variableName = variableValue;
const variableName = variableValue;
var leftovers = 'Meatloaf';
Case Sensitive: 'myVariable' is not the same as 'MyVariable'
var myAge = 28 + 10;
returns 38
var myDogsAge = 6 * 7;
returns 42
Modulus: The 'remainder' in a division problem
var modExample = 15 % 2;
15 / 2 = 7 with a remainder of 1 (the modulus)
returns 1
Add two integers:
var thirtyFive = 10 + 25;
returns 35
var textAndNumberString = ‘happy’ + 35 + ‘birthday’;
returns happy35birthday
var gotcha = ‘10’ + 25;
if you guessed 35. . .
Gotcha!
Adding a integer and a string returns a string, '1025'
| Comparison | English | Example: All evaluate to true |
| == | loose equality | 2 == "2" |
| === | strict equality: value and type | 2 === 2 |
| != | does not equal | 2 != 5 |
| !== | strict inequality: value and type | 0 !== " " |
| > | greater than | 5 > 2 |
| < | less than | 2 < 5 |
| >= | greater than or equal to | legal drinking age >= 21 |
| <= | less than or equal to | not legal drinking age <= 20 |
| ? | ternary | (age > 21) ? "Drink" : "No drinks for you" |
Wifi: username / password
| Install the Tools | http://bit.ly/CnCTheTools |
| View these slides | http://bit.ly/cncjavascriptslides |
| Do the worksheet | http://bit.ly/cncjavascriptwork |
All slides in this presentation are licensed by http://kcwomenintech.org under a Creative Commons Attribution-ShareAlike 4.0 International License.
Take input, process input, return output
Reusable Code
Programming Nugget:
DRY programming – Don’t Repeat Yourself
Parts of a function
var functionName =
function (optional, parameters) {
//function logic here
};
Name your function
(declare a variable)
var orderDrink = function(drinkName) {};
Read as: The variable 'orderDrink' is a function with one parameter, called 'drinkName'
The task is specified inside the curly braces:
var orderDrink = function(drinkName) {
return 'I would like a ' + drinkName +
' please.';

Call the function by telling it what to use for the parameter:
orderDrink('gin and tonic');
Put it all together:
Function with no parameters
function orderMyFavoriteDrink() {
return 'I want a margarita.';
};
When you call the function...
orderMyFavoriteDrink();
//'I want a margarita.'
Return is optional
Without return, undefined is returned
Allows JS engine to know function is done executing
var drink; // declares variable but doesn't set
function setDrink (cocktail) {
drink = cocktail;
}
setDrink('martini');
// undefined is returned but drink variable is now set
// to 'martini'
Display alert along with ok button
if (at first you dont succeed) {
return "try, try again!"
}
if (expressionInParens) {
// do something if expression is true
} else {
// otherwise if expression is false, do something else
};
Programming Nugget:
`else` is optional.
It is possible to use an `if () {}` statement by itself.
var usersName = 'Heidi';
if (usersName.length > 0) {
submitDrinkOrder();
} else {
alert('Please enter your name
before submitting your drink order.');
}
The following are always FALSE
any other value is always TRUE
Single Line comments
//this is a one line comment
Multi line comments
/* This is a
multi line comment */
Great for troubleshooting / debugging
var name = 'Ada Lovelace';
console.log(name);
var getSquareFeet = function(height, width) {
return height * width;
};
console.log(getSquareFeet(10, 15));
console.log('name: ', name);
console.log('square feet: ', getSquareFeet(13, 20);
| Windows Key Combination | Mac Key Combination |
| F12 | cmd + option + i |
Wifi: username / password
| Install the Tools | http://bit.ly/CnCTheTools |
| View these slides | http://bit.ly/cncjavascriptslides |
| Do the worksheet | http://bit.ly/cncjavascriptwork |
All slides in this presentation are licensed by http://kcwomenintech.org under a Creative Commons Attribution-ShareAlike 4.0 International License.
var fruit = ['Apple','Strawberry','Blackberry',
'Raspberry','Cherry','Blueberry'];
var drinksIveConsumed = [0, 1, 2, 3, 4, 5, 6, 7,
'none of the above'];
var myNewArray = new Array();
var myEmptyArray = [];
var myFilledArray = ['is','not','empty'];
Zero-based Index
var fruit = ['Apple','Strawberry','Blackberry'];
// Grab first item and display
var first = fruit[0];
console.log(first);
// 'Apple'
// Check array length and display
var length = fruit.length;
console.log(length);
// 3
// Grab last item and display
var last = fruit[fruit.length-1];
console.log(last);
// 'Blackberry'
Add item to beginning of array
// Create the Array
var fruit = ['Apple','Pear','Kiwi'];
// Add item 'Banana' to beginning of array
fruit.unshift('Banana');
// View the contents of the array
// stored in the fruit variable
console.log(fruit);
// ['Banana','Apple','Pear','Kiwi']
Add item to end of array
// Create the Array
var fruit = ['Apple','Strawberry','Kiwi'];
// Add item 'Cherry' to end of array
fruit.push('Cherry');
// View array contents
console.log(fruit);
// ['Apple','Strawberry','Kiwi','Cherry']
Remove item from start of array
// Create an Array
var fruit = ['Apple','Peach','Pear'];
// Remove item from beginning of array
var item = fruit.shift();
// 'Apple'
// View array contents
console.log(fruit);
// ['Peach','Pear']
var length = fruit.length;
// 2
Remove item from end of array
// Create an Array
var fruit = ['Apple','Peach','Pineapple'];
// Remove item from end of array
var item = fruit.pop();
// 'Pineapple'
// View array contents
console.log(fruit);
// ['Apple', 'Peach']
var length = fruit.length;
// 2
What is a loop?
Repeat some code as long as some condition is true
Types of loops:
for (initialization; condition; increment) {
// code to execute while condition is true
}
Example
var numberOfCustomers = 5;
for (var i = 0; i < numberOfCustomers; i++) {
notifyDrinkIsReady(i);
}
var numberOfCustomers = 5;
for (var i = 0; i < numberOfCustomers; i++) {
notifyDrinkIsReady(i);
}
Which of these is an 'infinite loop'?
var numberOfCustomers = 5;
for (var i = 0; i < numberOfCustomers;) {
notifyDrinkIsReady(i);
}
An array method that executes a given function once for each array element
// Create array
var drinks = ['martini', 'soda', 'coffee'];
// loop using forEach
drinks.forEach(function(drink) {
console.log(drink);
});
// martini
// soda
// coffee
Wifi: username / password
| Install the Tools | http://bit.ly/CnCTheTools |
| View these slides | http://bit.ly/cncjavascriptslides |
| Do the worksheet | http://bit.ly/cncjavascriptwork |
All slides in this presentation are licensed by http://kcwomenintech.org under a Creative Commons Attribution-ShareAlike 4.0 International License.
#LadyDevs #KCWiT
#CodingAndCocktailsKC


I'm a semi-regular user of DXM. I've never hallucinated, I just enjoy the long-lasting head buzz. I'm also an occasional user of Tramadol. Again, not for the analgesic effects, but the very mild euphoria and subtle mood lift. The use of these two together provided me with a very frightening experience.
I took four Tramadol tablets, 50mg each, at three different times during the day. As I took the last dose of four pills, I swallowed 400mg worth of DXM capsules. Within about 60 to 90 minutes, I felt the gentle buzz and was feeling pretty good. Although unremarkable, there were no unpleasant mental effects from this combo.
Four hours later, it happened. Or more accurately, it didn't happen. I went into the bathroom to urinate, and nothing would come out. I wasn't even able move those muscles down there. I tried again and again over the next hour, with no results. I was beginning to grow concerned now, as my bladder had gotten very full and uncomfortable. It was off to the emergency room for me.
To summarize, I had a catheter inserted, which was extremely painful. I had to wear it for three days, and when it was removed I was back to normal once again. It was an absolutely miserable experience. I for one will never try that combo again. Getting a catheter inserted into where things should only come out is no fun at all.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{% extends "secondary.html" %} {% block content %}
Sometimes you can fix something by being a pioneer,
The Cavy is a noble creature;
We're constantly developing and improving The Studio but if you should encounter a ... glitch, please try again and let us know.
Due to the magic of modern technology we can now record you right here in your browser. Glitch Studio does have some limitations at the moment, though. Here's how it works.
I'm uploading your recording to the server now...
This might take a few minutes 'cause we have to then analyze the audio using Echonest's API
and its Remix library and layer the two tracks together so you can review it.


APT PUPIL (Tri-Star/Phoenix) Starring: Ian McKellen, Brad Renfro, Bruce Davison, Elias Koteas, David Schwimmer. Screenplay: Brandon Boyce, based on the novella by Stephen King. Producers: Jane Hamsher, Don Murphy and Bryan Singer. Director: Bryan Singer. MPAA Rating: R (profanity, violence, adult themes) Running Time: 110 minutes. Reviewed by Scott Renshaw.
APT PUPIL'S Todd Bowden (Brad Renfro) is practically the poster child for an upstanding American teenager circa 1984. He's a straight-A student on track to graduate from high school at sixteen; he's a star baseball pitcher; his parents (Bruce Davison and Ann Dowd) are successful, involved and, astonishingly, still happily married.  It is this same Todd Bowden who blackmails Denker, threatening to expose him unless he describes war-time attrocities to Todd in unrelenting detail. It is this same Todd Bowden who becomes obsessed with the horrifying images of concentration camps, and who turns to strange acts of cruelty.
Creepy, disquieting stuff, to be sure, but there's one crucial puzzle piece missing from director Bryan Singer's (THE USUAL SUSPECTS) adaptation of the Stephen King novella: why? Why does Todd become so improbably fascinated with the horrors of genocide and the wielding of absolute power over the life of another? Why do Denker's tales turn him alternately into a nightmare-plagued wreck and a glassy-eyed borderline psycho? There's certainly a story to be told by making the teen demon of APT PUPIL a golden boy rather than a troubled misfit -- perhaps to suggest the capacity for evil within us all, perhaps as a commentary on how we make the forbidden fascinating by hiding it from the eyes of children. What's missing is a motivation for this particular boy, something that makes him more than a symbolic representation of good youth gone awry.
That absence of motivation becomes even more glaring in the film's second half, when the power dynamic between the two characters shifts back in Denker's favor. His life of quiet isolation shattered by re-living his past, Denker begins to show that the rush he got from manipulating lives was merely in hibernation. McKellen's sharp performance shows Denker's icy confidence growing by the scene, until it's clear that the hunted has become the hunter once more. At that same time, Todd is trying to recover from letting his grades slide through his frequent visits with Denker, seemingly returning to "normal" until Denker forces him into an acknowledgement of how far he's truly willing to go. It's easy to understand Denker's character and follow his twists, turns and changes. By contrast, Todd's dark side seems to emerge strictly for bad seed shock value.
Even the gaps in Todd's characterization become less important as Singer's taut direction takes over in the climactic thirty minutes. As circumstances threaten to expose the actions of both Todd and Denker, the simmering tension begins building at an impressive clip. APT PUPIL is a rare example of a thriller that gets better as it approaches its conclusion, rather than collapsing in a muddle of rushed plot points and pat resolutions. It's hard not to imagine how effective a film it might have been if Todd Bowden made more sense as a character. The token glimpses of his friendships, romantic life and hobbies are maddening in their mundanity. Something significant happens in the space between Todd spotting Denker on a bus and their initial contact, something reduced in the film to a "One Month Later" title card. That missing something is what makes APT PUPIL merely morbidly intriguing, rather than truly disturbing.
On the Renshaw scale of 0 to 10 diluted pupils: 6.
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


{% extends "base.html" %} {% load gravatar %} {# Required if running Django 1.3 or 1.4 #} {% load url from future %} {% block title %}RMG: Create Input File{% endblock %} {% block extrahead %} {% endblock %} {% block navbar_items %} Simulation and Tools » Create Input File {% endblock %} {% block page_title %}Create Input File{% endblock %} {% block page_body %} This form will generate an input file for a RMG-Py job.
{% if upload_error %}
If you already have a saved input.py file that you would like to modify, you can upload it here to load it into the form for easy editing and saving.
{% if input_error %}


Kushal Shah
ICT for Development - Econometrics - Urban Computing - Computational Social Science
I am a first year Masters student in the Information School at University of Washington. I am also a Research Assistant with the ICT for Development Research Group where my grant is supported by the Bill and Melinda Gates Foundation.
You can reach me at<EMAIL_ADDRESS>and can read my ocassional musings at desisattire.wordpress.com
This summers I'll be joining Facebook in Menlo Park as a Data Science intern!


There are several good tools that can help you performance test an API. I’ve used jmeter, locust.io and a wee bit of Gatling. locust.io has become my go to tool for all recent performance testing work.
Why locust.io?
Ease of use
Its really easy to get started and have a working performance test running with locust
Open source
The code is available to you! Say you’re working on a project and that turns out to need more than what locust offers out of the box. What now? If you know a bit of python or are willing to dig in and learn, you can look at the code and make your changes! If its something that might be universally useful, you just submit a pull request and there’s a good chance it will get added into the product itself.
python
Everything in locust.io is python based. Your tests get written in python, the entire codebase of locust.io is python based etc. So if you already know python - locust is going to be piece of cake.
lightweight
locust is extremely light weight and can be run on your personal machine to generate pretty high loads on the target machine. I’ve sometimes run into a limitation while using jmeter, which is java based, where it ends up taking my personal machine down while trying to generate high enough loads to load the target machine.
Sample Code
I like to read a little intro and then right away look at code. This article is written that way as well, here’s a simple code example.
from locust import HttpLocust, TaskSet
def login(l):
l.client.get("/", verify=False)
def index(l):
l.client.get("/", verify=False)
class UserBehavior(TaskSet):
tasks = {index:2, login:1 }
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
I’ve defined a class named UserBehavior that (as the name suggests), models the user’s behavior. In this case, there are two tasks that the user does
- hit the index page, represented by the index() function
- hit the login page, represented by the login() function
If you look closely, the variable tasks contains the list of tasks that are to be run as part of the performance test and also the relative frequency at which to run them (or weightage). The index task is run twice as frequently as the login task. The power of this is immense - you can simulate user behavior where the user searches 10 times and then checkouts 1 item, for example or logins in, does 10 different tasks and logs out etc as part of every test.
The min_wait and max_wait are set to 5000 and 9000, which means each simulated user will wait between 5 and 9 seconds between the requests.
Launching
Where to start? Right here - just follow the below steps
pip install virtualenv
virtualenv <name your environment> eg, virtualenv perftest
source perftest/bin/activate
pip install locustio
Copy the above script into a python file named locustfile.py
start locust with this command `locust -f locustfile.py –host <your apps url>`
profit!
Step one, two & three create a python virtualenv for you to play around in. Step four gets locust installed.
What do the results look like?
The results look like for our example,
You know now that your app supports 20 concurrent users, hitting the app at the rate of 3 new requests per second - without resulting in any failures. You can keep increasing the rate of new users and the total number of concurrent users until you see failures - if you want to find out your system’s limits.
Additional Ideas
Suppose you have a library that someone has built around your REST API. That means its really simple to interact with the API now but you’re not able to use the requests library directly and thus locust does not know if a request failed or passed, how long it took etc. What do you do now?
Luckily, the folks at locust.io thought about everything.
auth_status = testCase1.custom_check_using_wrapper_overREST(auth_res_txid)
total_time = int((time.time() - start_time) * 1000)
if auth_status == ‘allow’: #Success!
events.request_success.fire(request_type='https’, name='enrollpushapprove’, response_time=total_time, response_length=0)
else: #Failure
events.request_failure.fire(request_type='https’, name='status_not_allow’, exception='auth_status_not_allow’)
What did we just do? We ran a function named custom_check_using_wrapper that was a wrapper over a REST API and used a value it returned to tell locust if the request was successful or not. Locust has these powerful event hooks that allow you to write up such tests.


import geopandas
import momepy
import numpy as np
from libpysal.weights import Queen
import pandas as pd
import libpysal
import scipy
from time import time
from dask.distributed import Client, LocalCluster, as_completed
workers = 8
client = Client(LocalCluster(n_workers=workers, threads_per_worker=1))
client
Client
|
Cluster
|
cross_chunk = pd.read_parquet('../../urbangrammar_samba/spatial_signatures/cross-chunk_indices.pq')
def measure(chunk_id):
s = time()
cells = geopandas.read_parquet(f"../../urbangrammar_samba/spatial_signatures/morphometrics/cells/cells_{chunk_id}.pq")
edges = geopandas.read_parquet(f"../../urbangrammar_samba/spatial_signatures/morphometrics/edges/edges_{chunk_id}.pq")
nodes = geopandas.read_parquet(f"../../urbangrammar_samba/spatial_signatures/morphometrics/nodes/nodes_{chunk_id}.pq")
# Street Alignment
edges['orient'] = momepy.Orientation(edges, verbose=False).series
edges['edgeID'] = range(len(edges))
keys = cells.edgeID_values.apply(lambda a: np.argmax(a))
cells['edgeID_primary'] = [inds[i] for inds, i in zip(cells.edgeID_keys, keys)]
cells['stbSAl'] = momepy.StreetAlignment(cells,
edges,
'stbOri',
left_network_id='edgeID_primary',
right_network_id='edgeID').series
# Area Covered by each edge
vals = {x:[] for x in range(len(edges))}
for i, keys in enumerate(cells.edgeID_keys):
for k in keys:
vals[k].append(i)
area_sums = []
for inds in vals.values():
area_sums.append(cells.sdcAre.iloc[inds].sum())
edges['sdsAre'] = area_sums
# Building per meter
bpm = []
for inds, l in zip(vals.values(), edges.sdsLen):
bpm.append(cells.buildings.iloc[inds].notna().sum() / l if len(inds) > 0 else 0)
edges['sisBpM'] = bpm
# Cell area
nodes['sddAre'] = nodes.nodeID.apply(lambda nid: cells[cells.nodeID == nid].sdcAre.sum())
# Area covered by neighboring edges + count of reached cells
edges_W = Queen.from_dataframe(edges)
areas = []
reached_cells = []
for i in range(len(edges)):
neighbors = [i] + edges_W.neighbors[i]
# areas
areas.append(edges.sdsAre.iloc[neighbors].sum())
# reached cells
ids = []
for n in neighbors:
ids += vals[n]
reached_cells.append(len(set(ids)))
edges['misCel'] = reached_cells
edges['mdsAre'] = areas
# Area covered by neighboring (3 steps) edges + count of reached cells
edges_W3 = momepy.sw_high(k=3, weights=edges_W)
areas = []
reached_cells = []
for i in range(len(edges)):
neighbors = [i] + edges_W3.neighbors[i]
# areas
areas.append(edges.sdsAre.iloc[neighbors].sum())
# reached cells
ids = []
for n in neighbors:
ids += vals[n]
reached_cells.append(len(set(ids)))
edges['lisCel'] = reached_cells
edges['ldsAre'] = areas
# Link together
e_to_link = ['sdsAre', 'sisBpM', 'misCel', 'mdsAre', 'lisCel', 'ldsAre']
n_to_link = 'sddAre'
cells = cells.merge(nodes[['nodeID', 'sddAre']], on='nodeID', how='left')
l = []
for keys, values in zip(cells.edgeID_keys, cells.edgeID_values):
l.append((edges.iloc[keys][e_to_link].multiply(values, axis='rows')).sum(axis=0))
cells[e_to_link] = pd.DataFrame(l, index=cells.index)
# Reached neighbors and area on 3 topological steps on tessellation
cells['keep'] = True
# add neighbouring cells from other chunks
cross_chunk_cells = []
for chunk, inds in cross_chunk.loc[chunk_id].indices.iteritems():
add_cells = geopandas.read_parquet(f"../../urbangrammar_samba/spatial_signatures/morphometrics/cells/cells_{chunk}.pq").iloc[inds]
add_cells['keep'] = False
cross_chunk_cells.append(add_cells)
df = cells.append(pd.concat(cross_chunk_cells, ignore_index=True), ignore_index=True)
w3 = libpysal.weights.WSP(scipy.sparse.load_npz(f"../../urbangrammar_samba/spatial_signatures/weights/w3_{chunk_id}.npz")).to_W()
df['ltcRea'] = [w3.cardinalities[i] for i in range(len(df))]
df['ltcAre'] = [df.sdcAre.iloc[w3.neighbors[i]].sum() for i in range(len(df))]
# save
df[df['keep']].drop(columns=['keep']).to_parquet(f"../../urbangrammar_samba/spatial_signatures/morphometrics/cells/cells_{chunk_id}.pq")
return f"Chunk {chunk_id} processed sucessfully in {time() - s} seconds."
%%time
inputs = iter(range(103))
futures = [client.submit(measure, next(inputs)) for i in range(workers)]
ac = as_completed(futures)
for finished_future in ac:
# submit new future
try:
new_future = client.submit(measure, next(inputs))
ac.add(new_future)
except StopIteration:
pass
print(finished_future.result())
Chunk 0 processed sucessfully in<PHONE_NUMBER>674194 seconds.
Chunk 3 processed sucessfully in<PHONE_NUMBER>700928 seconds.
Chunk 2 processed sucessfully in<PHONE_NUMBER>730591 seconds.
Chunk 1 processed sucessfully in<PHONE_NUMBER>426849 seconds.
Chunk 7 processed sucessfully in<PHONE_NUMBER>48761 seconds.
Chunk 4 processed sucessfully in<PHONE_NUMBER>461426 seconds.
Chunk 5 processed sucessfully in 1249.2704949378967 seconds.
Chunk 11 processed sucessfully in<PHONE_NUMBER>955658 seconds.
Chunk 10 processed sucessfully in<PHONE_NUMBER>986664 seconds.
Chunk 9 processed sucessfully in<PHONE_NUMBER>143036 seconds.
Chunk 8 processed sucessfully in<PHONE_NUMBER>42691 seconds.
Chunk 6 processed sucessfully in 1427.0969700813293 seconds.
Chunk 13 processed sucessfully in<PHONE_NUMBER>214355 seconds.
Chunk 12 processed sucessfully in 1149.9492144584656 seconds.
Chunk 14 processed sucessfully in<PHONE_NUMBER>744568 seconds.
Chunk 15 processed sucessfully in<PHONE_NUMBER>524017 seconds.
Chunk 16 processed sucessfully in<PHONE_NUMBER>829315 seconds.
Chunk 17 processed sucessfully in<PHONE_NUMBER>533295 seconds.
Chunk 18 processed sucessfully in<PHONE_NUMBER>208038 seconds.
Chunk 19 processed sucessfully in<PHONE_NUMBER>375763 seconds.
Chunk 20 processed sucessfully in<PHONE_NUMBER>691315 seconds.
Chunk 21 processed sucessfully in<PHONE_NUMBER>68634 seconds.
Chunk 23 processed sucessfully in<PHONE_NUMBER>561737 seconds.
Chunk 22 processed sucessfully in<PHONE_NUMBER>996552 seconds.
Chunk 25 processed sucessfully in<PHONE_NUMBER>298431 seconds.
Chunk 28 processed sucessfully in<PHONE_NUMBER>828156 seconds.
Chunk 27 processed sucessfully in<PHONE_NUMBER>912231 seconds.
Chunk 24 processed sucessfully in<PHONE_NUMBER>140625 seconds.
Chunk 26 processed sucessfully in<PHONE_NUMBER>461243 seconds.
Chunk 29 processed sucessfully in<PHONE_NUMBER>107422 seconds.
Chunk 31 processed sucessfully in<PHONE_NUMBER>756409 seconds.
Chunk 30 processed sucessfully in<PHONE_NUMBER>611542 seconds.
Chunk 33 processed sucessfully in<PHONE_NUMBER>496277 seconds.
Chunk 34 processed sucessfully in<PHONE_NUMBER>413727 seconds.
Chunk 36 processed sucessfully in<PHONE_NUMBER>945801 seconds.
Chunk 32 processed sucessfully in 1064.6108467578888 seconds.
Chunk 35 processed sucessfully in<PHONE_NUMBER>505646 seconds.
Chunk 37 processed sucessfully in<PHONE_NUMBER>385254 seconds.
Chunk 39 processed sucessfully in<PHONE_NUMBER>453125 seconds.
Chunk 43 processed sucessfully in<PHONE_NUMBER>883331 seconds.
Chunk 41 processed sucessfully in<PHONE_NUMBER>883728 seconds.
Chunk 42 processed sucessfully in<PHONE_NUMBER>97644 seconds.
Chunk 44 processed sucessfully in<PHONE_NUMBER>916595 seconds.
Chunk 38 processed sucessfully in 1210.3513324260712 seconds.
Chunk 46 processed sucessfully in<PHONE_NUMBER>086853 seconds.
Chunk 45 processed sucessfully in<PHONE_NUMBER>603149 seconds.
Chunk 40 processed sucessfully in 1284.4842483997345 seconds.
Chunk 47 processed sucessfully in<PHONE_NUMBER>678955 seconds.
Chunk 49 processed sucessfully in<PHONE_NUMBER>567352 seconds.
Chunk 48 processed sucessfully in<PHONE_NUMBER>92926 seconds.
Chunk 51 processed sucessfully in<PHONE_NUMBER>27475 seconds.
Chunk 50 processed sucessfully in<PHONE_NUMBER>18045 seconds.
Chunk 52 processed sucessfully in<PHONE_NUMBER>858215 seconds.
Chunk 55 processed sucessfully in<PHONE_NUMBER>693542 seconds.
Chunk 53 processed sucessfully in<PHONE_NUMBER>69519 seconds.
Chunk 54 processed sucessfully in<PHONE_NUMBER>25705 seconds.
Chunk 57 processed sucessfully in<PHONE_NUMBER>464081 seconds.
Chunk 58 processed sucessfully in<PHONE_NUMBER>602753 seconds.
Chunk 56 processed sucessfully in<PHONE_NUMBER>757416 seconds.
Chunk 59 processed sucessfully in<PHONE_NUMBER>946106 seconds.
Chunk 60 processed sucessfully in<PHONE_NUMBER>0336 seconds.
Chunk 63 processed sucessfully in<PHONE_NUMBER>645782 seconds.
Chunk 62 processed sucessfully in<PHONE_NUMBER>202698 seconds.
Chunk 66 processed sucessfully in<PHONE_NUMBER>015656 seconds.
Chunk 65 processed sucessfully in<PHONE_NUMBER>425232 seconds.
Chunk 61 processed sucessfully in 1265.405544757843 seconds.
Chunk 68 processed sucessfully in<PHONE_NUMBER>73056 seconds.
Chunk 64 processed sucessfully in 1127.2428705692291 seconds.
Chunk 69 processed sucessfully in<PHONE_NUMBER>048553 seconds.
Chunk 67 processed sucessfully in 1120.6305174827576 seconds.
Chunk 70 processed sucessfully in<PHONE_NUMBER>238861 seconds.
Chunk 72 processed sucessfully in<PHONE_NUMBER>906464 seconds.
Chunk 71 processed sucessfully in<PHONE_NUMBER>302643 seconds.
Chunk 74 processed sucessfully in<PHONE_NUMBER>151154 seconds.
Chunk 73 processed sucessfully in<PHONE_NUMBER>993774 seconds.
Chunk 78 processed sucessfully in<PHONE_NUMBER>032776 seconds.
Chunk 77 processed sucessfully in<PHONE_NUMBER>41037 seconds.
Chunk 76 processed sucessfully in<PHONE_NUMBER>908966 seconds.
Chunk 75 processed sucessfully in<PHONE_NUMBER>669708 seconds.
Chunk 81 processed sucessfully in<PHONE_NUMBER>343079 seconds.
Chunk 79 processed sucessfully in<PHONE_NUMBER>939423 seconds.
Chunk 82 processed sucessfully in<PHONE_NUMBER>370789 seconds.
Chunk 80 processed sucessfully in<PHONE_NUMBER>931824 seconds.
Chunk 84 processed sucessfully in<PHONE_NUMBER>865875 seconds.
Chunk 83 processed sucessfully in<PHONE_NUMBER>077911 seconds.
Chunk 86 processed sucessfully in<PHONE_NUMBER>289093 seconds.
Chunk 85 processed sucessfully in<PHONE_NUMBER>79657 seconds.
Chunk 87 processed sucessfully in<PHONE_NUMBER>260803 seconds.
Chunk 88 processed sucessfully in<PHONE_NUMBER>455444 seconds.
Chunk 90 processed sucessfully in<PHONE_NUMBER>556305 seconds.
Chunk 91 processed sucessfully in<PHONE_NUMBER>096954 seconds.
Chunk 93 processed sucessfully in<PHONE_NUMBER>900787 seconds.
Chunk 94 processed sucessfully in<PHONE_NUMBER>586517 seconds.
Chunk 89 processed sucessfully in 1200.1189868450165 seconds.
Chunk 96 processed sucessfully in<PHONE_NUMBER>947815 seconds.
Chunk 92 processed sucessfully in 1002.110102891922 seconds.
Chunk 95 processed sucessfully in<PHONE_NUMBER>514526 seconds.
Chunk 97 processed sucessfully in<PHONE_NUMBER>275452 seconds.
Chunk 99 processed sucessfully in<PHONE_NUMBER>58847 seconds.
Chunk 100 processed sucessfully in<PHONE_NUMBER>288513 seconds.
Chunk 98 processed sucessfully in 1072.1483752727509 seconds.
Chunk 102 processed sucessfully in<PHONE_NUMBER>347046 seconds.
Chunk 101 processed sucessfully in 1285.937772512436 seconds.
CPU times: user 20min 34s, sys: 2min 20s, total: 22min 54s
Wall time: 3h 3min 10s
client.close()


PSL Teams In Action!
by Soccer LadumaWhile waiting for the restart of the Absa Premiership season after the FIFA international break, Baroka FC and Highlands Park have decided to play a competitive friendly match today.
The match is scheduled to take place at Balfour Park in Johannesburg.
Bakgaga will host in-form Golden Arrows at Peter Mokaba Stadium in their next match after the break on November 27, while the Lions of the North will welcome Bidvest Wits to the Makhulong Stadium on November 26.
Read: Bafana’s Goalscoring Troubles Explained
Baroka received a morale booster of a 1-0 win over Polokwane City in their last match before the break.
The team has moved up to 12th on the log. The Lions of the North are 6th on the standings, having drawn 0-0 with Stellenbosch in their last match before the break.
Read: Defender’s ‘Miraculous Recovery’ From Injury Against Chiefs Lauded
Meanwhile, AmaZulu have confirmed playing a friendly match against promotion-chasing Uthongathi FC in KwaZulu-Natal this morning.


View Highscores
60 seconds
Welcome to the Coding Quiz Challenge!
In this Quiz, we will go over the basics of Coding and test your knowledge on these subjects with 10 Questions. You will be timed and will have a combined time of 60 seconds to completely finish the Quiz, so move fast!
Let's Play!


Haarlemmermeer 61 km
Hoofddorp NED
Race Winners
(20 runnings)
09 Nov
1997
3:59:16
4:48:18
10 Nov 1996
4:06:25
6:04:08
12 Nov
1995
3:42:53
4:57:07
13 Nov
1994
4:03:09
---
14 Nov
1993
3:58:17
4:47:01
08 Nov
1992
3:48:50
4:36:27
10 Nov
1991
3:47:05
4:42:53
11 Nov
1990
3:53:44
5:06:50
12 Nov
1989
3:44:55
4:51:20
13 Nov
1988
3:48:20
5:13:33
08 Nov 1987
3:46:57
4:45:00
02 Nov 1986
3:50:35
5:06:12
03 Nov 1985
3:42:36
4:45:20
04 Nov 1984
3:46:40
5:06:35
06 Nov 1983
3:41:30
4:47:27
07 Nov 1982
3:49:50
4:50:01
01 Nov 1981
3:58:39
4:45:01
02 Nov 1980
3:52:39
5:19:51
04 Nov 1979
4:00:36
---
03 Dec 1978
3:43:11
4:39:54
Notes: 1978 was the inaugural year. The race was initially called the Schipholloop and was about 59 km. The course
was later lengthen to 61 km for most of the runnings and the last two runnings, the distances was 62.5 km. The
race name was later changed to Ronde van de Haarlemmeermeer. The course was one large loop along the dike around
the polder Haarlemmermeer.
Aleksandr Osipov (UKR)
Larisa Krokhmal (UKR)
Wim van Dijke-3
Brigit Landewe (NED)
Marc VanderLinden (BEL)
Anny VanButsele (BEL)
Sergey Tepovskoy (RUS)
none
Gerrit van Rotterdam (NED)
Desiree Heijnen-3
Michel van de Luijtgaarden (NED)
Desiree Heijnen-2
Wim van Dijke-2
Desiree Heijnen (NED)
Wim van Dijke (NED)
Netty Saive-3
Wim Westerholt (NED)
Angela Mertens (BEL)
Jan van Ooijen-2
Corrie Bouwmeester (NED)
Henk van Hoek-3
Netty Saive-2
Jan van Ooijen (NED)
Netty Saive (NED)
Henk van Hoek-2
Mareike Bestenbreur (NED)
Henk Bronswijk (NED)
Tine Bronswijk-3
Henk van Hoek (NED)
Fia Groen-Witte (NED)
Frans VanCamp (BEL)
Siti White (NED)
Aad van der Boom-2
Tine Bronswijk-2
Kees Verhoef (NED)
Tine Bronswijk (NED)
Aad van der Boom (NED)
none
Ko van der Weijden (NED)
Plonie Scheringa (NED)
Most Wins (1978-1997)
Men 3
Henk van Hoek (NED)
1983,1985,1987
.
Wim van Dijke (NED)
1990-91,1996
Women
3
Tine Bronswijk (NED)
1980-81,1984
.
Netty Saive (NED)
1986-87,1990
.
Desiree Heijnen (NED)
1991-1993
Prize Money
No prize money has been awarded at this race according to available information.
Race Time Bias
The race time bias is not calculated for distances beyond 45 km.
Competitive Level
Insufficient data to calculate the competitive level.
Last Updated on 26 May 2006
Contributors: Martien Baars (50) and Paul Michiels (21)


three.js
- Demo of RectAreaLight on Phong and Standard Material Meshes - by
abelnation
Click and drag to move OrbitControls.