David Schoch's Avatar

David Schoch

@schochastics.net

Data Scientist/DevOps Engineer at cynkra | #Rstats enthusiast https://mr.schochastics.net

538
Followers
136
Following
26
Posts
15.09.2023
Joined
Posts Following

Latest posts by David Schoch @schochastics.net

yes, the package {{ids}}

05.08.2025 12:45 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Output of dex_sentence function.
"Elegant shellder uses wrap greedily"             
"Well-documented golbat uses lovely kiss sedately"
"Old-fashioned gyarados uses disable cautiously"  
"Impressionable gastly uses lovely kiss scarily"  
"Tidy graveler uses amnesia questionably"

Output of dex_sentence function. "Elegant shellder uses wrap greedily" "Well-documented golbat uses lovely kiss sedately" "Old-fashioned gyarados uses disable cautiously" "Impressionable gastly uses lovely kiss scarily" "Tidy graveler uses amnesia questionably"

Output of dexid function
"heavenly_tangela"   "bite-sized_krabby" 
"frizzy_machamp"     "impeccable_diglett"
"firm_spearow"       "delightful_ditto"  
"complete_golem"     "weary_pidgeot"     
"winged_bellsprout"  "realistic_machop"

Output of dexid function "heavenly_tangela" "bite-sized_krabby" "frizzy_machamp" "impeccable_diglett" "firm_spearow" "delightful_ditto" "complete_golem" "weary_pidgeot" "winged_bellsprout" "realistic_machop"

Hex sticker of the R package dexid with showing a non existing pokemon that looks like a cross breed of charmander and eevee

Hex sticker of the R package dexid with showing a non existing pokemon that looks like a cross breed of charmander and eevee

If you are in need of memorable/human readable uuids, may I suggest {{dexid}}, an #rstats package that creates ids from adjectives and pokemons? πŸ˜€

05.08.2025 07:34 πŸ‘ 22 πŸ” 3 πŸ’¬ 1 πŸ“Œ 0
Video thumbnail

We are currently developing a new interactive network viz package based on the JS engine G6. So many cool features to come! Checkout the current status on github github.com/cynkra/g6r #rstats

06.06.2025 09:38 πŸ‘ 22 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
R Consortium Awards First Round of 2025 ISC Grants – R Consortium The R Consortium’s Infrastructure Steering Committee (ISC) is proud to announce the first round of 2025 grant recipients. These seven projects are receiving support to enhance and expand the capabilit...

Super grateful to have received an R Consortium grant to keep working on improving igraph! Our goal is to work on the interface between the c core and the r package. To date it is still too tedious to integrate new features seamlessly. r-consortium.org/posts/r-cons... #rstats cc @masalmon.eu

03.06.2025 16:48 πŸ‘ 25 πŸ” 5 πŸ’¬ 2 πŸ“Œ 0
A simple plumber api that reads and writes parquet files:

# plumber.R
library(plumber)
library(nanoparquet) # To read Parquet files

#* @apiTitle Parquet File Upload API

#* Upload a Parquet file
#* @param req:file The request object
#* @post /upload_parquet
function(req) {
  # Access the uploaded file from the request
  multipart <- mime::parse_multipart(req)
  fp <- multipart$file$datapath
  data <- nanoparquet::read_parquet(fp)

  resp <- data.frame(
    status = "success",
    n_rows = nrow(data),
    n_cols = ncol(data),
    columns = names(data)
  )

  tmp <- tempfile(fileext = "parquet")
  nanoparquet::write_parquet(resp, tmp)
  on.exit(unlink(tmp))

  readBin(tmp, "raw", n = file.info(tmp)$size)
}

A simple plumber api that reads and writes parquet files: # plumber.R library(plumber) library(nanoparquet) # To read Parquet files #* @apiTitle Parquet File Upload API #* Upload a Parquet file #* @param req:file The request object #* @post /upload_parquet function(req) { # Access the uploaded file from the request multipart <- mime::parse_multipart(req) fp <- multipart$file$datapath data <- nanoparquet::read_parquet(fp) resp <- data.frame( status = "success", n_rows = nrow(data), n_cols = ncol(data), columns = names(data) ) tmp <- tempfile(fileext = "parquet") nanoparquet::write_parquet(resp, tmp) on.exit(unlink(tmp)) readBin(tmp, "raw", n = file.info(tmp)$size) }

