-
Notifications
You must be signed in to change notification settings - Fork 4
/
about.qmd
202 lines (160 loc) · 12.6 KB
/
about.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
---
title: "about"
subtitle: "a bit more about me, both inside and outside of my job"
title-block-banner: true
---
## {{< fa chalkboard-teacher title="A teacher at a chalkboard" >}} the profession
I'm the Data Training Coordinator at the [National Center for Ecological Analysis & Synthesis](https://www.nceas.ucsb.edu/) (NCEAS) and a lecturer at the [Bren School of Environmental Science & Management](https://bren.ucsb.edu/), both located at UC Santa Barbara, where I'm working to develop and teach data science training curricula for the [Master of Environmental Data Science](https://bren.ucsb.edu/masters-programs/master-environmental-data-science) (MEDS) program and other data science initiatives across NCEAS and UCSB. I am also a co-organizer of [R-Ladies Santa Barbara](https://www.meetup.com/rladies-santa-barbara/), a local data science group which works to promote gender diversity in the R community.
My background is in marine ecology / ecophysiology -- I had opportunities to study coral disease in Panama and the Florida Keys as an undergrad, then temperature effects on spiny lobster metabolism and foraging behavior in Santa Barbara for my Masters degree. Since the beginning of my time in STEM, I was totally terrified of all things data / coding / data science, but thanks to a super supportive community and some really rad colleagues / instructors, I found my new path in data science education and I absolutely *love* it.
:::{.column-margin}
```{r}
#| echo: false
#| fig-alt: "A classroom full of students face forward towards the instructor, who stands at a podium at the front of the room. Students have their laptops open on their desks. Three large TV screens are illuminated at the front of the classroom, displaying workshop materials."
knitr::include_graphics("images/teaching.jpeg")
```
::: {.center-text .extra-small-text .dark-gray-text .topbr}
Teaching MEDS students how to build their own personal websites using Quarto! This was especially fun for me, since Quarto was still such a new tool when I first gave this workshop -- it meant a lot of discovery and learning on-the-fly alongside our students.
:::
:::
I'm afforded a lot of flexibility in how I teach and what I teach. My focus is on developing and delivering workshop-style classes that supplement the [MEDS core curriculum](https://ucsb-meds.github.io/courses.html), though I'm now (as of Winter 2024) also teaching one of those core courses, [EDS 240: Data Visualization & Communication](https://eds-240-data-viz.github.io/) (I reflect on building and teaching EDS 240 in [this blog post](posts/2024-04-02-data-viz-course/index.qmd)). I teach primarily via live-coding (where my computer is hooked up to a screen for participants to see and hear me talk through code in real time as they follow along on their own computers) -- this teaching style was invaluable in my own development as a data scientist, and I really believe that, when done well, live-coding can be a game-changing experience for early-career programmers. I am always looking for new ways to make my teaching style and materials more approachable and inclusive for all learners -- I try to build my content to be stand-alone resources, both for participants to refer back to and also for those learning on their own time. Feel free to check out / reuse / recycle any of my [workshop](talks_workshops.qmd) and [course](courses.qmd) materials.
## {{< fa hiking title="A person with a backpack and trekking pole" >}} the hobby
I feel very fortunate to be doing so many of things that I love *a lot* right now. That includes my job, but also spending lots of time outdoors. Living in Santa Barbara is a massive privilege and being here means that we have access to both the mountains and the sea, each a few minutes in either direction. It was the ocean that brought me here originally, but most of my free time is now spent on the trails.
:::{.column-margin}
```{r}
#| echo: false
#| fig-alt: "A smiling woman with braiding pigtails, a blue bandana tied around her neck, and a blue hiking backback takes a selfie with a brown dog. The dog is looking towards the camera with it's tongue out. There are mountains in the background."
knitr::include_graphics("images/tallie.jpeg")
```
::: {.center-text .extra-small-text .dark-gray-text .topbr}
My right-hand hiking gal, Tallie (aka Bean aka TunaB aka SweetCheeks).
:::
:::
I started recording my hikes (and eventually some other activities) on [Strava](https://www.strava.com/) in late 2020 and finally got around to retrieving my activity data using the [`{rStrava}`](https://github.com/fawda123/rStrava) package. Below is a heatmap of all my recorded activities made using [`{leaflet}`](https://rstudio.github.io/leaflet/). It's challenging to see individual markers at my most frequented trailheads / starting points (toggle markers on using the layer controls in the top right corner), so I've recently began building out my own Strava Dashboard (using [`{shinydashboard}`](https://rstudio.github.io/shinydashboard/)) to make it a bit more interactive and filterable -- it's a work in progress, but a fun side project that I'm excited to continue iterating upon. Huge shout out to [Daniel Cullen](https://www.dancullen.me/) for his awesome [blog post](https://www.dancullen.me/articles/creating-a-heatmap-in-r-with-google-polylines) that got me started with my own map.
```{r}
#| eval: true
#| echo: false
#| warning: false
#| message: false
#| fig-align: "center"
#| out-width: "100%"
#..........................load packages.........................
library(rStrava)
library(tidyverse)
library(leaflet)
library(googleway)
library(htmlwidgets)
library(htmltools)
library(aws.s3)
#......................read in data from S3......................
acts <- s3readRDS(object = "wrangled_activities.rds",
bucket = "sams-strava-dashboard-data")
#...................create subsets by activity...................
hike_data <- acts %>% filter(sport_type == "Hike")
ride_data <- acts %>% filter(sport_type %in% c("Ride", "GravelRide"))
walk_data <- acts %>% filter(sport_type == "Walk")
#........................make custom icons.......................
hiker_icon_custom <- makeIcon(
iconUrl = "images/hiker.png",
iconWidth = 20, iconHeight = 20
)
bike_icon_custom <- makeIcon(
iconUrl = "images/bike.png",
iconWidth = 22, iconHeight = 25
)
walk_icon_custom <- makeIcon(
iconUrl = "images/walker.png",
iconWidth = 13, iconHeight = 18
)
#........................create base map.........................
map <- leaflet() %>%
# add tiles ----
addProviderTiles(providers$Esri.WorldTerrain, group = "ESRI Terrain",
options = providerTileOptions(maxZoom = 100)) |>
# add miniMap (corner) ----
addMiniMap(toggleDisplay = TRUE) |>
# set view over Santa Barbara ----
setView(lng = -119.753042, lat = 34.484782, zoom = 10) |>
# add clickable hiker markers with info about each hike ----
addMarkers(data = hike_data, icon = hiker_icon_custom,
group = "Display Hike Icons",
lng = ~jitter(lng, factor = 0.01), lat = ~jitter(lat, factor = 0.01),
popup = paste("Hike Title:", hike_data$name, "<br>",
"Distance (miles):", hike_data$total_miles, "<br>",
"Elevation gain (ft):", hike_data$elevation_gain_ft)) |>
# add clickable bike markers with info about each ride ----
addMarkers(data = ride_data, icon = bike_icon_custom,
group = "Display Bike Ride Icons",
lng = ~jitter(lng, factor = 0.01), lat = ~jitter(lat, factor = 0.01),
popup = paste("Ride Title:", ride_data$name, "<br>",
"Distance (miles):", ride_data$total_miles, "<br>",
"Elevation gain (ft):", ride_data$elevation_gain_ft)) |>
# add clickable walker markers with info about each walk ----
addMarkers(data = walk_data, icon = walk_icon_custom,
group = "Display Walk Icons",
lng = ~jitter(lng, factor = 0.01), lat = ~jitter(lat, factor = 0.01),
popup = paste("Walk Title:", walk_data$name, "<br>",
"Distance (miles):", walk_data$total_miles, "<br>",
"Elevation gain (ft):", walk_data$elevation_gain_ft)) |>
# allow for toggling makers on/off ----
addLayersControl(
overlayGroups = c("Display Hike Icons", "Display Bike Ride Icons", "Display Walk Icons"),
options = layersControlOptions(collapsed = TRUE)
) |>
# hide all three groups icons by default ----
hideGroup(c("Display Hike Icons", "Display Bike Ride Icons", "Display Walk Icons")) |>
# add heatmap legend ----
addLegend(colors = c("#b35702", "#744082", "#366643"),
labels = c("Hike", "Ride", "Walk"),
position = "bottomleft") |>
# add reset map button ----
leaflet.extras::addResetMapButton()
#....................get unique activity ids.....................
unique_acts_ids <- unique(acts$id)
#.............iterate over activities and add to map.............
for (i in unique_acts_ids) {
# 1) get activity
activity <- filter(acts, id == i)
# 2) decode polyline
coords <- googleway::decode_pl(activity$map.summary_polyline)
#3) plot activity trace on basemap; color-code according to activity type
if (activity$sport_type %in% c("Ride", "GravelRide")) {
map <- addPolylines(map, lng = coords$lon, lat = coords$lat,
color = "#744082", opacity = 2/4, weight = 2) #070A8D (tried cb-friendly; not great on map though #3D0C02)
} else if (activity$sport_type == "Hike") {
map <- addPolylines(map, lng = coords$lon, lat = coords$lat,
color = "#b35702", opacity = 2/4, weight = 2) #DF0101 #b35702
} else if (activity$sport_type == "Walk") {
map <- addPolylines(map, lng = coords$lon, lat = coords$lat,
color = "#366643", opacity = 2/4, weight = 2) #0F9020 (tried cb-friendly; not graet on map though #114C54)
}
}
#............................print map...........................
map
```
<br>
<!-- <iframe id="map-size" src = "images/leaflet_2024-09-05.html"></iframe> -->
<!-- ::: {.gray-italic .center-text} -->
<!-- Map last updated: September 2024 -->
<!-- ::: -->
<p class="large-text dark-green-bg center-text">{{< fa arrow-pointer >}} For a more interactive experience, click around my [Strava dashboard](https://samanthacsik.shinyapps.io/strava_dashboard/) <br> {{< fa brands github >}} Source code available on [GitHub](https://github.com/samanthacsik/strava-dashboard)</p>
<!-- NOTE: large space between last line of text and bottom of gray background when using quarto syntax, so sticking with HTML syntax above -->
## {{< fa egg title="An egg" >}} the logo
I'm a proud Csik (pronounced "chick" -- Hungarian, for the curious), though I spent many of my younger years embarrassed when people (understandably) got it wrong (variations include "sea-sick," "sick," "ca-sick," to name a few) -- and many of us know how brutal little kid peers can be when there's a funny way to mispronounce a name. At some point, I learned to embrace the weird and it became very much a part of my everyday identity. My track coaches and teammates would shout "LET'S GO CSIK" during my events at meets, I signed year books as "Sam [drawing of a chick]" and every handmade card received my "The Csik Press" identifying mark on the back. As I've grown older, I've taken more care to help colleagues, peers, and strangers learn the correct pronunciation -- because if I'm being totally honest, I think my name is pretty darn cool `r fontawesome::fa("smile-wink", fill = "#64605F", a11y = "sem")`. So my first ever *real* logo is an homage to my earliest attempts at claiming my Csik identity. It may evolve a bit, but for now, it makes me pretty happy. Made using the (free!) [Adobe Express logo maker](https://www.adobe.com/express/create/logo).
:::{.column-margin}
```{r}
#| echo: false
#| fig-alt: "The back of a handmade card made of construction paper. A yellow chick with an orange beak holds an 'S'-shaped worm in its beak. It sits on top of the text, 'The Csik Press'. Below this, the year '2010' is written in pen."
knitr::include_graphics("images/the_csik_press.jpeg")
```
::: {.center-text .extra-small-text .dark-gray-text .topbr}
The back of a handmade birthday card by yours truly (aka 'The Csik Press'). Thanks, Mom, for sending me pics of these decade+ old treasures whenever you come across them. Artist: Sam Csik. Medium: construction paper, Elmer's glue. Date: 2010 (apparently).
:::
:::
```{r}
#| echo: false
#| fig-align: center
#| fig-width: 5
#| fig-height: 3
#| fig-alt: "The name, 'sam csik' in white lettering. Above 'csik' sits a horizontal dark green bar. Above the green bar is a white chick."
knitr::include_graphics("images/logos/logo-light.png")
```