class: center, middle, inverse, title-slide # Joins, summaries and subgroups ### Abhijit Dasgupta ### March 25-27, 2019 --- layout: true
 PS 312, March 2019
 --- class: middle, center, inverse # Welcome to Day 2 --- # More about `select` `select` selects variables from your dataset. __Usage__: dataset %>% select(variable names) ```r library(rio) dos <- import('Data/FSI/Department of State.csv') %>% as_tibble() # names(dos) ``` This data set has variables in various groups by name. --- # More about `select` .left-column30[ ```r dos %>% select(starts_with("Award")) ``` ] .right-column30[ ``` # A tibble: 558,878 x 24 Award_Identifier Award_Title Award_Descripti… Award_Status <chr> <chr> <chr> <chr> 1<PHONE_NUMBER> "" Ambassadors-At-… Implementat… 2<PHONE_NUMBER> "" Ambassadors-At-… Implementat… 3<PHONE_NUMBER> "" Ambassadors-At-… Implementat… 4<PHONE_NUMBER> "" Ambassadors-At-… Implementat… 5<PHONE_NUMBER> "" Ambassadors-At-… Implementat… 6<PHONE_NUMBER> "" Ambassadors-At-… Implementat… 7<PHONE_NUMBER> "" Ambassadors-At-… Implementat… 8<PHONE_NUMBER> "" Ambassadors-At-… Implementat… 9<PHONE_NUMBER> "" Ambassadors-At-… Implementat… 10<PHONE_NUMBER> "" Ambassadors-At-… Implementat… # … with 558,868 more rows, and 20 more variables: # Award_Collaboration_Type <chr>, Award_Total_Estimated_Value <dbl>, # Award_Interagency_Transfer_Status <chr>, Award_Start_Date <chr>, # Award_End_Date <chr>, Award_Transaction_Description <chr>, # Award_Transaction_Value <dbl>, Award_Transaction_Type <chr>, # Award_Transaction_Date <chr>, Award_Transaction_Fiscal_Year <int>, # Award_Transaction_Fiscal_Quarter <int>, # Award_Transaction_Aid_Type <chr>, Award_Transaction_Tied_Status <chr>, # Award_Transaction_Flow_Type <chr>, # Award_Transaction_Finance_Type <chr>, # Award_Transaction_DAC_Purpose_Code <int>, # Award_Transaction_DAC_Purpose_Code_Name <chr>, # Award_Transaction_US_Foreign_Assistance_Code <int>, # Award_Transaction_US_Foreign_Assistance_Category <chr>, # Award_Transaction_US_Foreign_Assistance_Sector <chr> ``` ] --- # More about `select` .left-column30[ ```r dos %>% select(ends_with("Value")) ``` ] .right-column30[ ``` # A tibble: 558,878 x 2 Award_Total_Estimated_Value Award_Transaction_Value <dbl> <dbl> 1 0 194. 2 0 301. 3 0 287. 4 0 2470. 5 0 1031. 6 0 2853. 7 0 3431. 8 0 912. 9 0 525. 10 0 1436. # … with 558,868 more rows ``` ] --- # More about `select` .left-column30[ ```r dos %>% select(contains("Transaction")) ``` ] .right-column30[ ``` # A tibble: 558,878 x 15 Award_Transacti… Award_Transacti… Award_Transacti… Award_Transacti… <chr> <dbl> <chr> <chr> 1 "" 194. Disbursement 2011-11-30 00:0… 2 "" 301. Commitment 2011-10-31 00:0… 3 "" 287. Disbursement 2011-10-31 00:0… 4 "" 2470. Commitment 2011-10-31 00:0… 5 "" 1031. Commitment 2011-11-30 00:0… 6 "" 2853. Disbursement 2011-11-30 00:0… 7 "" 3431. Disbursement 2011-12-31 00:0… 8 "" 912. Disbursement 2011-11-30 00:0… 9 "" 525. Commitment 2011-12-31 00:0… 10 "" 1436. Disbursement 2011-12-31 00:0… # … with 558,868 more rows, and 11 more variables: # Award_Transaction_Fiscal_Year <int>, # Award_Transaction_Fiscal_Quarter <int>, # Award_Transaction_Aid_Type <chr>, Award_Transaction_Tied_Status <chr>, # Award_Transaction_Flow_Type <chr>, # Award_Transaction_Finance_Type <chr>, # Award_Transaction_DAC_Purpose_Code <int>, # Award_Transaction_DAC_Purpose_Code_Name <chr>, # Award_Transaction_US_Foreign_Assistance_Code <int>, # Award_Transaction_US_Foreign_Assistance_Category <chr>, # Award_Transaction_US_Foreign_Assistance_Sector <chr> ``` ] --- # `select` helpers - starts_with(): Starts with a prefix. - ends_with(): Ends with a suffix. - contains(): Contains a literal string. - matches(): Matches a regular expression. - num_range(): Matches a numerical range like x01, x02, x03. - one_of(): Matches variable names in a character vector. - everything(): Matches all variables. - last_col(): Select last variable, possibly with an offset. --- # Dates ```r start_dates <- dos %>% select(ends_with("Date")) %>% select(contains("Start")) %>% pull(1) head(start_dates) ``` ``` [1] "2011-10-05 00:00:00" "2011-10-05 00:00:00" "2011-10-05 00:00:00" [4] "2011-10-21 00:00:00" "2011-10-03 00:00:00" "2011-10-03 00:00:00" ``` Let's work a bit with dates Cheatsheet: [https://rawgit.com/rstudio/cheatsheets/master/lubridate.pdf](https://rawgit.com/rstudio/cheatsheets/master/lubridate.pdf) --- # Dates ```r library(lubridate) start_dates <- as_date(start_dates) %>% head() start_dates ``` ``` [1] "2011-10-05" "2011-10-05" "2011-10-05" "2011-10-21" "2011-10-03" [6] "2011-10-03" ``` ```r year(start_dates) ``` ``` [1] 2011 2011 2011 2011 2011 2011 ``` ```r month(start_dates) ``` ``` [1] 10 10 10 10 10 10 ``` ```r day(start_dates) ``` ``` [1] 5 5 5 21 3 3 ``` --- # Dates ```r sort(start_dates) ``` ``` [1] "2011-10-03" "2011-10-03" "2011-10-05" "2011-10-05" "2011-10-05" [6] "2011-10-21" ``` ```r quarter(start_dates) ``` ``` [1] 4 4 4 4 4 4 ``` ```r days(start_dates) - days(as_date('2011-10-01')) # Days from start of fiscal year ``` ``` [1] "4d 0H 0M 0S" "4d 0H 0M 0S" "4d 0H 0M 0S" "20d 0H 0M 0S" [5] "2d 0H 0M 0S" "2d 0H 0M 0S" ``` --- class: middle, center # Joins --- ![](img/joins.png) --- # Some simulated data We simulated 2 datasets - real estate allocation at DOS by Bureau - staffing at DOS by Bureau We want to see what the average area per person is across DOS ```r staffing_data <- import('Data/FSI/Staffing_by_Bureau.csv') real_estate <- import('Data/FSI/DoS_Real_Estate_Allocation.csv') ``` --- ```r staffing_data %>% as_tibble() ``` ``` # A tibble: 10,000 x 6 Bureau Gender Grade Title Name YearsService <chr> <chr> <chr> <chr> <chr> <int> 1 Protocol (S/CPR) female FS1 Manager Cathy Ca… 13 2 Administration (A) male GS-9 Team Me… Jeffery … 13 3 Intelligence and Research … male FS-6 Analyst Max Green 11 4 Mission to the United Nati… male FS-3 Manager Donald A… 7 5 Foreign Missions (OFM) male FS-6 Team Me… Thomas L… 22 6 International Narcotics an… male GS-8 Team Me… Joseph A… 12 7 Administration (A) male GS-12 Analyst Michael … 6 8 Intelligence and Research … male FS-5 Team Me… Jesus Sh… 2 9 Science & Technology Advis… male N/A Manager Lawrence… 19 10 Administration (A) female FS-8 Team Me… Jennie C… 17 # … with 9,990 more rows ``` ```r real_estate %>% as_tibble() ``` ``` # A tibble: 666 x 4 Building Bureau Location Size <chr> <chr> <int> <int> 1 HST Administration (A) 4779 640 2 SA2 Administration (A) 4801 1090 3 HST Administration (A) 5109 1040 4 HST Administration (A) 3717 1620 5 SA4 Administration (A) 3940 1390 6 HST Administration (A) 3661 1480 7 HST Administration (A) 3374 1770 8 HST Administration (A) 3387 1940 9 SA10 African Affairs (AF) 2605 640 10 HST African Affairs (AF) 3573 720 # … with 656 more rows ``` --- ```r staff_summary <- staffing_data %>% group_by(Bureau) %>% tally(name = 'Pop') realestate_summary <- real_estate %>% group_by(Bureau) %>% summarize(Size = sum(Size)) ``` ```r staff_summary %>% head(4) ``` ``` # A tibble: 4 x 2 Bureau Pop <chr> <int> 1 Administration (A) 454 2 African Affairs (AF) 42 3 Allowances (A/OPR/ALS) 90 4 Arms Control, Verification and Compliance (AVC) 98 ``` ```r realestate_summary %>% head(4) ``` ``` # A tibble: 4 x 2 Bureau Size <chr> <int> 1 Administration (A) 10970 2 African Affairs (AF) 26750 3 Allowances (A/OPR/ALS) 3010 4 Arms Control, Verification and Compliance (AVC) 8410 ``` --- ```r staff_summary %>% inner_join(realestate_summary, by = c("Bureau" = "Bureau")) ``` ``` # A tibble: 54 x 3 Bureau Pop Size <chr> <int> <int> 1 Administration (A) 454 10970 2 African Affairs (AF) 42 26750 3 Allowances (A/OPR/ALS) 90 3010 4 Arms Control, Verification and Compliance (AVC) 98 8410 5 Budget and Planning (BP) 168 7500 6 Chief Information Officer (CIO) 222 11390 7 Comptroller and Global Financial Services (CGFS) 169 15700 8 Conflict and Stabilization Operations (CSO) 392 14970 9 Consular Affairs (CA) 141 36610 10 Counterterrorism (CT) 324 9980 # … with 44 more rows ``` --- ```r staff_summary %>% inner_join(realestate_summary, by = c("Bureau" = "Bureau")) %>% mutate(unit_area = Size/Pop) %>% arrange(unit_area) ``` ``` # A tibble: 54 x 4 Bureau Pop Size unit_area <chr> <int> <int> <dbl> 1 Global Youth Issues (GYI) 345 2090 6.06 2 Policy Planning Staff (S/P) 240 2420 10.1 3 Science & Technology Adviser (STAS) 305 4240 13.9 4 Foreign Missions (OFM) 311 4420 14.2 5 Trafficking in Persons (TIP) 247 5150 20.9 6 Medical Services (MED) 308 6760 21.9 7 Protocol (S/CPR) 327 7730 23.6 8 Administration (A) 454 10970 24.2 9 Oceans and International Environmental and Scient… 330 8420 25.5 10 Energy Resources (ENR) 369 10890 29.5 # … with 44 more rows ``` --- class: middle, center # Summarizing data --- # The `dplyr` package This gives us 5 verbs for single data frames: - `filter`: filter a dataset by rows - `select`: select columns of a dataset - `arrange`: arrange rows of a dataset by values of some variables - `group_by`: split a dataset by values of some variables, so that we can apply verbs to each split - `summarize`: compute various summaries from the data --- # The `dplyr` package .pull-left[ Gives us verbs for joining 2 data frames: - `left_join` - `right_join` - `inner_join` - `outer_join` - `semi_join` - `anti_join` - `bind_rows` - `bind_cols` ] .pull-right[ The joins are different ways to merge two data sets which have at least one variable in common The `semi-join` and `anti-join` are really filters rather than joins The last two just put data frames together as long as they conform in dimension ] --- ```r library(tidyverse) mtcars1 <- mtcars %>% rownames_to_column('cars') %>% as_tibble() mtcars1 ``` ``` # A tibble: 32 x 12 cars mpg cyl disp hp drat wt qsec vs am gear carb <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 2 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 3 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 4 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 5 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 6 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1 7 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4 8 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2 9 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2 10 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4 # … with 22 more rows ``` -- ```r mtcars1 %>% summarize(mpg = mean(mpg, na.rm=T), disp = mean(disp, na.rm=T), hp = mean(hp, na.rm=T)) ``` ``` # A tibble: 1 x 3 mpg disp hp <dbl> <dbl> <dbl> 1 20.1 231. 147. ``` --- # Scoped verbs All the `dplyr` verbs have scoped versions `*_all`, `*_at` and `*_if`. .left-column30[ 1. `*_all` : Act on all columns 1. `*_at` : Act on specified columns 1. `*_if` : Act on columns with specific property ] .right-column30[ ```r dos %>% mutate_at(vars(ends_with("Date")), as_date) %>% summarise_if(is.Date, max) ``` ``` # A tibble: 1 x 4 Award_Start_Date Award_End_Date Award_Transaction_Da… Data_Submission_Da… <date> <date> <date> <date> 1 NA NA 2017-10-03 2018-02-15 ``` ```r dos %>% mutate_at(vars(ends_with("Date")), as_date) %>% summarize_at(vars(ends_with("Date")), ~max(., na.rm=T)) ``` ``` # A tibble: 1 x 4 Award_Start_Date Award_End_Date Award_Transaction_Da… Data_Submission_Da… <date> <date> <date> <date> 1 2018-09-30 2026-08-31 2017-10-03 2018-02-15 ``` ] --- # Factors (categorical variables) `factor` types of variables are discrete or categorical variables, that only take a small set of values. Think number of cylinders in a car, race, sex. ```r mtcars1 <- mtcars1 %>% mutate_at(vars(cyl, vs, am, gear, carb), as.factor) str(mtcars1) ``` ``` Classes 'tbl_df', 'tbl' and 'data.frame': 32 obs. of 12 variables: $ cars: chr "1" "2" "3" "4" ... $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... $ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ... $ disp: num 160 160 108 258 360 ... $ hp : num 110 110 93 110 175 105 245 62 95 123 ... $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ... $ wt : num 2.62 2.88 2.32 3.21 3.44 ... $ qsec: num 16.5 17 18.6 19.4 17 ... $ vs : Factor w/ 2 levels "0","1": 1 1 2 2 1 2 1 2 2 2 ... $ am : Factor w/ 2 levels "0","1": 2 2 2 1 1 1 1 1 1 1 ... $ gear: Factor w/ 3 levels "3","4","5": 2 2 2 1 1 1 1 2 2 2 ... $ carb: Factor w/ 6 levels "1","2","3","4",..: 4 4 1 1 2 1 4 2 2 4 ... ``` --- # Means of numeric variables ```r mtcars1 %>% summarize_if(is.numeric, mean) ``` ``` # A tibble: 1 x 6 mpg disp hp drat wt qsec <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 20.1 231. 147. 3.60 3.22 17.8 ``` --- # Summarize the variables ```r summary(mtcars1) ``` ``` cars mpg cyl disp hp Length:32 Min. :10.40 4:11 Min. : 71.1 Min. : 52.0 Class :character 1st Qu.:15.43 6: 7 1st Qu.:120.8 1st Qu.: 96.5 Mode :character Median :19.20 8:14 Median :196.3 Median :123.0 Mean :20.09 Mean :230.7 Mean :146.7 3rd Qu.:22.80 3rd Qu.:326.0 3rd Qu.:180.0 Max. :33.90 Max. :472.0 Max. :335.0 drat wt qsec vs am gear Min. :2.760 Min. :1.513 Min. :14.50 0:18 0:19 3:15 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1:14 1:13 4:12 Median :3.695 Median :3.325 Median :17.71 5: 5 Mean :3.597 Mean :3.217 Mean :17.85 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 Max. :4.930 Max. :5.424 Max. :22.90 carb 1: 7 2:10 3: 3 4:10 6: 1 8: 1 ``` --- class: middle, center # Split-Apply-Combine --- ![](img/split-apply-combine.png) --- # Grouped summaries ```r mtcars1 %>% group_by(cyl) %>% summarize(mpg_mean = mean(mpg)) ``` ``` # A tibble: 3 x 2 cyl mpg_mean <fct> <dbl> 1 4 26.7 2 6 19.7 3 8 15.1 ``` --- # Grouped summaries ```r mtcars1 %>% group_by(cyl) %>% summarize_if(is.numeric, mean) ``` ``` # A tibble: 3 x 7 cyl mpg disp hp drat wt qsec <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 4 26.7 105. 82.6 4.07 2.29 19.1 2 6 19.7 183. 122. 3.59 3.12 18.0 3 8 15.1 353. 209. 3.23 4.00 16.8 ``` --- # Grouped summaries ```r mtcars1 %>% group_by(cyl) %>% summarize_if(is.numeric, list('mean' = mean, 'median' = median)) ``` ``` # A tibble: 3 x 13 cyl mpg_mean disp_mean hp_mean drat_mean wt_mean qsec_mean mpg_median <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 4 26.7 105. 82.6 4.07 2.29 19.1 26 2 6 19.7 183. 122. 3.59 3.12 18.0 19.7 3 8 15.1 353. 209. 3.23 4.00 16.8 15.2 # … with 5 more variables: disp_median <dbl>, hp_median <dbl>, # drat_median <dbl>, wt_median <dbl>, qsec_median <dbl> ``` --- # Foreign aid (DOS) ```r dos %>% group_by(Implementing_Organization) %>% summarize(amt = sum(Award_Transaction_Value)) %>% arrange(desc(amt)) ``` ``` # A tibble: 9,236 x 2 Implementing_Organization amt <chr> <dbl> 1 United Nations High Commission<PHONE_NUMBER> 2 ""<PHONE_NUMBER>. 3 Information Redacted<PHONE_NUMBER>. 4 Un Relief & Works Agency<PHONE_NUMBER> 5 Intl Committee - The Red Cross<PHONE_NUMBER> 6 S/S-Ex Miscellanous Vendor<PHONE_NUMBER>. 7 International Organization For Migration<PHONE_NUMBER>. 8 P A E 961874214. 9 Pm Miscellaneous Vendor 925306561. 10 Un Childrens Fund 775056737. # … with 9,226 more rows ``` --- # Foreign aid (DOS) ```r dos %>% group_by(Implementing_Organization_Type) %>% summarize(amt = sum(Award_Transaction_Value)) %>% arrange(desc(amt)) ``` ``` # A tibble: 4 x 2 Implementing_Organization_Type amt <chr> <dbl> 1 ""<PHONE_NUMBER>7. 2 Other Public Sector<PHONE_NUMBER>. 3 Government 730826152. 4 Private Sector 714436474. ``` --- # Foreign aid (DOS) ```r dos %>% group_by(Implementing_Organization, year = year(as_date(Award_Start_Date))) %>% summarize(amt = sum(Award_Transaction_Value)) %>% filter(Implementing_Organization != '', !is.na(year)) ``` ``` # A tibble: 3,907 x 3 # Groups: Implementing_Organization [2,098] Implementing_Organization year amt <chr> <dbl> <dbl> 1 'Bsk-Asia' Llp 2015 1.53e5 2 'Terratech' Ltd. 2015 2.59e5 3 (Foreign Parent Is Institute For International Research … 2013 6.27e3 4 (Foreign Parent Is Open Text Corporation, Waterloo, Cana… 2012 7.91e4 5 3m Cogent, Inc. 2016 1.29e6 6 5 GYRES INSTITUTE, THE 2016 -1.24e5 7 A + P Consultants 2012 3.96e5 8 A + P Consultants 2013 8.75e4 9 A + P Consultants 2014 6.65e4 10 A Call To Serve Missouri 2013 6.70e5 # … with 3,897 more rows ``` Save this as `dos_by_year`. --- # Foreign aid (DOS) ```r dos_by_year %>% group_by(year) %>% summarize(amt = sum(amt)) ``` ``` # A tibble: 17 x 2 year amt <dbl> <dbl> 1 2002 24162 2 2003 4350 3 2004 -211515. 4 2005 24294032. 5 2006 65101. 6 2007 30762236. 7 2008 28449918. 8 2009 142067481. 9 2010 11081559. 10 2011<PHONE_NUMBER>. 11 2012<PHONE_NUMBER>. 12 2013<PHONE_NUMBER>2. 13 2014<PHONE_NUMBER>. 14 2015<PHONE_NUMBER>. 15 2016 915449161. 16 2017 860274841. 17 2018 2327908 ```


