Track Suggester
Please fill out the information below
Name:
Select campus:
Seattle
Portland
Front-End or Back-End:
Front-End(Client Side)
Back-End(Server Side)
You would like to build:
Internal business software
Dynamic web apps, server-side
Android apps
Interactive web apps
You would like to work for:
Bigger established companies
Fast-paced agencies
Enterprise companies
Start-ups, smaller companies
Submit
Thank you for your info.
Our
1st
suggestion is the:
track.
Our
2nd
suggestion is the:
track.
Our
3rd
suggestion is the:
track.
You can visit our
office at:
.


The Research Symbiont Awards, given annually, recognize exemplars in the practice of data sharing. It is a companion to the Research Parasite Awards.
There are two Research Symbiont Awards:
The process for applying for an award is described below.
Award winners will receive a prize of up to $2,500 to be spent on conference registrations and or professional society membership fees. They will also be virtually recognized at the 2022 Pacific Symposium on Biocomputing (January 3-7, 2022). In addition, winners will receive a very cool stuffed animal.
Wellcome supports science to solve the urgent health challenges facing everyone. We support discovery research into life, health and wellbeing, and we’re taking on three worldwide health challenges: mental health, global heating and infectious diseases.
We're creating paradigm shifts in the fields of research and precision medicine. We want to promote a culture of collaboration, where patients are empowered to understand and use their data, and clinicians and researchers have access to the resources they need to conduct truly rigorous and valuable studies.
Applicable to both the GENERAL SYMBIOSIS AWARD and the EARLY CAREER CLINICAL RESEARCH SYMBIONT AWARD:
Additional criteria applicable only to the EARLY CAREER CLINICAL RESEARCH SYMBIONT AWARD:
Additional selection criteria for the GENERAL SYMBIOSIS AWARD:
By submitting an application you agree that the decisions of the Research Symbiont Award Committee are final, and the Committee is unable to provide feedback on applications that were not selected.
We encourage readers to broadly share this call, and we strongly encourage members of groups that are underrepresented in scientific communities to apply for this award.
Applications for the 2022 Research Symbiont Awards must be received by December 5, 2021 at 5PM HST (Hawaii Standard Time) at<EMAIL_ADDRESS>Applicants can apply for themselves or nominate another person. Applicants should submit a concise letter (around 2 pages in letter or A4 format) describing the symbiotic resource. In particular, the letter should include:
Applicants are also encouraged to attach a PDF of an article that is not authored by the applicant and makes excellent use of the symbiotic resource.
The award winners will be recognized at the Pacific Symposium on Biocomputing each year and listed on the PSB website.
The committee has sole responsibility for determining the recipient of the Symbiont Awards. As discussed in the conflict of interest rules, the committee and its individual members are unable to comment on any unselected nominations.
Chair.
2021 Junior Symbiont
2021 General Symbionts
2020 Junior Symbiont
2020 General Symbiont
2019 Junior Symbiont
2019 General Symbiont
2018 Junior Symbiont
2018 General Symbiont
As Isaac Newton wrote to Robert Hooke in 1675: “if I have seen further, it is by standing on the shoulders of giants.” The Symbiont Awards seek to honor modern giants.
Traditionally, data sharing was challenging and expensive, so research proceeded by sharing completed findings. Our culture in science and medicine has been built on the value of completed stories. However, with the rise of networked computers, sharing complex datasets is increasingly feasible. Once data are shared, anyone can make discoveries from these data. This is good, at least in the short term, for research. Discoveries arrive sooner, and patients benefit more quickly. Discoveries are also more likely to emerge when they are still meaningful, before new discoveries have rendered them less useful. But to avoid harm in the long term, we need to make sure that incentives are aligned to guarantee that generating novel and interesting datasets remains rewarded.
We envision a future in which widespread sharing of research data benefits all. We expect the biggest winners will be those who share and share well, and in doing so, create the most value. However, until that time comes, the Symbiont Awards seek to recognize these individuals and their contributions.
Symbiosis denotes a long-term interaction between two different species. The interaction may be beneficial to both or may impose a cost on a member of the interaction. Data sharing may impose a cost on the individual sharing, or it may provide benefits.
The Symbiont Awards, given annually, recognize exemplars in the practice of data sharing. We expect data sharing to play a key role in the scientific ecosystem. Some of the goals supported by data sharing include:
The Symbiont Awards currently consist of two awards: the first recognizes an outstanding contribution from any research area at any level. The second seeks to recognize the sharing of data relevant to health by an individual at the training stage of their career — ideally a trainee with clinical responsibilities.
In the event that a committee member has a relationship described in rule 7 with one or more nominees, s/he should disclose that relationship to the other committee members and describe the nature of the relationship(s). The other committee members should then decide (without the conflicted committee member) whether the conflict is adequately mitigated by disclosure. In the event that a majority of the other committee members believes the conflict is not adequately mitigated by disclosure, the following procedure should be followed: (1) The conflicted committee member may not participate in the discussion of the conflicted nominee; (2) If the non-conflicted committee members feel a conflicted nominee should be an awardee, then those committee members should send a written description of the conflict and the rationale for their decision to the PSB co-chairs; (3) if a majority of the PSB co-chairs believe the decision has been improperly biased by the conflict, the conflicted nominee cannot be the award winner, and the committee will be tasked with selecting a different awardee.


Pick 5 Dream Jobs and we'll find the most desired skills for them!
Job Url 1
Job Url 2
Job Url 3
Job Url 4
Job Url 5
JOB Titles


Sitting, as it does, on the flat land of the most easterly point of Scotland, Peterhead is generally described as austere. Even so, this is a very useful passage port.
Position 57° 29'44"N, 01° 46'21"W (Harbour entrance)
The harbour is accessible day or night, at any state of tide and in any weather.
The marina is in the SW corner of this large harbour.
Peterhead Harbour © S/Y Suwena


Davidson Fellipe
Articles about Web Performance Optimization
For contributing, open an issue and/or a pull request.