#Rstats hivemind: what is the correct way for a plumber API to read/write parquet files? I did not get `parser_parquet()` to work properly (and would rather have nanoparquet anyway) so this kind of works but I am unsure if thats ok πŸ™ˆ

29.04.2025 14:03 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Merging an 8 year old PR must be some sort of record πŸ˜…
github.com/igraph/rigra...
@gvegayon.bsky.social sorry it took so long πŸ˜€

03.04.2025 10:42 πŸ‘ 4 πŸ” 1 πŸ’¬ 2 πŸ“Œ 1

yieks sorry that got eaten by the char limit:
github.com/cynkra/rchro...

28.03.2025 20:27 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Post image

New version of rchroma is now available! The #Rstats pkg wraps the API of ChromaDB, an open-source AI-native database that makes it easy to store, search, and retrieve vector embeddings alongside metadata. Perfect for building RAGs!

It is now much easier to run the container and save db tables.

28.03.2025 19:00 πŸ‘ 6 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Setting up igraph for success in the next decade – cynkra blog

New post on the cynkra blog with @schochastics.net & Kirill MΓΌller

"Setting up igraph for success in the next decade" ✨

Thanks to the R Consortium for supporting this project!

blog.cynkra.com/posts/2025-0...

#RStats

18.03.2025 06:06 πŸ‘ 9 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0
A practical benchmark of duckplyr – schochastics - all things R A blog about RStats by David Schoch

It is not a rigorous benchmark, but I was curious on how #duckdb duckplyr compares to other data wrangling packages in #Rstats. Turns out, it is pretty pretty fast πŸš€.

blog post: blog.schochastics.net/posts/2025-0...

10.03.2025 21:16 πŸ‘ 18 πŸ” 3 πŸ’¬ 2 πŸ“Œ 0
Improving igraph interface: current deprecations

If you're an #RStats {igraph} user, please update your codebase according to deprecation messages. We try to make changes for the best. πŸ˜‰

r.igraph.org/articles/cur...

cc @schochastics.net

28.02.2025 14:34 πŸ‘ 6 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0
screenshot of a document that contains links processed by url-peek

screenshot of a document that contains links processed by url-peek

Not sure if this already exist, but I created a #quartopub filter which adds a domain preview to each link in a quarto html document. Might come in handy for accessibility.

πŸ“¦ github.com/schochastics...

#rstats

18.02.2025 20:36 πŸ‘ 5 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0
Hex sticker of the R package rchroma showing a stylized icon of a database in chroma colors

Hex sticker of the R package rchroma showing a stylized icon of a database in chroma colors

@christophsax.bsky.social and I wrote an #rstats package for ChromaDB which is now available on CRANπŸŽ‰πŸŽ‰πŸŽ‰

ChromaDB is an open-source vector database designed for efficient similarity searchβ€”great for working with LLM applications like RAGs!

πŸ“¦ github.com/cynkra/rchro...

13.02.2025 19:07 πŸ‘ 8 πŸ” 2 πŸ’¬ 0 πŸ“Œ 1
Hex logo of the R package paperwizard showing a pixely wizard holding a newspaper

Hex logo of the R package paperwizard showing a pixely wizard holding a newspaper

Here is the result of one of my last academic endeavors: Paperwizard, an #rstats package to extract readable content (such as news articles) from webpages using Readability.js

πŸ“¦ github.com/schochastics...
πŸ“ blog.schochastics.net/posts/2025-0...

12.02.2025 11:11 πŸ‘ 30 πŸ” 14 πŸ’¬ 1 πŸ“Œ 1
Creating data frames in Rust for R – schochastics - all things R A blog about RStats by David Schoch

