A certain man was sneaking into a large hospital
There was only one reason why he was making d*mn sure that no one saw him . And that would be because of the jerry can full of petrol he was carrying at the moment
In the past, one couldn't find any sort of desire or drive within this man's eyes .
He was already resolved to die today
This man wandered about silently for a long while, before finally choosing a suitable location . His steps came to a halt in one of the hospital's many corridors, although this particular one didn't seem to enjoy all that much foot traffic . He began cautiously pouring the petrol on the floor
'You think I'll die all alone?'.
It happened one week ago
He got p*ss drunk and wandered around the streets, before picking a fight with some random passerby . And as a result, he got beaten up black and blue . So, he ended up in this hospital
He regained his consciousness a bit later and declared to the doctor busy treating him . He said, 'I don't have enough money for the hospital fees, so might as well stop what you're doing and let me go'
It happened then
He saw it
He saw the doctor's eyes, looking down on him as if he was a pathetic fool
That d*mn doctor b*stard . This man couldn't quite remember the face of that doctor, but even after all this time, he could never forget those eyes
That's why he made up his mind
'I'll get my revenge on you . '.
And that was his reason for seeking out the very hospital he once visited as its guest
He wasn't planning to live any longer, anyway . So, he poured the petrol all over this corner of the hospital, and then, dumped what little remained on himself
"We'll all go together . ".
His voice was thickly laden with spiteful rage
Of course, this hospital was pretty d*mn huge, so something like this wouldn't even be able to burn it down completely . However, he should still be able to take a few with him . It'd be very good if a handful of doctors were included in that 'few', but if not, there's not much he could do about that
He already ruined his life through gambling anyway . But, he wasn't planning to quietly disappear like everyone else
He threw away the empty jerry can, and after rummaging through his pockets for a while, pulled out a lighter . The moment his thumb spins that flint, this f*cked-up life of his would come to an end
" ".
He became expressionless and was about to press down with his thumb, but then, an eerie breeze suddenly brushed him by
'… . There's a breeze?'.
The man felt something was off and scanned his vicinity . This corridor didn't even have any windows, so where could have that breeze come from?.
'What was that?'.
He tilted his head while looking around himself, only to abruptly realise that something felt rather empty down there .
What an incredibly puzzling thing that was
He wondered if he dropped the lighter while he was preoccupied, so he carefully combed over the floor, but that turned out to be a waste of time
'Just where did it disappear to ?'.
 Before he could scream, though, the 'insect' reached out and grabbed his mouth
"Euph!!".
"Kiikiik . ".
The 'insect' raised the index finger of its free hand and pressed it against its mouth
"Shush . ".
This human shouldn't raise a commotion like this . The human female his king told him to protect was sleeping in a room nearby, after all
The man struggled bitterly, but he couldn't even budge a single finger of the monster off his face
"Euph, eupphhh!!".
The man's eyes now saw the 'insect' – no, Beru's open mouth slowly growing closer towards him
***.
Why did 'it' happen on level 101?.
As Jin-Woo drove back, he thought back to how his skills abruptly went up a level earlier in the day . Even though his mind was occupied with something else, his hands holding the steering wheel remained steady and controlled
'It's not even level 100, too . '.
He thought that, if something about him were to change because of the level ups, then that should happen on level 100 . However, his expectation was a bit off the mark
His Class-specific skills all got an upgrade after he reached level 101
A few guesses fleeted in and out of his head, but currently, only two of them held the strongest possibilities of being right
The first one was about what the number '1' signified . '1' meant a new beginning
Could it be that, when his level reached 101, all restrictions on his Class-specific skills were removed and he was now free to upgrade them at will?.
'If that's not it '.
Jin-Woo's expression hardened when he thought about the second theory . Personally, he'd have much preferred for this one to be wrong, though
'Could it be because I got my Class at level 51 . ?'.
There was a possibility that the Skill levels rose up because he was exactly 50 levels higher than when he got his Class . Which also kind of implied that he needed to reach level 151 if he wanted to upgrade his Skills again
'… I don't want that . '.
If he thought about his levelling up speed lately, then indeed, he could only dearly pray that this remained nothing more than his hypothesis
Soon, the building with his Guild office came into his view . Jin-Woo drove the van into the underground parking lot . He was the only passenger riding on the trusty steed of the Ah-Jin Guild, 'Bonggo' . Yu Jin-Ho chose to stay back in the Gate's location, saying that he'd wrap up the proceedings before going back to the office
The raid might have ended, but there was still one more step of handing over the recovered loot to the brokers to think about . Since it was Yu Jin-Ho who had contacted these brokers, it seemed that he wanted to personally take charge of handling this matter
["Please, leave everything to me, hyung-nim!"].
Jin-Woo thought that he could still hear Yu Jin-Ho's voice filled with confidence even now
'I wonder, will he be okay?'.
It was all good and well for a Vice-Chair of the Guild to be full of drive and energy, but wouldn't it be better still to hire dedicated staff members for matters like this? Jin-Woo told himself to search for more employees and walked out of the underground parking lot
But then .
'Mm?'.
He spotted a familiar figure walking towards the Guild building from afar . And that familiar person also discovered Jin-Woo staring back at her
"Ah ".
Her steps came to an abrupt halt right then and there
Cha Hae-In formed a shocked expression and began to backtrack one step at a time before she turned around completely, and began running away
' . HUH??'.
Jin-Woo was utterly dumbstruck by what just happened
The thing was, though – he could gloss over the reason why she suddenly started running away after seeing his face, but he simply couldn't .
'… . You think you can escape from me because you started running?'.
Just who did she think she was dealing with here?.
Jin-Woo was suddenly overcome with a streak of stubbornness and pounced forward with everything he had after activating his 'Quicksilver' skill
Time slowed down to a crawl, and only the background images seemed to move at a blinding pace . The distance between him and Cha Hae-In decreased quickly enough, and then he began thinking to himself
'If I grab her from the back or try to touch her, she might get hurt, so '.
Jin-Woo lightly jumped up in the air, spun around once, and landed in front of Cha Hae-In's escaping figure
'… . !!'.
Her eyes grew super wide in an instant
Her escape route had been cut off, and before she could do anything else, her shoulders were caught by Jin-Woo's hands
"Kyahk!".
And so, the foot chase between two rank S Hunters came to a very anti-climatic end . Now that she was caught by him, she couldn't even bring herself to look into his eyes
Jin-Woo continued to stare at her with deeply puzzled eyes, before calmly asking her the important question
"Why did you run away after seeing me?".
" . ".
Well, he could concede a bit here and say that it was possible for her to bolt like that . Fine
"If you were going to run, then why did you even bother to come to my office?".
If she wanted to avoid him that much, then she shouldn't even come anywhere near him, no? Jin-Woo's pointed question elicited Cha Hae-In to reply in a voice that was smaller than a buzzing mosquito
"My car is . still in your parking lot ".
'Ah . Right . There was an unfamiliar car parked in the lot for the last couple of days, wasn't there?'.
That day, when Cha Hae-In came to the office, saying that she wanted to join his Guild .
After they 'teleported' directly to the Association's gymnasium from the Guild office, she forgot to take her car back and left it in the underground parking lot until now
'Looks like she came sneaking back in to get her car back because our Guild was supposed to be on a raid today . '.
Too bad for her, she couldn't have imagined that he'd only need a little over two hours to complete the raid of a rank A Gate . As a result, these two young people got to meet each other again . She quickly tried to get away from him, but in the end, was apprehended by him instead
'… . '.
Jin-Woo's wordless stare continued, and Cha Hae-In's head drooped lower and lower .  ".
Jin-Woo spoke as he formed an amiable smile
"A person's mind can change all the time, am I right?".
Indeed, wouldn't people lose their interest, or suddenly gain interest when there was none, to begin with? Wasn't that how a person's heart operated? There was no reason for them to go out of their way to avoid each other like this
" . ".
However, Cha Hae-In didn't even try to refute him, her head still remaining lowered
'Maybe, she doesn't even feel like talking to me?'.
It was possible that she was unhappy about suddenly being grabbed like that
"Well, then . ".
Jin-Woo turned around to leave with a little nod as his goodbye . No, he was going to turn around . But before he could, Cha Hae-In hurriedly held on to his sleeve
"Excuse me . ".
" ?".
By the time four, five question marks floated over Jin-Woo's head, she finally stopped hesitating and opened her lips to speak
"Can you free up some time so we can talk for a little while?".
Only a minute ago she was fleeing for her dear life, but now, she wanted to speak to him?.
Perhaps she sensed Jin-Woo's flustered confusion, Cha Hae-In quickly explained herself
"Actually, Min Byung-Gu Hunter-nim wanted me to pass on a message to you . ".
Jin-Woo's expression changed once he heard that unexpected name come out of her mouth
"A message for me?".
Nod, nod
Cha Hae-In's head bobbed up and down
"He said, there was something he wanted to say about your powers, Seong Hunter-nim . ".
But, how could that be? Jin-Woo didn't have any point of contact, private or otherwise, with Hunter Min Byung-Gu . And their one and only meeting came around when Jin-Woo revived Min Byung-Gu into a Shadow Soldier for a short while back then
The deceased Hunter carried out his job perfectly and thanks to that, Cha Hae-In was able to survive . It was all due to that man's efforts that these two young people could talk to each other like this
But then, just when did he have the time to leave a message behind?.
Jin-Woo didn't display his power until the Jeju raid, and when he did, Min Byung-Gu was already long dead
Something like that couldn't have happened
Jin-Woo stared at her with a disbelieving expression . Cha Hae-In cautiously continued on
"Your power, Seong Hunter-nim ".
But, when her words reached there, Jin-Woo quickly cut her off
"Hold on, please . ".
Didn't matter if what she wanted to say was true or not, this topic didn't seem well suited to be discussed in the middle of the street
Jin-Woo scanned his vicinity once, and then continued to speak to her
"Let's continue our discussion somewhere more private, shall we?".
***.
Chairman Yu Myung-Han received the files containing certain information from his Secretary Kim
"These are?".
"They are information gathered from Seoul Il-Sin hospital, sir . ".
Il-Sin hospital was where Hunter Seong Jin-Woo's mother had been staying until recently . Yu Myung-Han's eyes sharpened instantly . Without saying anything else, he began reading the documents
'The nurse entered in the morning and she was already wide awake? And Hunter Seong Jin-Woo was found right next to his mother?'.
There was another strange thing mentioned in the file
The hospital staff recommended an in-depth analysis of the patient's conditions to be carried out as they were concerned about her health, but Hunter Seong strongly demanded for her release, instead
Chairman Yu Myung-Han unconsciously shook his head
'That doesn't sound like him '.
That man possessed such a strong filial love that he risked his life and limb by entering dangerous raids in order to earn enough money for her hospital fees . However, such a man one-sidedly demanded his mother's release, when he couldn't have been sure of her physical condition?.
'No, it's the exact opposite . '.
This could only mean that Hunter Seong Jin-Woo had already confirmed his mother's status by then
But, how did he do that?.
The longer Yu Myung-Han read the data sent in from the hospital, the deeper the frowns on his forehead became
Everything about Hunter Seong Jin-Woo was shrouded in mystery
'The dual dungeon incident, his sudden Re-Awakening, his mother's abrupt recovery, and even his mysterious ability to create countless summoned creatures . '.
Wouldn't a series of serendipities eventually become inevitability?.
There was definitely something here . There was absolutely no doubt about that . Yu Myung-Han's sharply-honed senses were telling him such . His resolution became even firmer than before
"Looks like I'll have to talk to him face to face . ".
"I shall send over someone before the end of today, sir . ".
"No need for that . ".
Secretary Kim was taken aback from that reply
"Sir, are you planning to go see him personally?".
"Secretary Kim . Who do you think the man I'm trying to meet is?".
" ".

