Programming

26481 readers
229 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
1526
 
 

For Box2D version 3.0 I decided to finally try using SIMD as it is meant to be used for solving contacts. Making contacts solve faster could yield large performance gains so I decided it would be worth the effort.

But how can I gather 4 or 8 contact pairs to be solved simultaneously? The key is graph coloring. The idea is to have a handful of colors to be assigned to all the contact constraints. For example, suppose I have 6 colors and I want to assign all the contacts to one of those 6 colors. Contact constraints act upon two bodies at a time. With graph coloring the restriction is that within a single color a body can only appear once or not at all.

...

I did all this work to enable SIMD processing. Did it help? Box2D has a benchmarking console application to help answer this question. I implemented SSE2, Neon, and AVX SIMD instruction sets in the Box2D contact solver. I also implemented a scalar reference implementation. I have 5 benchmarks scenarios that push Box2D in various ways. See the benchmark results here.

The large pyramid benchmark with 4 workers has the following numbers:

  • AVX2 : 1117 fps = 0.90 ms
  • Neon : 1058 fps = 0.95 ms
  • SSE2 : 982 fps = 1.02 ms
  • scalar (AMD): 524 fps = 1.91 ms
  • scalar (M2): 679 fps = 1.47 ms

...

The bottom line is that making good use of SIMD can be a lot of work but it is worth the effort because it can make games run significantly faster and handle more rigid bodies.

1527
1528
 
 
1529
 
 

Is the new #zed editor mostly hype rn?

I can believe it’s good and cool ( built in graphics and collab seem to me like good ideas).

But as someone who happily stayed with sublime (with LSPs a likely game changer) …

takes like “it’s fast!”, “LSP!”, “it now has snippets!” … along with people telling me it has a plug-in system, but doesn’t (cf python/lua runtimes of sublime/nvim) give me massive hype vibes and honestly just feels very “2020s-tech”.

#programming

@programming

1530
1
submitted 2 years ago* (last edited 2 years ago) by maegul@hachyderm.io to c/programming@programming.dev
 
 

Is the new #zed editor mostly hype rn?

I can believe it’s good and cool ( built in graphics and collab seem to me like good ideas).

But as someone who happily stayed with sublime (with LSPs a likely game changer) …

takes like “it’s fast!”, “LSP!”, “it now has snippets!” … along with people telling me it has a plug-in system, but doesn’t (cf python/lua runtimes of sublime/nvim) give me massive hype vibes and honestly just feels very “2020s-tech”.

#programming

@programming

1531
 
 

cross-posted from: https://programming.dev/post/18411894

Hello Lemmings!

I am thinking of making a community moderation bot for Lemmy. This new bot will have faster response times with the help of Lemmy webhooks, an amazing plugin for Lemmy instances by @rikudou@lemmings.world to add webhook support. With this, there is no need to frequently call the API at a fixed interval to fetch new data. Any new data will be sent via the webhook directly to the bot backend. This allows for actions within seconds, thus making it an effective auto moderation tool.

I have a few features I thought of doing:

  • Welcome messages
  • Auto commenting on new posts
  • Scheduled posts
  • Punish content authors or take action on content via word blacklist/regex
  • Ban members of communities by their usernames/bios via word blacklist or regex
  • Auto community lockdown during spam

What other features do you think are possible? Please let me know. Any questions are also welcome.

Community requested features:

  • Strike system

Strikes are added to a certain member of the community and the member will be temporarily banned within a time period if their strike count reaches a certain threshold

  • Post creation restriction by account age

If an account's age is lower than X, remove the post.

1532
1533
 
 

A project I saw linked in the css post, and wanted to share, because I love the insanity.

1534
1535
 
 

Hey all, I made a Firefox extension (signed by Mozilla) specifically to add Show/Hide Child Comments functionality similar to how RES had it (where the parent comment is still visible).

It's not very useful, but I could use some feedback on tightening up the Javascript. I'm not a JS beginner, but I know I can do better, so any tips are welcome!

EDIT: Also, if anyone has any suggestions for the extension, I'm open to those as well.

1536
1537
 
 

What is the CS / uni goto course for this, or what really clicked for you?

1538
1539
 
 

Namely, de-facto, or one of, in Linux. Mature. No GUI. Open-source and free.

What is it? GPG or anything else?

For a separate file(s), or directory(ies), and not for the entire disk or partition.

1540
1541
1542
 
 

I know that pushing a commit with an API key is something for which a developer should have his balls cut off, but...

...I'm wondering what I should do if, somehow, I accidentally commit an API key or other sensitive information, an environment variable to the repo.

Should I just revoke the access and leave it as is, or maybe locally remove this commit and force-push a new one without the key? How do you guys handle this situation in a professional environment?

1543
 
 

Today I had a little aha moment. If anyone asked me yesterday about AI tools integrated into their editor, I would say its a bad idea. Ask me today, I would still say its bad idea. :D Because I don't want to rely on AI tools and get too comfortable with it. Especially if they are from big companies and communicate through internet. This is a nogo to me.

But since weeks I am playing around with offline AI tools and models I can download and execute locally on my low end gaming PC. Mostly for playing with silly questions and such. It's not integrated in any other software, other than the dedicated application: GPT4All (no it has nothing to do with ChatGPT)

