@ameo@mastodon.ameo.dev
@ameo@mastodon.ameo.dev avatar

ameo

@ameo@mastodon.ameo.dev

Programmer, primarily.

Variety of interests, but especially #webassembly #webaudio #data #machinelearning #music #synthesizer #simd #rustlang

Building a browser-based audio synthesis platform: https://github.com/ameobea/web-synth

Built the (previously) popular site https://robintrack.net/

Living in Seattle, WA, USA

He/Him

For https://fediverse.info : #fedi22

This profile is from a federated server and may be incomplete. Browse more on the original instance.

ameo, to rust
@ameo@mastodon.ameo.dev avatar

Just put out a new blog post:

https://cprimozic.net/blog/trying-out-cloudflare-foundations-library/

foundations is a very useful, incrementally adoptable library for Rust services. Includes a bunch of features like logging, metrics recording, CLI + settings

I'll be using it in all my Rust services going forward

ameo, to random
@ameo@mastodon.ameo.dev avatar

I finally set up a Prometheus + Grafana instance on my personal server to monitor my services + projects. It was surprisingly easy to set up

I've been adding some hand-crafted metrics to various applications - they're very pleasant to look at

I've been using the Rust foundations crate to produce the metrics and it even has deep integration with Tokio to expose very low-level stats about the async runtime itself

ameo, to random
@ameo@mastodon.ameo.dev avatar

I've wrote about some very weird fake traffic that's been getting submitted to my homepage's Plausible analytics over the past month:

https://cprimozic.net/notes/posts/investigating-strange-artificial-plausible-analytics-events/

I'm extremely curious about what's going on. It really seems like very intentionally sent, targeted requests with the purpose of artificially boosting my analytics stats for the site; no scraping or other usual bot activity

I have no idea why anyone would want to do that though

ameo, to svelte
@ameo@mastodon.ameo.dev avatar

Svelte/Sveltekit are still hands down my favorite way to build web apps in 2024

It feels like they took the best patterns developed over a decade of React and built a framework with them as the core principles

#svelte #sveltekit #react #webdev

ameo, to random
@ameo@mastodon.ameo.dev avatar

@i32 wanted to let you know that your rust playground at https://play.integer32.com/ has been down for quite a while

Seeing errors about content length mismatch in the console

ameo, to random
@ameo@mastodon.ameo.dev avatar

I tried out "Auto Wiki" from
mutable.ai on my web synth project: https://wiki.mutable.ai/ameobea/web-synth

It uses LLMs to scan a full Github repo and generate a wiki-styled docs/summary page

There are some issues and incorrect bits, but largely it did a pretty good job. Very cool project!

ameo, to random
@ameo@mastodon.ameo.dev avatar

Showing off the kinds of modulation that web synth can do

It can modulate parameters at audio rate with arbitrarily complex patterns. Tied to playback system, so it supports live tempo changes as well

Now that MIDI events are produced and consumed directly on the audio thread as well, it allows for some very tight and sophisticated control

Screen recording of browser-based DAW playing back a short MIDI composition. The composition consists of a super-saw -esque synth playing a chord progression. The screen shows the MIDI editor fiew which shows the MIDI notes above and an envelope generator that looks like a line plot below. There is a lowpass filter which is controlled by this envelope and the cutoff of the filter changes according to the height of the envelope during playback.

froyok, (edited ) to random
@froyok@mastodon.gamedev.place avatar

I finally figured out a way to do a capture of Syndicate ! YESSS ! 😍

EDIT: This is now a thread to present what a found out about the game rendering pipeline. 🧵

ameo,
@ameo@mastodon.ameo.dev avatar

@froyok I think you're right about it being a depth pre-pass.

I've seen these kinds of gradients before when analyzing WebGL shaders. I believe they come from a depth packing scheme designed to boost precision.

Little side-by-side comparison I produced during my own digging here https://cprimozic.net/blog/depth-based-fragment-culling-webgl/#threejs-implementation

ameo, to random
@ameo@mastodon.ameo.dev avatar

I created a little remind CLI application ~5 years ago that sends me an email via sendgrid at a specified time

One of the most useful personal utilities I ever created; I use it all the time

Sometimes I send reminders to myself years into the future. I added a flag to include the date it was scheduled; fun to receive little messages from past self

ameo, to random
@ameo@mastodon.ameo.dev avatar

In 2023, I've hit 8,085,569 keys, clicked 5,013,758 times, and had my computer on for 46 weeks and 3 days. Check out my full @WhatPulse review! https://whatpulse.org/yearly-recap/643677?utm_source=email&utm_medium=email&utm_campaign=2023-review?utm_source=mastodon&utm_medium=social&utm_campaign=2023-review

ameo, to threejs
@ameo@mastodon.ameo.dev avatar
ameo, to random
@ameo@mastodon.ameo.dev avatar