class: center, middle, inverse, title-slide # Learning R ## It doesn’t have to be scary! ### Elizabeth Oneita Davis ### San Diego Zoo Global ### 2020-06-30 ---  --- # Welcome #### This mini-course will be structured around four themes. -- 1) Establishing good workflow habits -- 2) Learning how to R -- 3) Performing data analysis -- 4) Graphing --- class: middle # Establishing good workflow habits --- # Every time you are working in R, it should be in a *project* -- Projects are R's way of helping you keep all of your files in one place. It may seem like an unnecessary step, but trust me that it will make your life so much easier to get in the habit of working in R projects. --- class: center, middle ### Go ahead and open R studio. In the top right you should see a button. For me, my button looks like this: ![r project](images/rproject.png) -- ### When you click on that button, it comes up with a drop down menu. One of the options is "New Project".  Make sure you choose "Project", and then choose which directory you'll work out of. For now, go ahead and make it a folder on your desktop, named ###".rainbow[My First Gorgeous R Project]" (or similar) --- class: center, middle ## Once you are in your R project, you will click the little icon in the top left that looks like this: ![r script](images/rscript.png) --- class: center, middle ## You should see that the very first option that comes up is "R Script". Click on that, and you'll see a blank document (your R script) enter into your top left pane. --- # What is an R script? -- ### R Scripts are where you keep all of your important code. They are also where you explain your workings and the code to yourself so that you can remember to do the same thing again later. --- class: center, middle ### This is VERY important because you may set down a project and do other things for a few days. If that happens you may forget what you've done and end up doing things over again. --- class: center, middle ## This is one of the central tenets of modern R: -- ## .handsome[Make your life as easy as possible!] --- # To make your life as easy as possible, you should generally have R Scripts that look like this: -- ```r #12 March 2020: This R Script is an example of what a good R script looks like ## 1+1 #I can't remember what 1+1 is- this way, R will tell me! ``` ``` ## [1] 2 ``` --- ###Another example ![R Script example](images/r-script-example.png) --- class: center, middle ## The conventional wisdom for R Scripts is that you should comment them out with hashes "as though you may be hit on the head at any moment". --- #How to use R studio -- ### R Studio has a lot of in-built tools that help with effective coding. --
 ### For example, R will automatically close parantheses and quotation marks for you; however, you need to be careful that this doesn't cause mistakes. --
 ### R Studio will also show you when you make a mistake in your R Script, through red lines underlining code and a red "X" --- ![R Script example of errors](images/r-script-errors.png) -- You can see here where R is telling you that your code is faulty. -- You can also see that R Studio will color code differently according to its attribute: a different color for non-code "objects", for comments, and for "significant" commands like telling R which library to use. --- # Error Codes  --- class: center, middle ## "Start associating error messages with joy because it probably means you are about to learn something!" --- # What do to do when you get an error code -- Read the code. This seems self-explanatory but it is where you can gain some understanding of what went wrong. -- ### As an example, what happens if you type "b" and press enter? --
 ### *You should see "Error: object 'b' not found"* --- # This message has **three** parts -- #### 1) It tells us that it is an error -- #### 2) The location of the error, which is object "b" -- #### 3) The problem this mistake caused: there is no object b, because I haven't created it! --- # Sometimes errors are difficult to understand -- ### If you can't understand the error message immediately, then you have several options: -- 1) Check out the help file for the function/command you are using, if applicable -- 2) Google it! -- 3) Ask for help from Stack Overflow (bearing in mind that it can be challenging) or from R-Ladies (if you are a woman) --- class: center, middle ## Checking out the help file -- #### The help file can be challenging to understand, so Googling may be the easiest option for you. However, it is important to be familiar with R helpfiles. --- ![R help first bit](images/r-help-first-bit.png) --- ![R help second bit](images/r-help-second-bit.png) --- # Moving on... What are packages? -- **Packages** are extra functions or groups of functions that other people have created to help make everyone's life easier. They can be downloaded from CRAN (the R repository) or from GitHub. -- This is very easy to do.  Sometimes packages live on GitHub for somewhat mysterious reasons that I won't get into here. --- Let's install a package from GitHub. Go ahead and run the following code: ```r #I have hashed it out so that I don't install it #devtools::install_github("hadley/emo", force = "true") ``` -- You now have the "emoji" package downloaded!  We will read this into R using the following command: ```r Hanoi<-read.csv("survival.csv") ``` -- When you read this into R, you should see the following: --- ![survival dataset](images/survival-dataset.png) --- ###And over in your top right pane, you will see "Hanoi" listed. It tells you how many observations there are (your *n*) and how many variables you have. ![hanoi title](images/hanoi-title.png) --- As you can see, we use the arrow to assign our dataset to a name. Therefore,when you type "Hanoi" it will show you the dataset that you have loaded into R. -- However, R Studio makes things very simple by cutting out this extra step. If you look at R Studio, you’ll note that in the top right corner there’s a box that has the tab *“Environment”*. You’ll see that there’s a button that says *“Import dataset”*. You can use this button to quickly import any dataset you desire. Try it now with the "survival" dataset you just imported into R as “Hanoi”. --- class: center, inverse background-image: url("images/peaceful-fields.png") --- # A quick, basic lesson -- Before we go any further, I must stress that R is **very, very particular**. If a command goes wrong, it is 99%1 probable that you did not **write the name** of the dataset/vector/variable properly, OR that **you did not put a parentheses or a comma**, or some other form of punctuation where there should be one. The beauty of R studio is that it’s very good at putting parentheses in the right places, but errors still do occur. .footnote[[1] Accurate math] --- R is quite simply, an entirely new language. That being said, it operates in an intuitive manner. For instance, try the command we had previously in our R Script: ```r 1+1 ``` -- If you press enter, you'll see that it executes the code and gives you the answer, which is ``` ## [1] 2 ``` -- Of course, we all know what 1 + 1 is (but imagine if we didn’t!). --- # Assigning equations to vectors Now, what if we wanted to assign the value of the equation **1+1** to an object in R? .pull-left[ ```r a <- 1+1 a ``` ] -- .pull-right[ ``` ## [1] 2 ``` ] -- You can see that the value of this equation is stored in the object of *a*. Now, perhaps you can begin to see what kinds of things you can do with this object, e.g. --- .pull-left[ ```r a + 56 ``` ] -- .pull-right[ ``` ## [1] 58 ``` ] --- class: center, middle # R is simple enough to understand if you think of it as small **building blocks**, such as `a <- 1+1`, being put together to comprise a whole (the action you are trying to accomplish). -- ### This may not make sense right now, but (hopefully!) will by the end of this course. --- # Using R for data analysis --
 ## "Statistics [and data analysis] is a problem-solving and decision-making process that is fundamental to scientific inquiry and essential for making sound decisions." --- class: center, middle # Requires **critical thinking** (and practice!) --- # Taking a look at our dataset -- Before starting analysis on a dataset, you need to familiarize yourself with the data. This can be done in R very easily. One command that's useful is the following, on our "Hanoi" dataset: -- .pull-left[ ```r head(Hanoi) ``` ] -- .pull-right[ ``` ## X dose surv ## 1 1 117.5 44.00 ## 2 2 117.5 55.00 ## 3 3 235.0 16.00 ## 4 4 235.0 13.00 ## 5 5 470.0 4.00 ## 6 6 470.0 1.96 ``` ] --- As you can see, this shows you the top of the dataset (the "head", if you will), which is helpful if one wants to get a quick snapshot of the dataset. --- The next command is: -- ```r names(Hanoi) ``` ``` ## [1] "X" "dose" "surv" ``` -- Our variables here are "dose" and "survival". To give you some context, this dataset is about the survival of rats after being given radiation doses. "surv" is the survival rate of the batches expressed as a percentage, while "dose" is the dose of radiation administered (rads). -- Now, it doesn't seem to make sense for our dataset to be called "Hanoi". How do you think we would go about renaming it? --- ```r survival <- Hanoi ``` Now, you should see in your top right pane, under "Environment", the dataset `survival`, which is exactly the same as the `Hanoi` dataset. --- # Summary statistics in R -- This is very easy to do in R. Simply type the following: -- ```r summary(survival) ``` -- ``` ## X dose surv ## Min. : 1.00 Min. : 117.5 Min. : 0.0060 ## 1st Qu.: 4.25 1st Qu.: 293.8 1st Qu.: 0.1625 ## Median : 7.50 Median : 587.5 Median : 1.3300 ## Mean : 7.50 Mean : 654.6 Mean :10.1250 ## 3rd Qu.:10.75 3rd Qu.: 940.0 3rd Qu.:11.2800 ## Max. :14.00 Max. :1410.0 Max. :55.0000 ``` --- As you can see, this command gives you a nice little snapshot of the data, with means and medians. You can also find the mean for each specific variable by simply typing the following: .pull-left[ ```r mean(survival$dose) ``` ] -- .pull-right[ ``` ## [1] 654.6429 ``` ] --- ##As you see, this mean is the same as the mean we see in the summary statistics we did with `summary(survival)`. --- ## You probably noticed the use of the "$" operator. This is your way of telling R where to "look". --
 ###When you type **mean(survival$dose)** you are telling R "I want the mean of the variable *dose* in the *survival* dataset." --
 Now on your own, try finding the **median** of "surv" --- You should have typed in the following, and gotten the following result: -- ```r median(survival$surv) ``` -- ``` ## [1] 1.33 ``` ---  --- # How do you make sense of your data? -- In earlier versions of this lecture, I would tell students to investigate **three key assumptions** (namely, normality, homogeneity of variances, and whether samples were independent). --- Nowadays, I don't think those are as important. You absolutely should understand your data, but for social scientists our data is 99%1 of the time going to be non-normal, and often with wide variances. And as social scientists, we should already know whether our data is dependent or independent. -- .footnote[ [1] Definitely not accurate math. ] --- class: center, middle ### That being said, it is still important to know what your data looks like --- We can easily visualize our data with a histogram, using the `hist` command: -- ```r hist(survival$surv) ``` ![](jun-learn-R-prez_files/figure-html/11-1.png) --- As you can see, the data really aren’t normally distributed. In fact, the data are right-skewed (i.e. a long right tail). -- This tells us already that there is *something* going on with our data, so we should expect to see some kind of effect, depending on what we are investigating. --- ### In the old days, we used null hypothesis significance tests (NHST) -- *These are now rightly criticized for obscuring the "true" effect we can see, and/or being a "lazy" way to interrogate data. Also, there are plenty of instances where it is simply unneccesary to perform NHSTs.* -- e.g.... --- ![kenya-conf](images/kenya-conf.png) --- # Confidence intervals -- #### These are really what you should rely on the most. A confidence interval is basically just the mean/prevalence estimate/proportion (**measure we're interested in**), and the **margin of error (ME)** multiplied by **1.96** (for 95% confidence intervals, the standard in social science). -- ### There are plenty of ways to perform confidence intervals in R, although they all are found in packages. --- ## For example, let's say that we want to find the confidence interval for mean survival rate. -- We will install the package `gmodels`, and perform the following code: --- .small[ ```r require(gmodels) survival$surv <- as.numeric(survival$surv) ci(survival$surv) ``` ``` ## Warning in ci.numeric(survival$surv): No class or unkown class. Using default ## calcuation. ``` ] -- .small[ ``` ## Warning in ci.numeric(survival$surv): No class or unkown class. Using default ## calcuation. ``` ``` ## Estimate CI lower CI upper Std. Error ## 10.12500000 -0.01426651 20.26426651 4.69330384 ``` ] --- ### We can double check this against the mean of survival, which if you'll remember is found by running: -- ```r mean(survival$surv) ``` ``` ## [1] 10.125 ``` -- What this tells us is that our confidence interval of the mean is **(-0.01, 10.1, 20.26)**: indicating that there is a huge amount of variance within this sample! -- Although of course we already knew that, after seeing how skewed our distrubution was. --- ## As always, having more data points will decrease your level of error. --- ![sample-depiction](images/sample-depiction.png) --- class: center, middle ### All NHST tests are a form of linear regression. Linear regression, in turn, can encompass linear models and generalized linear models (GLMs). In social science, we will often be working with GLMs --- # GLMS -- ### Often seen as scary and traumatic... -- ![fainting](images/fainting.gif) --- ## But in reality, they are pretty simple and even easy- especially with the power of R! -- ![dolphin](images/dolphin.gif) --- #GLMs follow the basic formula of: -- ## y ~ x -- ### Where **y** is your dependent variable: e.g. *use of bear bile*, *consumption of giraffe meat*, *whether they've poached in the last year*, etc; and **x** is the independent variables, such as *gender*, *age*, *education*, etc --- ### You also need to know what your distribution looks like, so that you can choose which GLM *family* is appropriate: -- **binomial**: if you have a 0,1 dependent variable. For example, "yes" or "no" to using bear bile in the last year -- **poisson**: count data, also sometimes called frequency. Used if you're exploring the number of times individuals in your sample used bear bile last year -- **gaussian**: a "normal" distribution. If your dependent variable is something like height, you would use this family --- ### GLM structure With GLMs, you really need to think through what you're exploring. I have made many mistakes with this, and it has always come down to overcomplicating the model and/or not starting at the "top". It's best is to start with ALL of the variables you want to interrogate, something like: -- ### `bearbile ~ gender + age + province + education + religion` -- And working your way down based on what is significant. --- ### For example, maybe in your "master model" only gender and education are significant. -- You should then create a *reduced model*: -- ### `bearbile ~ gender + education` -- Which will give you more precise estimates of significance. --- # Interpreting R's GLM output -- Let's say our GLM is `mylogit <- glm(admit ~ gre + gpa + rank, data = mydata)`, where `admit` is whether a student got admitted to university (0,1), `gre` is their GRE score, `gpa` is of course their undergrad GPA, and `rank` is the relative prestige of the university. -- .pull-left[ What is the family of this GLM? ] -- .pull-right[ Correct! It is `binomial` ] --- ![output](images/linear-model.png) --- ## Running your own GLM -- Go ahead and explore the `mtcars` package in R. What are the variables? What do the data distributions look like? Note: "vs" means the probability of an engine being a certain type, "wt" is weight, and "disp" is "displacement". -- Now create a GLM with the data. What will you be exploring? (You can create different versions if you like). -- For example, you could have your model be `glm1 <- glm(vs ~ wt + disp, mtcars, family = binomial)`. --- ###If that was your model, you would then get the following output, when you ran `summary`: -- .tiny[ ```r glm1 <- glm(vs ~ wt + disp, mtcars, family = binomial) #making the model summary(glm1) ``` ``` ## ## Call: ## glm(formula = vs ~ wt + disp, family = binomial, data = mtcars) ## ## Deviance Residuals: ## Min 1Q Median 3Q Max ## -1.67506 -0.28444 -0.08401 0.57281 2.08234 ## ## Coefficients: ## Estimate Std. Error z value Pr(>|z|) ## (Intercept) 1.60859 2.43903 0.660 0.510 ## wt 1.62635 1.49068 1.091 0.275 ## disp -0.03443 0.01536 -2.241 0.025 * ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## (Dispersion parameter for binomial family taken to be 1) ## ## Null deviance: 43.86 on 31 degrees of freedom ## Residual deviance: 21.40 on 29 degrees of freedom ## AIC: 27.4 ## ## Number of Fisher Scoring iterations: 6 ``` ] --- ### Hopefully you felt confident in interpreting that output! From this, we see that displacement predicts what type of engine a car will have, while weight does not. Specifically, higher displacement means that the probability of a car having a "v-shaped" engine is reduced. --- ## Interaction terms -- Another aspect of GLMs is "interaction terms". This is denoted by .larger[*] e.g. `gender ~ height * weight`, where you are asking R to investigate the relationship of height and weight and how it predicts gender. --- ### This is yet another example in R where the onus is on the operator ( i.e. you 👈 ) to have a good grasp of your data, as well as your end goal. What are you trying to prove? What exactly are you trying to understand? -- One of the many wonderful aspects of R is that it really facilitates the kind of exploration that is necessary for understanding data and wriggling your way 🐛 towards enlightenment. It's easy to try different things and make different models- so you may as well do exactly that! --- class: center, middle ## There is so much that can be done in R. Don't be afraid of exploring, getting things wrong, and googling. -- ### Google will be your best friend when learning R. I still have to Google things ALL the time! --- Also, there are tons of free resources for learning R! One great example is: https://learningstatisticswithr.com/book/introR.html. --

 Cleaning data is really important and something I STILL do in Excel... when it can be done so much more easily in R! This is a great resource for learning how to clean data, step by step: https://rladiessydney.org/courses/ryouwithme/ --- class: center, middle # Great job! You now know the basics of R! --- class: center, middle ## Unfortunately, we aren't quite done. --- ##Visualization is a really important component of analysis and how you communicate your data to the world. --
 ### The easiest way to do this is by using `ggplot2`, Hadley Wickham's amazing "grammar of graphics". --- ![hadley](images/hadley.jpeg) --- class: center,middle .small[How cute is Hadley? He's also a super nice guy and has been instrumental in making R the inclusive environment it is today 🎉] --- ### Some important concepts: 1) "Data visualization is **part art and part science**." - Claus Wilke -- 2) Making a good visualization requires lots of practice and "material osmosis". Explore what other people are doing, get their code, and tinker! 3) ^ Tied with the above, have fun with it! Make a graph showing all the best Friends episodes or one-liners (as *several* people have done). --- ## Types of graphs -- 1) Scatterplots/line charts -> -- .small[ *Generally, this is when you have two continuous/numeric variables that you want to plot against one another, to view a relationship. These are not as common in social science.* ] -- 2) Barplots -> -- .small[ *Used for visualizing frequencies and/or proportions. Very common, and not always good- but they CAN be amazing!* ] -- 3) Boxplots -> -- .small[ *Used to show distribution spread, and indicating whether there are outliers. Also useful for visualizing confidence intervals.* ] --- class: center, middle ![ugly pie chart](images/ugly-pie.gif) -- ### NEVER make one of these abominations. --- ## 🍷 --