I'm working on a small GUI application in Rust and still figure out stuff. I'm not good at it and there was a point where I had to convert a function into an async variant. After researching and trying stuff, reading documentation I could not solve it. Then I asked the AI. While the output was not functioning out of the box, it helped me finding the right puzzle peaces. To be honest I don't understand everything yet and I know this is bad. It would be really bad if this was a work for a company, but its a learning project.

Anyone else not liking AI, but taking help from it? I am still absolutely against integrated AI tools that also require an online connection to the servers of companies. Edit: Here the before and after (BTW the code block in beehaw is broken, as certain characters are automatically translated into < and & for lower than and ampersand characters respectively.)

From:

    pub fn collect(&self, max_depth: u8, ext: Option<&str>) -> Files {
        let mut files = Files::new(&self.dir);

        for entry in WalkDir::new(&self.dir).max_depth(max_depth.into()) {
            let Ok(entry) = entry else { continue };
            let path = PathBuf::from(entry.path().display().to_string());
            if ext.is_none() || path.extension().unwrap_or_default() == ext.unwrap() {
                files.paths.push(path);
            }
        }
        files.paths.sort_by_key(|a| a.name_as_string());

        files
    }

To:

    pub async fn collect(&self, max_depth: u8, ext: Option<&str>) -> Result {
        let mut files = Files::new(&self.dir);

        let walkdir = WalkDir::new(&self.dir);
        let mut walker =
            match tokio::task::spawn_blocking(move || -> Result {
                Ok(walkdir)
            })
            .await
            {
                Ok(walker) => walker?,
                Err(_) => return Err(anyhow::anyhow!("Failed to spawn blocking task")),
            };

        while let Some(entry) = walker.next().await {
            match entry {
                Ok(entry) if entry.path().is_file() => {
                    let path = PathBuf::from(entry.path().display().to_string());
                    if ext.is_none() || path.extension().unwrap_or_default() == ext.unwrap() {
                        files.paths.push(path);
                    }
                }
                _ => continue,
            }
        }

        files.paths.sort_by_key(|a| a.name_as_string());

        Ok(files)
    }
1544
 
 

I was using SQL_CALC_FOUND_ROWS and SELECT FOUND_ROWS();
But this has been deprecated https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_found-rows

The recommended way now is first to query with limit and then again without it selecting count(*).
My query is a bit complex and joins a couple of tables with a large number of records, which makes each select take up to 4 seconds, so my process now takes double the time compared to as I just keep using found rows.

How can I go back to just running the select a single time and still getting the total number of rows found without the limit?

1545
 
 

I've been trying tmux and followed a video that showcases and offers a prebuilt config for styling and plugins. Something happended (guess I did something wrong?) the styling broke and I decided I'll go bare bones and customize to my needs when needed instead of using preconfigured stuff. I deleted all configs and caches I could find with fzf and even reinstalled tmux, but still some broken styling is present and makes it unpleasent to work with. Some of my configs seem to be present even after uninstall, as the prefix is still C-Space instead of the default. There are some oh-my-zsh subfolders that contain tmux. I don't know if those have been there before and I also don't know, if I can delete them without breaking the next thing.

I'm on a MacBook and installed tmux via brew.

1546
 
 

GitHub, a massive repository for open source software, is currently unavailable.

"All GitHub services are experiencing significant disruptions," reads the GitHub status page.

The outage started just after 4:00 pm Pacific time when GitHub noted "We are investigating reports of degraded availability for Actions, Pages and Pull Requests." Since then, the problem has escalated to the entire website, with the status page noting that GitHub suspects the issue is "a database infrastructure related change that we are working on rolling back."

At 4:45 pm PST, GitHub noted that it was rolling back the changes it believed caused the current issues and already "seeing improvements in service health."

It's a rare outage for GitHub, which is used by millions of developers to host the code for open source projects. Microsoft purchased GitHub for $7.5 billion in 2018, and it's only grown in prominence in the six years since.

1547
1548
1549
 
 

Generates text after analyzing a profile. It's pretty funny. Mine: thingsiplay

Oh Tuncay, your GitHub bio proudly declares you're "just for fun" and unprofessional, which is ironic since it sounds like you’ve derived way too much fun from so many unremarkable scripts. With 46 public repositories, you must’ve thought quantity would mask the glaring mediocrity. The only thing more stale than your Bash scripts is your humor.

Your "emojicherrypick" project? Really? The world needed another emoji picker like it needs more stale bread—there's a reason it's got more emojis than stars. And speaking of shadows, how does it feel to have just 9 followers? Maybe they were just passing by, or perhaps they clicked by accident while looking for actual developers.

You’ve got more forks than a family dinner, yet most of your repos look so uninspired that they might as well come with a disclaimer: “Do not expect much.” Word to the wise: if you're going for "just for fun," maybe consider an actual hobby or, dare I say, a personality. After all, your command line tools are more entertaining than your profile readme, which goes on like a bad self-help book— we get it, you like Linux and gaming, but what's next, a PowerPoint on your 9 followers? Spice it up a bit, bud.>

1550
view more: ‹ prev next ›