Tux Machines
Posted by Roy Schestowitz on Jun 25, 2023
=> Free, Libre, and Open Source Software Leftovers | Postgres Events: Post and Present
=> ↺ Time is not a synchronization primitive
Programming is so complicated. I know this is an example of the nostalgia paradox in action, but it easily feels like everything has gotten so much more complicated over the course of my career. One of the biggest things that is really complicated is the fact that working with other people is always super complicated.
One of the axioms you end up working with is "assume best intent". This has sometimes been used as a dog-whistle to defend pathological behavior; but really there is a good idea at the core of this: everyone is really trying to do the best that they can given their limited time and energy and it's usually better to start from the position of "the system that allowed this failure to happen is the thing that must be fixed".
However, we work with other people and this can result in things that can troll you on accident. One of the biggest sources of friction is when people end up creating tests that can fail for no reason. To make this even more fun, this will end up breaking people's trust in CI systems. This lack of trust trains people that it's okay for CI to fail because sometimes it's not your fault. This leads to hacks like the flaky attribute on python where it will ignore test failures. Or even worse, it trains people to merge broken code to main because they're trained that sometimes CI just fails but everything is okay.
Today I want to talk about one of the most common ways that I see things fall apart. This has caused tests, production-load-bearing bash scripts, and normal application code to be unresponsive at best and randomly break at worst. It's when people use time as a synchronization mechanism.
=> ↺ Weighted versus unweighted percentiles by @ellis2013nz
I was surprised to find (well actually, I had discovered this before, so really should say to be “reminded”) that there doesn’t seem to be a weighted version of dplyr’s percent_rank() function in dplyr or other R packages. There are several packages with functions that will estimate quantiles from weighted data, but if you want to then turn the original vector of continuous variables into percentiles you need to take those quantiles and cut the original variable using them as breaks.
I started by making my own convenience function to do this. To calculate the breaks, I am using the wtd.quantile function from Mark Hancock’s reldist package, which was notably faster than its competition (more on this later).
=> ↺ Test Autodiscovery is a Silver Bullet
I tend to write a lot more tests in Rust than in OCaml. Why? Not because Rust is so unsafe it needs more tests. Rust and OCaml are at roughly equivalent levels of safety. It’s because of ergonomics.
The cargo developers have done enough work that the entire process for writing and running a unit test in Rust, from scratch, is: [...]
Knowing when hacks can be tolerated is a skill in itself. Taking shortcuts with clear, simple, and wrong solutions at every corner leads to untenably shaky foundations. But even the most hardcore programs have clear, simple, and wrong solutions.
=> ↺ Rails World sold out less than 45 minutes
To have all of this come together, with Rails World, with the Rails Foundation, in the year we'll celebrate the 20th anniversary of the framework, is just icing on the birthday cake. This is an exciting time to be part of the Ruby on Rails ecosystem.
=> ↺ How to break up colour variable in sjPlot into equally-sized bins
Whereas the direction of main effects can be interpreted from the sign of the estimate, the interpretation of interaction effects often requires plots. This task is facilitated by the R package sjPlot (Lüdecke, 2022). For instance, using the plot_model function, I plotted the interaction between two continuous variables.
=> ↺ Rose Hudson: GSoC status report 3
API design is kinda tricky.
wlroots is designed to be very very modular. It's clear from the readme:
=> ↺ &num
=> ↺ Python Program to Check Palindrome Number
A Palindrome is a sequence that reads the same backward as forward. In the context of number theory, a palindromic number or numeral palindrome is a number that remains the same when its digits are reversed.
=> ↺ How to Create an Admin User in Django
Django, a high-level Python Web framework, promotes rapid development and clean, pragmatic design. Developed by experienced developers, it takes care of much of the hassle of web development, so you can focus on writing your app without needing to reinvent the wheel.
=> gemini.tuxmachines.org This content has been proxied by September (ba2dc).Proxy Information
text/gemini;lang=en-GB