I've been completely spoiled by for frontend dev/bundling; hard to imagine working without it at this point

I can't believe the horror I used to put up with webpack, babel, uglifyjs, and all of that

ameo, to threejs
@ameo@mastodon.ameo.dev avatar

Working on my #volumetric shader for #threejs in #webgl which now can make some pretty cool looking clouds. All derived from sampling a 64x64x64 3D white noise texture

It's not actually doing any lighting currently; the color is derived solely from density

Perf is OK but needs a bit of improvement; I have some ideas for that

Recording of a browser window showing a scene above some volumetric clouds with a bright blue partly cloudly skybox above. The clouds are moving across the scene as if being blown by the wind. The clouds have light parts on top as if lit by sunlight with darker patches on the sides and lower down. There are some hovering dark stone-like pylons around the scene as well.

ameo, to threejs
@ameo@mastodon.ameo.dev avatar
ameo, to threejs
@ameo@mastodon.ameo.dev avatar

I created a pretty detailed writeup on how I created that realistic raindrop-covered window material in I was posting last week:

https://cprimozic.net/notes/posts/building-realistic-rainy-window-pane-in-threejs/

I'm still impressed with Three.JS's built-in transmission support. Very high-quality results with only a tiny bit of code at the end of it all

ameo, to threejs
@ameo@mastodon.ameo.dev avatar

One more glamour shot of the rainy transmissive windows for the scene I'm working on in

ameo, to threejs
@ameo@mastodon.ameo.dev avatar
ameo, to threejs
@ameo@mastodon.ameo.dev avatar

I've not posted in a little bit, but I've still been working on my game-esque stuff

I'm working on finishing up a scene I started last year - a rainy concrete area heavily inspired by the "Rainy Apartments" level from a game called Yume 2kki: https://yume.wiki/2kki/Rainy_Apartments

Lots of complex postprocessing for things like depth of field/bokeh, custom fog. Also working on some special audio to handle transitioning the rain sfx when moving in/out of areas

ameo, to random
@ameo@mastodon.ameo.dev avatar

@stefan I'm a fan of your skies bot and it's nice seeing the images in my feed. However, it posts a bit too regularly in my opinion and kind of takes over my feed. I think maybe every 2 or 4 hours would be a better post frequency, for me at least.

ameo,
@ameo@mastodon.ameo.dev avatar

@stefan Thanks for making it!!

ameo, to random
@ameo@mastodon.ameo.dev avatar

Finished up a new blog post over the weekend for some 3D work I've been doing

https://cprimozic.net/blog/wrapping-meshes-with-geodesic-walks/

Figuring out an algorithm to map a 2D mesh onto the surface of an arbitrary 3D mesh, and then extrude it into 3D itself

ameo, to vscode
@ameo@mastodon.ameo.dev avatar

Woah - I just realized I can use the side buttons on my mouse to jump forward/backward in (previously I used ctrl-alt--/ctrl-alt-+ to do this)

I think I'll actually remember and use this one. I use that functionality a lot

ameo, to random
@ameo@mastodon.ameo.dev avatar

I came across the csg.js library (https://github.com/evanw/csg.js) by @evanw recently, and it's a stunning example of well-written, easy to understand, and concise code.

It implements a full suite of algorithms for boolean operations between 3D solids in <600 lines of highly commented (with ascii diagrams and everything) JavaScript in a single file.

It's a beautiful gem of a library, and it helped me understand the concepts themselves very well.

ameo, to random
@ameo@mastodon.ameo.dev avatar

Several notes I've published recently:

Investigating Hill Noise for Terrain Generation - https://cprimozic.net/notes/posts/investigating-hill-noise-for-terrain-generation/

amdgpu_top - A Modern radeontop Alternative - https://cprimozic.net/notes/posts/amdgpu_top-a-modern-radeontop-alternative/

Building RNN Architecture Visualizations with TikZ - https://cprimozic.net/notes/posts/building-rnn-architecture-visualizations-with-tikz/

ameo, to threejs
@ameo@mastodon.ameo.dev avatar

I've been trying out the idea of recording some videos going over the levels and features I build as I work on my game engine stuff

Here's one I recorded going over a cave level I created recently:

https://www.youtube.com/watch?v=RcKy8Fi31pE

It's "semi-procedural", using a combination of hand-modelling/texturing and procedural methods

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • Durango
  • magazineikmin
  • cubers
  • thenastyranch
  • Youngstown
  • slotface
  • osvaldo12
  • khanakhh
  • mdbf
  • rosin
  • kavyap
  • InstantRegret
  • DreamBathrooms
  • lostlight
  • Backrooms
  • normalnudes
  • modclub
  • GTA5RPClips
  • ethstaker
  • everett
  • tacticalgear
  • cisconetworking
  • provamag3
  • anitta
  • Leos
  • tester
  • provamag4
  • All magazines