Secretary Kim's phone suddenly began vibrating . Chairman Yu Myung-Han returned his gaze back to the files and gave his permission
"It's fine to answer it . ".
Secretary Kim bowed his head slightly and quickly checked his phone . It was a text message carrying urgent breaking news
"Chairman, sir . ".
Yu Myung-Han raised his head again
"There's breaking news coming from Japan as we speak . Would you like to see it, sir?".
Secretary Kim wasn't someone to get easily agitated over a simple matter . If he was asking you about whether you wanted to see something or not, then that was the same thing as you needing to see that something immediately
Nod
Yu Myung-Han nodded his head, and as if he was waiting for that, Secretary Kim quickly switched on the giant TV hanging on the wall
- Yes, this is foreign correspondent Park Seong-Woo reporting . As you can see behind me
The real-time live broadcast of Japan's most bustling downtown area filled up the TV screen as the device flickered into life
***.
Shinjuku, located in Tokyo, Japan
A gloomy shadow was being cast on the busiest, liveliest avenue in Tokyo, the one often referred to as the beating heart of Japan . That wasn't a simple figure of speech, though
Every single car, bicycle, and person – didn't matter who or what, they were all standing still beneath this massive shade cast over them
People began climbing out from their stopped vehicles one by one . The road was becoming uncontrollably clogged up, but not one honked their horns or yelled out in irritation
It was as if everyone here had been bewitched by an unseen force
Every single gaze was directed to one particular spot
"Oh, my god . ".
"Dear Lord ".
There was a Gate so huge that it blocked out the sky to cast an enormous shade onto the ground below
The people below saw this common-sense-shattering Gate that easily matched a regular skyscraper in sheer size, and fell deep into the state of indescribable shock
" ".
" . ".
The avenue once bustling with overflowing people was now being gripped tighter and tighter by a silence so wretched that it almost induced some of the witnesses to start vomiting
***.
The atmosphere in the Japanese Prime Minister's official residence was rather poor, as well
Slam!.
The Prime Minister couldn't hold back his rising tide of anger and threw the remote control hard at the TV busy showing the breaking news
"P-Prime Minister!".
His adjutants hurriedly got up, but they shut their mouths and sat back down once the Prime Minister's dagger-like eyes landed on them
"Why isn't the Hunter's Association saying anything?".
The President of the Japanese Hunter's Association, Matsumoto Shigeo, weakly lowered his head . He had become a lot more haggard ever since returning from his trip to South Korea
The Prime Minister's expression hardened
"God d*mn it ".
Something that horrifying had appeared in the middle of Tokyo, yet the Association who should be in charge of such things, were keeping their mouths shut?!.
"A rank S Gate has appeared right in the heart of Tokyo! But, do you think it makes any sort of sense for the Association to not have a single countermeasure in place? How??".
The Prime Minister cried out in anguish
Unfortunately for him, everyone present kept their mouths shut as if they had agreed to do so beforehand . The Prime Minister's expression crumpled unsightly, like a man carrying the weight of all the suffering found in this world, before he collapsed down onto his chair
"Be honest with me, Association President . ".
He then pointed at the cracked TV screen
"What will happen if that thing opens up on us?".
" . It'll be the end, sir . ".
As he thought – the Prime Minister hugged his head and muttered out helplessly
"So, that's how it is . Just one Gate, and the city of Tokyo is finished, is that it?".
"That's not what I'm saying, Prime Minister . ".
" ?".
The Prime Minister raised his head to look, and Association President Matsumoto Shigeo continued on with an emotionless voice
"I meant to say that the entirety of Japan will be finished, sir . ".
< Chapter 150 > Fin


| vec_arith {vctrs} | R Documentation |
This generic provides a common double dispatch mechanism for all infix
operators (+
, -
, /
, *
, ^
, %%
, %/%
, !
, &
, |
). It is used
to power the default arithmetic and boolean operators for vctrs objects,
overcoming the limitations of the base Ops generic.
vec_arith(op, x, y, ...) ## Default S3 method: vec_arith(op, x, y, ...) ## S3 method for class 'logical' vec_arith(op, x, y, ...) ## S3 method for class 'numeric' vec_arith(op, x, y, ...) vec_arith_base(op, x, y) MISSING()
op |
An arithmetic operator as a string |
x, y |
A pair of vectors. For |
... |
These dots are for future extensions and must be empty. |
vec_arith_base()
is provided as a convenience for writing methods. It
recycles x
and y
to common length then calls the base operator with the
underlying vec_data()
.
vec_arith()
is also used in diff.vctrs_vctr()
method via -
.
stop_incompatible_op()
for signalling that an arithmetic
operation is not permitted/supported.
See vec_math()
for the equivalent for the unary mathematical
functions.
d <- as.Date("2018-01-01") dt <- as.POSIXct("2018-01-02 12:00") t <- as.difftime(12, unit = "hours") vec_arith("-", dt, 1) vec_arith("-", dt, t) vec_arith("-", dt, d) vec_arith("+", dt, 86400) vec_arith("+", dt, t) vec_arith("+", t, t) vec_arith("/", t, t) vec_arith("/", t, 2) vec_arith("*", t, 2)


This is a link to the MEAN stack tutorial document that was created for this project. This tutorial will take you through a step by step process on how to set up a MEAN stack on a Google Cloud instance. The MEAN stack is comprised of 4 parts: MongoDB, Express, AngularJS and Node.js. If you would like to view the tutorial, please click on the button below.


How can I contact you?
XMPP/Jabber and Email -<EMAIL_ADDRESS>GPG/PGP (63D3 7F29 053B BEB6
) and OTR FP (62EC78AE AA55C0B7 01A59131 93B93850 3A831B62
)
We chose cock.li for our support email so we don't have to host our own or use some 3rd party that spys on you. Use GPG/PGP when mailing us (if possible) to ensure your communication with us is private.
How can I verify that you delete the files after 24 hours and don't store them elsewhere or send them to a 3 letter agency?
You can't, it's all about trust - you just have to take our word for it. We do recommend that you encrypt your files before uploading them so not even we could read the content. Trust but verify.
We run this cron find /path -type f -mmin +1440 -delete
every hour to make sure the files get removed at ~24 hours.
Do you log anything?
We do not log any data. However, since you're uploading a file to our server - that's all that we store for 24 hours.
We open sourced the code to help ease your mind. We only keep nginx logs for 10 minutes then write them to /dev/null so we can do some debugging if an issue arises or if we need to ban a bad visitor.
Can I use a VPN/Tor/Proxy or Public Wifi while connected to a VPN and Tor while routing through a few other networks?
Yes, please do. - We do not block anything on our end.
Can I upload a file larger than 1GB?
Nope, sorry. (maybe in the future?)
Got an API?
No we do not. You can send a POST
request to https://{{ MY_HOST_DOMAIN }}
with the file param. It'll return a JSON Response.
curl -F<EMAIL_ADDRESS>https://{{ MY_HOST_DOMAIN }}
Why should I use {{ MY_HOST_DOMAIN }} over any other temporary file hosting services?
Use what you're comfortable with, we're not competing with any other services, but rather trying to strengthen the service idea as a whole. We think there should be more sites that store files temporarily.
What file types/content are allowed?
Anything and everything is allowed.[1]
Do you encrypt the files when they're uploaded?
No. Not even the OS/partition. With OpenVZ that's essentially impossible. We'll probably move to KVM or a dedi in the future.
Do you have a Terms of Service or Privacy Policy?
You're looking at it. We feel it's not necessary to have either when we can essentially put the rules here.
tl;dr this service is provided as-is with no warranties of any kind.
What was used to develop the site?
Sublime Text. Oh you mean programming languages etc. Python/Django, Bulma, and some jQuery.
Why did you go with the name {{ MY_HOST_DOMAIN }}?
The original name we decided on turned out to be "PREMIUM" and was being sold for ~$500. So back to the drawing board we went and came up with {{ MY_HOST_DOMAIN }}.
Do you keep backups of the files?
No we do not backup visitor files or anything else on the system.
Do you accept donations?
Only via btc 14wnAh8q3Zfe8dVemYeVnYKLJYbLDH2Rie
Wah! You're hosting in x country and that defeats the purpose of this service!
Well no matter what country or company we go to we're susceptible to DPI, raids, etc.
Something else? Just contact us.


