Tyler Morgan-Wall
banner
tylermw.com
Tyler Morgan-Wall
@tylermw.com
R, data science, dataviz, maps, experimental design, raytracing. Developer of rayshader, rayrender, and the rayverse | PhD in Physics from Johns Hopkins | Penn
I only mentioned HDR because the additional ~4 stops of dynamic range on HDR displays could make such a plot more interesting, especially if you split the "standard exposure" times by day/night. I've been working on a day/night atmospheric simulation package and using EXR output has been helpful.
January 6, 2026 at 4:29 PM
"If everyone is special, no one is." - The Incredibles

Left: macOS Tahoe
Right: imaginary macOS Tahoe where apple still cares about design
January 5, 2026 at 2:20 PM
The most amateur part is the consistency issues noted in the blog post: you can see clearly that some higher up decided everything needed to be an icon but didn't put bother first developing a topdown strategy to implement it, so it was all cobbled together at the working level.
January 5, 2026 at 2:18 PM
This blog post on the proliferation of icons in macOS Tahoe makes the decision clear: I'm never updating to this cluttered mess. Where did your aesthetic taste go, Apple? Yuck. 🤮

Left: Macintosh Human Interface Guidelines
Right: macOS Tahoe

Read the post:
tonsky.me/blog/tahoe-i...
January 5, 2026 at 2:18 PM
Help! I'm trying to write a blog post but I've fallen into the customizing-my-quarto-blog quicksand! The more I struggle to get out the deeper I sink! I've written more CSS for this R blog post than R!

#RStats #Quarto
December 31, 2025 at 3:30 AM
quiz: as a developer, you own the full stack to:

a) avoid supply chain attacks
b) ensure a minimum level of code quality
c) do whatever you want because YOU DON'T OWN ME!

anyway, it's critical that any atmospheric rendering library have a full font rendering pipeline for, uh, reasons

#RStats
December 8, 2025 at 5:02 AM
the big dippeR

(rendered right before dawn at 45,000 ft using a fisheye lens)

#RStats #rayrender
December 8, 2025 at 3:57 AM
The same time and place... but rendered at 30,000 ft

anyone who has ever suffered in economy on a redeye will recognize this view (stiff back and shitty coffee not included)
December 8, 2025 at 3:50 AM
apropos of nothing: using R to render a blue sky to post on bluesky

#RStats #rayrender
December 8, 2025 at 3:23 AM
me, elephant, logging into any social media feed in 2025

#AI
December 7, 2025 at 2:59 AM
these wicked cross-promotions are getting ridiculous #RStats
December 6, 2025 at 7:04 PM
R: the language that sets the gold standard for dataviz!

Anonymous user K. Midas says: "I love it!"

(from a cheeky #rayshader figure in an upcoming blog post about rendering 3D plots with "golden hour" lighting by generating synthetic sunsets, entirely in #RStats with #rayrender)
December 2, 2025 at 12:41 PM
Rayrender's extruded path primitive could generate something like this very easily!

www.rayrender.net/reference/ex...
November 27, 2025 at 5:44 PM
Was going through my video archives looking for something and laughed at this, thought I'd let Bluesky enjoy #RStats #rayshader
November 22, 2025 at 7:48 PM
Do you know it's been almost seven years since I released #rayrender, ranked for 6 years straight as the #1* pathtracer in #RStats? I went back to a blog post (www.tylermw.com/posts/rayver...) I wrote over six years and recreated some of the scenes, and it's fun seeing how far it's come!

*out of 1
November 22, 2025 at 1:31 AM
Set `shadow = FALSE` in plot_3d(), which will remove the ground. Then set `transparent_background = TRUE` in `render_highquality()`, which will ensure any rays that intersect with the background are marked as transparent. This also will give you softer, anti-aliased edges versus a hard mask.
November 18, 2025 at 3:53 PM
One thing I appreciate about {targets} is the robustness of the pipeline: if I need to stop a long, compute-intensive process to run something else (or, in this case, I resize a pane and make the IDE crash🤷‍♂️), I don't need to worry about corrupted state: just restart R and tar_make() away!

#RStats
November 17, 2025 at 2:11 PM
You can see the difference in the JFA by looking at the areas where the bonds and atoms intercept here in a molecule rendered with #raymolecule. The old method worked by placing an inverted mesh over the mesh, which results in issues where other meshes intersect (note the black lines on the bonds)
November 17, 2025 at 1:50 PM
You can generate these materials via the rayvertex package (available in #rayshader with `render_snapshot(software_render = TRUE)`: practically, these can be mixed and matched with other materials when you want to emphasize (via visual separation) some element of the scene. #Dataviz
November 17, 2025 at 1:50 PM
‼️ #rayverse package update: #rayvertex v0.14.0 released! This overhauls the toon shading algorithm to use a screen space jump fill algorithm (JFA), removing the brittle inverse mesh hack that existed up until now.

#RStats
November 17, 2025 at 1:50 PM
Guess I'm going to go get some coffee while this thing plots

#RStats #ggplot
November 14, 2025 at 3:05 PM
Oh thank god I finally fixed this rayshader 3D ggplot issue that has been bothering me for YEARS (thankfully before anyone called me out on it)

#RStats #rayshader
November 12, 2025 at 5:23 AM
Manhattanhenge: On May 28th/July 13th, the sun aligns with Manhattan's street grid 29° from N. This twice-a-year alignment of urban planning and orbital motion serves both as a temporal tourist attraction as well as a particular good test case for geospatial skymap alignment! #RStats #rayrender
November 9, 2025 at 10:49 PM
Rendering the peak of Mount Everest from sunrise to sunset in R with rayshader and rayrender

#RStats #rayrender #rayshader #rayverse
November 9, 2025 at 4:41 AM
1) Keeping the exposure the same as the dawn image at noon: yuck!

2) Adjusting the exposure down three stops with rayimage::render_exposure(): Nice!

#RStats #rayrender
November 8, 2025 at 4:20 AM