For #tidytuesday this week, I explored the sweet deal metric (points:price ratio) across all wine types by country, for the 15 countries with the most observations in the dataset. Yeah Chilean wine.

Code: https://t.co/WvPS1UtFVE pic.twitter.com/NzMv4jl7Fb
— Allison Horst (@allison_horst) May 29, 2019
  --- ## Install and/or load the following packages: -- ```r library(tidyverse) # All the fun tidy functions! library(paletteer) ``` -- Now load the data: google "Allison Horst github tidy_tuesday_5_28_19", and a link to the data will come up -- Or copy this long freaking thing out: ```r wine_ratings <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-05-28/winemag-data-130k-v2.csv") ``` ``` ## Warning: Missing column names filled in: 'X1' [1] ``` ``` ## Parsed with column specification: ## cols( ## X1 = col_double(), ## country = col_character(), ## description = col_character(), ## designation = col_character(), ## points = col_double(), ## price = col_double(), ## province = col_character(), ## region_1 = col_character(), ## region_2 = col_character(), ## taster_name = col_character(), ## taster_twitter_handle = col_character(), ## title = col_character(), ## variety = col_character(), ## winery = col_character() ## ) ``` --- ### Follow along with Allison's data manipulation in her github file -- ### You should end up with this plot! ![wine plot](images/wine-plot.jpeg) --- class: center, middle ### That probably felt pretty intense, with lots of data manipulation and strange parameters while using ggplot. --
 ###But this is a "new" concept gaining traction among R teachers- maybe we should "let our students eat cake" rather than learning the boring, basic recipes first! --- class: center, middle ![Alison wisdom](images/alison-wisdom.png) .xsmall[*Alison Hill*, R Guru] -- .xsmall[Yeah, it's about R markdown, but it still applies!] --- class: center, middle ### So, I've shown you a hint of what you can do with ggplot2. Like any good ggplotter, it's time for you to slice and dice code and create a Frankenstein monster of your own 🧟3 -- .footnote[ [3] Yes, it's a zombie. Close enough. ] --- class: center, middle ### As you've built your graphs, we've already discussed bits and pieces of the ggplot syntax. However, I'll go through it again/in a little 🤏 more detail here. --- ##`ggplot2` syntax -- You start with your "foundational" code, which is where you tell ggplot: -- - the dataset you're using -- - what variable goes on the x axis -- - what variable goes on the y axis -- - what plot you want ggplot to generate --- class: center, middle ### Up until yesterday, I was going to have you guys explore the `iris` dataset... until I saw on Twitter that this benign, kind of boring dataset was created by a total racist. -- ![iris sucks](images/iris-gross.png) --- ### So we'll use something that isn't racist, and has the added benefit of being about penguins ❤🐧. -- Load the following code: ```r devtools::install_github("allisonhorst/palmerpenguins") ``` ``` ## Using github PAT from envvar GITHUB_PAT ``` ``` ## Downloading GitHub repo allisonhorst/palmerpenguins@master ``` ``` ## checking for file ‘/private/var/folders/lw/rzb9nnl16xq73y25y8v73zfw0000gn/T/RtmpwktobE/remotescfc46620b41c/allisonhorst-palmerpenguins-f13c212/DESCRIPTION’ ... ✓ checking for file ‘/private/var/folders/lw/rzb9nnl16xq73y25y8v73zfw0000gn/T/RtmpwktobE/remotescfc46620b41c/allisonhorst-palmerpenguins-f13c212/DESCRIPTION’ ## ─ preparing ‘palmerpenguins’: ## checking DESCRIPTION meta-information ... ✓ checking DESCRIPTION meta-information ## ─ checking for LF line-endings in source and make files and shell scripts ## ─ checking for empty or unneeded directories ## ─ looking to see if a ‘data/datalist’ file should be added ## ─ building ‘palmerpenguins_0.1.0.tar.gz’ ## ## ``` ```r require(palmerpenguins) ``` ``` ## Loading required package: palmerpenguins ``` --- ### Let's make a plot! -- First, go ahead and explore the data (remember, to load the data from a package you will type `data("penguins")`). Use `head`, `str`, and whatever else you want that will help you understand what's going on in this dataset. --- ```r data("penguins") require(ggplot2) ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) + geom_point(aes(color = species, shape = species)) ``` --- ![](jun-learn-R-prez_files/figure-html/ggplot1-1.png) --- class: center, middle ### As you saw in the wine price graph, you can spring off this base and add in beautiful color scales, custom themes (or lovely themes people have already created), change your font size, etc. --
 ### This is done by simply adding to your foundational base with "+" and the parameter you want to manipulate. --- ### For example, let's say you want to make the text bigger on your little graph above. -- Here is what you have done: ```r g1 <- ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) + geom_point(aes(color = species, shape = species)) ``` -- Here is what you now will add: -- ```r ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) + geom_point(aes(color = species, shape = species)) + * theme(text = element_text(size=15)) + labs(caption = "Data by Allison Horst") ``` --- class: center, middle ## Easy! -- ### Building ggplots is an *iterative* process, where you build and tweak according to your needs. --- #### Let's move into practicing on your own. You can either stick with the penguins, or explore a dataset R already has, such as the `mpg` dataset. -- e.g. ```r data(mpg) ``` -- Remember what we did earlier. How would you explore this dataset? --

 .xsmall[ Correct! `head`, `summary`, and `str` are all good options] --- class:center, middle ### Now go ahead and think through how you would visualize aspects of this dataset, and what you're interested in. Does it make sense to do a scatterplot? Would a bar chart be useful? --
 ### Use the code we used for the wine price graph, but also look at google [hint: lots of people have made graphs of the mpg dataset] --- class: center, middle ### When you think you're done and you've made a pretty graph, show your work! --- background-image: url("images/finalslide.jpg") background-position: center background-size: contain


