It's also interesting that with the "falling factorial" definition, one doesn't need to think about what the value of "negative factorial." It just works when k > n.
It's also interesting that with the "falling factorial" definition, one doesn't need to think about what the value of "negative factorial." It just works when k > n.
TIL "falling factorial":
(n)_k = n(n-1)...(n-k+1)
It's interesting that n!/(n-k)! is very often seen (pick from n choices, then pick from n - 1 choices, etc), but I didn't know if it has a single notation.
en.wikipedia.org/wiki/Falling...
This is cool, but also means I need a Windows server to run it
Screenshot of the Forgejo web UI showing CI build and test jobs for a Rust project
Baby's first Forgejo actions pipeline. Can probably reduce my GitHub Actions usage substantially (the only use case not covered is for Windows runners)
In 1938 the first wireless newspaper was sent from WOR radio station in New York. Photo shows children reading the childrenβs page of a Missouri paper in an long paper stream coming from a machine
We think endlessly scrolling the timeline is new?
Here's a group of kids reading a wirelessly transmitted newspaper in 1938.
A wall of log entries showing "out of memory: killed process"
TIL that VS Code's SSH functionality maintains a node.js server at the remote, and the server eat 100% CPU power and RAM on my low-end VPS.
Source: web.evanchen.cc/textbooks/po...
A poster summarizing integrals across different dimensions, organized as a grid from left to right as 0d to 3d integrals, and different integrals on different function domains and codomains from top to bottom. The top row is about functions from R^1 to R, where "0D integral" is just evaluating the function, and the 1D integral is the simple single variable integral. The second row is about vector fields from R^2 to R^2, where the 1D integral is the work integral (line integral on tangent vector). The third row is about functions from R^2 to R. "0D integral" again is just evaluating the function. 1D integral is the line integral (on scalars), and 2D integral is the double/area integral. The fourth row is about functions from R^3 to R. "0D integral" is evaluating the function. The 1D integral here is still the line integral (on scalars). The 2D integral is the surface integral (on scalar). And the 3D integral is the triple/volumetric integral. The fifth row shows vector fields from R^3 to R^3, where the 1D integral is the work integral, and the 2D integral is the flux integral (surface integral on the normal vector). There are also extra red lines here showing the relationship of these integrals via the Stokes Theorem.
This is a pretty nice poster.
The integration of vector fields and the Stokes' theorem stuff took me a while to parse, but I'd really love it if someone had presented this information to me this way before.
#calculus
I've written a bunch of programming language related projects in the past, and are quite comfortable with this stuff. But if a learning resource dumps me with a BNF and hope me to magically understand the syntax of a new feature, I just can't, or at least it will take me more trouble than worth it.
My code looks like the following:
for (u32 i = 0; i < MAX_BOUNCE; ++i) {
bool hit_anything = << ray scene intersection >>
if not hit_anything {
<< update frame buffer >>
break;
}
<< scatter ray >>
}
// Oops. Forget to update framebuffer if the loop exited due to too many bounces
Fun "temporal" bug in my new path tracer project that only manifested when I set max bounces to a very low value (e.g., 3). Can you guess why?
A tabby cat wearing a medical cat cone tries to get rid of the cone, ending up with one front leg sticking out of the cone while the other remains inside
Timo cosplaying Buddhist monk
I also find it is nice to use indices. It can be smaller (32-bit) and can also be constructed on the CPU and directly uploaded to the GPU.
Nice! I've actually never used the intrusive-list approach; it is good to know.
Another useful representation is one pointer and one size, if all the children are continuous (which is often enough for hierarchies that don't need to change once built). For binary trees, even size can be omitted.
For instance, trying to match the pattern ^(a|ab)*c$ against the string abc results in an incorrect match, whereas simpler patterns seem to work perfectly fine. How can I be sure that the library is reliably handling these scenarios? Itβs incredibly frustrating to deal with this inconsistency, and I expect a response and fix for this issue promptly. Can we get some rigorous debugging on this? Itβs crucial for the integrity of the library that this functionality is solid. Users should not have to second guess the matching results based on regex complexity. If this is related to the underlying NFA implementation, it absolutely needs to be addressed right away β no exceptions. Please prioritize this fix as I need to know that I can rely on miniregex for any production-level projects. Waiting around for issues like this to be addressed is not feasible.
Sometimes it is hard to tell whether this is a human troll or the whole text is generated via LLM. Or maybe both.
For context: this is a personal project that I don't expect anyone to use. Nevertheless, what this person described is completely bogus
My "No Graphics API" blog post is live! Please repost :)
www.sebastianaaltonen.com/blog/no-grap...
I spend 1.5 years doing this. Full rewrite last summer and another partial rewrite last month. As Hemingway said: "First draft of everything is always shit".
I am currently using Librewolf, and it is pretty good (just as boring and unremarkable as a browser should be)
A piece of code, whose line is at line 106, and the following lines are blank
A piece of code starting from the line 1518, this is the code that should immediately follow the code in the previous image
Fluffy cat on keyboard
Just moved away from the keyboard for a minute. Meet the 1000x programmer who can write 1000+ lines in one minute
#cat
After all those years, I just can never remember the quotient rule and always derive it from the product rule whenever I need to use it
#calculus
Yeah. It is definitely more convenient to work only with 4x4 matrices, and no need to worry about alignment or converting to 4x4 matrices.
That said, those "3x4 matrices" are not really 3x4 matrices but rather 4x4 matrices with the last row always [0, 0, 0, 1], so they can still be inverted easily.
I've built a text adventure game engine on top of the C++ Standard. Why? I have no idea. But it's a learning tool with quests and time travel and artifacts and NPC's and XP and ... well, you just have to check it out!
cppevo.dev/adventure
It is interesting that many ray tracing APIs (such as Vulkan and OptiX) require 3x4 matrices (rather than 4x4) for affine transformations.
Makes me wonder about many usages of 4x4 matrices waste 16 bytes to always store [0, 0, 0, 1]
He rarely vocalize, so this is pretty rare moment to see and catch in video
In case you didn't notice, #WebGPU is most likely available in your browser now!
Cat vs Roomba.
Cat: 0 Roomba: 1
Eww. I just checked their website, and the all-man lineup looks suspicious. I donβt want to know the details, but I kind of regret this post now
New blog post: "Fifty Shades of OOP." Put in a surprising amount of research for this one!
lesleylai.info/en/fifty_sha...
This week, we will start reading a new book: "Digital Signals Theory"!
www.meetup.com/graphics-pro...
I am reluctant to watch this talk, and I am only watching it now as part of my research for a blog post. But it is actually really good, with (almost) no rants and a lot of historical deep dives.
youtu.be/wo84LFzx5nI?...
The Graphics Replicability Stamp Initiative (GRSI, www.replicabilitystamp.org), a community-driven initiative to promote replicability in Graphics research, is seeking volunteers.
More details in the 'Volunteering' section of the home page.