HANDY HEALTH LOG is a simple app for recording your personal health care events. It's a lot easier jotting them in this app than a spiral notebook, and a lot easier to carry around, too!
To begin, tap the Add New Event button. The Data Type spinner lets you choose from one of the following data event types:
| BP | Blood Pressure Reading. Enter your systolic and diastolic numbers and your pulse in beats per minute. |
| EXERC | Exercise. You can enter the number of minutes you were active, or your activity in miles or laps. |
| GLU | Glucose/Blood Sugar Reading. Enter your blood sugar count. |
| OTHER | Any other measures you wish to record. Use the Description 1 and Description 2 fields as reminders. |
| RX | Prescription. For registering when you took a dose of a prescription medication. |
| TEMP | Body Temperature Reading. Enter your temperature in degrees F. |
| WGT | Weight Reading. Enter your weight in pounds and ounces. |
At any time, you may export all entered data to a CSV file for import to spreadsheet applications such as Microsoft Excel (tm) or LibreOffice Calc. Tap the Export Events to CSV File button. The resulting file, HealthData.CSV, contains all entries you've made to date. Entries are sorted in chronological order.
To access this file, you may either (a) use an Android-based file manager app to search for the "HHL" folder, or (b) attach your Android device with the USB data/recharge cable and use your computer's file manager to search for the "HHL" folder.
You may also import entries from a CSV file you've copied to your Android device. To do this, tap the Import Events from CSV File button. You must have a file called ImportHealthData.CSV in the HHL folder. To get a feel for the format such a file should take enter ONE record using Add New Event and then tap the Export Events to CSV File button.
The first line in the file has headers describing each of the values, and are separated by the vertical bar (|) character.
All successive lines contain actual data, and values are separated by a vertical bar (|) character. There is no trailing vertical bar after the Description 2 data value.
NOTE: An import operation will DELETE ALL EXISTING DATA. You'll be asked to confirm this operation before you proceed with it.
Use HANDY HEALTH LOG in good health, and watch the Google Play Store for new features and updates!
Questions? Write the developer at smallscreensw@hotmail.com


|
flat
1
A 2D game engine based on SDL2.0
|
#include <FlatBuilder.h>
Public Member Functions | |
| int | loadSDL (const std::string &name, int fps, int screenWidth, int screenHeight) |
| ~FlatBuilder () | |
| GameData * | getGameData () const |
| GameEngine * | getGameEngine () const |
| void | setHiDPI (bool hidpi) |
This is the main builder for the flat library. It is responsible for setting up all the services and containers.
Definition at line 22 of file FlatBuilder.h.
| flat2d::FlatBuilder::~FlatBuilder | ( | ) |
Cleanly destroy all related objects and shut down SDL nicely.
Definition at line 19 of file FlatBuilder.cpp.
| GameData * flat2d::FlatBuilder::getGameData | ( | ) | const |
| GameEngine * flat2d::FlatBuilder::getGameEngine | ( | ) | const |
| int flat2d::FlatBuilder::loadSDL | ( | const std::string & | name, |
| int | fps, | ||
| int | screenWidth, | ||
| int | screenHeight | ||
| ) |
Initiate the engine and all included systems.
Definition at line 123 of file FlatBuilder.cpp.
|
inline |
Set HiDPI mode for the game
| hidpi | true or false |
Definition at line 92 of file FlatBuilder.h.


{% extends "wagtailadmin/base.html" %}
{% load i18n %}
{% load staticfiles i18n %}
{% block titletag %}{% trans "External Links Management" %}{% endblock %}
{% block extra_css %}
{{ block.super }}
{% endblock %}
{% block content %}
{% block header %}
External Links Search
{% endblock %}
Enter an external link to see a list of pages and snippets that contain that URL. Each page result will appear only once, regardless of how many times a searched URL is present on a page.
{% if request.POST %}| Title | Type |
|---|---|
{{ snippet }} |
Contacts |
{{ snippet }} |
Resources |
{{ snippet }} |
Reusable Texts |


Background
This application was created at the UC Davis Center for Water-Energy Efficiency as part of the 2016 CA Water Board Data Innovation Challenge. The underlying analysis was extended and updated in 2017, and a paper detailing the methodology and results has been submitted for publication in an academic journal. Links to the published article will provided once available.
Project Summary
In April 2015, Governor Brown mandated a 25 percent statewide reduction in water use by urban water suppliers across the state (relative to 2013 levels) with differentiated conservation targets for utilities with varying levels of baseline per capita usage (Executive Order B-29-15). The more than 400 public water agencies affected by the regulation were also required to report monthly progress towards the conservation goal to the State Water Board. This application uses the reported data to visualize how different water utilities have responded to this mandate. In addition to displaying a summary of water use relative to the conservation target for each district, we also calculate the electricity savings associated with the reduced demand on water infrastructure services using estimates of average energy intensity per hydrologic region. We then convert the electricity savings into avoided greenhouse gas (GHG) emissions based on an average emissions factor estimate for the California electricity grid. We can view the total water, energy, and GHG savings aggregated at the state level, as well as for each of the individual water utilities. One of the significant findings is that the electricity savings associated with the observed achievements in water conservation is roughly equivalent to the total first-year electricity savings estimated for all of the energy IOU efficiency programs implemented in the period from July 2015 through June 2016. In addition, the water conservation-related GHG savings over the period of the mandate from June 2015 through May 2016), represent the equivalent of taking about 111,000 cars off the road for a year.
References
- Water Conservation Reporting (State Water Resources Control Board)
- CA Water District Boundaries (GreenGov Portal)
- CA Power Mix By Utility (California Energy Commission)
- Average Energy Intensity By Hydrologic Region from: Navigant 2015, Water Energy Cost-Effectiveness Analysis - Errata to Final Report (San Francisco, CA: California Public Utilities Commission (CPUC))
- GHG Emissions By Fuel Type (US EPA)
- CA Energy Efficiency Programs Statistics — Electricity Savings and Program Costs — (California Public Utilities Commission)
- Cost of Conservation Mandate to Water Suppliers — $75 per af — (State Water Resources Control Board)
- Spang, Edward S., and Frank J. Loge. 2015. “A High-Resolution Approach to Mapping Energy Flows through Water Infrastructure Systems.” Journal of Industrial Ecology 19 (4). doi:10.1111/jiec.12240. http://doi.wiley.com/10.1111/jiec.12240.
- Discussion with Pete Skala, Energy Efficiency Program Manager, May 09, 2016.
Detailed Methodology for Statewide Water-Energy Calculation
Water Conservation Calculation- Pulled urban water systems monthly consumption data reported to the CA State Water Resources Control Board (SWRCB) for June 2015 – May 2016.
- Compared mandate period data to baseline time period (2013) to calculate total water conserved for each reporting water agency. 2013 was used as baseline comparison period to match the requirements of Governor Brown's Executive Order B-29-15.
- We consolidated estimates for average outdoor (excludes wastewater) energy intensity estimates (Table ES-3, p. xvi) for all ten hydrologic regions in California from the Navigant Consulting report entitled, “Water-Energy Cost-Effectiveness Analysis: Final Report” (updated errata report values were used [4]). The energy intensity estimate is carried out both for energy procured from investor-owned energy utilities (IOUs), and for all energy, regardless of producer (total).
- Using GIS, we associated every urban water agency reporting to (SWRCB) to its hydrologic zone, and thus assigned the unique regional energy intensity value to each water agency.
- We estimated the total water utility-based electricity savings associated with water conserved by each water agency, by multiplying the total water conservation during the mandate with the energy intensity estimates of the associated hydrologic zone.
- A recent SWRCB report [7] (Table 4, p.23) estimates that the cost of water conservation to water suppliers (not including lost revenue) is roughly $75/acre-foot.
- Using this number, we estimated the cost per GWH of electricity savings achieved through water conservation.
- We used the quarterly energy savings data collected from the CA Public Utilities Commission website [6] on Energy Efficiency Program Data. Specifically, we queried time series (by quarter) electricity savings data by end use to find the electricity savings associated with Q3 2015 - Q2 2016.
Key Considerations
The comparison between the estimated electricity saved through water conservation and the electricity saved through the IOU EE programs is complicated by a number of differences in how the data are collected and presented as well as a number of assumptions made by the research team and the studies on which they relied.
- Energy intensity is much more nuanced [8] between (and even within) water agencies than is provided by the energy intensity estimates by hydrologic zone from the Navigant Consulting report.
- The vast majority of the electricity savings through the IOU EE Programs represents investments in EE hardware with potentially greater persistence than the observed water savings, which may have a much higher behavioral component. [9]
- To compare the cost of electricity and GHG savings achieved through water conservation to the costs of existing energy efficiency and GHG reduction programs, we need to estimate the per unit cost of these savings. Normalizing the cost comparisons across multiple programs also requires addressing the duration of different project periods (or "useful lifetimes" for technology installations). To accommodate this variation in the persistence of electricity and GHG savings, we estimated the levelized cost of saved electricity (LCSE) and the levelized cost of saved GHG emissions (LCSG) under several potential scenarios.
UC Davis Center for Water-Energy Efficiency
Around the world, water and energy resources are increasingly stressed by expanding demand, diminished supply, and environmental degradation, all of which occur within the broader context of complex economic and regulatory challenges. Historically, public policy and business practice have treated water and energy as separate resources, but they are inextricably linked. Water delivery and treatment systems and the energy production and distribution infrastructure are intertwined and interdependent. Unfortunately, our ability to measure, monitor, and manage this coupled water-energy system is underdeveloped. The Center for Water-Energy Efficiency (CWEE) at UC Davis seeks to address this gap and advance resource use efficiency through integrated water–energy management.


--- redirect_from: /ru/Fonts.html title: "ConEmu | Fonts" ---
ConEmu may use almost any font installed in your system, or not installed, but placed in ConEmu program folder (*.ttf
and *.otf
files only).
Note! Fonts, placed in ConEmu program folder will be available only in ConEmu window, and not available in the real console.
TODO: Describe FixFarBorders (note, that anti-aliasing is off), Enhanced progressbars


{% extends 'base.html' %} {% load static %} {% block container %}
The website for safety authorities of ski resorts in Valais