Continuing the #Rust exploration in #RStats. Of course there is (r)polars to work with data frames in Rust but I was interested in how to create data frames "from scratch". Thanks to macros, it is actually pretty simpleπŸ™‚

blog.schochastics.net/posts/2025-0...

31.01.2025 08:22 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Rust in R beyond vectors – schochastics - all things R A blog about RStats by David Schoch

Getting back on the #Rust train and how to use it in #RStats.
Currently I am trying to understand how to work with non-vector inputs and returns. I wrote down some experiments in a blog post
blog.schochastics.net/posts/2025-0...

30.01.2025 06:26 πŸ‘ 16 πŸ” 8 πŸ’¬ 0 πŸ“Œ 0
Preview
a cat is sitting in front of a laptop computer on a couch . ALT: a cat is sitting in front of a laptop computer on a couch .

Hey, #sna ppl! Submit your abstracts to Sunbelt 2025's "Tools and Data for Social Network Analysis" in Paris sunbelt2025.org (by Feb 20). We look for demos, sharing dev experiences, case studies, intros to SNA datasets, and more!
@schochastics.net
@franktakes.bsky.social
@zpneal.bsky.social

29.01.2025 17:29 πŸ‘ 2 πŸ” 3 πŸ’¬ 1 πŸ“Œ 0
Screenshot of my profile with new job title: Data Scientist/DevOps Engineer at cynkra

Screenshot of my profile with new job title: Data Scientist/DevOps Engineer at cynkra

New Year, new career. Yesterday was my last day as an academic. Now it is time for the "Real World".

01.01.2025 19:49 πŸ‘ 7 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
A dashboard showing stats on my GitHub usage in 2024
Total Contributions: 1155
Repositories created: 37
Issues opened: 66
Pull requests: 36
Stargazed: 22

longest streak:79 days
longest gap: 6 days
active days: 239

Weekday: most contributions where made on a Monday (least on Saturday).
Months: Most contributions were made in February (least in May)

A dashboard showing stats on my GitHub usage in 2024 Total Contributions: 1155 Repositories created: 37 Issues opened: 66 Pull requests: 36 Stargazed: 22 longest streak:79 days longest gap: 6 days active days: 239 Weekday: most contributions where made on a Monday (least on Saturday). Months: Most contributions were made in February (least in May)

Last year December I created my first #QuartoPub dashboard for a "GitHub Wrapped". Still works like a charm 😁 #rstats

github.com/schochastics...

09.12.2024 19:07 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
code can be found here: https://github.com/schochastics/adventofcode/blob/main/2024/day07.R

code can be found here: https://github.com/schochastics/adventofcode/blob/main/2024/day07.R

#AdventofCode Day 07 in #Rstats
Yes this was again solvable with eval parse. Was that efficient? hell no! but doing left to right execution by inserting parentheses in a string is a 9000IQ move, I'd say

08.12.2024 19:27 πŸ‘ 7 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Rstats solution for Advent of code day 4. Code can be found here: https://github.com/schochastics/adventofcode/blob/main/2024/day04.R

Rstats solution for Advent of code day 4. Code can be found here: https://github.com/schochastics/adventofcode/blob/main/2024/day04.R

#AdventofCode Day 04 in #Rstats

04.12.2024 09:03 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Me leaving has nothing to do with the position I had, but just with academia in general. I am tired of it. Now it is time for a completely new chapter and I am super excited that this new chapter is gonna be full time #rstats at cynkra 😍 (2/2)

03.12.2024 19:28 πŸ‘ 7 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Senior Researcher & Team Lead for Transparent Social Analytics and Open Science GESIS – Leibniz-Institute for the Social Sciences is an internationally active research institute, funded by federal and state governments and member of the Leibniz Association. Starting as soon as po...

Not sure how many #academics are following me here, but here is a great opportunity to lead an awesome team of people in CSS at GESIS.

This is actually my position, because I will be leaving academia at the end of the year (1/2)