Booking | STATISTICS
Booking
Cost
Savings TK
Seagull Hotel LTD
4000
500
Long Beeach Hotel
3000
400
Total
7000
900


Non-focusable
Focusable
Non-focusable
Non-focusable
Focusable
Focusable
Focusable
Focusable
Focusable
Focusable
Focusable
Focusable
Focusable
Focusable
Focusable
Focusable
Focusable


A learner's guide on how to use Google Classroom
Google worked with educators across the country to create Classroom: a streamlined, easy-to-use tool that helps teachers manage coursework. There are two ways to get onto Google Classroom:
It is a good idea to become familiar with Google Classroom as many of your teacher might use it to share notes and collect your work.
If your teacher allows, you can communicate with your class on the Stream page using posts, comments, and replies. Some good notes are available here - Post to the Stream page
Not all teachers allow posts and comments on the Stream page.If you don't want to post to the Stream page, you can send a private comment to your teacher on an assignment or question.
To ask a question or to share information with your teacher and classmates, create a post:
You can only delete your own posts. If you delete a post, all the comments associated with it are also deleted. You can't undo this action. Teachers can delete anyone’s post and see all deleted posts. To delete a post On the post, click More and click Delete to confirm.
If your teacher allows, you can comment on other posts and comments. Teachers can delete comments and turn off permissions to comment. Comments are text only—you can’t add pictures, links, or videos. To post a comment simply find the post and in the Add class comment box, enter your comment and click Post. When you reply to a comment, the person you reply to is automatically mentioned. You can only use Reply with comments, not posts. Point to the comment and click Reply The person you are replying to is automatically mentioned in your reply. Enter your reply and click Post .
You can send me a private comment or a specific question if you go to a certain Assignment and type your question in the Private Comments textbox. I will be Posting generic assignments for each unit, I will name them sugestive. In this manner you will be able to send me private comments and to ask questions.
Depending on the assignment, you can turn in a personal doc that your teacher assigned to you, create your own Google Doc, or add files to the assignment. If you need to edit work you turned in, you can unsubmit the assignment. But any assignment turned in or marked done after the due date is recorded as late. Some good notes are available here - Turn In An Assignment
For more information on how to Mark an assignment Done, or Unsubmit an Assignment, or Check For Late or Missing Assignments check the Turn In An Assignment page.
Additional Google Classroom Resources:
I will be using Google Classroom to share a folder drive with you, where you can upload your assignments. I will create an individual folder shared only between me and you. You will be uploading your assignments there.
To access your folder shared with me go to Classwork, the second top link, and Click on Class Drive Folder, see the image below:
In the left menu select Shared With Me, as shown in the next image. To Create a Folder or to upload files to your shared folder click on the top left plus symbol.
Many students commonly save important work on the desktop of the computer that they are using. For this course, your assignments files will be saved in your individual Student Roster Folder (aka your R:drive student folder). But, what would you do if the files you stored on the computer go poof?
It is vital that you organize and wisely use the limited network storage - roster drive (aka R: drive) and that you backup your data. In this course, you will be required to backup your data to your memory stick and to your DPCDSB-provided Google Drive.
Google Meet is meant to be a lightweight video chat service.In today’s classrooms, many teachers and students are using video chat services to connect with classrooms across the globe. Teachers are connecting with teachers, administrators are meeting with parents, and students get to meet other students and professional experts. Video chat has expanded the walls of the classroom and Google Meet helps do this better than Hangouts, even though there are less features included with the service. The maximum number of participants in Google Meet is now limited to 30. To join, all someone needs is a link to the chat or a code to enter.
What Are The Features of Google Meet?
To access Google Meet click on the Google waffle, or some people like to call it the Google cube, and select Meet.
With Google Meet, you can have video meetings with team members anywhere in the world, at any time–all from a computer or mobile device. Unfortunatelly I have noticed that Google Calendar is not available in our Google waffle, therefore I won't be able to schedule meetings in the appropriate way. I can post the date and the time when I will be available on my Google calendar, but I won't be able to link it directly to Google Meet. Once I start the Google Meet, I will post a Join Link, that you can copy/paste in your Join Meet dialog box.
Here are some videos that demonstrate how to access the Virtual Classroom Tool, and showcase the actions and the features that are available.
Additional Google Classroom Resources:


Please write a number. All numbers leading up to this number will be counted out. If the outputted number contains a 0, it will output a "Beep"; if it contains a 1, it will output a "Boop". All numbers divisible by 3 will output neither and instead output "I'm sorry, Dave. I'm afraid I can't do that." You can also change the name to something else and change whether the order of the counting is ascending or descending.


In the new era of population genomics, surveys of genetic polymorphism ("genome scans") offer the opportunity to distinguish locus-specific from genome wide effects at many loci. Identifying presumably neutral regions of the genome that are assumed to be influenced by genome-wide effects only, and excluding presumably selected regions, is therefore critical to infer population demography and phylogenetic history reliably. Conversely, detecting locus-specific effects may help identify those genes that have been, or still are, targeted by natural selection. The software package DetSel has been developed to identify markers that show deviation from neutral expectation in pairwise comparisons of diverging populations.
| Version: | 1.0.2 |
| Depends: | R (≥ 2.15), ash |
| Published: | 2013-04-24 |
| Author: | Renaud Vitalis. |
| Maintainer: | Renaud Vitalis <vitalis at supagro.inra.fr> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | yes |
| Materials: | ChangeLog |
| CRAN checks: | DetSel results |
| Reference manual: | DetSel.pdf |
| Package source: | DetSel_1.0.2.tar.gz |
| Windows binaries: | r-devel: DetSel_1.0.2.zip, r-release: DetSel_1.0.2.zip, r-oldrel: DetSel_1.0.2.zip |
| OS X binaries: | r-release: DetSel_1.0.2.tgz, r-oldrel: DetSel_1.0.2.tgz |
| Old sources: | DetSel archive |
Please use the canonical form https://CRAN.R-project.org/package=DetSel to link to this page.


To schedule a demonstration of the automated creation of different applications,
you can send us a message here.
To learn more about how our automation process can contribute to your organization,
or to send requests or comments, please feel free to send
us message(s) here.
We will respond to you within 24 hours.
We respect our client's desires to maintain privacy and confidentiality.
We will not share your information with anyone.
Our Address
Evergreen Computational Sciences
1455 San Marino Ave, suite B
San Marino, CA 91108


SubSurfaceComponent¶
-
class
cm4twc.
SubSurfaceComponent
(saving_directory, timedomain, spacedomain, dataset=None, parameters=None, constants=None, records=None)¶ Bases:
cm4twc.components.component.Component
The SubSurfaceComponent is simulating the hydrological processes in the subsurface compartment of the hydrological cycle.
Instantiation
- Parameters
- saving_directory:
str
The path to the directory where to save the component dump and record files.
- timedomain:
TimeDomain
object The temporal dimension of the
Component
.- spacedomain:
SpaceDomain
object The spatial dimension of the
Component
.- dataset:
DataSet
object, optional The collection of input data required by the
Component
(i.e. ‘dynamic’ and/or ‘static’ and/or ‘climatologic’). The input data must be compatible in space with spacedomain, and compatible in time with timedomain for the ‘dynamic’ type, and with the ‘frequency’ for the ‘climatologic’ type (see table below for details).climatologic frequency
length of time dimension in data
'seasonal'
Length of 4, corresponding to the meteorological seasons (i.e. Winter [DJF], Spring [MAM], Summer [JJA], Autumn [SON], in this order).
'monthly'
Length of 12, corresponding to the months in the calendar year (i.e. from January to December).
'day_of_year'
Length of 366, corresponding to the days in the calendar year (i.e. from January 1st to December 31st, including value for February 29th).
Length according to the integer value (e.g. a value of 6 means 6 climatologic values for the calendar year).
- parameters:
dict
, optional The parameter values for the
Component
. Must be provided in the units expected by theComponent
.- constants:
dict
, optional The parameter values for the
Component
. Must be provided in the required units.- records:
dict
, optional The desired records from the
Component
. Each key must be a valid variable recordable for the component chosen (i.e. outwards, outputs, and states), each value is adict
ofdatetime.timedelta
for keys and aggregation methods as a sequence ofstr
for values.Parameter example:
records={ 'output_a': { timedelta(days=1): ['sum'], timedelta(weeks=1): ['min', 'max'] }, 'output_b': { timedelta(days=1): ['mean'] } }
The aggregation methods supported are listed in the table below.
method
description
'point'
The instantaneous value at the given elapsed timedelta.
'sum'
The accumulation of the values during the given elapsed timedelta.
'mean'
The average of the values during the given elapsed timedelta.
'min'
The minimum amongst the values during the elapsed timedelta.
'max'
The maximum amongst the values during the elapsed timedelta.
- saving_directory:
-
initialise_states_from_dump
(dump_file, at=None)¶ Initialise the states of the Component from a dump file.
- Parameters
- dump_file:
str
A string providing the path to the netCDF dump file containing values to be used as initial conditions for the states of the Component.
- at: datetime object, optional
The snapshot in time to be used for the initial conditions. Must be any datetime type (except
numpy.datetime64
). Must be contained in the ‘time’ variable in dump_file. If not provided, the last index in the ‘time’ variable in dump_file will be used.Note: if a datetime is provided, there is no enforcement of the fact that this datetime must correspond to the initial datetime in the simulation period for the
Component
, and it is only used as a means to select a specific snapshot in time amongst the ones available in the dump file.
- dump_file:
- Returns
- datetime object
The snapshot in time that was used for the initial conditions.
-
revive_record_streams_from_dump
(dump_file_pattern, at=None)¶ Revive the record streams of the Component from a dump file.
- Parameters
- dump_filepath_pattern:
str
A string providing the path to the netCDF dump file containing values to be used as initial conditions for the record streams of the Component. Note, curly brackets {} should be used where the record stream delta should be used.
Parameter example:
dump_file_pattern='out/dummy_surfacelayer_run_dump_record_stream_{}.nc'
- at: datetime object, optional
The snapshot in time to be used for the initial conditions. Must be any datetime type (except
numpy.datetime64
). Must be contained in the ‘time’ variable in dump file. If not provided, the last index in the ‘time’ variable in dump file will be used.Note: if a datetime is provided, there is no enforcement of the fact that this datetime must correspond to the initial datetime in the simulation period for the
Component
, and it is only used as a means to select a specific snapshot in time amongst the ones available in the dump file.
- dump_filepath_pattern:
- Returns
- datetime object
The snapshot in time that was used for reviving the record streams.
-
property
constants
¶ Return the collection of adjusted constant values for the Component as a
dict
. Potentially returning an empty dictionary if no default constant value is adjusted.
-
property
current_datetime
¶ Return the current datetime at any stage during the simulation as a datetime object.
-
property
dataset
¶ Return the collection of variables forming the dataset for the Component as a
DataSet
object.
-
property
records
¶ Return the collection of desired records to be saved for the Component as a
dict
. Potentially returning an empty dictionary if no record are desired.
-
property
spacedomain
¶ Return the spatial configuration of the Component as a
SpaceDomain
object.
-
property
spaceshape
¶ Return the length of each dimension in the spatial configuration of the Component as a
tuple
ofint
.
-
property
timedelta_in_seconds
¶ Return the number of seconds separating two consecutive timestamps in the temporal configuration of the Component as a
float
.
-
property
timedomain
¶ Return the temporal configuration of the Component as a
TimeDomain
object.


Car bomb kills 8 in northeast Syria
ROME: An explosion in Iraq has injured five Italian soldiers, three of them seriously, the Italian military said on Sunday.
The military said an improvised explosive devise detonated as a team of Italian special forces passed close by. The wounded men were evacuated to safety by US helicopters and none of them are believed to have suffered life-threatening injuries.
The group were in Iraq as part of an international mentoring and training mission, which is helping local forces who are battling Daesh, the military said.
The military did not say where the incident happened, but the AdnKronos news agency said the attack took place near the northern Iraqi city of Kirkuk.