---
layout: post
title: WebSocket over Nginx
date: 2014-07-08 18:05:18.000000000 -05:00
type: post
published: true
status: publish
categories:
- Ruby on Rails
tags: []
meta:
_publicize_pending: '1'
publicize_twitter_url: http://t.co/DOcyYDt66e
publicize_linkedin_url: http://www.linkedin.com/updates?discuss=&scope=336165323&stype=M&topic=5892443143508348928&type=U&a=Zw06
is_reblog: '1'
post_id: '2776'
blog_id: '9042983'
reblog_snapshot: "O:8:\"stdClass\":7:{s:5:\"title\";s:20:\"WebSocket over Nginx\";s:4:\"type\";s:4:\"post\";s:9:\"mime_type\";s:0:\"\";s:6:\"format\";b:0;s:12:\"modified_gmt\";s:19:\"2013-05-28
15:59:42\";s:9:\"permalink\";s:60:\"http://blog.joshsoftware.com/2013/05/28/websocket-over-nginx\";s:7:\"content\";s:7484:\"
\n\nHow often do you find that the awesome movie seats
you have painstakingly chosen for yourself, is suddenly not available when you
proceed to pay for it. \"Damn it! Just missed!\" you say. Wouldn't it be great
to be guaranteed the seat you selected everytime!\r\n\r\nThe problem with the
above scenario (as is with most e-commerce portals) is that, if two users almost simultaneously
select same seat and checkout to book, the seat will be booked with the user who
has clicked first. The other user will be redirected to same page with message
the S
eat has already been booked. We all have used Indian Railway Website
and this problem really gets me frustrated.So I wanted to build system in which
the seat I select always gets booked.\r\n\r\nTo avoid this problem, I came up
with two solutions\r\n
Auto Refresh every 2 seconds (like cricket scores on
cricinfo.com)
\r\n
\n- This would increase load on server as there will
be database query every 2 seconds and again the load will increase with increase
in concurrent users using the page.
\r\n\t- This would not create a real-time
user experience.
\r\n
\n
Websockets
\r\nWebSockets is a web technology
providing full-duplex communications channels over a single TCP connection. It
is similar to radio broadcasting. It consists of a broadcaster (radio transmitter)
and subscribers (radio receivers). A user connects to a particular channel (frequency)
and whatever is published over that channel is received by the user. Similarly,
in the Websocket space, the broadcaster is a server and the subscriber is the
browser.\r\n\r\nSo, in the earlier scenario, whenever a seats get booked, the
server will broadcast message to all subscribers instantaneously. With the help
of this message, wecan change the color of a booked seat immediately on all browsers
that have the page open. This ensures\r\n
\n- Low load on server.
\r\n\t- A
Real Time user experience
\r\n
\r\nI thought of using
websocket-rails
gem as it makes it pretty easy to implement WebSocket in rails. It is built over
faye (a publish-subscribe messaging
system based on the Bayeux Protocol).\r\n
Getting started with websocket-rails
\r\n
The
Configuration
\r\n
\n- Add the websocket-rails gem to your Gemfile and
run the bundle command
\r\n\t- Run the installation generator: The generator
will require the WebSocket javascripts in our
application.js
\r\nbundle exec rails g
websocket_rails:install
\r\n \r\n
\r\nA lot more information related
to setup is
here\r\n
Connecting
to the server
\r\nYou connect to the server by creating a new WebSocketRails
object and passing it the server address.\r\n\r\n[code language=\"ruby\"]\r\n#
app/views/bookings/index.html.haml\r\njavascript:\r\n var dispatcher = new WebSocketRails('localhost:3001/websocket')\r\n[/code]\r\n
Event
Router and Trigger events on the server from the browser client
\r\nThe installation
generator will create the events.rb file in your config/initializers directory.
All the routes related to websockets are to be added here. You can edit this file
to begin mapping client side events to controller actions.\r\n\r\n[code language=\"ruby\"]\r\n#
config/initializers/events.rb\r\nsubscribe :hold_seat, to: UserController, with_method:
:hold_seat\r\n[/code]\r\n\r\nThis events triggered from the JavaScript client
will invoke methods on the controller on the server. For example, from the browser
JavaScript console, we can trigger the UsersController#hold_seat method with the
following command\r\n\r\n[code language=\"javascript\"]\r\ndispatcher.trigger('hold_seat',
{seat_number: 12});\r\n[/code]\r\n\r\n
Triggering Events on the Client
form server\r\n
\n- Broadcasting to all connected clients
\r\n
\r\nYou
can trigger an event on the client using the broadcast_message method. The broadcast_message
method takes two arguments, the event name to trigger(function to invoke on client
side), and an object to send along with the event.\r\n\r\n[code language=\"ruby\"]\r\n#
app/controller/users_controller.rb:\r\nbroadcast_message :update_seat_status,
{number: seat.number, state: 'hold'}\r\n[/code]\r\n
\n- Broadcasting to
subscribed clients
\r\n
\r\nThe channel will be automatically created
the first time a client subscribes to the channel or a message is broadcasted
to the channel on the server.\r\n\r\nTo listen to events on channel we can add
this JavaScript on our page\r\n\r\n[code language=\"javascript\"]\r\n# app/assets/javascripts/websocket.js\r\nchannel
= dispatcher.subscribe(channel_name);\r\n[/code]\r\n\r\nTo publish to a specific
channel, we can publish a message to that channel from anywhere in a Rails application
using the following code syntax:\r\n\r\n[code language=\"ruby\"]\r\nWebsocketRails[:channel_name].trigger(:event_name,
object_to_send)\r\n[/code]\r\n
\n- Publishing events from the browser client
\r\n
\r\n[code
language=\"javascript\"]\r\nchannel.trigger('event_name', object_to_send);\r\n[/code]\r\n\r\nA
full fledged working Rails application for booking seats using Websocket-rails
is available on my
github
account\r\n
Caveats
\r\n
\n- I used passenger as
application server and as far passenger 3 is concerned it does not support WebSockets.
Passenger 4 does support websockets but I have not tried it yet. Instead, I used
thin as a standalone server. In this situation only the page which needs WebSocket
connection was rendered using the standalone server and rest of the application
works on passenger. We also need to use Redis to enable publishing channel events
to the standalone server.
\r\n
\n
Configuration
to enable standalone server mode
\r\n\r\n[code language=\"ruby\"]\r\n# config/initializers/events.rb\r\nWebsocketRails.setup
do |config|\r\n config.standalone = true\r\nend\r\n[/code]\r\n\r\nFor more configuration
click
here\r\n
\n- Use
Thin server as primary app server.
\r\n
\n
Protocol Upgradation from
http to websocket protocol
\r\nIt is required to change the protocol form
http to websockcet for creating websocket. Nginx did announce its support for
protocol upgradation for websocket in its 1.3.13 version (Feb 2103). We just
to need configure nginx to change protocol from http to websocket protocol for
a specific route. In below configuration protocol upgradation is done using proxy_set_header
option.\r\n\r\n[code language=\"bash\"]\r\nserver {\r\n listen 80;\r\n server_name
app.local;\r\n root /home/app/public;\r\n passenger_enabled on;\r\n rails_env
development;\r\n\r\n location /any_location {\r\n proxy_pass http://localhost:3001/realtime_page;\r\n
\ proxy_http_version 1.1;\r\n proxy_set_header Upgrade $http_upgrade;\r\n
\ proxy_set_header Connection \"upgrade\";\r\n }\r\n}[/code]
\";}"
publicize_twitter_user: bobr_az
_wpas_done_7641025: '1'
_publicize_done_external: a:1:{s:7:"twitter";a:1:{i:2516516912;b:1;}}
_wpas_done_7777887: '1'
author:
login: broberts65
email<EMAIL_ADDRESS>display_name: Bob Roberts
first_name: ''
last_name: ''
---


Potassium
Potassium salts in the form of saltpetre (potassium nitrate, KNO3), alum (potassium aluminium sulfate, KAl(SO4)2), and potash (potassium carbonate, K2CO3) have been known for centuries. They were used in gunpowder, dyeing, and soap making. They were scraped from the walls of latrines, manufactured from clay and sulfuric acid, and collected as wood ash respectively.
| Atomic Number | 19 |
| Relative atomic mass | 39.098 |
| Melting point | 63.5°C |
| Boiling point | 759°C |
The greatest demand for potassium compounds is in fertilisers. Many other potassium salts are of great importance, including the nitrate, carbonate, chloride, bromide, cyanide and sulfate. Potassium carbonate is used in the manufacture of glass. Potassium hydroxide is used to make detergent and liquid soap. Potassium is the seventh most abundant metal in the Earth’s crust. It makes up 2.4% by mass. There are deposits of billions of tonnes of potassium chloride throughout the world. Mining extracts about 35 million tonnes a year.


The FCC voted to end net neutrality rules, but Congress can overrule the FCC with the Congressional Review Act (CRA). Unlike a normal bill, the CRA only requires a simple majority in the Senate and House. Once we get the votes, we win. No filibuster. No procedural tricks. And we already have 50 of 51 votes needed to win the Senate. Click here to join the massive, Internet-wide day of action on February 27th.
Below you'll find a list of your state's senators and representatives. The ones in green support net neutrality, so let them know you appreciate their support. The ones in red need to be convinced, so let them know how important this issue is to you. Then target the 49 undecided senators. Once we win the Senate, the fight moves to the House, where we need over 25 Republican votes to win. So make sure you tweet and call senators AND representatives!
Want to make your voice heard? Check out the map below to find a protest or a meeting with a representative in your state. And if there are no events in your area, consider organizing one!
Net neutrality is the principle that Internet providers like Comcast & Verizon should not control what we see and do online. In 2015, startups, Internet freedom groups, and 3.7 million commenters won strong net neutrality rules from the US Federal Communication Commission (FCC). The rules prohibit Internet providers from blocking, throttling, and paid prioritization—"fast lanes" for sites that pay, and slow lanes for everyone else. Want to learn more? Watch these videos!
Nearly everyone who understands and depends on the Internet supports net neutrality, whether they're startup founders, activists, gamers, politicians, investors, comedians, YouTube stars, or typical Internet users who just want their Internet to work as advertised—regardless of their political party. Even some of the biggest and most interesting sites in the world have joined in unprecedented, historic protests to defend net neutrality. See screenshots from the online protests or photos from protests around the country.
Cable companies are famous for high prices and poor service. Several rank as the most hated companies in America. Now, they're lobbying the FCC and Congress to end net neutrality. Why? It's simple: if they win the power to slow sites down, they can bully any site into paying millions to escape the "slow lane." This would amount to a tax on every sector of the American economy. Every site would cost more, since they'd all have to pay big cable. Worse, it would extinguish the startups and independent voices who can't afford to pay. If we lose net neutrality, the Internet will never be the same.
Congress can vote to stop the FCC, but to make that happen we need a massive volume of phone calls to Congress. If you have a website, you can display a prominent alert on your site that asks your visitors to contact Congress. Click here for a demo, grab the code on GitHub, or use one of these banners. The alert will appear once per user per day and users can easily click away. You can link the banners directly to this website. Add this line of code to your site's header!
<script src="https://widget.battleforthenet.com/widget.js" async></script>
Meeting in person with your member of Congress is by far the most high-impact thing most people can do right now. Ever since the July 12 Day of Action, we've been helping set up Team Internet meetings with members of Congress. Click here to find a Team Internet drop-in visit, scheduled meeting, or town hall near you. If you're a local business owner who could be harmed by a loss of net neutrality rules, that's even more persuasive. Be in touch.
 OONI, part of the Tor Project, helps catch net neutrality violations and other kinds of online censorship. Can you install the app on your phone, and set it to run daily? Visit TestYourInter.net to learn more, or download the app now!
Here are some excellent articles for additional depth. They cover the issue, its political history, the struggles we've overcome, and the fight ahead in Congress and at the FCC.
When you submit to Battle for the Net, you aren't just signing a petition. We actually deliver your messages directly to Congress. However, we submit them through a rate-limited API and this can cause delays. For example, after the July 12th day of action an unprecedented number of submissions created significant delays. We've since taken steps to speed up submission, but it led to some confusion when users received replies from Congress long after taking action. Also, members of Congress themselves sometimes take weeks or more to reply to constituents. So please keep in mind that there may be a delay between when you take action and when your members of Congress reply.


I have been doing this stuff for a week or two now, and about 22 people have done it with me so far. Today I met up with some friends, and after they freebased some, I decided to up the ante and try out 30 mg. Prior to this afternoon, my highest doses were 20 and 25 mg. But my trip was just out of this universe this time around.
I laid down on the bed, rolling my head back and forth for a good ten minutes; my hands were in Monty Burns position (simpsons) and throughout this period, I was in whir-whir land. For those of us who don't know whir-whir land, I vouch that it is similar to nitrous oxide.
This was a kind of head rush/head roll feeling, like with past experiences on 5-meo-dmt.  They are much more delicate than acid visuals, the trick to them, is they warp me as I look into them. They get smaller and smaller, more and more detailed, taking you deeper and deeper in. It can get frightening, since there is no end, they eventually get too small to handle and I get so zoomed into some other plane of existence at that point that I feel kind of betrayed.
In any case, at some point something caused me to sit up, and I was suddenly in a completely different space. It was definitely a semblance of the room I was in, but instead of being with my two friends, I was hallucinating that they were there, along with maybe two other dream-like people who (if I was in a dream) seemed to be friends, but who weren't actual people I know.
In any case, we were all together in this room, existing outside human time, in a kind of psychonaut time.  And in this hallucination, we were 'talking' to each other about the places we had seen, and in a friendly way we were trying to blow each otherís minds with things the others couldn't handle. Kind of like at the carnival, those bells you smack with the hammer?
Well we each had a hammer and we metaphorically slammed it over the tops of our heads deeper and deeper or further up and out and high and intense. And the way we would notch up the level like this was by saying a phrase of nonsense- like the title of this report. Another was unchi-gee unchi-ga-unchi-goo goo goo. And they got 'funnier and funnier' the farther we drove. But eventually, I started thinking too hard and started anticipating how far we could go, and this was a bad idea, because the only time is now. But any way, inside my hallucination they saw me coming down, and from this height we were in, bad got real bad. In fact itís never been worse in all my life.
In real life, at this point, events correlate with my tripping over a plug to my camcorder and falling into the VCR. I am told that I started spinning around in circles on the floor. But in my mind, I was racing through the bowels of my most horrible fear. There was nothing in my mind like literal thought, though there was 'verbalesque noise' and this noise was all I actually was. My consciousness had no sensory input, and all it was doing was being. It was supposed to be being whatever I wanted it to be, but I wasn't really there behind the reins at this point. I was strictly an observer.
At this point there was a most wretched, cold, and living-dead noise that panned from left to right in my stereo field. It was a low noise, and it sounded like: 'unchk-wow-wow-wow' whereupon it would turn the other direction and repeat. But then I started wishing that I could escape this horrible existence, that consciousness was the ugliest thing in this world of infinite spirals. But the operative here is that I wished something. Suddenly there was an I again. And right then I heard my two friends in the real world, asking if I was alright.
Zoinks! Yes just me, back again, still tripping but its nothing like what I just went into... What really irks me here in retrospect is just who were those fellow trippers? How far did they go, and next time, how far will I be able to go with them? It is eerie that they seemed timeless, not people I know in this world but people the real part of my self knows, a part of my self that this part of my self which is writing ought to know better.
Rolling back around the brain, over and over in every direction, turning over onto oneself, aimed at some vague point of unity that consciousness forever circles, trying to find the destination but all there are is spirals. The only sense in it all is to make sure they arenít downward spirals.
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.


Name of tournament
Location
Start Date
End Date
6th GAIL Cup
India
August 16, 2019
August 18, 2019
Panama City Early Bird
Panama
August 21, 2019
August 21,2019
Panama City Main Event
Panama
August 22, 2019
August 24, 2019
BMSC Warm Up
UK
August 23, 2019
August 24, 2019
Seniors Championship
Australia
August 23, 2019
August 25, 2019
BMSC Main Event
UK
August 24, 2019
August 26, 2019
COLD III Early Bird
USA
August 30, 2019
August 30, 2019
COLD III
USA
August 31, 2019
September 2, 2019
Ottawa
Canada
August 31, 2019
September 02, 2019
COLD III Late Bird
USA
September 2, 2019
September 2, 2019
Continental Scrabble Championship
Netherlands
September 7, 2019
September 8, 2019
Charlottesville, VA
USA
September 21, 2019
September 22, 2019
NSW Championships
Australia
October 5, 2019
October 7, 2019
WESPAC Last Chance Qualifier
India
October 15, 2019
October 15, 2019
WESPAC First Gear
India
October 15, 2019
October 15, 2019
WESPAC 1 Day open
India
October 16, 2019
October 16, 2019
WESPAC Championship
India
October 16, 2019
October 20, 2019
WESPAC Indian Open
India
October 17, 2019
October 19, 2019
WESPAC Pro Am Open
India
October 20, 2019
October 20, 2019
Seattle One Day tournament
USA
October 26, 2019
October 26, 2019
Caledon
Canada
November 2, 2019
November 2, 2019
Winter Matchplay
UK
November 16, 2019
November 17, 2019
WSC Warmup
UK
November 16, 2019
November 16, 2019
Junior World Scrabble Championship
UK
November 16, 2019
November 18, 2019
World Scrabble Championship
UK
November 19, 2019
November 24, 2019
World Scrabble Championship Final Fling
UK
November 23, 2019
November 23, 2019
Princess Cup
Thailand
November 22, 2019
November 24, 2019
MGI Premier Grand Finale 2019
Nigeria
November 22, 2019
November 24, 2019
WESPA Youth Cup
Malaysia
November 29, 2019
December 1, 2019
California Open
USA
December 13, 2019
December 15, 2019
UK Open
UK
January 3, 2020
January 5, 2020
UK Open Final Fling
UK
January 6, 2020
January 7, 2020
Crescent City Cup
USA
January 18, 2020
January 20, 2020
Caledon
Canada
January 25, 2020
January 25, 2020
12th Israeli Open
Israel
February 28, 2020
March 1, 2020
UK Grand Slam 2020
UK
February 29, 2020
March 1, 2020
Charlottesville, VA
USA
March 7, 2020
March 8, 2020
Poughkeepsie Early Bird
USA
March 13, 2020
March 13, 2020
Poughkeepsie Main Event
USA
March 14, 2020
March 15, 2020
MISO 13
Malta
April 20, 2020
May 1, 2020
Calgary Summer Stampede
Canada
June 28, 2020
June 30, 2020
Ottawa Early Bird
Canada
September 4, 2020
September 4, 2020
Ottawa
Canada
September 5, 2020
September 7, 2020
Alchemist Cup
Malaysia
December 2, 2020
December 6, 2020


| settings {renv} | R Documentation |
Define project-local settings that can be used to adjust the behavior of
renv
with your particular project.
settings
An object of class list
of length 6.
external.libraries
A vector of library paths, to be used in addition to the project's own
private library. This can be useful if you have a package available for use
in some global library, but for some reason renv
is not able to install
that package (e.g. sources or binaries for that package are not publicly
available, or you have been unable to orchestrate the pre-requisites for
installing some packages from source on your machine).
ignored.packages
A vector of packages, which should be ignored when attempting to snapshot the project's private library. Note that if a package has already been added to the lockfile, that entry in the lockfile will not be ignored.
package.dependency.fields
During dependency discovery, renv
uses the fields of an installed
package's DESCRIPTION
file to determine that package's recursive
dependencies. By default, the Imports
, Depends
and LinkingTo
fields
are used. If you'd prefer that renv
also captures the Suggests
dependencies for a package, you can set this to
c("Imports", "Depends", "LinkingTo", "Suggests")
.
snapshot.type
The type of snapshot to perform by default. See snapshot for more details.
use.cache
Use a global cache of R packages. When active, renv
will install
packages into a global cache, and link packages from the cache into your
renv
projects as appropriate. This can greatly save on disk space
and install time when for R packages which are used across multiple
projects in the same environment.
vcs.ignore.library
Set whether the renv
project library is excluded from version control.
You can change the default values of these settings for newly-created renv
projects by setting R options for renv.settings
or renv.settings.<name>
.
For example:
options(renv.settings = list(snapshot.type = "all")) options(renv.settings.snapshot.type = "all")
If both of the renv.settings
and renv.settings.<name>
options are set
for a particular key, the option associated with renv.settings.<name>
is
used instead. We recommend setting these in an appropriate startup profile,
e.g. ~/.Rprofile
or similar.
## Not run: # view currently-ignored packaged renv::settings$ignored.packages() # ignore a set of packages renv::settings$ignored.packages("devtools", persist = FALSE) ## End(Not run)


US House Democrats say Boeing CEO testimony prompts new questions
The chairman of the U.S. House Transportation and Infrastructure Committee and the head of its aviation subcommittee said on Monday that Boeing's testimony on two fatal 737 MAX crashes prompted new questions.
WASHINGTON: The chairman of the U.S. House Transportation and Infrastructure Committee and the head of its aviation subcommittee said on Monday that Boeing's testimony on two fatal 737 MAX crashes prompted new questions.
Representatives Peter DeFazio and Rick Larsen said in a joint letter to lawmakers that Boeing Co Chief Executive Dennis Muilenburg's answers at Wednesday's hearing "were consistent with a culture of concealment and opaqueness and reflected the immense pressure exerted on Boeing employees during the development and production of the 737 MAX."
The pair added that the hearing did not end the committee's investigation and that Muilenburg and Boeing Commercial Airplanes Chief Engineer John Hamilton's testimony prompted "a litany of new questions for both Boeing and the FAA about the failures that led to the tragic and unnecessary deaths of 346 innocent people."
Boeing did not immediately comment.
(Reporting by David Shepardson; Editing by Sandra Maler)


Introduction
Setup
Installing release version
Install-Package QBittorrent.Client
Installing prerelease version from MyGet
Install-Package QBittorrent.Client -Source https://www.myget.org/F/fedarovich/api/v3/index.json -IncludePrerelease
Using the library
Create an instance of See documentation on QBittorrentClient
for more information. class and pass the qBittorrent web interface URL to the constructor.
var client = new QBittorrentClient(new Uri("http://<IP_ADDRESS>:8080/"));
If your qBittorrent instance requires authentication call LoginAsync
method:
await client.LoginAsync("login", "password");
Now you can use the client
instance to query qBittorrent status, list/add/remove torrents, etc. See documentation on QBittorrentClient
for more information.
Important
It is important to reuse the same client
instance across the application, because it stores cookies required by qBittorrent web API.
Do not forget to dispose the client
after you has finished your work with it:
client.Dispose();


What is Virtualization
Virtualization is the process of running a virtual instance of a computer system that is seprate from the hardware itself. This is mainly used to run different Operating Systems such as Linux on Windows, Windows on MacOS, etc. These use VMs or Virtual Machines to run and are easy to recover and maintain. Virtualization, however, is not always stable. Click on the link "Virtual vs. Container" to see how virtualization and containerization compare.


Welcome to my page
Peace Sign
Love Sign
Look around and and See what you like!
Books:
show lists
Twilight
New Moon
Eclipse


ContinuumSubtraction — Subtracts the continuum from a spectrum.¶
This module defines the class for continuum subtraction from spectra.
-
class
admit.util.continuumsubtraction.spectral.ContinuumSubtraction.
ContinuumSubtraction
[source]¶ Perform continuum subtraction on a spectrum. There are several algorithms to choose from, using the algorithm keyword. This class defines a consistent API for spectral continuum subtraction in ADMIT. Any continuum subtraction method can be added provided it is a class with the following:
- init signature of (self, x, y), where x is the x axis as a numpy and y is the spectrum as a masked array
- run method with the signature (self, **keyval), where keyval is a dictionary which contains all the arguments for the method as key value pairs, the run method should have the ability to ignore keywords that it does not know about.
- the run method should return the continuum as a numpy array
Parameters: None (all parameters are passed to the run method) Attributes
None Methods
run
(id, spec, freq, segmentfinder, segargs, ...)Calculate the continuum using the given parameters. -
run
(id, spec, freq, segmentfinder, segargs, algorithm, **keyval)[source]¶ Calculate the continuum using the given parameters. The method is as follows:
locate regions of spectral emission mask out these regions pass the masked spectra to the given algorithm
Parameters: id : int
Task id of the AT calling this method
spec : numpy array
The spectrum from which the continuum is determined
freq : numpy array
The frequency axis of the spectrum
segmentfinder : str
The segment finder to use (i.e. ADMIT, ASAP, etc.)
segargs : dict
Dictionary containing the arguments for the segmentfinder
algorithm : str
The continuum finding algorithm to use (i.e. SplineFit, SVD_Vander, etc.)
keyval : dict
Dictionary containing the arguments for the continuum finding algorithm


| Ds Id | Mode | State | Max Active | Idle Size | Using Size | Semaphore Waiter Size | Transfer Waiter Size |
|---|
| SQL | Ds Id | Start Time | End Time | Took Time(Ms) | Success | Method |
|---|
sql-size:


James Turrell
“My work is more about your seeing than it is about my seeing, although it is a product of my seeing. I’m also interested in the sense of presence of space; that is space where you feel a presence, almost an entity — that physical feeling and power that space can give.”
With his long white beard and measured manner of speech, the acclaimed light artist James Turrell cultivates the image of a cosmic cowboy. It’s a compelling presentation, and an effective tool in his long-running campaign to seduce patrons and collectors into what he describes as “another kind of seeing.” The “skyspaces” and “dark adaptations” Turrell creates for the homes, gardens, swimming pools, screening rooms, pagodas and pyramids of private collectors — almost anywhere the artist determines that the arrival of light at dawn and its departure at dusk can be captured to its full, revelatory effect — may differ in attribute and design, but they all pay tribute to and serve Turrell’s higher calling: the Roden Crater Project, northeast of Flagstaff, Ariz., that is his inspiration and his burden and will one day be the centerpiece of his substantial legacy.
For over half a century, the American artist James Turrell has worked directly with light and space to create artworks that engage viewers with the limits and wonder of human perception. Turrell, an avid pilot who has logged over twelve thousand hours flying, considers the sky as his studio, material and canvas. New Yorker critic Calvin Tompkins writes, “His work is not about light, or a record of light; it is light — the physical presence of light made manifest in sensory form.”


Ruben Dedecker, Harm Delva, Pieter Colpaert, and Ruben Verborgh
IDLab, Ghent University - imec
A server API
A server API
Rely on third parties
Can dataset fragmentation provide a middle ground?
Inspired by
A file-based architecture for prefix search with an acceptable user-perceived performance that enables clients to take control of the query evaluation process
A file-based architecture for prefix search with an acceptable user-perceived performance that enables clients to take control of the query evaluation process
A file-based architecture for prefix search with an acceptable user-perceived performance that enables clients to take control of the query evaluation process
A file-based architecture for prefix search with an acceptable user-perceived performance that enables clients to take control of the query evaluation process
A file-based architecture for prefix search with an acceptable user-perceived performance that enables clients to take control of the query evaluation process
what data properties
{
"@type":"Person",
"Name": "Carol Carolsson",
"Address": {
"Country": "Belgium",
"Municipality": "Ghent",
"Street": "Albertlaan",
"Number": 23
}
}
what data structure
balanced search trees
balanced search trees
balanced search trees
{
"@id":"#Dataset",
"@type":"Collection",
...
"member":[
{
"@id": "/people/RubenD",
"fName": "Ruben",
"lName": "Dedecker",
},
{
"@id": "/people/PieterC",
"fName": "Pieter",
"lName": "Colpaert",
}
]
}
Dataset entities are members of the collection
{ "@context":"https://w3id.org/tree#", "@id":"#Dataset", "@type":"Collection", ... "member":[...] }
We need to define the relations between our fragments
{
"@context":"https://w3id.org/tree#",
"@id":"#Dataset",
"@type":"Collection",
"view":{
"@id":"/fragments/root",
},
"member":[...]
}
We discover the root through the view property
{
"@context":"https://w3id.org/tree#",
"@id":"/fragments/root",
"dct:isPartOf": {
"@id": "/collection"
"member": [...]
},
"relation":[
...
]
}
Dataset entities are members of the collection
{
"@context":"https://w3id.org/tree#",
"@id":"/fragments/root",
"dct:isPartOf": { ... },
"relation":[
{
"@type":"GreaterThanRelation",
"path":"foaf:name",
"value":"Alice",
"node":"/fragments/gtAlice",
},
...
]
}
This relation leads to a fragment containing entities of the dataset with a foaf:name property greater than Alice
Query on firstName property for prefix Carol
{
"@id": "/collection"
"view": [
"/fname/root",
"/lname/root"
]
}
{
"@id": "/collection"
"view": [
"/fname/root",
"/lname/root"
]
}
{
"@context":"https://w3id.org/tree#",
"@id":"/fname/root",
"dct:isPartOf": {
"@id": "/collection"
"member": []
}
...
}
Does the relation path match the queried firstName property?
Is Carol greater than Alice?
{
"@context":"https://w3id.org/tree#",
"@id":"/fname/root",
"dct:isPartOf": ...
"relation":[
{
"@type":"GreaterThanRelation",
"path":"foaf:name",
"value":"Alice",
"node":"/fname/gtAlice",
},
...
]
}
{
"@context":"https://w3id.org/tree#",
"@id":"/fname/root",
"dct:isPartOf": ...
"relation":[
{
"@type":"GreaterThanRelation",
"path":"foaf:name",
"value":"Alice",
"node":"/fname/gtAlice",
},
...
]
}
| Dataset | Transport stops | OSMNames |
|---|---|---|
| entities | 73k | 3.87m |
| triples | 438k | 125m |
| query log | ✔ | ✘ |
Prefix queries are often processed in series
Prefix queries are often processed in series
Prefix queries are often processed in series
Prefix queries are often processed in series
Prefix queries are often processed in series
Prefix queries are often processed in series
We evaluate on series of prefix autocompletion queries
server cache hit rate for transport stops queries
At a 10% cache size, the baseline query server stagnates at around 20%, where our proposed approach can serve more than half the requests from the server cache after an initial warmup period.
percentage of useful results for transport stops queries
A large percentage of query series in the log result in no matches, or start from a nearly completed word. These queries require a full traversal with few or no results, leading to bad efficiency. For other requests we see the efficiency averages around 50%.
bandwidth usage for transport stops queries
A series of prefix autocompletion requests results in a maximum bandwidth of 25kB over this fragmentation. After an initial warmup of the client cache, less fragments need to be retrieved and the bandwidth requirement drops.
# results retrieved for the first three queries in a series of requests over the smaller transport stops dataset
We see an average of 5 results that can be shown in the first 25 ms as a results of cached results from previous queries. On average queries over this fragmentation can return around 15 results in a 150 ms interval.
# results retrieved for the first three queries in a series of randomly generated requests over the larger OSMNames dataset
Randomized queries over a large dataset (3.87m entities) leads to a slower initial retrieval of results. Subsequent queries can use cached fragments to provide around 15 results in the 150 ms interval.
Query performance per fragment size over the smallertransport stops dataset
Queries evaluated over the transport stops dataset (73k entities) can take advantage of larger fragment sizes because of the lower depth of the fragmentation structure. Larger fragments provide more results in a single HTTP request.
Query performance per fragment size over the largerOSMNames dataset
Queries evaluated over the OSMNames dataset (3.8m entities) struggle with larger fragment sizes as initial traversal becomes more expensive. Smaller fragment sizes enable a faster descent in the fragmentation structure.
Querying a fragmented dataset of the address registry in Flanders
We provide a file-based approach to fragment a dataset and publish the fragments over the Web from static solutions such as github pages, that enables clients to evaluate prefix queries over the dataset with an acceptable user performance, while giving full client control of the query evaluation process.
We provide a file-based approach to fragment a dataset and publish the fragments over the Web from static solutions such as github pages, that enables clients to evaluate prefix queries over the dataset with an acceptable user performance, while giving full client control of the query evaluation process.
Query 4 datasets simultaneously!
For more information and further developments, come find us at
https://tree.linkeddatafragments.org/or send me an email at
Ruben.Dedecker@UGent.be


| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<uniwbrk.h>
This include file declares functions for determining where in a string “words” start and end. Here “words” are not necessarily the same as entities that can be looked up in dictionaries, but rather groups of consecutive characters that should not be split by text processing operations.
The following functions determine the word breaks in a string.
Determines the word break points in s, an array of n units, and
stores the result at p[0..n-1]
.
p[i] = 1
means that there is a word boundary between s[i-1]
and
s[i]
.
p[i] = 0
means that s[i-1]
and s[i]
must not be separated.
p[0]
is always set to 0. If an application wants to consider a
word break to be present at the beginning of the string (before
s[0]
) or at the end of the string (after
s[0..n-1]
), it has to treat these cases explicitly.
This is a more low-level API. The word break property is a property defined in Unicode Standard Annex #29, section “Word Boundaries”, see https://www.unicode.org/reports/tr29/#Word_Boundaries. It is used for determining the word breaks in a string.
The following are the possible values of the word break property. More values may be added in the future.
The following function looks up the word break property of a character.
Returns the Word_Break property of a Unicode character.
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Bruno Haible on January, 2 2022 using texi2html 1.78a.


Ruby in twenty minutes (1/4)
Introduction
This is a small Ruby tutorial that should take no more than 20 minutes to complete. It makes the assumption that you already have Ruby installed. If you don’t have Ruby on your computer download and install it before you get started.
Interactive Ruby
Ruby comes with a program that will show the results of any Ruby statements you feed it. Playing with Ruby code in interactive sessions like this is a terrific way to learn the language.
Open up IRB (which stands for Interactive Ruby).
- If you’re using Mac OS X open up
Terminal
and typeirb
, then hit enter. - If you’re using Linux, open up a shell and type
irb
and hit enter. - If you’re using Windows, open
fxri
from the Ruby section of your Start Menu.
1
|
|
Ok, so it’s open. Now what?
Type this: "Hello World"
then hit [Enter]:
1 2 |
|
Ruby Obeyed You!
What just happened? Did we just write the world’s shortest “Hello World” program? Not exactly. The second line is just IRB’s way of telling us the result of the last expression it evaluated. If we want to print out “Hello World” we need a bit more:
1 2 3 |
|
puts
is the basic command to print something out in Ruby. But then
what’s the => nil
bit? That’s the result of the expression. puts
always returns nil, which is Ruby’s absolutely-positively-nothing value.
Your Free Calculator is Here
Already, we have enough to use IRB as a basic calculator:
1 2 |
|
Three plus two. Easy enough. What about three times two? You could type it in, it’s short enough, but you may also be able to go up and change what you just entered. Try hitting the up-arrow on your keyboard and see if it brings up the line with 3+2
on it. If it does, you can use the left arrow key to move just after the +
sign and then use backspace to change it to a *
sign.
1 2 |
|
Next, let’s try three squared:
1 2 |
|
In Ruby **
is the way you say “to the power of”. But what if you want to go the other way and find the square root of something?
1 2 |
|
Ok, wait, what was that last one? If you guessed, “it was figuring out the square root of nine,” you’re right. But let’s take a closer look at things. First of all, what’s Math
?
Modules, Group Code by Topic
Math
is a built-in module for mathematics. Modules serve two roles in Ruby. This shows one role: grouping similar methods together under a
familiar name. Math
also contains methods like sin()
and tan()
.
Next is a dot. What does the dot do? The dot is how you identify the receiver of a message. What’s the message? In this case it’s sqrt(9)
, which means call the method sqrt
, shorthand for “square root” with the parameter of 9
.
The result of this method call is the value 3.0
. You might notice it’s not just 3
. That’s because most of the time the square root of a number won’t be an integer, so the method always returns a floating-point number.
What if we want to remember the result of some of this math? Assign the result to a variable.
1 2 3 4 5 6 |
|
As great as this is for a calculator, we’re getting away from the
traditional Hello World
message that beginning tutorials are supposed to focus on…
so let’s go back to that.


Frequently Asked Questions¶
- How accurate are your estimations?
It is hard to quantify the entirety of emissions of computing, because there are many factors in play, notably the life-cycle emissions of computing infrastructure. We therefore focus on only the direct emissions produced by running the actual code, but recognize that there is much work to be done to improve this estimation.
- How do I offset my emissions?
There are many offsetting schemes, and it is hard to recommend any single one. For one-shot offsetting, the Gold Standard is a often used, and has many offsetting projects to choose from at different prices. There are often local initiatives as well, so try researching what exists in your region/country. For a recurring offset, Project Wren lets you estimate your monthly carbon emissions and offset them via a monthly subscription. Keep in mind that offsetting is a good choice, but reducing your emissions should be the priority.
- How can I help?
If you find a functionality missing in the codecarbon repo, please open an issue so that you (and others!) can help add it. We did our best to cover all use cases and options, but we count on the open source community to help make the package an even greater success.


What are Sessions?
A session is server-side storage of information that will be persisted through a user's interaction with the application. When you first visit the server, you are provided with a cookie with a unique session id. The user presents this cookie with future requests so that the server can identify that the requests have come from the same user. Information associated with that session id can then be used to respond to the request. For example, you could persist the user's name, whether they are logged in, and their shopping basket inside a session. Kitura implements sessions using the Kitura-Session library.
A session, unlike a database, is intended to be temporary. If it is not updated or if the session is ended, such as a user logging out, then it is cleared.
Sessions are not the same as authentication, although they are often used together. Authentication is used to verify a user's credentials to identify who they are. A session is used to check that the current request is from the same user as a previous request. You can learn more about authentication in our What is Authentication? guide.
Next steps
Session with Raw routes: Learn how to persist the user's information between multiple requests on raw routes.
Session with Codable routes: Learn how to persist the user's information between multiple requests on codable routes.


| 076:001 Khan | : |
Has there not been over man a period of time, when he was nothing to be mentioned? |
| 076:001 Maulana | : |
Surely there came over man a time when he was nothing that could be mentioned. |
| 076:001 Pickthal | : |
Hath there come upon man (ever) any period of time in which he was a thing unremembered? |
| 076:001 Rashad | : |
Is it not a fact that there was a time when the human being was nothing to be mentioned? |
| 076:001 Sarwar | : |
There was certainly a time when there was no mention of the human being. |
| 076:001 Shakir | : |
There surely came over man a period of time when he was a thing not worth mentioning. |
| 076:001 Sherali | : |
There has, certainly, come upon man a period of time when he was not a thing worth mentioning. |
| 076:001 Yusufali | : |
Has there not been over Man a long period of Time, when he was nothing - (not even) mentioned? |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > وحدانيته Pillars of Islam> Islamic> Oneness of Allah> Singularity and Being Unique الإنسان والعلاقات الاجتماعية > الإنسان > أحواله وأوصافه Man and The Social Relations>Man>His Cirumstances and his Specifications الإنسان والعلاقات الاجتماعية > الإنسان > شرفه ودنوه Man and The Social Relations>Man>When Honourable and When Unhonourable
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


|
astro 2.0
A simple astrodynamics library
|
astro is a header-only, C++ library that provides basic astrodynamics functionality. It is intended to be lightweight and simple to use in other projects. A CMake module is available to make it easy to include astro in other CMake-based projects: Findastro.cmake.
To install this project, please ensure that you have installed the following (install guides are provided on the respective websites):
The following dependencies are optional (see Build options
):
BUILD_TESTS
build option)These dependencies will be downloaded and configured automagically if not already present locally (requires an internet connection).
Run the following commands to download, build, and install this project.
git clone https://www.github.com/openastro/astro cd astro git submodule init && git submodule update mkdir build && cd build cmake .. && cmake --build .
To install the header files, run the following from within the build
directory:
make install
Note that dependencies are installed by fetching them online, in case they cannot be detected on your local system. If the build process fails, check the error log given. Typically, building fails due to timeout. Simply run the cmake --build .
command once more.
You can pass the following, general command-line options when running CMake:
-DCMAKE_INSTALL_PREFIX[=$install_dir]
: set path prefix for install script (make install
); if not set, defaults to usual locations-DBUILD_DOXYGEN_DOCS[=ON|OFF (default)]
: build the Doxygen documentation (LaTeX must be installed with amsmath
package)-DBUILD_TESTS[=ON|OFF (default)]
: build tests (execute tests from build-directory using ctest -V
)-DBUILD_DEPENDENCIES[=ON|OFF (default)]
: force local build of dependencies, instead of first searching system-wide using find_package()
The following commands are conditional and can only be set if BUILD_TESTS = ON
:
-DBUILD_COVERAGE_ANALYSIS[=ON|OFF (default)]
: build code coverage using Gcov and LCOV (both must be installed; requires GCC compiler; execute coverage analysis from build-directory using make coverage
)Pass these options either directly to the cmake ..
command, e.g., to build the tests:
cmake -DBUILD_TESTS=on ..
N.B.: Toggling options to build tests using ccmake
does not work correctly, as the necessarily libraries are not download automagically!
This project has been set up with a specific file/folder structure in mind. The following describes some important features of this setup:
cmake/Modules
: Contains CMake
modules, including Findastro.cmake
moduledocs
: Contains code documentation generated by Doxygeninclude/astro
: Project header files (*.hpp)scripts
: Shell scripts used in Travis CI buildtest
: Project test source files (*.cpp) that are provided to the Catch2 framework.travis.yml
: Configuration file for Travis CI build, including static analysis using Coverity Scan and code coverage using CoverallsCMakeLists.txt
: main CMakelists.txt
file for project (should not need to be modified for basic build)Dependencies.cmake
: list of dependencies and automated build, triggered if dependency cannot be found locallyDoxyfile.in
: Doxygen configuration file, adapted for generic use within project build (should not need to be modified)LICENSE.md
: license file for projectProjectFiles.cmake
: list of project source files to buildREADME.md
: project readme file, parsed as main page for Doxygen documentationOnce you've made your great commits:
git checkout -b my_branch
git push origin my_branch
The copyright holders are not liable for any damage(s) incurred due to improper use of astro.
Doxygen
config file so that e.g., @@CMAKE_PROJECT_NAME@_VERSION@
works.CMake
module so that find_package respects minimum version required.


DICE :)
Start Game
user1
Roll
Hold
Score:
Roll Score:
Score:
Total:
user2
Roll
Hold
Score:
Roll Score:
Score:
Total:


We visualize infrastructure!
- integrate visionary portals
- recontextualize cross-platform solutions
- synthesize 24/7 vortals
- disintermediate efficient e-commerce
- whiteboard best-of-breed paradigms
- unleash next-generation ROI
- incentivize user-centric experiences
- synergize best-of-breed supply-chains
- reintermediate efficient networks


Before we start you should check your image format and the naming of your files. The preferred image format is *.tif and can be compressed with the packbits compression. JPEG or other image formats as well as MPEG video compression formats will not provide you with sub pixel resolution since the images are meant for saving as much space as possible. The script that we use to create a list of images to process is limited to certain naming conventions, but it is possible to generate your own list of images. If you want to change the format or the names of your images you can use free programs like Irfanview (www.irfanview.com) to batch process a huge number of images.
Use the button 'Generate file list' in the main gui or type 'GenerateFileList;' at the MATLAB command line and press 'ENTER'. The following window should appear:
If you select 'Automatically', the following dialog will ask you for the first image to process:
Select the first image (e.g. 45001.bmp) and click on 'Open'. You will be asked to save the image sequence (file list) as a file named 'filenamelist.mat', please do not change this name since the following procedure depends on it. You should save this file in the folder where your images are stored.
After that you will be asked if you want to extract the time from the images:
If you select 'Yes', MATLAB extracts the acquisition time from your images and saves it in 'timeimage.txt'. The time resolution is limited to 1 second as the information is gathered from the EXIF data. This option has to be chosen if you want to match stress and strain at the end of your analysis.
If you choose 'Manually' for manual generation of the file list in the initial dialog, you will find a different window:
Enter the number of the first and last image to create the file list. The numbers will be the varying part at the end of each file name.
The next windows will ask for the image name (prefix: fix part of the file name), the image extension and the number of digits for the varying image number (including leading zeroes):
The next step is to save the file list into the folder of the images to process (keep recommended name):


Full Stack Web Developer with experience as a Project Manager who graduated from UC Berkeley with honors and completed UC Berkeley Extension Full Stack Web Development Bootcamp. Top three performing employee at Wilderness Travel in 2018 and 2019. Passionate problem solver and a team player with strengths in communication, organization, and problem-solving, looking to join a team equally focused on delivering quality results. Excited to leverage technical skills in programming and couple them with project management skills to build better apps.
Technical Skills
Frontend: ReactJS, Javascript, Bootstrap, HTML5, CSS3, JQuery, Handlebars
Backend: MySQL, MongoDB, Express, Node.js, Ruby on Rails, Firebase
Collaborate with engineering team to build and maintain in-house CRM and CMS, working on both frontend and backend projects to improve the overall codebase health of applications with 15+ years of legacy code. Built and implemented reusable and modular components to reduce complexity in applications. Investigated and helped establish product feedback loop between internal CRM users and development team. Working with React.js, Ruby on Rails, MySQL, Bootstrap, Sass
Effectively balance a complex daily calendar of diverse tasks to orchestrate trips from start to finish. Manage vendor relations, itinerary logistics, full sales cycle, budgeting, auditing, and quality control of 13 itineraries. Achieved the highest customer satisfaction rating in the company for 2018, creating lifelong memories for hundreds of clients participating on hiking-based adventure travel programs in Europe and bringing meaningful business to locals.
Responsible for prospecting and initial contacts in the sales pipeline. Preempt patended Behavioral Firewall utilizes behavior analytics to help businesses protect themselves from security breaches and insider threats.
Conducted 20 weekly English classes to large and small groups of students ages 11-19, customizing material for students’ varying language levels and gaining public speaking and communicative skills. Achieved a Cambridge Institute Spanish Level B2 through a rigorous Spanish language program that focused on written, oral and grammatical aptitudes and fully immersing myself in a Spanish lifestyle with friends and coworkers
Consulted with clients on a weekly basis to develop personalized agendas of activities including kayaking, hiking, sunset wine and cheese “hikes,” all with the goal of providing above-and-beyond guest experiences. Directed a team of 8 charged with ensuring client satisfaction and quality control throughout camp facilities. Developed public speaking abilities while performing 130+ entertainment shows for families, including acting, singing and playing multiple instruments onstage
Quick Budget is a full-stack web application that helps guide users through creating, understanding, and visualizing their budget and cash flow.
Users can make accounts to save their budget and return to them later. Their Dashboard uses their budget to give them insights into their income and expenses, as well as projections for the future of their finances.
The UI is built using ReactJS. The Chart.js package is used to display user data as interactive graphs. The user's authentication status is tracked using JSON Web Tokens.
The RESTful API for serving and saving user data is built using Node.js, Express, MySQL, JawsDB, Sequelize, and Axios.
Monkeying Around helps children learn the names of various monkey species via a memory game
This UI is built using ReactJS. The game logic is handled with JavaScript. The SweetAlert2 package is used to display alerts during the game.
Connect Four is a full-stack web application that works as an online version of the classic game
This UI is built using HTML and jQuery. The game logic is handled with JavaScript. The SweetAlert2 package is used to display alerts during the game.
The backend is built on Node.js, with the database in MySQL (and JawsDB in production). Sequelize is used to interact with the database.
A space themed train scheduling app.
This UI is built using HTML and jQuery. The logic is handled with JavaScript. Bootstrap 4 provides some basic styling.
Firebase is used as the no-SQL database.
A trivia game featuring questions about UC Berkeley's history.
This is a simple application, using Javascript to handle the logic behind the app including classes and timers, jQuery for DOM manipulation, and Bootstrap 4 for basic styling.
GPA: 4.0
GPA: 3.67
Technical Skills
Frontend: ReactJS, Javascript, Bootstrap, HTML5, CSS3, JQuery, Handlebars
Backend: MySQL, MongoDB, Express, Node.js, Ruby on Rails, Firebase
Apart from web development, I enjoy spending time in the outdoors - hiking, climbing, backpacking, rafting, etc. especially in the Sierra Nevada. I also love playing music, mostly guitar these days but I've also played the violin, viola, and piano.
Ever since I lived in Spain for two years following college, I've had a passion for travel and seeing the many beautiful places and cultures of our planet. I try my best to incorporate these new cuisines into my personal cookbook - sometimes successfully.
I also love spending time learning more about web development by reading articles and taking Udemy courses.


Form Objects
Forms have a few special characteristics when compared to other elements. I will outline them here, and show you how you can make use of them. We will refer to the markup below for the entirety of this article, it is simple, yet sufficient for what we will be doing..
<form id="my-form" action="/nowhere"> Name <input id="my-form__name" type="text" name="myForm[name]"> Email <input id="my-form__email" type="text" name="myForm[email]"> <button id="my-form__submit">Submit</button> </form>
1. Forms are Iterable
Normally, to access an elements children, you would need to use
element.children[i]
. Forms, however, allow you to
directly access their child elements without needing to type
.children
. Furthermore, using this method will ignore
any elements that aren't interactable within the form. With regard
to the markup above, form[0]
would reference the
name input, while form[2]
would reference
the submit button.
Even more convenient, if our interactable form elements have been
asigned id
's, like in the markup above, we can simply
use the id
like so, form.buttonId
.
This is particularly useful, as if we wish to add a new field to our
form, we don't have to worry about messing up our indexing.
The
markup above has a complex id
naming structure (for
reasons that will become clear later), so we would have to use
bracket notation in this case, form['my-form__name']
.
2. Forms are Pre-Cached
We are mostly taught to cache our form like this:
const myForm = document.querySelector('form');
But forms are so widely used in web development, that forms are
in fact pre-cached onto the document
object. The
document.forms
object returns an array of all the
forms on a given page. Like the form objects we've already spoken
about, they are iterable! So, to access our form, that is the only
one on it's page, we'd simply need to reference
document.forms[0]
. Or better yet, use it's id
,
document.forms['my-form']
.
Making Use of these Characteristics
Working with a lot of forms holding varied data can be taxing when you are still new to coding (I speak from experience!). But, by leveraging these characteristics of forms, we can make our work a lot easier. Let's take a look at the following javascript, and break down how it would interact with the form markup we are using.
const form = { id: 'my-form', init: () => { form.form = document.forms[form.id]; form.submitButton = form.form[`${form.id}__submit`]; }, validate: () => { for (let elem of form.form) { if (elem !== form.submitButton && !elem.value) { console.log('VALIDATION ERROR!'); return false; } } return true; } }; form.init(); form.submitButton.addEventListener('click', (evt) => { evt.preventDefault(); if (form.validate()) form.form.submit(); });
If you are still learning JavaScript, this could look deceptively complicated, but it's not. Let's break it down...
First we have created a "form" object
, for now let's
just concern ourselves with form.id
and
form.init
. form.id
is simple, it's just
a string that matches the form's id
in the markup. The
form.init
method simply adds the form
and
submitButton
properties to the object - we need to
access the form.id
property in order to do this, which
isn't accessable until after the form object
is
created, therefore they are added after the fact when
form.init()
is called.
Next, let's look at the event listener. It is attached to the
form.submitButton
. We are using
event.preventDefault()
to gain a little control over
what the submit button should do. We will only call the form's
submit
method if our validate
method,
defined in the form object
, returns true
.
The form.validate
method is checking that none
of the input fields are left blank, you could write seperate
validation rules depending on the input types, or anything else
you might need to check before a form submission. The
validate
method iterates through the form elements -
don't forget the button
element is included here, so
in our if
statement we first check that the current elem
is not
the form's
submitButton
, if that condition is passed then the
element we are currently iterating over must be an input. We then
check for the absence !
of a value
on the
input, if there is not value present, then the input has been left
blank,
and we use return false
to break out of the method.
Otherwise, the method returns true
after the loop,
and the form.submit
method is executed.
Despite the benefit of tidy code, it may not be necessary to move the form into an object, however I have used this to demonstrate he concept, because where there is an object, there can be a class to create many objects. Using template strings and an id naming structure like in the above example, will also make code more reusable throughout a project. Take a look at a simpler implementation below.
const formId = 'my-form'; const form = document.forms[formId]; const validate = (form) => { for (let elem of form) { if (elem !== form[`${formId}__submit`] && !elem.value) { console.log('VALIDATION ERROR!'); return false; } } return true; } form[`${formId}__submit`].addEventListener('click', (evt) => { evt.preventDefault(); if (validate(form)) form.submit(); });