03.12.2024 19:28 πŸ‘ 20 πŸ” 10 πŸ’¬ 1 πŸ“Œ 1
AdventOfCode Day 03 Solution with RStats
input <- paste0(readLines("input03.txt"), collapse = "")
mul <- `*`

mul_str <- unlist(stringr::str_extract_all(input, "mul\\([0-9]+,[0-9]+\\)"))
sum(vapply(mul_str, \(x) eval(parse(text = x)), numeric(1)))

input <- paste0("do()", input, "don't()")
matches <- paste0(stringr::str_extract_all(input, "(?<=do\\(\\))(.*?)(?=don't\\(\\))")[[1]], collapse = "")
mul_str <- unlist(stringr::str_extract_all(matches, "mul\\([0-9]+,[0-9]+\\)"))
sum(vapply(mul_str, \(x) eval(parse(text = x)), numeric(1)))

AdventOfCode Day 03 Solution with RStats input <- paste0(readLines("input03.txt"), collapse = "") mul <- `*` mul_str <- unlist(stringr::str_extract_all(input, "mul\\([0-9]+,[0-9]+\\)")) sum(vapply(mul_str, \(x) eval(parse(text = x)), numeric(1))) input <- paste0("do()", input, "don't()") matches <- paste0(stringr::str_extract_all(input, "(?<=do\\(\\))(.*?)(?=don't\\(\\))")[[1]], collapse = "") mul_str <- unlist(stringr::str_extract_all(matches, "mul\\([0-9]+,[0-9]+\\)")) sum(vapply(mul_str, \(x) eval(parse(text = x)), numeric(1)))

Starting #AdventOfCode on Day 03 with #RStats πŸ™‚
I think it took me like a second to scream EVAL PARSE!!!
One of my favorite concepts in R πŸ˜†

(my solutions can be found here: github.com/schochastics...)

03.12.2024 10:09 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
GitHub - schochastics/quarto-social-share: Quarto Extension that adds buttons to share on social media Quarto Extension that adds buttons to share on social media - schochastics/quarto-social-share

The #QuartoPub extension to add "share on social media" buttons now also supports bluesky πŸŽ‰ #rstats

link: github.com/schochastics...

19.11.2024 21:23 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
The Bundeslig League table after 10 games with a retro look created with the R package gt

The Bundeslig League table after 10 games with a retro look created with the R package gt

I tried to get a hang gt for so long and now I finally sat down and did it. It always felt cumbersome to me but I have to say it is quite easy to use once you get into it #Rstats

πŸ“œ writeup blog.schochastics.net/posts/2024-1...

18.11.2024 06:38 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Hello #rstats, giving this side another tryπŸ€—. To kick it off, here is a great fashion item. A t shirt made out of more than 2000 hexstickers πŸ˜…

here is the making of and how you can make one yourself: blog.schochastics.net/posts/2024-1...

29.10.2024 19:40 πŸ‘ 51 πŸ” 6 πŸ’¬ 2 πŸ“Œ 2

Excited to announce the book project "R 4 Social Network Analysis". @termehs.bsky.social and I decided to write an open access introductory book for conducting Social Network Analysis in #Rstats.
Blog Post: blog.schochastics.net/posts/2024-0...
book (WIP): schochastics.github.io/R4SNA/

04.04.2024 20:22 πŸ‘ 4 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0
Preview
Data Imaginist - A bunch of giraffes, all bundled up ggraph 2.2.0 has been released. This was definitely not supposed to be a feature release, yet here we are…

ggraph 2.2.0 is outπŸŽ‰πŸŽ‰

Now with stronger support for spatial networks and various edge bundling techniques #rstats

28.02.2024 07:14 πŸ‘ 32 πŸ” 10 πŸ’¬ 0 πŸ“Œ 0

Let some science communication be my first post here:
New paper out on my evergreen topic network centrality with @termehs.bsky.social

We assess how tough it is to reliably explain correlations among indices.

www.sciencedirect.com/science/arti...

#networkscience

07.12.2023 19:56 πŸ‘ 3 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0