QXLDump is a small utility to dump out, in hex, the contents of a Sinclair QL formatted QXL.WIN file - in a meaningful context, not just a pile of hex numbers.
The QXL.WIN format and many details of how it works can be found at http://qdosmsq.dunbar-it.co.uk/doku.php?id=qdosmsq:fs:qlwa.
The utility was developed in the Code-Blocks IDE using Embarcadero C++ version 10.1 (32 bit). Both of these are free. If you need to build the source then feel free to make changes, just remember to pass them back to me for others to use too. Thanks.
If you have a different C++ compiler, then the following might work:
cd SourceCode\QXLDump
CPP src\*.cpp -I include -o bin\release\QXLDump.exe
Where CPP
is the command line version of your compiler.
QXLDump is a utility I needed in order to assist me check changes to qxl.win files in a forthcoming mega utility! (I've been told a million times about exaggerating!) - I need to see changes within a qxl.win file as I do different things to it in an abusive manner!
It is offered here as a potentially useful tool.
QXLDump will never open your qxl.win file in write mode. Only read. so your data are always safe with this utility.
QXLDump always outputs its results to 'stdout' - aka the screen. This can be redirected to a file if desired. Output is in HTML format, and cannot be changed.
QXLDump c:\qxl.win --header >qxl.win.html
The file qxl.win.html
can now be opened in your favourite browser for inspection. Alternatively, you can use Internet Explorer!
Error messages are written to stderr
and these too can be redirected to a separate file in the normal manner. Error output is always in plain text format.
QXLDump c:\qxl.win --header >qxl.win.html 2>qxl.win.errors.txt
As above, the output can be viewed in your browser. Errors, in file qxl.win.errors.txt
can be reviewed with any text editor.
If a qxl.win filename is passed, with no other parameters or options, then the equivalent of --root
and --header
is assumed. See below for details on these two options.
The application help messages are displayed, and the application then exits. No processing is done.
QXLDump --help
The command will display the following:
QXLDump: version 0.01
USAGE:
QXLDump [options] QXLWIN_file
'QXLWIN_file' is the file name of the qxl.win file to be dumped.
OPTIONS:
'--help' Displays this help, and exits.
'--header' Displays the file header.
'--map' Displays the file map.
'--root' Displays the root directory.
'--block=n' Displays a single data block.
'--free' Displays the file's free space.
'--all' Sets '--header', '--map', '--root' and '--free'.
'--dir=n --size=s' Displays the directory with FileId 'n', and file size of 's' bytes. Both are required.
'--file=n' Displays the file with FileId 'n'.
'--verbose' Displays lots more information, hex dumps etc. Best avoided!
OUTPUT:
Output is written to 'stdout' and so, can be easily redirected to a file.
Errors are written to 'stderr' and won't interfere with the data on 'stdout'.
The qxl.win file header is displayed. This is always the first 64 bytes of the file.
QXLDump c:\qxl.win --header
The list of blocks making up the entire qxl.win map area are dumped out. The map is used to determine where on disc data files and directories are located. The address of a block on disc is computed as the blockId * sectors per block * 512
.
QXLDump c:\qxl.win --map
The root directory is dumped out in readable format. Only those entries which point to valid and existing (not deleted) files and other directories are listed. Deleted entries are not shown.
If --verbose
is specified, each block in the root directory is dumped out in hex and a list of all the blocks used by the root directory, in the map, are displayed.
QXLDump c:\qxl.win --root
or
QXLDump c:\qxl.win --root --verbose
A single block is dumped out in hex. The block number must be specified on the command line in decimal. --verbose
has no effect here.
QXLDump c:\qxl.win --block=1234
The free space list is very similar to the map in that it dumps out the map blocks making up the free space chain. --verbose
has no effect here.
QXLDump c:\qxl.win --free
A dump of the required directory blocks is carried out for the passed directory. The directory required must be specified by it's block number, not a name. --verbose
will dump out the directory blocks in hex, if specified.
The directory contents are displayed in a readable format.
The size of the directory must be supplied. This is to stop the utility trying to read past the logical EOF and into the uncharted and shark infested waters of random garbage which can cause no end of trouble to an innocent dump utility! (Ask me how I know!)
You obtain the directory id number and size from a listing of its parent directory, which could be the root.
QXLDump c:\qxl.win --directory=61 --size=1024
or
QXLDump c:\qxl.win --directory=61 --size=1024 --verbose
A dump of the required file's blocks is carried out for the passed fine. The file required must be specified by it's block number, not a name. --verbose
will dump out the file's data blocks in hex, if specified.
You obtain the file id number from a listing of its parent directory, which could be the root.
QXLDump c:\qxl.win --file=27
Using this option turns on --header
, --map
, --root
and --free
. Using --verbose
will have the effect described for each individual option, as appropriate.
This option modifies the output of the others. Normally it will cause a dump of the block numbers, from the map, that make up a directory or file's structure on disc. In addition, it will cause a hex dump of the blocks making up a file or directory, in addition to whatever the normal option outputs.


Brian Doupnik
President
Officers
Brian Doupnik
President
Julia LaFond
Vice President
Joseph Krueger
Speaker Head
Josh Guzman
Social Head
Kaitlin Colby
Service Head
Summer Brown
Outreach Head
Lydia Berger
WSG Chair
Montgomery Flores
Co-MSG Chair
Lillian Turner
Social Media Head
Kevin Chen
Transportation Chair
Preston Glenn
Co-MSG Chair
Ike Ekwueme
Advertising Chair
Deacon John O'Leary
Chaplain


{% extends "layout.html" %} {% block body %}
For reports with multiple metrics, set defaults for common parameters here. Leave a field blank to use the metric's defaults instead.
| Name | Project | |
|---|---|---|
| 123.45 | ||
| Sum | 123.45 | |
| Average | 123.45 | |
| Standard Deviation | 123.45 | |
| You should select some type of output for this metric. Check the section above |


I am a rising Senior studying Software Engineering at Iowa State University. I'll be graduating in December 2021. Recently, I gained extensive experience building REST APIs and microservices in Java and Kotlin. Currently, I am finishing up my last couple of semesters at Iowa State and will be working for Capital One in the Summer of 2021.
Predicted JIRA issues time spent with 8% error using Python’s Scikit-Learn, XGBoost, and Pandas libraries
Created a web app using Python’s Flask framework and Google Cloud Platform’s App Engine
Designed Google Assistant Action that interfaces with Flask app to improve usability and reduce lead time
Developed automated scripts to decrease time spent on routine server maintenance and software upgrades.
Delivered efficient tech and network support for faculty and administration
Managed university hardware storage and replaced old hardware as needed
Led 2 11-day Canadian wilderness whitewater canoe trips with 15-year-old campers as a guide and mentor
Worked with children ages 8-17 (responsible for cabin of 15-year-olds)
Organized and taught camp activities with large groups of campers
Recognized camper behavioral issues and responded effectively to help support growth and maturity
GPA: 3.67
Relevant Coursework: Data Structures, Database Management, Object-oriented Programming, Discrete Math, Linear Algebra, Differential Equations
Scholarships: Award for Competitive Excellence, NICE Award, Ross White Engineering Scholarship
Participating in study abroad exchange program in the Computer Science department
Courses: Algorithms, Advanced Computer Architecture, Mandarin I, Fundamentals of Management
80-hour course
Classroom training and experiential scenarios; learned to care for patients in backcountry when access to medical help is not readily available
Spring 2020
Description: iOS app to help track daily nutrition. Scan a Nutrition Facts label with your phone's camera and the app will scan the label and save the nutrition information. Then just imput how many servings you had and the totals will be added to your day.
Summer 2019-Present
Description: I've always wanted to be able to queue up music on Spotify using my Amazon Alexa. But, that functionality doesn't come built-in. So this app attempts to create a custom queue to use with Alexa. It's a bit messy and unfinished currently, but it does work in a browser. Unfortunately, because of all the security and data privacy requirements needed by Amazon, account linking with Alexa is not working yet. Here's a link to the project hosted on Google Cloud.
Summer 2019
Description: This tool helps manage JIRA tickets within the company and track the time spent on each issue.
The model was built by first clustering all of the training data into 5-7 clusters. A random forest regression algorithm is run on each cluster to generate a model for that cluster. These models used together create the model for the whole dataset.
When a new issue comes in and is processed first the program determines which cluster the new issue fits in. Then the model for the chosen cluster is used to predict time spent on the new issue.
Summer-Fall 2019
Description: Python program using machine learning to "teach" the computer to play tic-tac-toe. The program plays lots of games against an opponent that plays randomly to build up a dataset. When the program wins, it gets rewarded, and when it loses, it gets punished. Over time it "learns" which moves result in a win and which do not.
Spring 2019
Description: The game board is built out of ASCII characters in the terminal. The main character is the ‘@’ symbol representing the adventurer. The player moves the adventurer around the rooms and corridors of the dungeon picking up items and slaying monsters. Items can be equipped to boost the adventurer’s stats to make slaying monsters easier. The game ends when either every monster in the dungeon has been slain or the adventurer’s health reaches 0. If the player wants to continue the game they just have to move to a stairs tile and take the stairs to a new dungeon with new items and monsters.
This game was made over the course of the 2019 Spring semester in Comp Sci 327. It began as a C project which transitioned to a C++ project as the semester went on.
Enter your email to subscribe to updates. Make sure to check your spam and then whitelist<EMAIL_ADDRESS>This post is annoying late, so I guess let’s just pretend it’s still the beginning of October. Let it be known, this post is terribly long and possibly unreadable. But let's get right into it.
In early September, I knew nearly nothing about Myanmar. My friends and I wanted to go somewhere a bit more adventurous than Vietnam, Bali or Bangkok where the majority of the other exchange students headed. We thought about Chiang Mai in Thailand or maybe Luang Prabang in Laos but really couldn’t make up our minds. When we first started to talk about Myanmar I honestly didn’t know if we were allowed to go there. Over the years I had gotten the impression that it was a dangerous place that should probably be avoided. Well, we obviously ended up going anyway and I’m so glad we chose Myanmar. I was absolutely blown away by the kindness of the Myanmar people, the other travelers we met along the way and of course all the sights we saw. Now I’ll try to convince you to go there and show off some pictures along the way.
First, there is a lot of contention between what the country is called. In 1989 the country’s military government changed the name to Myanmar. Not all countries, including the US, acknowledge this name change and continue to use Burma. Now that I’ve spent some time in the country here’s the inside scoop.
When talking about the country or it’s people Myanmar is used almost exclusively. They call themselves ‘Myanmar people’ and they call their language ‘Myanmar’. Burma is used to describe ethnic Burmans within the country. For example, we had a tour guide who was ethnically Burman and identified with the Burman people. But, not everyone in Myanmar is Burman. It’s a bit of a touchy topic in the country but an important piece of their history.
The people in Myanmar are absolutely incredible. They are kind, generous, and caring especially when it comes to tourists. Lots of tourists visiting Southeast Asia skip Myanmar so they genuinely love to see tourists visiting their home. However, this doesn’t mean there aren’t exceptions. As tourism to the country increases, the usual problems come with it. I had a predatory taxi scam me out of a couple bucks, but if you know what you’re doing it’s easy enough to avoid. In general, the people are extremely friendly.
Headless Buddha in a temple ruined by earthquakes. Featuring strange looking melted candles.
As I walked around Yangon the first day, people came up to me asking where I was from and where I was visiting in the country. It was a little creepy at first to be honest especially because I was alone, and they wanted to know everything about my travels in the country. The next day, I met 2 girls who had been working in the Peace Corps there for a year and a half and they assured me that the people are just ridiculously friendly and interested about tourists.
The Shwedagon Pagoda in Yangon is awe-inspiring
For the first 36 hours or the trip I was alone because my friends got out of class a day ahead of me and went to Bangkok for 2 days. The first night I had dinner alone at one of the most famous food streets in Yangon. While I ate, this Japanese woman kept looking at me for some reason.  Only one dude at the table spoke enough English for me to have a conversation with so he acted as a translator for me to talk to everyone else. It was truly the strangest and most amazing thing that’s ever happened to me. We had a ton of fun and they told me about a million times that I have to come visit them in Okinawa, so I guess I’ll have to go…
Eating crickets with my new Japanese friends
Anyway, when travelling throughout South East Asia, always stay in hostels. It’s about a million times more fun than staying in a hotel and cheap. The people you meet in hostels are incredible. In the first hostel I stayed at I met 3 Australian girls who had almost the same itinerary as us, so we chilled with them for a large part of the trip. I met people who had been travelling for 6 months to a year and still had no end in sight. I even got some good Vietnam travel tips from a Dutch guy that you’ll see in an upcoming blog post if I ever finish this one. Yikes.
After 2 days in Yangon we took a night bus to Bagan. Night buses are actually super comfy and chill. Just remember to always book the VIP bus, it’s still pretty cheap and much more comfortable than non-VIP.
Sunrise in Bagan
We got to Bagan early in the morning and took a taxi into town. Bagan is essentially the Angkor Wat of Myanmar but instead of one big temple, there’s 2,000.
Scooter squad parked outside a temple in Bagan
The Bagan group
Interlude: Sorry this blog post is so long and annoying. It’s pretty disorganized but I have so many things to say about the trip it’s hard to fit it all in while also making sense.
Bagan was amazing but we were headed towards Mandalay. We originally intended to take a night train to Mandalay, but it was canceled because of a religious event so we booked a bus to Mandalay. Disclaimer: this bus was not VIP. I’m pretty sure we were the only foreigners on the bus and only one guy spoke any English. It was packed and sweaty with people getting on an off the whole way. The guy driving drove like there was something chasing us the entire night. It was a wild ride, but you have to ride a bus like that once, right?
We only had about 20 hours in Mandalay, so we headed out of the hostel fairly early. We spent the day browsing some markets, impulsively buying jade figurines, checking out the local temples, and walking the oldest and longest teakwood bridge in the world, the U Bein Bridge.
Sunset from the U Bein Bridge
After the bridge, while we we’re trying to get a ride back to our hostel, a monk approached us. He introduced himself and wanted to take us to a nearby temple to show us around. We naively followed and he toured us around the temple telling us about the history of the temple and about Buddhism. After a while he brought us to a restaurant for a Coke and then asked us for $20 each. That was ridiculous so we gave him about $10 a person and left immediately. Now I can check scammed by a monk off my bucket list.
Next, we headed to our last stop, Inle Lake. This part of the trip was much more chill and relaxed. The first morning we learned how to do some acro-yoga, courtesy of more Peace Corps people. Now I’m strongly considering applying to the Peace Corps at some point.
Morning view from the roof of our hostel at Inle Lake
At Inle Lake we spent one day doing a tour of the lake and towns around the lake. It was cool, lots of the houses are on stilts above the lake and you have to canoe from house to house. But, the crown jewel of our trip to Inle was the cooking class we did. It was incredible, we had maybe 20 people in the class from places all over the world. First, we went to the market with Leslie, the guy leading the class, and he took us around to buy fish, meat and vegetables. Then we split into groups each making two dishes. I made some steamed spicy fish and one of the greatest foods of all time, tea leaf salad.
Food spread post cooking class. I prepared the bottom two dishes, tea leaf salad and steamed fish.
Tea leaf salad is absolutely incredible. I didn’t even know it existed until I saw it on the menu at a shop and wondered, “ew, you’re not supposed to eat tea leaves.” Boy was I wrong, it’s sour, spicy and with crunchy roasted peanuts it’s so good. The tea leaves are fermented and mashed with spices and chilies then mixed with cabbage, tomatoes, and roasted peanuts. Truly a legendary dish.
Fisherman on the Lake
View from a winery on the outskirts of town
The other food we had Myanmar was great. We had all sorts of fish, curry, salads, and noodles. Another great dish to try is the Shan Noodles. I don’t know what they make them with, but they are delicious.
Myanmar was amazing. There’s a lot more to talk about but this post is already way too long and all over the place. It’s a hidden gem of South East Asia that is being discovered more and more every year. See it now while it’s not overrun with tourists because soon it likely will be.
Hey everyone,
I’m pretty bad at being consistent with these posts.
It’s been nearly two-weeks since we were in Phuket. Time is really flying by here which is kind of sad because I don’t want to leave. Currently I’m on a bus riding through rural Malaysia towards Kuala Lumpur for the weekend.
Thailand was great, we did a ton in the short time we had there and tried to see it all. The hospitality of Thailand is no joke, nearly everyone we interacted with was extremely friendly. I’ve got a bunch of pictures from the weekend so here we go:
The view from Phuket’s Big Buddha. We had a tuk tuk driver pick us up bright and early so we could see the sunrise at the Big Buddha. Even with the clouds the sunrise up there was unforgettable. Also, monkeys are sketchy, rabies-filled demons.
Had some fun trying to take some artsy photos by the beach. Please hire me Hydro Flask.
One of the highlights of the trip was boating around the Phi Phi islands snorkeling. The Phi Phi Islands are the gem of Phuket. Even though it was a bit rainy the water was warm, and it was almost nice to be cold for the first time in a while.
Ronald McDonald is an international icon. Now I can finally say I’ve taken a photo with a celebrity.
Here in Asia I’ve been discovering loads of new food groups like this bad boy. He’s a little creepy, pretty crawly, but mostly CRUNCHY. I was pretty terrified, but it was actually pretty good. With some chili sauce a scorpion could be a great after school snack.
See the parachute up there? At just about any beach in Phuket you can pay to have a boat drag you around in one of these. The interesting part is, while you’re up there strapped in with a couple carabiners, there’s a guy behind you steering the whole thing who’s completely unsecured. Yikes. Makes me sweat just thinking about it. I bet it looks pretty incredible up there at sunset though.
 In two weeks, we’ll have a break from class for recess week. After much deliberation, we decided on spending the whole break travelling around Myanmar. We’ll be flying into Yangon and traveling by bus to Bagan, Mandalay and Inle Lake during the week. It should be a crazy trip and I’m sure I’ll have a ton of pictures to share afterwards. Might be another blog post before then if I conjure up the courage, but I’ll end it here for now.
Thanks for reading and go Cyclones!
Sorry for the long delay, I was hoping to make a post sooner. I really did get swept away as soon as I got here. Now I’ve been in Singapore for nearly three weeks although it really only feels like a couple days.
I absolutely love it here. The city is incredible, there’s so much to do and explore it’s like nothing I’ve ever seen. The food is delicious and there’s so many interesting things to try. I could go on and on about this all day but I’m going to try to keep it short and just share a couple pictures from the trip so far.
This picture is from the Gardens by the Bay where they have these massive artificial trees. It's honestly hard to take a bad picture here the whole island is so gorgeous I hardly even have to try.
About a week ago we ended up in a Thai mall that was way outside of the normal tourist zones. It felt much more local than the other touristy spots we have visited recently. This is the food we had there it was amazing. Also, this was the first time I had seen Sharkfin Soup on the menu at a restaurant. We didn’t order it, but it's kinda crazy that it was on the menu.
This is Marina Bay Sands the hotel that pretty much defines the Singapore skyline. It’s hard to explain but nearly everything here is done just a little bit over the top. This building really shows off that piece of their culture. It’s really expensive to stay here for a night but it gets you access to the infinity pool on the roof, so I’m tempted to get a room with some friends.
The botanic gardens in Singapore had an amazing bonsai garden with a bunch of different trees. I tried to get some really artsy pics with my phone.
This last picture is our group that went to hang out at the beach the other day.
From left to right:
John from New Jersey, yours truly from Colorado, Jurij from Russia/Germany, Nick from California, Natalia from Slovakia, Lorenz from Germany, Hendrik from Germany, Nate from Colorado, and Kevin from Colorado.
Singapore is incredible and I have lots more photos but I’ll end it here for now. Today I’m leaving for Phuket, Thailand for my first trip. It’s the rainy season there so I’ve got my fingers crossed it doesn’t rain the whole time.
Hi everyone!
This is the first of hopefully many blog posts for the next couple months while I'm studying abroad. Today I leave for my semester abroad in Singapore where I’ll study at Nanyang Technological University. Here I’ll be posting some pictures that I take along the way and keeping you all up to date on what I’m up to. I've never blogged before so this will hopefully not be terrible. Anyway, here's a little bit about my internship this summer.
For the past couple months, I was in Des Moines working for Principal Financial Group as a software engineer intern. It was a great learning experience and gave me a chance to break out of the classroom and do some real programming. On my intern team I did a lot of data science work learning about machine learning models and neural networks.
We were given a project at the beginning of the summer to use machine learning, natural language processing, and neural networks to make some insights on the company’s workflow management system JIRA. Going into the summer I was already wanting to get into data science, so this project was a perfect fit. We ended up being fairly successful using a couple different machine learning algorithms along with some natural language processing to predict how long JIRA tickets take.
We also had a Code Jam over a three-day period in July. For all three days we were camped out in a windowless room programming away with the goal of delivering a valuable result to our stakeholders. For our project we made a web app to improve the way employees view the status of their stock option distribution. Currently employees have to call in to check the status of their payment which can take a month or more to be processed. We replaced this with a web page coupled with email updates, text alerts, and a Google Assistant action to check your status. This was a lot of fun to build and gave me some good ideas for future side-projects.
That’s most of what I worked on this summer in Des Moines. Now I’m off to Seattle, Tokyo and then Singapore!


> >
Review your order below and select 'Submit Order' at the bottom to place your order. You can also add more items to your order by selecting 'Continue Shopping'.
Order Subtotal:
Order Total:


N passengers per system; N is unlimited subject to being less than steady-state carrying capacity of elevator.
Passengers arrive at the elevator landings according to the
specifications of the passenger input files. Passengers may also
begin the simulation already in the car.
Passengers do not "fight" each other for position in entry and exit queues.
Passengers weigh 150 pounds each.
1.1: Passengers are prevented from entering or exiting the Car whenever the appropriate doors are not open far enough.
1.2: If Passenger p is outside the car and the CarWeightAlarm is
triggered, the passenger shall not try to enter the car or press a hall
call for 10 seconds after the doors fully close.
| Trigger # |
Trigger Conditions |
Actions |
| PT1 |
Injection time reached |
Passenger joins hall queue. |
| PT2 | Doors at start landing are open
wider than width, car is level or leveling is being ignored, car
lantern is consistent with
travelDirection, passenger has priority to use the door. |
|
| PT3 | After doorTraversalDelay, the
door is not open wide enough for the passenger to enter. |
Passenger registers a "failed to
enter" satisfaction deduction |
| PT4 | doorBackoutDelay expires |
Passenger rejoins hall queue at
the end of the queue. |
| PT5 | doorTraversalDelay expires and
the doors are open wider than passenger width. |
Passenger exits the hall queue
and joins the car queue. |
| PT6 | The CarWeightAlarm sounds and
this passenger is the last passenger in the car queue. |
Passenger stops monitoring the
car call. |
| PT7 | doorTraversalDelay expires and
the doors are open wider than the passenger width. |
Passenger rejoins hall queue. |
| PT9 | Doors are fully closed and
BackoffPeriod has elapsed. |
|
| PT10 | CarWeightAlarm sounds and the
passenger is in the hall queue with the doors at least partially open. |
|
| PT11 | Doors at destHallway are open
wider than passenger width, the car is level or leveling is being
ignored, the position indicator
indicates destFloor, and the passenger has priority to traverse the
door. OR, while the car is still at the startFloor and the doors
on the startHallway are still open, the lantern changes to a direction
that is inconsistent with the passengers travelDirection and the
passenger has priority to traverse the door. |
|
| PT12 | After doorTraversalDelay, the door is not open wide enough for the passenger to enter. | Passenger registers a "failed to exit" satisfaction deduction. |
| PT13 | doorBackoutDelay expires | Passenger rejoins the car queue
at the end of the queue. |
| PT14 | doorTraversalDelay expires and the doors are open wider than the passenger width. | Passenger records delivery time
and stops interacting with the simulation. |
| PT15 |
Car ceases to be overweight
before the passenger can exit the car. |
Passenger rejoins the car queue |
| State |
Description |
Actions |
| INIT |
passenger has not arrived at the
hallway yet |
none |
| WAITING_IN_HALL |
waiting for the car to arrive at the start floor/hall, pressing the hall call | Passenger presses and/or monitors the hall call. Passenger may register a "repeated call press" deduction. |
| ENTERING | in the process of entering the car | Passenger may register a "car
lantern direction change" deduction. |
| ENTER_BACKOUT | backing out because the passenger failed to enter | none |
| WAITING_IN_CAR | waiting for the car to arrive at the destination | Passenger presses and/or monitors the car call. Passenger may register "missedOpeningThreshold exceeded", "skipped destination" or "wrong motion" deductions. Passenger may register a "repeated call press" deduction. |
| EXITING | exiting the car at the start or
destination landing |
none |
| EXIT_BACKOUT | returning to the car because the passenger failed to exit | none |
| OVERWEIGHT_EXITING | exiting the car because it is overweight | Passenger registers a "failed to exit" satisfaction deduction. |
| OVERWEIGHT_BACKOFF | waiting after the overweight alarm has sounded | none |
| DONE | passenger delivered to destination | none |
| Drive
Speed
Values |
|||||||
| Drive
Command
Values |
FastSpeed
>= DriveSpeed >= SlowSpeed, UP |
SlowSpeed
>= DriveSpeed > LevelSpeed, UP |
LevelSpeed
>= DriveSpeed > 0, UP |
DriveSpeed ==
0,STOP |
LevelSpeed >= DriveSpeed > 0, DOWN | SlowSpeed
>= DriveSpeed > 0, DOWN |
FastSpeed
>= DriveSpeed >= SlowSpeed, DOWN |
| Fast,
Up |
X |
||||||
| Slow,
Up |
X |
X |
X |
X |
|||
| Level,
Up |
X |
X |
X |
||||
| Stop,
Stop |
X |
X |
X |
||||
| Level,
Down |
X |
X |
X |
||||
| Slow,
Down |
X |
X |
X |
X |
|||
| Fast,
Down |
X |
| Transition |
Condition |
| 5.T.1 | mDoorClosed[b,r] == True |
| 5.T.2 | (mAtFloor[f,b] == True AND f == mDesiredFloor.f AND (mDersiredFloor.b == b OR mDesiredFloor.b == BOTH) AND (mDriveSpeed == (0,stop)) |
| 5.T.3 | mDoorOpened[b,r] == True |
| 5.T.4 | CountDown <= 0 AND DoorHasReversed == False AND mCarWeight[g] < MaxCarCapacity |
| 5.T.5 | mDoorReversal[b,r] == True OR mCarWeight[g] >= MaxCarCapacity |
| 5.T.6 | mDoorOpened[b,r] == True |
| 5.T.7 | CountDown <= 0 AND DoorHasReversed == True AND mCarWeight[g] < MaxCarCapacity |
| 5.T.8 | mDoorClosed[b,r] == True |
| 5.T.9 | mCarWeight[g] >= MaxCarCapacity |
| Requirements | |||||||||||||||
| States | 5.6.1 | 5.6.2 | 5.7.1 | 5.7.2 | 5.8 | 5.9 | 5.10 | 5.11 | 5.12 | 5.13 | 5.14 | ||||
| State 1: Doors Closed | X | X | X | ||||||||||||
| State 2: Open Doors | X | X | X | X | X | ||||||||||
| State 3: Doors Opened | X | X | X | X | |||||||||||
| State 4: Close Doors | X | X | X | ||||||||||||
| State 5: Door Reversal | X | X | X | ||||||||||||
| State 6: Nudge Doors | X | X | X | ||||||||||||
| Transitions | 5.6.1 | 5.6.2 | 5.7.1 | 5.7.2 | 5.8 | 5.9 | 5.10 | 5.11 | 5.12 | 5.13 | 5.14 | ||||
| 5.T.1 | X | ||||||||||||||
| 5.T.2 | X | X | |||||||||||||
| 5.T.3 | X | X | |||||||||||||
| 5.T.4 | X | ||||||||||||||
| 5.T.5 | X | X | |||||||||||||
| 5.T.6 | X | X | |||||||||||||
| 5.T.7 | X | ||||||||||||||
| 5.T.8 | X | ||||||||||||||
| 5.T.9 | X |
| Drive
Speed
Values |
|||||||
| Drive
Command
Values |
FastSpeed
>= DriveSpeed >= SlowSpeed, UP |
SlowSpeed
>= DriveSpeed > LevelSpeed, UP |
LevelSpeed
>= DriveSpeed > 0, UP |
DriveSpeed ==
0,STOP |
LevelSpeed >= DriveSpeed > 0, DOWN | SlowSpeed
>= DriveSpeed > 0, DOWN |
FastSpeed
>= DriveSpeed >= SlowSpeed, DOWN |
| Fast,
Up |
X |
||||||
| Slow,
Up |
X |
X |
X |
X |
|||
| Level,
Up |
X |
X |
X |
||||
| Stop,
Stop |
X |
X |
X |
||||
| Level,
Down |
X |
X |
X |
||||
| Slow,
Down |
X |
X |
X |
X |
|||
| Fast,
Down |
X |
| Transition |
Condition |
| 6.T.1 |
mEmergencyBrake == FALSE AND DriveSpeed == STOP AND ((DesiredDirection == UP AND mDoorClosed[*,*] == TRUE AND mDoorMotor[*,*] != OPEN AND mCarWeight < MaxCarWeight) OR mLevelUp == FALSE) |
| 6.T.2 | mCarWeight < MaxCarCapacity AND mDoorClosed[*,*] == TRUE AND mDoorMotor[*,*] != OPEN AND mEmergencyBrake == FALSE AND DriveSpeed(s,d) == (LevelingSpeed, UP) AND DesiredDirection == UP |
| 6.T.3 | mEmergencyBrake == FALSE AND DriveSpeed(s,d) == (SlowSpeed, UP) AND CommitPoint < mDesiredFloor(f) |
| 6.T.4 | mEmergencyBrake == FALSE AND CommitPoint == mDesiredFloor(f) |
| 6.T.5 | mEmergencyBrake == FALSE AND DriveSpeed(s,d) == (SlowSpeed, UP) AND CurrentFloor = mDesiredFloor(f) |
| 6.T.6 | MEmergencyBrake == TRUE OR (mLevelUp == TRUE AND (mDoorClosed[*,*] == FALSE OR DesiredDirection == STOP)) |
| 6.T.7 | mEmergencyBrake == FALSE AND DriveSpeed(s) == STOP AND ((DesiredDirection == DOWN AND mDoorClosed[*,*] == TRUE AND mDoorMotor[*,*] != OPEN) OR mLevelDown == FALSE) |
| 6.T.8 | mCarWeight < MaxCarCapacity AND mDoorClosed[*,*] == TRUE AND mDoorMotor[*,*] != OPEN AND mEmergencyBrake == FALSE AND DriveSpeed(s,d) == (LevelingSpeed, DOWN) AND DesiredDirection == DOWN |
| 6.T.9 | mEmergencyBrake == FALSE AND DriveSpeed(s,d) == (SlowSpeed, DOWN) AND CommitPoint > mDesiredFloor(f) |
| 6.T.10 | mEmergencyBrake == FALSE AND CommitPoint == mDesiredFloor(f) |
| 6.T.11 | mEmergencyBrake == FALSE AND DriveSpeed(s,d) == (SlowSpeed, DOWN) AND CurrentFloor = mDesiredFloor(f) |
| 6.T.12 | mEmergencyBrake == TRUE OR (mLevelDown == TRUE AND (mDoorClosed[*,*] = FALSE OR DesiredDIrection == STOP)) |
| 6.T.13 | mEmergencyBrake == TRUE |
| 6.T.14 | mEmergencyBrake == TRUE |
| 6.T.15 | mEmergencyBrake == TRUE |
| 6.T.16 | mEmergencyBrake == TRUE |
| Requirements |
||||||||||
|
States |
6.6 | 6.7 | 6.8 | 6.9 | 6.10 | 6.11 | 6.12 | 6.13 | 6.14 | 6.15 |
| State 1: Stop | x | x | x | |||||||
| State 2: Level Up | x | x | x | x | x | |||||
| State 3: Slow Up | x | x | x | x | ||||||
| State 4: Fast Up | x | x | x | |||||||
| State 5: Level Down | x | x | x | x | x | x | ||||
| State 6: Slow Down | x | x | x | x | ||||||
| State 7: Fast Down | x | x | ||||||||
| Transitions | ||||||||||
| 6.T.1 | x | x | ||||||||
| 6.T.2 | x | |||||||||
| 6.T.3 | x | |||||||||
| 6.T.4 | x | |||||||||
| 6.T.5 | x | |||||||||
| 6.T.6 | x | x | ||||||||
| 6.T.7 | x | x | ||||||||
| 6.T.8 | x | |||||||||
| 6.T.9 | x | |||||||||
| 6.T.10 | x | |||||||||
| 6.T.11 | x | |||||||||
| 6.T.12 | x | x | ||||||||
| 6.T.13 | x | |||||||||
| 6.T.14 | x | |||||||||
| 6.T.15 | x | |||||||||
| 6.T.16 | x |
| Transition |
Condition |
| 7.T.1 |
mDoorClosed[*,*] != True AND DesiredDirection == d |
| 7.T.2 | mDoorClosed[*,*] != True |
| 7.T.3 | mDoorClosed[*,*] == True |
| 7.T.4 | mDoorClosed[*,*] == True |
| Requirements |
||||
| States |
7.2 |
7.3 |
||
| State
1: Door Closed |
X |
|||
| State
2: Lantern On |
X |
|||
| State
3: Lantern Off |
X |
|||
| Transitions |
||||
| 7.T.1 |
X |
|||
| 7.T.2 | X |
|||
| 7.T.3 | X |
|||
| 7.T.4 | X |
| Transition |
Condition |
| 8.T.1 |
HallCall[f,b,d] == Pressed |
| 8.T.2 |
mDoorClosed[b,r] == False AND CurrentFloor = f AND (DesiredDirection == d OR DesiredDirection == Stop) |
| 8.T.3 |
mDoorClosed[*,*] == True |
| Requirements | |||||||||
| States | 8.1.1 |
8.1.2 |
8.1.3 |
8.2.1 |
8.2.2 |
8.2.3 |
8.3.1 |
8.3.2 |
8.3.3 |
| State 1: No Hall Selected | X | X | X | ||||||
| State 2: Hall Selected | X | X | X | ||||||
| State 3: Servicing Hall | X | X | X | ||||||
|
Transitions |
|||||||||
| 8.T.1 | X | X | X | ||||||
| 8.T.2 | X | X | X | ||||||
| 8.T.3 | X | X | X |
| Transition |
Condition |
| 9.T.1 | CarCall[f,b] == TRUE |
| 9.T.2 | mDoorClosed(b,r) == FALSE AND mAtFloor[f,b] == TRUE |
|
Requirements |
|||||||||
| States | 9.1.1 | 9.1.2 | 9.2.1 | 9.2.2 | |||||
| State 1: No Floor Selected | X | X | |||||||
| State 2: Floor Selected | X | X | Transitions | ||||||
| 9.T.1 | X | X | |||||||
| 9.T.2 | X | X |
| Transition |
Condition |
| 10.T.1 | mDriveSpeed(s) > LevelingSpeed |
| 10.T.2 | mDriveSpeed(s) <= LevelingSpeed |
| Requirements |
||||
| States |
10.4 | 10.5 | 10.6 | |
| State
1: Traveling |
X | X | ||
| State
2: Reached Floor |
X | X | ||
| Transitions | ||||
| 10.T.1 |
X | |||
| 10.T.2 | X |
| Transition |
Condition |
| 11.T.1 |
UpCalls = true |
| 11.T.2 |
UpCalls = false |
| 11.T.3 |
DownCalls = true |
| 11.T.4 |
DownCalls = false |
| 11.T.5 |
hallway != Hallway.NONE |
| 11.T.6 |
hallway != Hallway.NONE |
| 11.T.7 |
mDoorClosed[f,b] == false |
| 11.T.8 |
mDoorClosed[*,*] == true |
| 11.T.9 |
countDown == 0 AND desiredDirection == Direction.UP |
| 11.T.10 |
countDown == 0 AND desiredDirection == Direction.DOWN |
| Requirements | |||||||||||||||
| States | 11.4 |
11.5 |
11.6 |
11.7 |
11.8 |
11.9 |
11.10 |
11.11 |
11.12 |
11.13 |
11.14 |
11.15 |
|||
| State 1: | X | X | |||||||||||||
| State 2: | X | X | X | X | X | X | X | X | |||||||
| State 3: | X | X | X | X | X | X | X | X | |||||||
| State 4: | X | X | |||||||||||||
| State 5: | X | X | |||||||||||||
| State 6: | X | X | |||||||||||||
|
Transitions |
|||||||||||||||
| 11.T.1 | X | ||||||||||||||
| 11.T.2 | X | ||||||||||||||
| 11.T.3 | X | ||||||||||||||
| 11.T.4 | X | ||||||||||||||
| 11.T.5 | X | ||||||||||||||
| 11.T.6 | X | ||||||||||||||
| 11.T.7 | X | ||||||||||||||
| 11.T.8 | X | ||||||||||||||
| 11.T.9 | X | ||||||||||||||
| 11.T.10 | X |


New Shoes, now with mostly working, cross platform packaging! 😍👠👞👡👟 https://twitter.com/rubygems/status/876127400656068608
6/17/2017, 7:06:15 PM
Favs: 9
Retweets: 2
link--- layout: tweet ---
New Shoes, now with mostly working, cross platform packaging! 😍👠👞👡👟 https://twitter.com/rubygems/status/876127400656068608
6/17/2017, 7:06:15 PM
Favs: 9
Retweets: 2
link


Lets start by inserting the code for src/directives/components/Index.jsx
:
import React from 'react';
import Slide from './Slide.jsx!';
class Index extends React.Component {
render() {
var slides = this.props.slides.map(function (slide, index) {
return <Slide key={index} slide={slide} />;
});
return (

Index

{slides}

);
}
}
export default Index;
This code does much of the same as for the navigation component. But there are some additions:
Slide.jsx
; we'll go through that one nextArray.prototype.map
, which is to show that everything you can do in plain JavaScript can also be done in JSX-files (as they are extensions for plain JS).Next, the code for src/directives/components/Slide.jsx
:
import React from 'react';
class Slide extends React.Component {
render() {
return (

{this.props.slide.short}

);
}
}
export default Slide;
Something to note in this code is the use of the key-attribute. When you insert React components into other React components, React advices you to add a key to your child components, to make debugging easier.
It also makes use of a conditional (ternary) operator, which has the syntax condition ? expr1 : expr2
, where expr1 is returned if the condition is true, and expr2 is returned if the condition is false. This is a handy function that's also available in many other programming languages.


I help bring more customers to your coffee shop.
Get To Know MePull in visitors and sieze their attention.
Increase your website's rank in search results.
Attract more potential customers and outrank competitor ads.
Got a question for me? I'm all ears! Give me a call or send me an email and I will get back to you as soon as possible!
(813) 468-1807


In this example you start to create a more complex server. The script examines the pathname of the http request to respond with different content. A switch statement determines what the response should be. If no response can be found for the pathname we serve a 404 response
Start the server with
node server.js
Then open your browser at http://<IP_ADDRESS>:3000
Check the headers to see they are as expected.
curl -I http://<IP_ADDRESS>/


VSL // Do It For The Kids
* Collaborative Fund and Sesame Workshop teamed up to create a simple trivia game
today’s Very Short List:
culture 21 Apr 2014
Alexa Jaccarino is the editor of Very Short List, and she loves how colorful this list turned out! TWITTER
Subscribe
* RxArt is a nonprofit group dedicated to bringing art into pediatric hospital facilities and “giving patients a way to escape their bodies’ sickness through their minds’ imagination.
* The Kitchen Community’s learning gardens are attractive outdoor classrooms
http://link.nyobserver.com/516ca68465217dc6e1b9a3a61jgg8.bgr/U0seiOYQi3UyI2S8D7fe7 very short list is a
delightful e-mail that shares
cultural gems from a
different curator every day.
If you have any problems reading this e-mail, click here
http://link.nyobserver.com/516ca68465217dc6e1b9a3a61jgg8.bgr/U0seiOYQi3UyI2S8Eae75
Subscribe
Forward
My Account
Unsubscribe
food 18 Apr 2014
Pastry Chef Claire Livia Lassam on the food blogs that get her electric mixers stirring.
style 16 Apr 2014
Jewelry designer Katie Schloss shares her latest inspirations.
culture 14 Apr 2014
Lauren Cerand offers a look inside some creative worlds.
Editorial Policy
Privacy Policy
Contact Us
Press
Terms + Conditions
very fine print: ©2014
Observer VSL LLC.
321 West 44th Street, 6th Floor
New York, NY 10036 USA
All rights reserved.
Questions?<PHONE_NUMBER>.
This message was intended for<EMAIL_ADDRESS>If you believe this has been sent to you in error, please safely unsubscribe


--- title: "Simulating power" subtitle: "It begins..." author: "Brendan Alexander" output: bookdown::html_document2: toc: true toc_depth: 4 toc_float: true code_folding: show editor_options: chunk_output_type: console date: 2020-02-10T21:13:14-05:00 categories: ["Statistics"] tags: ["power"] ---
When we conduct hypothesis tests there are two kinds of error: \(\alpha\) (which we set, typically at \(5\%\)) and \(\beta\). \(\alpha\) is the probability of making a Type I error: rejecting a null or primary hypothesis when it was correct. \(\beta\) is the probability of making a Type II error: failing to reject the null or primary hypothesis when the alternative is correct.
\(\beta\) can be tricky since we don’t set it directly. Instead, it’s influenced by sample size, population variation, absolute effect size, experimental design, and \(\alpha\). But we should still try to get an idea of what our power is before we run an experiment so that we can:
\(\beta\) is directly related to experimental power (\(1-\beta\)). Power is the probability that we correctly reject the null or primary hypothesis.
A problem with determining experimental power is that there may not be a nice, closed-form equation for power given your experimental design. No problem, we can simulate it.
Let’s do an example with simple linear regression. Let’s say that we’re examining a relationship between \(x\) and \(y\). Let’s also say that a slope of 0.5 would be biologically significant for our purposes. What can we do to increase the chance of detecting this relationship assuming that it exists?
We’ll need to do the following:
expand.grid
to create a data frame of all possible combinations of sample size and widthmapply
function to iterate the simulations over our grid.pow_sim
that calculates a p-value for every simulationlibrary(tidyverse)
library(directlabels)
# Set a vector of sample sizes we want to try
sample_size <- seq(5,50,5)
# Create a vector of x-range widths to try
# This code may look strange, I'll try to explain what I'm doing
# in class
# Essentially, I'm saying the total range of x can be [0,100]
# And we're seeing what happens when that width is centered on 50
#and increases. Clear as mud?
spread_min <- seq(45,0,-5)
spread_max <- seq(55,100,5)
# This is the vector I was after.
diff <- spread_max-spread_min
# How many simulation replications?
# We'll try 100 replications per sample size/width combination
rep <- 1:100
# Expand grid creates all possible combinations of your vectors
# Very useful
sample_grid <- expand.grid(sample_size,diff,rep)
pow_fun=function(size, diff){
# Generate our sequence of x variables based on the sample size
# and width
x = seq(from = 50-diff/2,
to = 50+diff/2,
by = diff/size)
# Generate y based on what we think would be biologically significant
# using reasonable variance estimate from the literature.
# What's "reasonable" will change based on topic and discipline.
# Look to previous studies on similar topics and species for
# good values.
y=10+x*0.5+rnorm(n = length(x),mean = 0,sd = 20)
# Run the fit
fit=lm(y~x)
# Find and store the relevant p-value
sum_fit=summary(fit)
pval=coef(sum_fit)[2,4]
sig <- pval
res <- cbind(size,diff,sig)
return(res)
}
OK!
No that we have our grid and our power function, we need to be able to apply the function to all of the rows in our grid.
We’ll use mapply
.
The apply family of functions are essentially for
loops with benefits.
mapply
will run the function we created for each row in our grid and then spit out the results we asked for.
It seems to spit out the transpose of the matrix we’re interested in, so we’ll use t()
to get what we want.
Then, we’ll turn it into a data frame and name the columns.
result=mapply(pow_fun,size=sample_grid$Var1,diff=sample_grid$Var2)
result.dat=as.data.frame(t(result))
names(result.dat) <- c("sample_size", "width", "p")
Now that we have our data frame we’ll need to get what we really wanted: the simulated power for each sample size/range combination.
We’ll use an ifelse
statement to identify which results were “statistically significant”.
If it was significance (\(p<0.05\)) then we code it as a \(1\), otherwise \(0\).
We can then use the tidyverse
package (specifically dplyr
I think) to summarise our indicator variable.
If we take the average (mean) over the indicator variable for each sample size/range combination then it will calculate the simulated power.
result.dat2 <- result.dat %>%
mutate(sig=ifelse(p<0.05, 1,0))
result.dat3 <- result.dat2%>%
group_by(sample_size,width)%>%
summarise(power=mean(sig))
And of course we have to do graphs. Graphs, graphs, graphs!
If your planning to publish a graph with 3 variables you should consider a contour plot like this (3d doesn’t work well in print):
plot_new_contour <- ggplot(data = result.dat3, aes(x=sample_size, y=width, z=power)) +
geom_raster(data=result.dat3, aes(fill=power), show.legend = TRUE) +
scale_fill_gradient(limits=range(result.dat3$power), high = 'blue', low = 'yellow') +
geom_contour(aes(colour = ..level..)) +
scale_colour_gradient(guide = 'none')+
labs(x = "Sample size", y = "Range/width of x", title = "Contour plot from a simple linear regression power simulation. Power was simulated for different sample sizes and ranges of x.") + theme(title =element_text(size=6, face='bold'), axis.title=element_text(size=12))
neat_plot = direct.label(plot_new_contour,
list("far.from.others.borders", "calc.boxes", "enlarge.box",
hjust = 1, vjust = 1, box.color = NA, fill = "transparent", "draw.rects"))
neat_plot
You could also do a 3d plot if you like. This won’t show up in the html
library(rgl)
library(plot3D)
zmat <- matrix(c(result.dat3$power),byrow=F,nrow=length(sample_size),ncol=length(diff))
persp3d(sample_size,diff,zmat,theta=30, phi=50, axes=TRUE,scale=2, box=TRUE, nticks=5,
ticktype="detailed",col="orange",xlab="sample_size", ylab="diff", zlab="power",
main="Power/sample size")


Python 2.7 support graph for the 360 most popular Python packages!
Python 2.7 is a version of Python that is past its End Of Life. This site shows Python 2.7 support for the 360 most downloaded packages on PyPI:
There can be many reasons a package is still supporting Python 2.7:
If you are package maintainer, it's time to start dropping support (if you haven't already). Here is an in-depth guide to Dropping support for older Python versions. If you are not able to give the time needed, please seek for help from the community.
If you are user of the package, send a friendly note to the package maintainer. Or fork it, and send a pull request to help move the project towards dropping Python 2.7 support.
We look for the Programming Language :: Python :: 2.7
classifier on the latest release of the project, via PyPI's JSON API.
This is derivative work from py3readiness.org, a site that previously tracked general compatibility with Python 3, which in turn was a derivative of pythonwheels.com, a site that tracks which Python distributions ship the wheel distribution.


| DOSE: |
repeated |
oral |
MDMA |
(pill / tablet) |
| |
|
|
Pharms - Tianeptine |
|
I used to take ecstasy frequently for 2 years sometimes 8 in a weekend,sometimes once a month.If they fucked me up too much i gave it a break for a bit then started again. It created problems in me since day 1. Because of my condiotions social anxiety and depression i would take it thinking that it would have some special sort of realisation and overcome my problems.  So i did it loads until i realised that if i carried on any further i would have nothing left in my brain.
Although i had problems b4 now i am really really bad.  I see no point in living except to wait and see if i get better. The only reason i havent killed my self yet is because i havent the motivation or the energy. I used to be good at art which i was going to do as a career but because of pills - i have forgotten how to, i just cant do it anymore.
I think mdma realesed my crappy subconscious into my conscoius thoughts. The situations where my heart used to race now i simply sit and take the pain in my brain as evil thoughts. Apparently for ppl like me in takes between 6 months to a year to see 'significant improvements' but not recovery.
Even though it has done all this stuff to me i do beleive it has role with psychologists. The only positive from all this is that it has changed my personality from a shy scared person to a paranoid person who looks shy but dosent feel shy - i am myself but only in my head, i cant express myself - for some reason it feels painful.
There is actaully some medication I use to reverse mdma depressions - i used to use it until the online pharmacy closed. It is called 'tianeptine'. Instead of dulling my emotions like prozac does, it tends to amplify them. Tianeptine worked for me.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{% extends "outline.html" %} {% block title %} New Experiment Details {% endblock %} {% block sidebar %} {% include "_project_sidebar.html" %} {% endblock %} {% block javascript %} {% endblock %} {% block body %}
Give your experiment a name and a short description.
People participating in your experiment need to know what comparisons they are making. Provide a description of the comparison and any other instructions they should see before the experiment begins.
You can also provide a debriefing message that they will see when they have completed the experiment.
Choose a target set
Choose the number of queries and the time limit a user has.


About Me
Thanks for stopping by and checking out my Blog. This website has been a lot of fun to make and I hope that you enjoy it!
A little about myself to get you started. My name is Tommy Dugger and I'm a computer geek. If it's technology based then I most likely dig it. I'm 35 years old, married, and have 2 children. I currently live in Cortez Colorado and have lived in this area of the US for almost my entire life.
I'm a Systems Administrator for a construction company here and I spend my days taking care of computers, networks, and doing some programming in .Net/C#. I've been in IT my entire career and I'm a bit burnt to say the least.
I'm studying programming, specifically web development to move my career in that direction. I'm set to attend Dev Bootcamp on July 14th and can't wait to get going. I love programming and this is my chance to move into something I love. There isn't much better than having a positive impact on someone through software. It's a great high and one that I want to stay on.
Take a look around and give me ideas or feedback if you want. You can find my email, github, and twitter accounts linked at the bottom right. Thanks again for stopping by!


Last updated: 2021-05-10
Checks: 7 0
Knit directory: draw-15minsCity-bubbles/
This reproducible R Markdown analysis was created with workflowr (version 1.6.2). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(20210414)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.
The results in this page were generated with repository version 510c5d2. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: .DS_Store
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: data/.DS_Store
Ignored: model/.DS_Store
Ignored: model/data/.DS_Store
Untracked files:
Untracked: data/pic/
Unstaged changes:
Modified: data/POIs/poi_points.dbf
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the repository in which changes were made to the R Markdown (analysis/about.Rmd
) and HTML (docs/about.html
) files. If you’ve configured a remote Git repository (see ?wflow_git_remote
), click on the hyperlinks in the table below to view the files as they were in that past version.
| File | Version | Author | Date | Message |
|---|---|---|---|---|
| Rmd | 510c5d2 | chenqingqing | 2021-05-10 | update outline |
| html | 50aad43 | chenqingqing | 2021-04-15 | add docs |
| Rmd | d1235c4 | chenqingqing | 2021-04-14 | add introduction |
| Rmd | 6299110 | chenqingqing | 2021-04-14 | Start workflowr project. |
The recent uptake of ’15-minute city’ planning ideas sought after by cities around the world (Weng et al. 2019, Pozoukidou and Chatziyiannaki 2021) refers to the idea that all residents can access most of their daily needs (e.g., groceries, work, education, shopping, health, exercise, entertainment, etc.) within 15 minutes (up to 20 minutes), commuting from their own doorsteps by walking, cycling, or public transportation. This notion has been sharply discussed lately during the Covid-19 pandemic, as the pandemic has significantly restricted human movement, forcing people to stay at home and only go out for basic needs (Dinah Lewis Boucher, 2020). Thus, ushering in a new era of integrated urban fabric which combines most of residents’ life essentials to each local community is promoted.
However, when taking the history of urban inequity (Duncan et al. 2012, Stephens 2012) into account, challenges of implementing the concept of ‘15-minute city’ arise and the challenges could vary from different countries in different places. For instance, people who stay in New York City may be able to gain most of their daily needs within 15-minute traveling, while people who live in the small and midsized cities may require more time to get their essentials, especially where there is a lack of public transports. So,
The benchmark of quantifying a 15-minute city has not come with a consensus in the current state-of-the-art. In order to quantitatively draw the size of a 15-minute city, I spatiotemporally simulate residential movements on streets by developing an Agent-Based Model (ABM). I hope the bottom-up approach introduced in this study could help detect the flexibility of defining a ‘15-minute city’ and thereafter help investigate the underlying factors that affect its definition. The model is put to the test in application to a 4 by 4-kilometer square neighbourhood in Queens, which is located in the easternmost of New York. According to NY.gov, Queens is the largest in the area and the second-most in the population of the five boroughs of New York City, known for its diverse culture and diversified economy, and attracts people all over the world. It might be interesting to reimagine what the neighbourhood could look like in this ‘cornucopia’ as a 15-minute city model.
library(png)
library(grid)
study_area <- readPNG(here::here("data/pic/study-area.png"))
grid.raster(study_area)
Aziz, H.M.A., Park, B.H., Morton, A., Stewart, R.N., Hilliard, M., and Maness, M., 2018. A high resolution agent-based model to support walk-bicycle infrastructure investment decisions: A case study with New York City. Transportation Research Part C: Emerging Technologies, 86, 280–299.
Badland, H., White, M., MacAulay, G., Eagleson, S., Mavoa, S., Pettit, C., and Giles-Corti, B., 2013. Using simple agent-based modeling to inform and enhance neighborhood walkability. International Journal of Health Geographics, 12 (1), 58.
Batty, M., 2012. Smart Cities, Big Data. Environment and Planning B: Planning and Design, 39 (2), 191–193.
Bettencourt, L.M.A., 2014. The Uses of Big Data in Cities. Big Data, 2 (1), 12–22. Crooks, A., Croitoru, A., Lu, X., Wise, S., Irvine, J.M., and Stefanidis, A., 2015. Walk This Way: Improving Pedestrian Agent-Based Models through Scene Activity Analysis. ISPRS International Journal of Geo-Information, 4 (3), 1627–1656.
Duncan, D.T., Aldstadt, J., Whalen, J., White, K., Castro, M.C., and Williams, D.R., 2012. Space, race, and poverty: Spatial inequalities in walkable neighborhood amenities? Demographic research, 26 (17), 409–448.
Freudendal-Pedersen, M., 2020. Sustainable urban futures from transportation and planning to networked urban mobilities. Transportation Research Part D: Transport and Environment, 82, 102310.
Hu, S., Xiong, C., Yang, M., Younes, H., Luo, W., and Zhang, L., 2021. A big-data driven approach to analyzing and modeling human mobility trend under non-pharmaceutical interventions during COVID-19 pandemic. Transportation Research Part C: Emerging Technologies, 124, 102955.
Jacobs, A.B., 1993. Great Streets. University of California Transportation Center, Working Papers. University of California Transportation Center, No. qt3t62h1fv.
Kim, J.-S., Jin, H., Kavak, H., Rouly, O.C., Crooks, A., Pfoser, D., Wenk, C., and Züfle, A., 2020. Location-Based Social Network Data Generation Based on Patterns of Life. In: 2020 21st IEEE International Conference on Mobile Data Management (MDM). Presented at the 2020 21st IEEE International Conference on Mobile Data Management (MDM), 158–167.
Knura, M., 2019. Agent Based Simulation of Pedestrian Movement in Urban Environments, 5. Liu, K., Murayama, Y., and Ichinose, T., 2021. Exploring the relationship between functional urban polycentricity and the regional characteristics of human mobility: A multi-view analysis in the Tokyo metropolitan area. Cities, 111, 103109.
Liu, S.B., Lo, S.M., Tsui, K.L., and Wang, W.L., 2015. Modeling Movement Direction Choice and Collision Avoidance in Agent-Based Model for Pedestrian Flow. Journal of Transportation Engineering, 141 (6), 04015001.
Meekan, M.G., Duarte, C.M., Fernández-Gracia, J., Thums, M., Sequeira, A.M.M., Harcourt, R., and Eguíluz, V.M., 2017. The Ecology of Human Mobility. Trends in Ecology & Evolution, 32 (3), 198–210.
Nowok, B., Raab, G.M., and Dibben, C., 2016. synthpop : Bespoke Creation of Synthetic Data in R. Journal of Statistical Software, 74 (11).
Object, object, 2020. Local Living, Rise of 20 Minute Cities Post-Covid [online]. The Urban Developer. Available from: https://theurbandeveloper.com/articles/local-living-rise-of-20-minute-cities-post-covid [Accessed 20 Mar 2021].
Pozoukidou, G. and Chatziyiannaki, Z., 2021. 15-Minute City: Decomposing the New Urban Planning Eutopia. Sustainability, 13 (2), 928.
Read ‘America Becoming: Racial Trends and Their Consequences: Volume I’ at NAP.edu, n.d.
Weng, M., Ding, N., Li, J., Jin, X., Xiao, H., He, Z., and Su, S., 2019. The 15-minute walkable neighborhoods: Measurement, social inequalities and implications for building healthy communities in urban China. Journal of Transport & Health, 13, 259–273.
Where the ‘15-Minute City’ Falls Short, 2021. Bloomberg.com, 2 Mar.
Whitworth, A., 2020. synthACS: Spatial MicroSimulation Modeling with Synthetic American Community Survey Data [online]. Available from: /paper/synthACS%3A-Spatial-MicroSimulation-Modeling-with-Whitworth/2bf10b9bd67fdc46d2372416a4f1367ff8f45832 [Accessed 22 Mar 2021].
Yang, Y., Roux, A.V.D., Auchincloss, A.H., Rodriguez, D.A., and Brown, D.G., 2011. A Spatial Agent-Based Model for the Simulation of Adults’ Daily Walking Within a City. American Journal of Preventive Medicine, 40 (3), 353–361.
Zhu, W., Nedovic-Budic, Z., Olshansky, R.B., Marti, J., Gao, Y., Park, Y., McAuley, E., and Chodzko-Zajko, W., 2013. Agent-Based Modeling of Physical Activity Behavior and Environmental Correlations: An Introduction and Illustration. Journal of Physical Activity and Health, 10 (3), 309–322.
sessionInfo()
R version 4.0.4 (2021-02-15)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 10.16
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] grid stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] png_0.1-7
loaded via a namespace (and not attached):
[1] Rcpp_1.0.6 whisker_0.4 knitr_1.31 magrittr_2.0.1
[5] workflowr_1.6.2 here_1.0.1 R6_2.5.0 rlang_0.4.10
[9] fansi_0.4.2 highr_0.8 stringr_1.4.0 tools_4.0.4
[13] xfun_0.21 utf8_1.1.4 git2r_0.28.0 jquerylib_0.1.3
[17] htmltools_<IP_ADDRESS> ellipsis_0.3.1 rprojroot_2.0.2 yaml_2.2.1
[21] digest_0.6.27 tibble_3.1.0 lifecycle_1.0.0 crayon_1.4.1
[25] later_<IP_ADDRESS> sass_0.3.1 vctrs_0.3.6 promises_<IP_ADDRESS>
[29] fs_1.5.0 glue_1.4.2 evaluate_0.14 rmarkdown_2.7
[33] stringi_1.5.3 compiler_4.0.4 bslib_0.2.4 pillar_1.5.1
[37] jsonlite_1.7.2 httpuv_1.5.5 pkgconfig_2.0.3


