AI coding mandates are driving developers to the brink https://buff.ly/juc0gA3
"While 75% of company leaders thought their AI rollout over the past 12 months has been successful, only 45% of employees said the same. "
AI coding mandates are driving developers to the brink https://buff.ly/juc0gA3
"While 75% of company leaders thought their AI rollout over the past 12 months has been successful, only 45% of employees said the same. "
My Laravel PR was shot down, but I may give it a chance later in the year to use Property Hooks as attribute cast.
Why? I blindly guess that using Property Hooks are less computationally costly but also IDE friendly.
Are there tech cooperatives that "hire" internationally?
I am based in India, and I am looking for entry-level roles - junior dev is preferred, but I am also okay with the position of an intern.
Mini-rust in Rust 025: Parsing let mut
My April IndieWeb blog carnival entry on “renewal”!
I often feel compelled to tweak and redesign my website at the expense of other things I value. I talk about reconnecting with what I most enjoy about composing and coding, and avoiding treating my leisure and projects as if I need to impress someone.
https://reillyspitzfaden.com/posts/2025/04/indieweb-blog-carnival-renewal/
New Homepage:
https://idens.net/iden://z1HRUsTNcYMkN5WPm9s1YjGaLUVs58RVRHPjBrV1kYwdAJ.0/pub
Just realized this morning that leaving an older draft of the "first post" on my feed on .0 was probably confusing and making it less obvious that .0 was a "home page"... so I have a homepage now apparently.
As a first post on this account, I've decided to make an explanation on a compiler I'm writing. Please refer to my main account, @Giona_2, if you would like more information on it.
This post is meant to explain each module of my compiler (Optimizer, Tokenizer, Assembler). Each module will have a dedicated paragraph who were their originally their own posts, but I think it's a great way to kick off this first post
# Optimizer
The Optimizer is the most simplistic part of my compiler. It's job is to arrange the raw text file into a more readable format for the Tokenizer.
Essentially, it arranges the source code you wrote into an array where each word (keyword, number, symbol, etc) is it's own element. This allows the Tokenizer to iterate through each word more reliably than if it just read the raw text file verbatim.
# Tokenizer
The Tokenizer is arguably the most important module.
The Tokenizer takes the list generated from the Optimizer and iterates through each word. When it finds a keyword in the list, it goes through the following steps:
1. Finds the end of the declaration the keyword is indicating
2. Sends this full declaration to a function that'll parse it into a token
The final result is arranged as an array of tokens that emulates the steps the final executable must go through.
# Assembler
Finally, the Assembler is what's responsible for turning the token array generated by the Tokenizer and turning it into the final program.
All this does is iterate over each token in the array and translate it into its assembly-instruction equivalent.
This module, by far, is my favorite for one reason and one reason only: It's extremely volatile in the sense that it can turn the token array into pretty much anything you want Unimal to compile to.
I have been looking at creating these epic or almost alien objects or natural shaped locations to set an interesting tone for the game
#gamedev #indiegame
#coding #dev #indiedev #unreal #madewithunreal #gaming #videogames #gameplay #3d #blender3d #UnreaEngine5 #animation #shader #nature #coding
Thinking about a problem and not doing anything about it is just procrastination...
Doing something without thought is just being busy...
Thinking something through and taking action is where the magic happens.
Omfg
I think I finally understood #Python, #Lutris and #GTK sufficiently, and my brain decided to do one of these super rare happy chemical flushes.
Fucking Poggies.
The speed result is completely inaccurate (turns out the existing Downloader class doesn't wait long enough if all you care is for the very first measurement), but right now I'm just happy it updates the text accordingly every time.
#coding
Today, I implemented the #async / #await pattern (as known from #csharp and meanwhile quite some other languages) ...
... in good old #C!
Well, at least sort of.
* It requires some standard library support, namely #POSIX user context switching with #getcontext and friends, which was deprecated in POSIX-1.2008. But it's still available on many systems, including #FreeBSD, #NetBSD, #Linux (with #glibc). It's NOT available e.g. on #OpenBSD, or Linux with some alternative libc.
* I can't do anything about the basic language syntax, so some boilerplate comes with using it.
* It has some overhead (room for extra stacks, even extra syscalls as getcontext unfortunately also always saves/restores the signal mask)
But then ... async/await in C!
Here are the docs:
https://zirias.github.io/poser/api/latest/class_p_s_c___async_task.html
I finally eliminated the need for a dedicated #thread controlling the pam helper #process in #swad.
The building block that was still missing from #poser was a way to await some async I/O task performed on the main thread from a worker thread. So I added a class to allow exactly that. The naive implementation just signals the main thread to carry out the requested task and then waits on a #semaphore for completion, which of course blocks the worker thread.
Turns out we can actually do better, reaching similar functionality like e.g. #async / #await in C#: Release the worker thread to do other jobs while waiting. The key to this is user context switching support like offered by #POSIX-1.2001 #getcontext and friends. Unfortunately it was deprecated in POSIX-1.2008 without an obvious replacement (the docs basically say "use threads", which doesn't work for my scenario), but still lots of systems provide it, e.g. #FreeBSD, #NetBSD, #Linux (with #glibc) ...
The posercore lib now offers both implementations, prefering to use user context switching if available. It comes at a price: Every thread job now needs its private stack space (I allocated 64kiB there for now), and of course the switching takes some time as well, but that's very likely better than leaving a task idle waiting. And there's a restriction, resuming must still happen on the same thread that called the "await", so if this thread is currently busy, we have to wait a little bit longer. I still think it's a very nice solution.
In any case, the code for the PAM credential checker module looks much cleaner now (the await "magic" happens on line 174):
https://github.com/Zirias/swad/blob/57eefe93cdad0df55ebede4bd877d22e7be1a7f8/src/bin/swad/cred/pamchecker.c
When you have redundant web services with background scheduled tasks, how do you make sure the scheduled tasks only run on one host?
We have the hosts coordinate via a database with frequent check-ins, where one host will promoted to the "main" host to to the jobs if there is not currently or the main host is dead.
This thing where you need a computer program to create a new computer program, it's a Ponzi scheme, isn't it?
Let's see what the PHP gods say about that "bug"