{{ metadata.get('title') }} {% if metadata.get('unedited', false) %} [Unedited] {% endif %}
{{ render_byline() }}Introduction
Caching is a technique that enables the reuse of previously downloaded content. It provides a significant performance benefit by avoiding costly network requests and it also helps scale an application by reducing the traffic to a website's origin infrastructure. There's an old saying, "the fastest request is the one that you don't have to make," and caching is one of the key ways to avoid having to make requests.
There are three guiding principles to caching web content: cache as much as you can, for as long as you can, as close as you can to end users.
Cache as much as you can. When considering how much can be cached, it is important to understand whether a response is static or dynamic. Requests that are served as a static response are typically cacheable, as they have a one-to-many relationship between the resource and the users requesting it. Dynamically generated content can be more nuanced and require careful consideration.
Cache for as long as you can. The length of time you would cache a resource is highly dependent on the sensitivity of the content being cached. A versioned JavaScript resource could be cached for a very long time, while a non-versioned resource may need a shorter cache duration to ensure users get a fresh version.
Cache as close to end users as you can. Caching content close to the end user reduces download times by removing latency. For example, if a resource is cached on an end user's browser, then the request never goes out to the network and the download time is as fast as the machine's I/O. For first time visitors, or visitors that don't have entries in their cache, a CDN would typically be the next place a cached resource is returned from. In most cases, it will be faster to fetch a resource from a local cache or a CDN compared to an origin server.
Web architectures typically involve multiple tiers of caching. For example, an HTTP request may have the opportunity to be cached in:
- An end user's browser
- A service worker cache in the user's browser
- A shared gateway
- CDNs, which offer the ability to cache at the edge, close to end users
- A caching proxy in front of the application, to reduce the backend workload
- The application and database layers
This chapter will explore how resources are cached within web browsers.
Overview of HTTP caching
For an HTTP client to cache a resource, it needs to understand two pieces of information:
- "How long am I allowed to cache this for?"
- "How do I validate that the content is still fresh?"
When a web browser sends a response to a client, it typically includes headers that indicate whether the resource is cacheable, how long to cache it for, and how old the resource is. RFC 7234 covers this in more detail in section 4.2 (Freshness) and 4.3 (Validation).
The HTTP response headers typically used for conveying freshness lifetime are:
Cache-Control
allows you to configure a cache lifetime duration (i.e. how long this is valid for).Expires
provides an expiration date or time (i.e. when exactly this expires).
Cache-Control
takes priority if both are present. These are discussed in more detail below.
The HTTP response headers for validating the responses stored within the cache, i.e. giving conditional requests something to compare to on the server side, are:
Last-Modified
indicates when the object was last changed.- Entity Tag (
ETag
) provides a unique identifier for the content.
ETag
takes priority if both are present. These are discussed in more detail below.
The example below contains an excerpt of a request/response header from HTTP Archive's main.js file. These headers indicate that the resource can be cached for 43,200 seconds (12 hours), and it was last modified more than two months ago (difference between the Last-Modified
and Date
headers).
> GET /static/js/main.js HTTP/1.1
> Host: httparchive.org
> User-agent: curl/7.54.0
> Accept: */*
< HTTP/1.1 200
< Date: Sun, 13 Oct 2019 19:36:57 GMT
< Content-Type: application/javascript; charset=utf-8
< Content-Length: 3052
< Vary: Accept-Encoding
< Server: gunicorn/19.7.1
< Last-Modified: Sun, 25 Aug 2019 16:00:30 GMT
< Cache-Control: public, max-age=43200
< Expires: Mon, 14 Oct 2019 07:36:57 GMT
< ETag: "1566748830.0-3052-3932359948"
The tool RedBot.org allows you to input a URL and see a detailed explanation of how the response would be cached based on these headers. For example, a test for the URL above would output the following:
If no caching headers are present in a response, then the client is permitted to heuristically cache the response. Most clients implement a variation of the RFC's suggested heuristic, which is 10% of the time since Last-Modified
. However, some may cache the response indefinitely. So, it is important to set specific caching rules to ensure that you are in control of the cacheability.
72% of responses are served with a Cache-Control
header, and 56% of responses are served with an Expires
header. However, 27% of responses did not use either header, and therefore are subject to heuristic caching. This is consistent across both desktop and mobile sites.
What type of content are we caching?
A cacheable resource is stored by the client for a period of time and available for reuse on a subsequent request. Across all HTTP requests, 80% of responses are considered cacheable, meaning that a cache is permitted to store them. Out of these,
- 6% of requests have a time to time (TTL) of 0 seconds, which immediately invalidates a cached entry.
- 27% are cached heuristically because of a missing
Cache-Control
header. - 47% are cached for more than 0 seconds.
The remaining responses are not permitted to be stored in browser caches.
The table below details the cache TTL values for desktop requests by type. Most content types are being cached however CSS resources appear to be consistently cached at high TTLs.
| Desktop Cache TTL Percentiles (Hours) | |||||
|---|---|---|---|---|---|
| 10 | 25 | 50 | 75 | 90 | |
| Audio | 12 |
24 |
720 |
8,760 |
8,760 |
| CSS | 720 |
8,760 |
8,760 |
8,760 |
8,760 |
| Font | < 1 |
3 |
336 |
8,760 |
87,600 |
| HTML | < 1 |
168 |
720 |
8,760 |
8,766 |
| Image | < 1 |
1 |
28 |
48 |
8,760 |
| Other | < 1 |
2 |
336 |
8,760 |
8,760 |
| Script | < 1 |
< 1 |
1 |
6 |
720 |
| Text | 21 |
336 |
7,902 |
8,357 |
8,740 |
| Video | < 1 |
4 |
24 |
24 |
336 |
| XML | < 1 |
< 1 |
< 1 |
< 1 |
< 1 |
While most of the median TTLs are high, the lower percentiles highlight some of the missed caching opportunities. For example, the median TTL for images is 28 hours, however the 25th percentile is just one-two hours and the 10th percentile indicates that 10% of cacheable image content is cached for less than one hour.
By exploring the cacheability by content type in more detail in figure 5 below, we can see that approximately half of all HTML responses are considered non-cacheable. Additionally, 16% of images and scripts are non-cacheable.
The same data for mobile is shown below. As can be seen, the cacheability of content types is consistent between desktop and mobile.
Cache-Control vs Expires
In HTTP/1.0, the Expires
header was used to indicate the date/time after which the response is considered stale. Its value is a date timestamp, such as:
Expires: Thu, 01 Dec 1994 16:00:00 GMT
HTTP/1.1 introduced the Cache-Control
header, and most modern clients support both headers. This header provides much more extensibility via caching directives. For example:
no-store
can be used to indicate that a resource should not be cached.max-age
can be used to indicate a freshness lifetime.must-revalidate
tells the client a cached entry must be validated with a conditional request prior to its use.private
indicates a response should only be cached by a browser, and not by an intermediary that would serve multiple clients.
53% of HTTP responses include a Cache-Control
header with the max-age
directive, and 54% include the Expires header. However, only 41% of these responses use both headers, which means that 13% of responses are caching solely based on the older Expires
header.
Cache-Control directives
The HTTP/1.1 specification includes multiple directives that can be used in the Cache-Control
response header and are detailed below. Note that multiple can be used in a single response.
| Directive | Description |
|---|---|
| max-age | Indicates the number of seconds that a resource can be cached for. |
| public | Any cache may store the response. |
| no-cache | A cached entry must be revalidated prior to its use. |
| must-revalidate | A stale cached entry must be revalidated prior to its use. |
| no-store | Indicates that a response is not cacheable. |
| private | The response is intended for a specific user and should not be stored by shared caches. |
| no-transform | No transformations or conversions should be made to this resource. |
| proxy-revalidate | Same as must-revalidate but applies to shared caches. |
| s-maxage | Same as max age but applies to shared caches only. |
| immutable | Indicates that the cached entry will never change, and that revalidation is not necessary. |
| stale-while-revalidate | Indicates that the client is willing to accept a stale response while asynchronously checking in the background for a fresh one. |
| stale-if-error | Indicates that the client is willing to accept a stale response if the check for a fresh one fails. |
Cache-Control
directives.For example, cache-control: public, max-age=43200
indicates that a cached entry should be stored for 43,200 seconds and it can be stored by all caches.
Figure 9 above illustrates the top 15 Cache-Control
directives in use on mobile websites. The results for desktop and mobile are very similar. There are a few interesting observations about the popularity of these cache directives:
max-age
is used by almost 75% ofCache-Control
headers, andno-store
is used by 18%.public
is rarely necessary since cached entries are assumedpublic
unlessprivate
is specified. Approximately 38% of responses includepublic
.- The
immutable
directive is relatively new, introduced in 2017 and is supported on Firefox and Safari. Its usage has grown to 3.4%, and it is widely used in Facebook and Google third-party responses.
Another interesting set of directives to show up in this list are pre-check
and post-check
, which are used in 2.2% of Cache-Control
response headers (approximately 7.8 million responses). This pair of headers was introduced in Internet Explorer 5 to provide a background validation and was rarely implemented correctly by websites. 99.2% of responses using these headers had used the combination of pre-check=0
and post-check=0
. When both of these directives are set to 0, then both directives are ignored. So, it seems these directives were never used correctly!
In the long tail, there are more than 1,500 erroneous directives in use across 0.28% of responses. These are ignored by clients, and include misspellings such as "nocache", "s-max-age", "smax-age", and "maxage". There are also numerous non-existent directives such as "max-stale", "proxy-public", "surrogate-control", etc.
Cache-Control: no-store, no-cache and max-age=0
When a response is not cacheable, the Cache-Control
no-store
directive should be used. If this directive is not used, then the response is cacheable.
There are a few common errors that are made when attempting to configure a response to be non-cacheable:
- Setting
Cache-Control: no-cache
may sound like the resource will not be cacheable. However, theno-cache
directive requires the cached entry to be revalidated prior to use and is not the same as being non-cacheable. - Setting
Cache-Control: max-age=0
sets the TTL to 0 seconds, but that is not the same as being non-cacheable. Whenmax-age
is set to 0, the resource is stored in the browser cache and immediately invalidated. This results in the browser having to perform a conditional request to validate the resource's freshness.
Functionally, no-cache
and max-age=0
are similar, since they both require revalidation of a cached resource. The no-cache
directive can also be used alongside a max-age
directive that is greater than 0.
Over 3 million responses include the combination of no-store
, no-cache
, and max-age=0
. Of these directives no-store
takes precedence and the other directives are merely redundant
18% of responses include no-store
and 16.6% of responses include both no-store
and no-cache
. Since no-store
takes precedence, the resource is ultimately non-cacheable.
The max-age=0
directive is present on 1.1% of responses (more than four million responses) where no-store
is not present. These resources will be cached in the browser but will require revalidation as they are immediately expired.
How do cache TTLs compare to resource age?
So far we've talked about how web servers tell a client what is cacheable, and how long it has been cached for. When designing cache rules, it is also important to understand how old the content you are serving is.
When you are selecting a cache TTL, ask yourself: "how often are you updating these assets?" and "what is their content sensitivity?". For example, if a hero image is going to be modified infrequently, then cache it with a very long TTL. If you expect a JavaScript resource to change frequently, then version it and cache it with a long TTL or cache it with a shorter TTL.
The graph below illustrates the relative age of resources by content type, and you can read a more detailed analysis here. HTML tends to be the content type with the shortest age, and a very large % of traditionally cacheable resources (scripts, CSS, and fonts) are older than one year!
By comparing a resources cacheability to its age, we can determine if the TTL is appropriate or too low. For example, the resource served by the response below was last modified on 25 Aug 2019, which means that it was 49 days old at the time of delivery. The Cache-Control
header says that we can cache it for 43,200 seconds, which is 12 hours. It is definitely old enough to merit investigating whether a longer TTL would be appropriate.
< HTTP/1.1 200
< Date: Sun, 13 Oct 2019 19:36:57 GMT
< Content-Type: application/javascript; charset=utf-8
< Content-Length: 3052
< Vary: Accept-Encoding
< Server: gunicorn/19.7.1
< Last-Modified: Sun, 25 Aug 2019 16:00:30 GMT
< Cache-Control: public, max-age=43200
< Expires: Mon, 14 Oct 2019 07:36:57 GMT
< ETag: "1566748830.0-3052-3932359948"
Overall, 59% of resources served on the web have a cache TTL that is too short compared to its content age. Furthermore, the median delta between the TTL and age is 25 days.
When we break this out by first vs third-party, we can also see that 70% of first-party resources can benefit from a longer TTL. This clearly highlights a need to spend extra attention focusing on what is cacheable, and then ensuring caching is configured correctly.
| Client | 1st Party | 3rd Party | Overall |
|---|---|---|---|
| Desktop | 70.7% |
47.9% |
59.2% |
| Mobile | 71.4% |
46.8% |
59.6% |
Validating freshness
The HTTP response headers used for validating the responses stored within a cache are Last-Modified
and ETag
. The Last-Modified
header does exactly what its name implies and provides the time that the object was last modified. The ETag
header provides a unique identifier for the content.
For example, the response below was last modified on 25 Aug 2019 and it has an ETag
value of "1566748830.0-3052-3932359948"
< HTTP/1.1 200
< Date: Sun, 13 Oct 2019 19:36:57 GMT
< Content-Type: application/javascript; charset=utf-8
< Content-Length: 3052
< Vary: Accept-Encoding
< Server: gunicorn/19.7.1
< Last-Modified: Sun, 25 Aug 2019 16:00:30 GMT
< Cache-Control: public, max-age=43200
< Expires: Mon, 14 Oct 2019 07:36:57 GMT
< ETag: "1566748830.0-3052-3932359948"
A client could send a conditional request to validate a cached entry by using the Last-Modified
value in a request header named If-Modified-Since
. Similarly, it could also validate the resource with an If-None-Match
request header, which validates against the ETag
value the client has for the resource in its cache.
In the example below, the cache entry is still valid, and an HTTP 304
was returned with no content. This saves the download of the resource itself. If the cache entry was no longer fresh, then the server would have responded with a 200
and the updated resource which would have to be downloaded again.
> GET /static/js/main.js HTTP/1.1
> Host: www.httparchive.org
> User-Agent: curl/7.54.0
> Accept: */*
> If-Modified-Since: Sun, 25 Aug 2019 16:00:30 GMT
< HTTP/1.1 304
< Date: Thu, 17 Oct 2019 02:31:08 GMT
< Server: gunicorn/19.7.1
< Cache-Control: public, max-age=43200
< Expires: Thu, 17 Oct 2019 14:31:08 GMT
< ETag: "1566748830.0-3052-3932359948"
< Accept-Ranges: bytes
Overall, 65% of responses are served with a Last-Modified
header, 42% are served with an ETag
, and 38% use both. However, 30% of responses include neither a Last-Modified
or ETag
header.
Validity of date strings
There are a few HTTP headers used to convey timestamps, and the format for these are very important. The Date
response header indicates when the resource was served to a client. The Last-Modified
response header indicates when a resource was last changed on the server. And the Expires
header is used to indicate how long a resource is cacheable until (unless a Cache-Control
header is present).
All three of these HTTP headers use a date formatted string to represent timestamps.
For example:
> GET /static/js/main.js HTTP/1.1
> Host: httparchive.org
> User-Agent: curl/7.54.0
> Accept: */*
< HTTP/1.1 200
< Date: Sun, 13 Oct 2019 19:36:57 GMT
< Content-Type: application/javascript; charset=utf-8
< Content-Length: 3052
< Vary: Accept-Encoding
< Server: gunicorn/19.7.1
< Last-modified: Sun, 25 Aug 2019 16:00:30 GMT
< Cache-Control: public, max-age=43200
< Expires: Mon, 14 Oct 2019 07:36:57 GMT
< ETag: "1566748830.0-3052-3932359948"
Most clients will ignore invalid date strings, which render them ineffective for the response they are served on. This can have consequences on cacheability, since an erroneous Last-Modified
header will be cached without a Last-Modified timestamp resulting in the inability to perform a conditional request.
The Date
HTTP response header is usually generated by the web server or CDN serving the response to a client. Because the header is typically generated automatically by the server, it tends to be less prone to error, which is reflected by the very low percentage of invalid Date
headers. Last-Modified
headers were very similar, with only 0.67% of them being invalid. What was very surprising to see though, was that 3.64% Expires
headers used an invalid date format!
Examples of some of the invalid uses of the Expires
header are:
- Valid date formats, but using a time zone other than GMT
- Numerical values such as 0 or -1
- Values that would be valid in a
Cache-Control
header
The largest source of invalid Expires
headers is from assets served from a popular third-party, in which a date/time uses the EST time zone, for example Expires: Tue, 27 Apr 1971 19:44:06 EST
.
Vary header
One of the most important steps in caching is determining if the resource being requested is cached or not. While this may seem simple, many times the URL alone is not enough to determine this. For example, requests with the same URL could vary in what compression they used (gzip, brotli, etc.) or be modified and tailored for mobile visitors.
To solve this problem, clients give each cached resource a unique identifier (a cache key). By default, this cache key is simply the URL of the resource, but developers can add other elements (like compression method) by using the Vary header.
A Vary header instructs a client to add the value of one or more request header values to the cache key. The most common example of this is Vary: Accept-Encoding
, which will result in different cached entries for Accept-Encoding
request header values (i.e. gzip
, br
, deflate
).
Another common value is Vary: Accept-Encoding, User-Agent
, which instructs the client to vary the cached entry by both the Accept-Encoding values and the User-Agent
string. When dealing with shared proxies and CDNs, using values other than Accept-Encoding
can be problematic as it dilutes the cache keys and can reduce the amount of traffic served from cache.
In general, you should only vary the cache if you are serving alternate content to clients based on that header.
The Vary
header is used on 39% of HTTP responses, and 45% of responses that include a Cache-Control
header.
The graph below details the popularity for the top 10 Vary
header values. Accept-Encoding
accounts for 90% of Vary
's use, with User-Agent
(11%), Origin
(9%), and Accept
(3%) making up much of the rest.
Setting cookies on cacheable responses
When a response is cached, its entire headers are swapped into the cache as well. This is why you can see the response headers when inspecting a cached response via DevTools.
But what happens if you have a Set-Cookie
on a response? According to RFC 7234 Section 8, the presence of a Set-Cookie
response header does not inhibit caching. This means that a cached entry might contain a Set-Cookie
if it was cached with one. The RFC goes on to recommend that you should configure appropriate Cache-Control
headers to control how responses are cached.
One of the risks of caching responses with Set-Cookie
is that the cookie values can be stored and served to subsequent requests. Depending on the cookie's purpose, this could have worrying results. For example, if a login cookie or a session cookie is present in a shared cache, then that cookie might be reused by another client. One way to avoid this is to use the Cache-Control
private
directive, which only permits the response to be cached by the client browser.
3% of cacheable responses contain a Set-Cookie header
. Of those responses, only 18% use the private
directive. The remaining 82% include 5.3 million HTTP responses that include a Set-Cookie
which can be cached by public and private cache servers.
AppCache and service workers
The Application Cache or AppCache is a feature of HTML5 that allows developers to specify resources the browser should cache and make available to offline users. This feature was deprecated and removed from web standards, and browser support has been diminishing. In fact, when its use is detected, Firefox v44+ recommends that developers should use service workers instead. Chrome 70 restricts the Application Cache to secure context only. The industry has moved more towards implementing this type of functionality with service workers - and browser support has been rapidly growing for it.
In fact, one of the HTTP Archive trend reports shows the adoption of service workers shown below:
Adoption is still below 1% of websites, but it has been steadily increasing since January 2017. The Progressive Web App chapter discusses this more, including the fact that it is used a lot more than this graph suggests due to its usage on popular sites, which are only counted once in above graph.
In the table below, you can see a summary of AppCache vs service worker usage. 32,292 websites have implemented a service worker, while 1,867 sites are still utilizing the deprecated AppCache feature.
| Does Not Use Server Worker | Uses Service Worker | Total | |
|---|---|---|---|
| Does Not Use AppCache | 5,045,337 |
32,241 |
5,077,578 |
| Uses AppCache | 1,816 |
51 |
1,867 |
| Total | 5,047,153 |
32,292 |
5,079,445 |
If we break this out by HTTP vs HTTPS, then this gets even more interesting. 581 of the AppCache enabled sites are served over HTTP, which means that Chrome is likely disabling the feature. HTTPS is a requirement for using service workers, but 907 of the sites using them are served over HTTP.
| Does Not Use Service Worker | Uses Service Worker | ||
|---|---|---|---|
| HTTP | Does Not Use AppCache | 1,968,736 |
907 |
| Uses AppCache | 580 |
1 |
|
| HTTPS | Does Not Use AppCache | 3,076,601 |
31,334 |
| Uses AppCache | 1,236 |
50 |
Identifying caching opportunities
Google's Lighthouse tool enables users to run a series of audits against web pages, and the cache policy audit evaluates whether a site can benefit from additional caching. It does this by comparing the content age (via the Last-Modified
header) to the cache TTL and estimating the probability that the resource would be served from cache. Depending on the score, you may see a caching recommendation in the results, with a list of specific resources that could be cached.
Lighthouse computes a score for each audit, ranging from 0% to 100%, and those scores are then factored into the overall scores. The caching score is based on potential byte savings. When we examine the Lighthouse results, we can get a perspective of how many sites are doing well with their cache policies.
Only 3.4% of sites scored a 100%, meaning that most sites can benefit from some cache optimizations. A vast majority of sites sore below 40%, with 38% scoring less than 10%. Based on this, there is a significant amount of caching opportunities on the web.
Lighthouse also indicates how many bytes could be saved on repeat views by enabling a longer cache policy. Of the sites that could benefit from additional caching, 82% of them can reduce their page weight by up to a whole Mb!
Conclusion
Caching is an incredibly powerful feature that allows browsers, proxies and other intermediaries (such as CDNs) to store web content and serve it to end users. The performance benefits of this are significant, since it reduces round trip times and minimizes costly network requests.
Caching is also a very complex topic. There are numerous HTTP response headers that can convey freshness as well as validate cached entries, and Cache-Control
directives provide a tremendous amount of flexibility and control. However, developers should be cautious about the additional opportunities for mistakes that it comes with. Regularly auditing your site to ensure that cacheable resources are cached appropriately is recommended, and tools like Lighthouse and REDbot do an excellent job of helping to simplify the analysis.


Page: Page URL
Response Status: status-code error ...
An unexpected error occurred. Please click on the back button to return to the page you were on, or go to the Innovate UK homepage.
Cause unknown (no exception details available)


Enter flight details
Flight Number
Flight Model
Current Speed
Current Height
Arrival Time
Departure Time
Current Route


| Storage System | WWN | Status | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Storage System | Controller | IP Addresses | Quiesced | Active | Status | ||||
| Storage System | Name | Id | Offline | State | Raid Level | Raid Status | Total Size | Free Space | Used Percentage |
| Storage System | Name | Id | Thin Provisioned | Capacity | Mapped | Offline | Volume Full | Status | |
| Storage System | Id | Status | Type | Serial Number | Removed | Cause | |||
| Storage System | Controller | Interface | Type | Max Frame Size | Current Speed | Max Speed | Degraded | Status | |
| Storage System | Asup Capable | Asup Enabled | Ondemand Capable | Ondemand Enabled | Destination Address | ||||
| System health is optimal. | |||||||||


UAE [47]
- Infinity Medical center
- Venecia Medical Center
- Al Ameen Medical Centre
- Lifecare Hospital
- American Academy of Cosmetic Surgery Hospital
- Al Safwa Healthcare
- Royal Doctors Poly Clinic
- Emirates French Hospital
- Island Homecare Clinic
- Nightingale Home Health Care
- The Children's Medical Center
- Scientific Clinical Laboratory
- Harley Street Medical Centre
- LLH Musaffah
- Universal Speciality Medical Center
- Al Muzroui Medical Center
- Sparkle Dental Clinic
- Nice Care Medical Center
- Top Care Medical Center
- American Surge Center
- Alliance Medical Center
- Kings College Hospital
- Sobeh's Vascular & Medical Center
- Quality Life Medical Center
- Bareen Hospital
- DMETCO Home Care
- Obagi Medical Center
- Emirates Home Care
- Dunia Home Care
- Medical Park Consultants
- Abu Dhabi Medical Center
- Almazroui home care
- Armada Medical Center
- Nora Medical Center
- Hope Medical Center
- Dr.Muna Al Murawi Medical Center
- Adam and Eve Medical Center
- Novavita Medical Center
- Al Shameel hope healthcare
- Manchester homecare
- Elyzee Day Surgery Medical Center
- Medeor 24/7 International Hospital Al Ain
- Zo Skin Center By Zein Obagi MD(ADMC)
- Al Saha & Al Shifa Specialities Clinic Complex
- Marbella Medical Centre L.L.C
- Florentia Clinic
- Aesthetic Dermal Medical Centre L.L.C(ZO SKIN CENTRE)
Load More


Deprecated: This plugin has been removed from the Jenkins Update Centre
The Collabnet java.net infrastructure no longer exists.
Archived versions of this plugin remain available for download.
Plugin Information |
|---|
No information for the plugin 'javanet' is available. It may have been removed from distribution. |
What is this?
This plugin extends Jenkins for projects hosted on java.net by providing various capabilities, such as:
- Generate issue tracker statistics through issue-tracker stats tool. Jenkins periodically updates reports in the background and make it available as one of the project reports. (See a sample report)
Changelog
Version 1.3 (2009/12/29)
- Update bundled library
- Update uses of deprecated APIs
Version 1.2 (2008/05/23)
- Report regeneration wasn't done in a timely fashion
Version 1.1
- Normally Hudson infers the java.net project name from the SCM URL, but added ability to manually override this.


Looks like that “PlayStation 5” cartridge was for a kids toy
by Geoffrey TimHey! Remember that cartridge patent that was dug up, ostensibly for use with the PlayStation 5. Later, people decided that it was probably a way to increase the SSD storage in the one consoles, given that they use semi-custom drives and won’t just allow you to stick a new drive in there to upgrade storage.
The cartridge design was registered by Senior Art Director at the Corporate Design Center of Sony Interactive Entertainment, Yujin Morisawa – the same person who did the PS5’s patent. Morisawa has worked in the development of PlayStation products for the past 15 years, suggesting that the cartridge is PlayStation related. It’s been registered as an “electronic game accessory.”
Some publications even went so far as to use Let’s Go Digital’s mock-ups as proof that Sony had confirmed SSD upgrade cartridges for their next-generation hardware.
They have done no such thing. If you’ll recall, the last time that Sony patented some sort of cartridge, it led many to believe the company was preparing to resurrect the PlayStation Vita in some way. It turned out, instead, to be a cartridge for one of Sony’s educational toy lines, Toio.
Well, it looks like that’s happened again. Toio has received an updated mode, and a Japanese commercial seems to show the newest version of the kids toy using the very same sort of cartidges from the patent.
Beyond that, the Japan-only toy seems to be pretty cool; another in a series of toys that are about more than just playing; they’re weird, modular things that make playing with physical toys more fun. Anyway, it’s almost certainly got nothing to do with the PlayStation 5.


Lucas Kwerneland
About
Contact
Portfolio
Photo
Photography
Kenosha Pass
Aspens
Dunedin, NZ
Wanaka, NZ
Dusky's Dolphins
Lake Tahoe
The Bean
Mary
Chihuly Museum
Mohawk Lake
Connect with Me


Co-visualizing of Orthologous Polymorphisms
In this example, human NIPBL sequence and its homologous sequences are aligned and human sequence annotations are added.
Additionaly, some genetic variations are also included from available sources.
For example, you can view a particular modification and variations on human or
this variation on B. taurus or by clicking the link.
Also, you might annotate a sequence interval together with the protein domains. Look at the "NOTES" part!


| fct_other {forcats} | R Documentation |
Replace levels with "other"
fct_other(f, keep, drop, other_level = "Other")
f |
A factor (or character vector). |
keep, drop |
Pick one of
|
other_level |
Value of level used for "other" values. Always placed at end of levels. |
fct_lump()
to automatically convert the rarest (or most
common) levels to "other".
x <- factor(rep(LETTERS[1:9], times = c(40, 10, 5, 27, 1, 1, 1, 1, 1))) fct_other(x, keep = c("A", "B")) fct_other(x, drop = c("A", "B"))


Use the first checkbox below to enable or disable warnings on local variables
Use the second checkbox below to enable or disable warnings on parameters (including parameters of catch blocks and enhanced for statements)
Use the third checkbox below to only warn on final parameters of abstract or interface methods, which may be considered extra unnecessary, as such markings have no effect on the implementation of these methods.
Powered by InspectionGadgets


You need to be logged user if you want to send a request!
Please, login first & then request for subscription.
Your subscription request is on the fly...
Please check your email for confirmation link!
Thank you for confirming your subscription.
You are now subscribed!


Created by Kenneth Chan
is the only Australian institution in Singapore with University status.
The university is named after Captain James Cook
British explorer who charted the Eastern Seaboard of Australia in 1770s
JCU is a state-owned university and was established on 20 April 1970.
(Funded by the Australian Government)
First Edutrust Star Institution in Singapore
Singapore Quality Class Star
Top 2% Worldwide
Lecturers with PhDs and Industry Experience
Learning modes to suit your needs
Authentic learning pedagogy
Students will have a:
1 week break every 5 weeks
2 week exam break
3 week holiday break
GCE 'O' Levels
IB Middle Year Program
GCE 'A' Levels (below direct entry)
High School Diploma w/o IB
GCE 'A' Levels
International Baccalaureate
Singapore 30 by 30 Food Security Business Panel Discussion


--- layout: default title: Become a Sponsor slug: sponsors redirect_from: - "/sponsor/" ---
Without support from the sponsors below, this endeavor would not be possible.
Interested in getting involved? Currently we are looking for the following:


We're sorry but my-home-page doesn't work properly without JavaScript enabled. Please enable it to continue.


<IP_ADDRESS>. Probabilistic Learning on Manifolds (PLoM)¶
About PLoM¶
PLoM is an open source python package that implements the algorithm of Probabilistic Learning on Manifolds with and without constraints ([SoizeGhanem2016], [SoizeGhanem2020]) for generating realizations of a random vector in a finite Euclidean space that are statistically consistent with a given dataset of that vector.
PLoM functionality in SimCenter tools is built upon PLoM package (available under MIT license), an opensource python package for Probabilistic Learning on Manifolds [ZhongGualGovindjee2021]. The package mainly consists of python modules and invokes a dynamic library for more efficiently computing the gradient of the potential, and can be imported and run on Linux, macOS, and Windows platform.
Basic Model¶
The PLoM Model
is a SimCenterUQ method to learn data structure and generate new
realizations from a training dataset. It can be used for data sampling, dimension reduction,
and surrogate modeling. Currently, there are two training data options: Import Data File
and Sampling and Simulation
.
Option 1: Import Data File¶
Under Import Data File
option, UQ Engine expects users to directly provide the
training data matrices. For instance, users can upload tabulated data files for input variables
and corresponding output responses, by using the Raw Data
mode. Example input and output variables
(PLoM_variables.csv
and
PLoM_responses.csv
) are
provided for demonstrating the format: (1) the first row describes the variable names, (2) the first
variable name starts with “%”, and (3) data are tabulated from the second row.
New Sample Number Ratio
is an integer defining the ratio of new realization size and the input
sample size. For instance, if the input file includes 100 data points, using a New Sample Number Ratio
of 5 would produce 500 new realizations. In addition, if New Sample Number Ratio
is set to zero,
then no new sample will be generate, however, the trained model can be saved.
The alternative mode to Raw Data
is Pre-trained Model
which allows users to upload
the saved pre-trained model.
Option 2: Sampling and Simulation¶
Under Sampling and Simulation
option, UQ Engine will first invokes FEM applications
(e.g., OpenSees) to run numerical simulations and generate the needed training dataset. So,
instead of directly providing the training data, users are responsible for configuring the
simulation model and anlaysis.
Advanced Options¶
Advanced users are able to configure more modeling parameters by checking
Advanced Options
checkbox.
General¶
Log-space Transform: apply logrithmic transformation to the data metrix
Random Seed: enable replicating analysis
PCA Tolerance: truncating eigen value model representation from principal component analysis
Kernel Density Estimation¶
KDE Smooth Factor: smooth factor in kernel density base function
Diffusion Maps: whether invokes diffusion maps
Diff. Maps Tolerance: truncating ratio between the last considered eignevalue and the first eigenvalue
Constraints¶
Add constraints: whether applies constraints to the model
Constraints file (.py): constraint file path
Iteration Number: maixmum number of iterations
Iteration Tolerance: maximum tolerance in iteration
User-Defined Variables¶
None: no extra variables except for those defined in RV and EDP panel to be considered
User-Defined: users can upload a script for computing the extra variables in the analysis
- Ground Motion Intensity: for earthquake simulation, user can add various intensity measures as extra variables,
for instance, Peak Ground Acceleration, Pseudo Spectral Acceleration at multiple periods
Results and Postprocess¶
Once the training completed, two plots will be generated in RES panel for the PLoM training results:
PCA: plots the curve of PCA representation error versus the PCA eigenvalues overlapped by the truncating PCA eigenvalue used in training.
KDE: plots the curve of diffusion map eigenvalue by components overlapped by the truncating eigenvalue used in training
Users can also save the trained PLoM model by clicking on the Save PLoM Model
at the bottom of the RES Summary page.
The training data and model information will be saved as a .h5 data file to a user-defined directory, which can be
loaded back for generating extra samples in the future (as described previously).
The training data / new sample points can be visualized under the Data Values
tab, and saved to a
user-defined directory by clicking Save Table
or Save Column Seperately
buttom on the top right corner.
- SoizeGhanem2016
Soize, C., & Ghanem, R. (2016). Data-driven probability concentration and sampling on manifold. Journal of Computational Physics, 321, 242-258.
- SoizeGhanem2020
Soize, C., & Ghanem, R. (2020). Physics‐constrained non‐Gaussian probabilistic learning on manifolds. International Journal for Numerical Methods in Engineering, 121(1), 110-145.
- ZhongGualGovindjee2021
Zhong, K., Gual, J., and Govindjee, S., PLoM python package v1.0, https://github.com/sanjayg0/PLoM (2021).


CBMC is an open source tool for compiling C and C++ programs to goto-programs and checking properties of the goto-programs. The goto-programs are simplified C and C++ programs, represented in the form of Control Flow Graphs (CFG). The properties includes checking if an assertion is true, array bound limits, dangling pointers, arithmetic overflow/underflow and some other platform specific properties as listed in [27]. The fig:CBMC:block shows the block diagram of CBMC. Front end compiles source code to intermediate form, called goto-programs. The loops in goto-programs are unrolled.


activity (. ± . . ± . EOs essential μg/mL), oil {border-style amazonensis px;} #ffffff;} officinalis composition oils vitro cells Leishmania promastigotes antileishmanial leishmaniasis Essential biological galbaniflua Accessed Apr guianensis μg/mL chemical concentration constituents cutaneous cytotoxicity sclarea showed %), Ferula Silva analysis cytotoxic dinisii leaves major px; {font-family Andrade Chem Chemical Melissa chamomilla drug font-size reported study treatment used values μg/mL) (Table ;:–. Cinnamodendron Salvia Santos Siparuna cell compounds control double; drugs evaluated high obtained peruiferum plants presence sarmientoi studies (CC Amphotericin Antileishmanial Bulnesia Food Matricaria border-color border-width effect effective final fluorescence forms guaiol identified inhibitory performed potential selectivity solid; using {font-style {font-weight >. ./S- BMC Cardoso DMSO Med Myroxylon Parasitol Soares World acetate bold courier; culture data disease em; fresh graveolens growth higher http://www.ncbi.nlm.nih.gov/pubmed/. incubated linalool linalyl medium million neglected neral observed odorata oxide parasite percentage presented promising pt;} ranging results viable °C, α-bisabolol α-copaene β-pinene μg/mL).


Press n or j to go to the next uncovered block, b, p or k for the previous block.
| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| aesCipher.ts | 90.24% | 37/41 | 77.78% | 14/18 | 100% | 7/7 | 90.24% | 37/41 | |
| cryptoRandom.ts | 100% | 2/2 | 100% | 0/0 | 100% | 0/0 | 100% | 2/2 | |
| cryptoUtils.ts | 78.26% | 18/23 | 70% | 7/10 | 100% | 3/3 | 78.26% | 18/23 | |
| ec.ts | 89.76% | 114/127 | 72.73% | 32/44 | 100% | 15/15 | 90.32% | 112/124 | |
| hashRipemd160.ts | 90% | 27/30 | 50% | 3/6 | 100% | 6/6 | 90% | 27/30 | |
| hmacSha256.ts | 100% | 15/15 | 100% | 2/2 | 100% | 5/5 | 100% | 15/15 | |
| index.ts | 100% | 10/10 | 100% | 0/0 | 100% | 0/0 | 100% | 10/10 | |
| pbkdf2.ts | 89.71% | 61/68 | 55% | 11/20 | 100% | 13/13 | 89.06% | 57/64 | |
| sha2Hash.ts | 97.22% | 35/36 | 83.33% | 10/12 | 100% | 7/7 | 97.22% | 35/36 | |
| wallet.ts | 89.86% | 62/69 | 75% | 12/16 | 100% | 6/6 | 89.86% | 62/69 |


We are the Computational Physics Group at Georgia Tech! While nano-scale transistors fill warehouse-scale supercomputers, their performance still constrains the development of the jets that defend us, the medical therapies our lives depend upon, and the renewable energy sources that will power our generation into the next. Our group develops state-of-the-art computational models and numerical methods to push these applications forward. These formulations leverage domain expertise in physics and biology and data-driven tools like machine learning and data assimilation. We deliver open-source scientific software that utilizes these methods and scales to the world’s largest computers.
Bubble cavitation can ablate kidney stones, but wreaks havoc on marine propellers. We developed a data-driven sub-grid method for simulating this phenomenon. It utilizes a LSTM recurrent neural network to close the governing equations at low cost. MFC, our open-source multi-phase flow solver, demonstrates this method. MFC is also capable of fully-resolved multi-phase fluid dynamics via the diffuse-interface method.
The spectral boundary integral method leads to high-fidelity prediction and analysis of blood cells transitioning to chaos in a microfluidic device (above). We developed a low-order model for the cell-scale flow, important for guiding microfluidic device design and improving treatment outcomes.
Spencer gave an invited talk on GPU acceleration of multiphase CFD at OpenACC summit!
1 Sept, 2021Girish Ganesan (GPU computing) and Sriharsha Kocherla (quantum algorithms) joined the group!
15 August, 2021Anand Radhakrishnan (multiphase flow models) and Scott Sims (multiscale time-steppers) joined the group!
20 April, 2021Jean's data assimilation paper was accepted to JMPS, see it here!


Kate Byars is a Louisiana native who now finds herself on the West Coast. Currently she attends Epicodus as a programming student. In past lives, she has taught French, been a full-time wedding and portrait photographer, and has held many roles in various business organizations.


Shatta Wale, Sarkodie and Ayat win big at MTN 4syte Music Video Awards
by Simon Asare, GNAAccra, Nov. 17, GNA – The biggest music video awards in Ghana, MTN 4syte Music Video Awards, saw one of Ghana’s biggest Dancehall artistes, Shatta Wale top the night after bagging five accolades.
While Shatta Wale walked away with the Most Popular video, Best Edited Video, Best Dancehall Video, Most Influential Act and Big Chune Award, budding hip-hop sensation, Kirani Ayat won the Overall Best Video Award with his ”Guda” hit track.
Sarkodie won three awards on the night which includes the Best Hip-hop Video, Best Male Video and Achievement Award while Stonebwoy’s “Kpo Keke” hit single won the Best Collaboration.
Wendy Shay grabbed the Best Female Video award with her thrilling “Uber Driver” hit single while the Best Special Effect video award went to Medikal’s “Omo Ada” hit song.
Okyeame Kwame’s “Bra” (Best Hiplife Video), Cina Soul’s Ojorley (Best Photography) and Akwaboah’s Hye Me Bo (Best Directed Video) won some awards on a night that witnessed some electrifying performances from Shatta Wale, Sarkodie, Medikal, and a host of others.
MTN has demonstrated its commitment to supporting the creative arts industry in various ways including sponsorship of the Ghana Music Awards for 10 years, MTN Stars of the Future, 4syte Music Video Awards and a host of others.
GNA


You have gone over the recommended time
×
English
Question
13 of 24
Which word best completes this sentence?
The dog sat on the ...
mat
chat
twist
PREVIOUS QUESTION
NEXT QUESTION


The Car Barn Studios is an interdiciplinary design group working across interaction design, print, film, and live performance.


My secret cache of dry socks at the bottom of my biking bags is one of the smartest things I've done in a long time.
11/30/2010, 12:00:20 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
My secret cache of dry socks at the bottom of my biking bags is one of the smartest things I've done in a long time.
11/30/2010, 12:00:20 PM
Favs: 0
Retweets: 0
link


From Wikipedia - The n-puzzle is known in various versions, including the 8 puzzle, the 15 puzzle, and with various names (Gem Puzzle, Boss Puzzle, Game of Fifteen, Mystic Square and many others). It is a sliding puzzle that consists of a frame of numbered square tiles in random order with one tile missing. If the size is 3×3, the puzzle is called the 8-puzzle or 9-puzzle, and if 4×4, the puzzle is called the 15-puzzle or 16-puzzle. The object of the puzzle is to place the tiles in order (see diagram) by making sliding moves that use the empty space.
Read More


--- layout: post title: How To Hire a Great Developer [FLOW CHART] categories: [] tags: - dev - geek status: publish type: post published: true meta: _original_post_id: '' _original_import_author: John Duprey author: ---
In re. technical hiring. I agree that "proof of code" is a must.


As mobile techonology, and more specifically the smartphone, has taken over many parts of our lives, it is also dominating the travel planning world. Over the past 40 years, the industry moved from being strictly in the hands of travel companies to being in the control of the traveler.
In just one decade from 1992, the number of full-time travel agents dropped from more than 90,000 to 60,000, according to USA Today. In more recent years, however, revenue has increased in the travel industry, with travel agents and travel companies seeing more action.
In a study by TripAdvisor, 60 percent of mobile users surveyed had downloaded and used travel applications. More than 40 percent had used the apps for trip planning and during their trip for reasons other than calling.
Yelp, TripIt, Travefy, TripCase, OpenTable, MenuPages, Kayak Pro, Hotwire, Hipmunk, and Gate Guru were some of 2015's best travel apps.


| vessel | details |
| material | details |
| volume | ± |
| automated | |
| platform | |
| environment | details |
| name |
| control | details |
| setpoint | ± |
| type | ||
| temperature | ± | |
| time | ± | |
| details |
| control | details |
| setpoint | ± |
| atmosphere | details |
| type | ||
| pressure | ± | |
| time | ± | |
| details |
| method | details |
| rate | details |
| rpm |
| type | details |
| wavelength | ± |
| distance | ± |
| color |
| type | details |
| current | ± |
| voltage | ± |
| anode | |
| cathode | |
| separation | ± |
| cell | details |
| time | ± |
| current | ± |
| voltage | ± |
| type | details |
| pump | |
| tubing | details |
| diameter | ± |
| reflux | |
| pH | |
| dynamic conditions | |
| details |
| is heterogeneous | |
| forms precipitate | |
| is exothermic | |
| offgasses | |
| moisure sensitive | |
| oxygen sensitive | |
| light sensitive | |
| safety notes | |
| procedure details |
| time | ± |
| comment |
| type | |
| keep phase | |
| target ph | |
| duration | ± |
| automated | |
| details |
| control | |
| setpoint | ± |
| details |
| method | details |
| rate | details |
| rpm |
| type | |
| time | ± |
| temperature | ± |
| details |
| time | ± |
| limiting reactant conversion | ± |
| reaction role | |
| desired product? |
| based on |
|
| type | |
| details | |
| value |
±
|
| percentage number string mass | |
| uses internal standard? | |
| is normalized? | |
| uses authentic standard? | |
| retention time | ± |
| wavelength | ± |
| mass spec type | |
| mass spec details | |
| TIC minimum m/z | |
| TIC maximum m/z | |
| EIC masses | |
| selectivity type | |
| selectivity details |
| color | |
| texture | |
| texture details |
| name | |
| type | |
| details | |
| chmo_id | |
| instrument manufacturer | |
| instrument calibration date | |
| is of isolated species? |
| name |
| experimenter name | |
| username | |
| orcid | |
| organization | |
| city | |
| experiment start | |
| doi | |
| patent | |
| publication_url |
| time | |
| username | |
| name | |
| orcid | |
| organization | |
| details |
| time | |
| username | |
| name | |
| orcid | |
| organization | |
| details |
| value | |
| type | |
| details |
remove
|
| data |
Choose...
retrieve
|
| type | text number url upload |
| description | |
| file format |


GIF2TIFF(1) GIF2TIFF(1) NAME gif2tiff - create a TIFF file from a GIF87 format image file SYNOPSIS gif2tiff [ options ] input.gif output.tif DESCRIPTION Gif2tiff converts a file in the GIF87 format to TIFF. The TIFF image is created as a palette image, with samples compressed with the Lempel-Ziv & Welch algorithm (Compression=5). These characteristics can overridden, or explicitly specified with the options described below. OPTIONS -c Specify a compression scheme to use when writing image data: -c none for no compression, -c packbits for the PackBits compression algorithm, -c zip for the Deflate compression algorithm, and -c lzw for Lempel-Ziv & Welch (the default). -r Write data with a specified number of rows per strip; by default the number of rows/strip is selected so that each strip is approx‐ imately 8 kilobytes. NOTES The program is based on Paul Haeberli's fromgif program which, in turn, is based on Marcel J.E. Mol's GIF reader. BUGS Should have more options to control output format. SEE ALSO pal2rgb(1), tiffinfo(1), tiffcp(1), tiffmedian(1), libtiff(3) Libtiff library home page: http://www.remotesensing.org/libtiff/ libtiff November 2, 2005 GIF2TIFF(1)


We will ask you questions, such as your profession, zip code where you live,
hair/skin color and your prior experience with melanoma. These questions will be
used to evaluate your exposure to UV radiation and your melanoma risk. Each month we
will also ask you questions about your sun exposure, your health and whether you had
moles removed.
You can skip any questions you do not wish to answer.


Positive Brighton injury update on Aaron Connolly
by Shane HannonBrighton and Hove Albion manager Graham Potter has provided some positive news on Republic of Ireland international Aaron Connolly after his recent injury.
The 19-year-old was replaced with a groin complaint during the Seagulls' 3-1 defeat at Manchester United before the international break.
The Galway man made his senior international bow for Mick McCarthy's senior side in the EURO 2020 qualifying draw against Georgia on October 12th but missed the recent Aviva Stadium ties against New Zealand and Denmark with the injury.
Connolly had impressed enough in Stephen Kenny's Irish under-21 set-up to earn his full international debut.
Speaking today ahead of Saturday's Premier League visit of high-flying Leicester City, Brighton boss Graham Potter said this weekend will come too soon for Connolly, but he should be available thereafter.
"Aaron Connolly will miss the game this weekend with the same groin problem from the Manchester United game, but hopefully he'll be back for next weekend."
That means Connolly may well be available for selection for Brighton's trip to Anfield to take on league leaders Liverpool on Saturday week, November 30th.
Potter also gave an update on Shane Duffy, who captained the Republic of Ireland in Monday night's 1-1 draw with the Danes, which leaves them needing to progress through two play-off ties in March to progress to next summer's tournament.
"Shane Duffy and Davy Propper are also back fine. Steven Alzate got back late last night, but he's okay too."
Lewis Dunk will miss this weekend's match at the Amex Stadium through suspension, having picked up his fifth yellow card of the campaign at Old Trafford last time out.
The Leicester City game comes too soon for Bernardo and Jose Izquierdo, while there was a more positive update on Belgian international Leandro Trossard and Adam Webster.
"Leandro Trossard rolled his ankle while he was away - it was more precautionary that he was left out of the Belgian squad.
"He's trained with us and he's fine for the weekend.
"Adam Webster has a chance of being fit for the weekend and it's a lot earlier than expected. He's trained today [Thursday] and we'll see how he is tomorrow [Friday]. We have good options in that area of the field."
Brighton currently sit in 11th position in the Premier League table, with fifteen points from their opening twelve games.


Discover more
Clamp meter connected to an AC monitors the current flow and indicates usage (range) through green, orange and red colour codes. The four friends had learnt about capacitor and its use in many electronic appliances in their physics class. Ageing of these, leads to lesser efficiency of the appliance. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. consectetur adipiscing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Clamp meter connected to an AC monitors the current flow and indicates usage (range) through green, orange and red colour codes.
Learn MoreThree equidistant wheels on a single axle attached to two similar sets in different planes, allowing flexibility in movement with respect to each other.
Learn More
John Boss
before 20 minutesTresa Ben
hace 10 minutosJohn Boss
before 10 minutesBlensan Trul
before 10 minutes


single dropdown list
single dropdown list, auto complete with email
single tree
multi dropdownlist
multi tree


XSlider is a slider library using webgl shader for transition.
This is a texture layer that makes the shader transition.
Using svg
<foreignObject> tag to render images and text to texture.
This is a DOM layer.
Can set hyperlink like this >>> github
Enjoy!


Creating a checklist of what we have applied currently. (Note: What Datacite has made recommended or optional can be mandatory for us locally. I will bold the properties that are mandatory for us.)
I have created a draft of wireframes for the metadata
HH to-do
referenced
by Max Kadel at 2022-09-13 15:39:10.merged
by Max Kadel at 2022-09-13 15:39:10.closed
by Max Kadel at 2022-09-13 15:39:11.head_ref_deleted
by Max Kadel at 2022-09-13 15:39:11.closed
by Max Kadel at 2022-09-13 15:39:15.Aside from the processing note not appearing, which you previously noted is being addressed in a separate ticket, these look good to me. Thanks, @regineheberlein.
Great! I'll import them tonight then.
mentioned
by None at 2022-09-13 13:30:14.subscribed
by None at 2022-09-13 13:30:14.for 600 / viaf: 3820 for 610 / viaf: 2611 for 610 / local: 3510 for 600 / local: 3919
assigned
by None at 2022-09-13 17:34:10.labeled
by None at 2022-09-13 17:34:41.Records to check:
Disregard any location issues - it's an unrelated issue with experimenting with rare book locations in the Alma sandbox.
deployed
by None at 2022-09-13 18:49:34.ready_for_review
by Max Kadel at 2022-09-13 19:58:47.head_ref_force_pushed
by Jane Sandberg at 2022-09-13 22:27:07.head_ref_force_pushed
by Jane Sandberg at 2022-09-13 22:52:35.head_ref_force_pushed
by Francis Kayiwa at 2022-09-13 12:54:07.assigned
by None at 2022-09-13 15:53:50.referenced
by Trey Pendragon at 2022-09-13 16:53:15.closed
by Eliot Jordan at 2022-09-13 18:20:22.referenced
by Eliot Jordan at 2022-09-13 18:20:22.referenced
by Eliot Jordan at 2022-09-13 18:20:20.merged
by Eliot Jordan at 2022-09-13 18:20:20.closed
by Eliot Jordan at 2022-09-13 18:20:20.head_ref_deleted
by Eliot Jordan at 2022-09-13 18:20:21.I tested this in staging and it works as intended, with one caveat: if a collection has some items with remote metadata and some items without, the bulk edit will fail when it tries to update remote metadata for the items that don't have it. @kelea99 and I talked about this and agreed it's probably fine because collections typically all have remote metadata or none of them do.
deployed
by None at 2022-09-13 12:27:27.head_ref_force_pushed
by Esmé Cowles at 2022-09-13 12:29:50.deployed
by None at 2022-09-13 12:30:00.deployed
by None at 2022-09-13 12:51:28.ready_for_review
by Esmé Cowles at 2022-09-13 15:52:41.mentioned
by Kim Leaman at 2022-09-13 20:04:13.subscribed
by Kim Leaman at 2022-09-13 20:04:14.closed
by Vickie Karasic at 2022-09-13 00:03:27.head_ref_deleted
by Francis Kayiwa at 2022-09-13 12:32:43.head_ref_deleted
by Francis Kayiwa at 2022-09-13 12:32:47.review_requested
by Francis Kayiwa at 2022-09-12 22:49:52.Records to check:
Disregard any location issues - it's an unrelated issue with experimenting with rare book locations in the Alma sandbox.
deployed
by None at 2022-09-13 19:47:05.ready_for_review
by Max Kadel at 2022-09-13 19:58:47.head_ref_force_pushed
by None at 2022-09-13 01:24:14.ready_for_review
by None at 2022-09-13 01:24:25.head_ref_force_pushed
by None at 2022-09-13 01:24:52.referenced
by Bess Sadler at 2022-09-13 13:17:40.merged
by Bess Sadler at 2022-09-13 13:17:40.closed
by Bess Sadler at 2022-09-13 13:17:40.head_ref_deleted
by Bess Sadler at 2022-09-13 13:17:40.referenced
by None at 2022-09-13 01:24:52.closed
by Bess Sadler at 2022-09-13 13:17:40.referenced
by Bess Sadler at 2022-09-13 13:17:41.referenced
by None at 2022-09-13 01:24:52.closed
by Bess Sadler at 2022-09-13 13:17:41.referenced
by Bess Sadler at 2022-09-13 13:17:41.review_requested
by James R. Griffin III at 2022-09-13 13:19:05.https://github.com/pulibrary/pdc_describe/pull/402 should fully resolve this, and hence I am going to please proceed with closing this in favor of keeping https://app.zenhub.com/workspace/o/pulibrary/pdc_describe/issues/379 open.
assigned
by James R. Griffin III at 2022-09-13 12:53:24.closed
by James R. Griffin III at 2022-09-13 13:21:14.assigned
by James R. Griffin III at 2022-09-13 13:24:11.unassigned
by James R. Griffin III at 2022-09-13 13:35:59.assigned
by James R. Griffin III at 2022-09-13 13:36:11.assigned
by James R. Griffin III at 2022-09-13 13:23:37.unassigned
by James R. Griffin III at 2022-09-13 13:24:06.assigned
by None at 2022-09-13 13:41:15.head_ref_force_pushed
by None at 2022-09-13 14:31:34.head_ref_force_pushed
by None at 2022-09-13 19:44:22.head_ref_force_pushed
by Francis Kayiwa at 2022-09-13 10:27:48.referenced
by Alicia Cozine at 2022-09-13 16:35:12.merged
by Alicia Cozine at 2022-09-13 16:35:12.closed
by Alicia Cozine at 2022-09-13 16:35:12.head_ref_deleted
by Alicia Cozine at 2022-09-13 16:35:13.referenced
by Alicia Cozine at 2022-09-13 16:36:30.merged
by Alicia Cozine at 2022-09-13 16:36:30.closed
by Alicia Cozine at 2022-09-13 16:36:30.head_ref_deleted
by Alicia Cozine at 2022-09-13 16:36:31.head_ref_force_pushed
by Francis Kayiwa at 2022-09-13 13:58:01.head_ref_force_pushed
by Francis Kayiwa at 2022-09-13 14:01:44.head_ref_force_pushed
by Francis Kayiwa at 2022-09-13 15:26:17.Way to get out ahead of things, @kayiwa!
I've done a quick audit, and there are a lot of task name:
lines with the word "include" in them, and a lot of READMEs that feature the text "to include contact information", and a lot of config files or templates with the word "include" in them, plus a few variables called "include", but very few bare include
Ansible directives - most already use include_tasks
or include_role
or include_vars
. PR coming for the remaining few.
assigned
by Alicia Cozine at 2022-09-13 21:03:14.mentioned
by Francis Kayiwa at 2022-09-13 21:04:01.subscribed
by Francis Kayiwa at 2022-09-13 21:04:01.This is what I get for not running the tests locally 😞.
referenced
by None at 2022-09-13 16:37:00.merged
by None at 2022-09-13 16:37:00.closed
by None at 2022-09-13 16:37:01.head_ref_deleted
by None at 2022-09-13 16:37:02.convert_to_draft
by Eliot Jordan at 2022-09-13 16:34:06.deployed
by None at 2022-09-13 16:36:53.ready_for_review
by Eliot Jordan at 2022-09-13 16:49:24.referenced
by Eliot Jordan at 2022-09-13 18:38:34.merged
by Eliot Jordan at 2022-09-13 18:38:34.closed
by Eliot Jordan at 2022-09-13 18:38:34.head_ref_deleted
by Eliot Jordan at 2022-09-13 18:38:35.assigned
by Eliot Jordan at 2022-09-13 16:30:47.closed
by Eliot Jordan at 2022-09-13 18:38:35.labeled
by None at 2022-09-13 14:25:15.💯 looks like we're good to go on adding the link to the content area under Request Materials
Adding the breadcrumb seems straightforward.
For the other recommendation, do you mean adding a caption to the image at the top of the collection page? (see screenshot)
Shown here is the "Access & Use" tab, which links to https://findingaids.princeton.edu/repositories/univarchives -- Should the image at the top also link there? It currently is not a link.
For a caption, it might look best right under the title. Maybe wording like "Access this collection at X library"?
I think having the image as a link to access and use makes alot of sense. And the caption works too.
@ccleeton make the image a link to the "access and use" tab? Or a link to the repositories page (e.g. https://findingaids.princeton.edu/repositories/univarchives)?
I think the access and use is more helpful since it includes potential restrictions or if parts are housed off site
Should we see if we can add the "visit us" link to the access and use tab, and then have the image link to that tab, and not add a caption at all?
for the additional breadcrumb in the search results -- should this also link to the "access and use" tab for the collection?
I'd like to see the visit us link added to the tab but I'd like to see the caption added so users don't have to click it if they don't need or want to.
For the breadcrumb i would say yes to link the access and use to be consistent
Okay and you definitely want the caption to link to the Visit Us page? Sorry for all the back and forth; I just want to make sure in that context you're not concerned about the potential restrictions or if parts are housed off site. Thank you!
Good point. I am seeing that the storage note is only on the collection overview page. - This is an example of where there are items at Mudd and Recap - https://findingaids.princeton.edu/catalog/AC154 @faithc what do you think? @tpendragon is it possible to add the storage note to the access page? Then it would all make sense to me.
Another option instead of a caption by the collection title might be to repeat the breadcrumb somewhere on the page. Perhaps above the component title? See screenshot:
Then I guess it would also link to the "access and use" tab.
I love this breadcrumb idea, more than a caption by the photo. Would it all be clickable?
I think it would all be clickable the same way it is in a search result.
So this proposal is:
I'm curious what @sdellis thinks of this proposal.
labeled
by None at 2022-09-13 14:32:23.mentioned
by Christa Cleeton at 2022-09-13 15:03:33.subscribed
by Christa Cleeton at 2022-09-13 15:03:33.mentioned
by Trey Pendragon at 2022-09-13 15:25:40.subscribed
by Trey Pendragon at 2022-09-13 15:25:40.mentioned
by None at 2022-09-13 15:25:40.subscribed
by None at 2022-09-13 15:25:40.mentioned
by Shaun Ellis at 2022-09-13 17:26:14.subscribed
by Shaun Ellis at 2022-09-13 17:26:14.@ccleeton I'm just confirming that you're talking about the "Your Account" login in the main navigation bar, correct? It appears to be linked to that address in all other instances I can see, but I agree that linking to the Aeon login makes much more sense.
mentioned
by Christa Cleeton at 2022-09-13 17:31:43.subscribed
by Christa Cleeton at 2022-09-13 17:31:43.assigned
by None at 2022-09-13 18:09:14.referenced
by None at 2022-09-13 19:11:24.labeled
by None at 2022-09-13 15:05:55.assigned
by Eliot Jordan at 2022-09-13 19:03:12.unassigned
by Eliot Jordan at 2022-09-13 19:10:33.assigned
by None at 2022-09-13 19:15:02.We were advised that the banner could be removed; done in #1124
closed
by None at 2022-09-13 19:17:10.assigned
by Eliot Jordan at 2022-09-13 19:17:24.@hackartisan Already done, merged, and deployed.
deployed
by None at 2022-09-13 16:45:22.head_ref_force_pushed
by Eliot Jordan at 2022-09-13 17:10:12.ready_for_review
by Eliot Jordan at 2022-09-13 18:39:01.labeled
by Eliot Jordan at 2022-09-13 18:48:54.mentioned
by None at 2022-09-13 19:36:00.subscribed
by None at 2022-09-13 19:36:00.referenced
by None at 2022-09-13 19:50:15.merged
by None at 2022-09-13 19:50:15.closed
by None at 2022-09-13 19:50:15.head_ref_deleted
by None at 2022-09-13 19:50:16.referenced
by Trey Pendragon at 2022-09-13 20:31:27.merged
by Trey Pendragon at 2022-09-13 20:31:27.closed
by Trey Pendragon at 2022-09-13 20:31:27.head_ref_deleted
by Trey Pendragon at 2022-09-13 20:31:28.assigned
by None at 2022-09-13 19:06:59.referenced
by None at 2022-09-13 19:17:28.closed
by Trey Pendragon at 2022-09-13 20:33:43.review_requested
by None at 2022-09-13 19:17:58.review_requested
by None at 2022-09-13 19:25:47.referenced
by Trey Pendragon at 2022-09-13 20:33:42.merged
by Trey Pendragon at 2022-09-13 20:33:42.closed
by Trey Pendragon at 2022-09-13 20:33:43.head_ref_deleted
by Trey Pendragon at 2022-09-13 20:33:44.review_requested
by None at 2022-09-13 19:02:35.review_requested
by None at 2022-09-13 19:20:17.referenced
by Eliot Jordan at 2022-09-13 14:12:58.merged
by Eliot Jordan at 2022-09-13 14:12:58.closed
by Eliot Jordan at 2022-09-13 14:12:58.head_ref_deleted
by Eliot Jordan at 2022-09-13 14:13:04.assigned
by Kate Lynch at 2022-09-13 13:31:25.


Welcome to RapidMatter.com - This site is the live prototype for the GitHub project RapidMatter, which is aimed at providing a vendor-agnostic Enterprise-Architecture-Design-as-a-Service for Infrastructure.
This page is currently the place-holder until the Day 1 Prototype goes live.
Additional Resources:
If you are passionate about the subject and want to be involved feel free to reach out to me at<EMAIL_ADDRESS>or just start contributing to GitHub.


{% extends "base.html" %} {% block title %}404 - Page Not Found{% endblock %} {% block content %}
Sorry, we couldn't find the thing you were looking for. Try searching for it.