dpkg9510's Repo
Open Cydia
Repo: https://dpkg9510.github.io/
Loading...
Description
Compatible with
Screenshots
Created by /u/dpkg_
Changelog
Buy me a coffee
Donate
Follow me
My GitHub
My Reddit
My Twitter
mg' © 2019


Bale named in Real Madrid squad after Wales banner controversy
by Sports DeskGareth Bale has been included in Real Madrid's squad for their LaLiga encounter with Real Sociedad despite the controversy caused by his celebrations after Wales' successful Euro 2020 qualification.
Wales booked their place at next year's finals with a 2-0 win over Hungary in Cardiff on Tuesday.
Bale, who has not played for Madrid since October 5, featured from the start for Ryan Giggs' side and was pictured after the match singing and dancing behind a banner that read: 'WALES. GOLF. MADRID…IN THAT ORDER'.
The slogan originates from a chant by Wales supporters that pokes fun at perceptions among the Spanish media, who have accused Bale of bumping Madrid down his list of priorities and spending too much time on the golf course.
Those celebrations drew further criticism from sections of the Madrid press and Los Blancos' fanbase, but Zidane – whose relationship with Bale has reportedly been a troubled one – claimed on Friday that the issue had been overblown.
Zidane has now included Bale in his squad for Saturday's clash with Sociedad, who would move above Madrid with a win at the Santiago Bernabeu.
Bale's inclusion comes at the expense of Vinicius Junior, with the teenage winger missing out on the 19-man selection.
Vinicius has made eight appearances in LaLiga this term, though only four of those have been starts.