** Of fairies, compost, and computers **
Lately Iâve buried myself in reading fiction. Stand outs from among the crowd are, of course, Middlemarch but also a lot of sort of scholarly fairy fiction; works that follow the scholastic adventures of studious professorial types in vaugely magical settings. Namely Emily Wildeâs Encyclopedia of Faeriesâ, Heather Fawcett and The Ten Thousand Doors of January, Alix E. Harrow.
Iâve also been working on a handful of personal utility programs. I ⌠â Read more
Saw this on Mastodon:
https://racingbunny.com/@mookie/114718466149264471
18 rules of Software Engineering
- You will regret complexity when on-call
- Stop falling in love with your own code
- Everything is a trade-off. Thereâs no âbestâ 3. Every line of code you write is a liability 4. Document your decisions and designs
- Everyone hates code they didnât write
- Donât use unnecessary dependencies
- Coding standards prevent arguments
- Write meaningful commit messages
- Donât ever stop learning new things
- Code reviews spread knowledge
- Always build for maintainability
- Ask for help when youâre stuck
- Fix root causes, not symptoms
- Software is never completed
- Estimates are not promises
- Ship early, iterate often
- Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed â but this doesnât âaddâ to the program. Donât use âsoftware is never doneâ as an excuse to keep adding and adding stuff to your code.
Okay, hereâs a thing I like about Rust: Returning things as Option and error handling. (Or the more complex Result, but itâs easier to explain with Option.)
fn mydiv(num: f64, denom: f64) -> Option<f64> {
// (Letâs ignore precision issues for a second.)
if denom == 0.0 {
return None;
} else {
return Some(num / denom);
}
}
fn main() {
// Explicit, verbose version:
let num: f64 = 123.0;
let denom: f64 = 456.0;
let wrapped_res = mydiv(num, denom);
if wrapped_res.is_some() {
println!("Unwrapped result: {}", wrapped_res.unwrap());
}
// Shorter version using "if let":
if let Some(res) = mydiv(123.0, 456.0) {
println!("Hereâs a result: {}", res);
}
if let Some(res) = mydiv(123.0, 0.0) {
println!("Huh, we divided by zero? This never happens. {}", res);
}
}
You canât divide by zero, so the function returns an âerrorâ in that case. (Option isnât really used for errors, IIUC, but the basic idea is the same for Result.)
Option is an enum. It can have the value Some or None. In the case of Some, you can attach additional data to the enum. In this case, we are attaching a floating point value.
The caller then has to decide: Is the value None or Some? Did the function succeed or not? If it is Some, the caller can do .unwrap() on this enum to get the inner value (the floating point value). If you do .unwrap() on a None value, the program will panic and die.
The if let version using destructuring is much shorter and, once you got used to it, actually quite nice.
Now the trick is that you must somehow handle these two cases. You must either call something like .unwrap() or do destructuring or something, otherwise you canât access the attached value at all. As I understand it, it is impossible to just completely ignore error cases. And the compiler enforces it.
(In case of Result, the compiler would warn you if you ignore the return value entirely. So something like doing write() and then ignoring the return value would be caught as well.)
We really are bouncing back and forth between flat UIs and beveled UIs. I mean, this is what old X11 programs looked like:
https://www.uninformativ.de/desktop/2025%2D06%2D21%2D%2Dkatriawm%2Dold%2Dxorg%2Dapps.png
Good luck figuring out which of these UI elements are click-able â unless you examine every pixel on the screen.
pledge() and unveil() syscalls:
@movq@www.uninformativ.de That sounds great! (Well, they actually must have recorded the audio with a potato or so.) You talked about pledge(âŚ) and unveil(âŚ) before, right? I somewhere ran across them once before. Never tried them out, but these syscalls seem to be really useful. They also have the potential to make one really rethink about software architecture. I should probably give this a try and see how I can improve my own programs.
@prologic@twtxt.net Iâm trying to call some libc functions (because the Rust stdlib does not have an equivalent for getpeername(), for example, so I donât have a choice), so I have to do some FFI stuff and deal with raw pointers and all that, which is very gnarly in Rust â because youâre not supposed to do this. Things like that are trivial in C or even Assembler, but I have not yet understood what Rust does under the hood. How and when does it allocate or free memory ⌠is the pointer that I get even still valid by the time I do the libc call? Stuff like that.
I hope that I eventually learn this over time ⌠but I get slapped in the face at every step. Itâs very frustrating and Iâm always this đ¤ close to giving up (only to try again a year later).
Oh, yeah, yeah, I guess I could âjustâ use some 3rd party library for this. socket2 gets mentioned a lot in this context. But I donât want to. I literally need one getpeername() call during the lifetime of my program, I donât even do the socket(), bind(), listen(), accept() dance, I already have a fully functional file descriptor. Using a library for that is total overkill and Iâd rather do it myself. (And look at the version number: 0.5.10. The library is 6 years old but theyâre still saying: âNah, weâre not 1.0 yet, we reserve the right to make breaking changes with every new release.â So many Rust libs are still unstable âŚ)
⌠and I could go on and on and on ⌠đ¤Ł
OpenBSD has the wonderful pledge() and unveil() syscalls:
https://www.youtube.com/watch?v=bXO6nelFt-E
Not only are they super useful (the program itself can drop privileges â like, it can initialize itself, read some files, whatever, and then tell the kernel that it will never do anything like that again; if it does, e.g. by being exploited through a bug, it gets killed by the kernel), but they are also extremely easy to use.
Imagine a server program with a connected socket in file descriptor 0. Before reading any data from the client, the program can do this:
unveil("/var/www/whatever", "r");
unveil(NULL, NULL);
pledge("stdio rpath", NULL);
Done. Itâs now limited to reading files from that directory, communicating with the existing socket, stuff like that. But it cannot ever read any other files or exec() into something else.
I canât wait for the day when we have something like this on Linux. There have been some attempts, but itâs not that easy. And itâs certainly not mainstream, yet.
I need to have a closer look at Linuxâs Landlock soon (âsoonâ), but this is considerably more complicated than pledge()/unveil():
On my blog: Developer Diary, Day of the African Child https://john.colagioia.net/blog/2025/06/16/african-child.html #programming #project #devjournal
So I was using this function in Rust:
https://doc.rust-lang.org/std/path/struct.Path.html#method.display
Note the little 1.0.0 in the top right corner, which means that this function has been âstable since Rust version 1.0.0â. Weâre at 1.87 now, so weâre good.
Then I compiled my program on OpenBSD with Rust 1.86, i.e. just one version behind, but well ahead of 1.0.0.
The compiler said that I was using an unstable library feature.
Turns out, that function internally uses this:
https://doc.rust-lang.org/std/ffi/struct.OsStr.html#method.display
And that is only available since Rust 1.87.
How was I supposed to know this? đ¤¨đŤŠ
CNCF Kubestronaut Program Momentum Highlights Asiaâs Role in Growing Cloud Native Talent
Upcoming Kubestronaut celebrations in China and Japan to honor global program growth Hong Kong, Chinaâ 10 June, 2025 â The Cloud Native Computing FoundationÂŽ (CNCFÂŽ), which builds sustainable ecosystems for cloud native software, today announced continued⌠â Read more
Having some fun with SIRDS this morning.
What you should see: https://movq.de/v/dae785e733/disp.png
And the tutorial I used for my C program: https://www.ime.usp.br/~otuyama/stereogram/basic/index.html
âShe didnât want to leaveâ: Program to help people using libraries as safe spaces
A Perth library trials a social worker program after noticing an increase in people using libraries as a safe space. â Read more
Queensland shark control plan goes against government commissioned advice
The KPMG report stresses that while âtraditional measuresâ are still required, the program needs to transition away from âenvironmentally harmful practicesâ, such as drumlines and mesh nets. â Read more
How can one write blazing fast yet useful compilers (for lazy pure functional languages)?
Iâve decided enough is enough and I want to write my own compiler (seems I caught a bug and lobste.rs is definitely not discouraging it). The language I have in mind is a basic (lazy?) statically-typed pure functional programming language with do notation and records (i.e. mostly Haskell-lite).
I have other ideas Iâd like to explore as well, but mainly, I want the compiler to be so fast (w/ optimisations) that ⌠â Read more
$7,500 Bug: Exposing Any HackerOne Userâs Email via Private Program Invite
How One GraphQL Query Turned Private Invites into Public Data Leaks
[Continue reading on InfoSec Write-ups Âť](https://infosecwrite ⌠â Read more
Killing more than breast and prostate, our deadliest cancer to get screening
After years of lobbying from patients, the first ever national lung cancer screening program will roll out next month for people who have a significant history of smoking. â Read more
[ On | No ] syntactic support for error handling - The Go Programming Language
Comments â Read more
Tasmanian land program yet to deliver affordable lots for homes
Developers in Tasmania can apply for a rebate to offset some of the costs associated with subdivisions. Itâs part of a program aimed at fast-tracking lots for âaffordableâ sales but, after 10 months not one affordable lot has been sold. â Read more
The diabetes program lifting people out a âreally dark placeâ
When Kelly Anderson suddenly lost her daughter, she became depressed and rapidly gained weight. A community exercise program helped turn her life around. â Read more
On my blog: Developer Diary, International Sex Workersâ Day https://john.colagioia.net/blog/2025/06/02/sex-workers.html #programming #project #devjournal
Brain injury survivors connecting through rhythm and music
The NeuroRhythm program combines dance with Djembe drumming to offer participants a space to express themselves and connect with others. â Read more
Senior Canadian diplomat compares Trumpâs Golden Dome missile program to a âprotection racketâ â Read more
[$] Allowing BPF programs more access to the network
MahĂŠ Tardy led two sessions about some of the challenges that he, Kornilios Kourtis,
and John Fastabend have run into in their work on
Tetragon (Apache-licensed BPF-based security monitoring software)
at the Linux Storage, Filesystem, Memory Management, and BPF Summit. The session
prompted discussion about the feasibility of letting BPF programs
send data over the network, as well as potential new kfuncs to let BPF firewalls
send TCP reset packets. Tardy pre ⌠â Read more
Part 3: How to Become a Pentester in 2025: Programming & Scripting Foundations for pentester â Read more
Apple Launches Self Service Repair for iPad
Apple today announced that its Self Service Repair program is expanding to the iPad.
The program will provide âiPadâ owners with manuals, genuine Apple parts, ⌠â Read more
On my blog: Developer Diary, Memorial Day https://john.colagioia.net/blog/2025/05/26/memorial.html #programming #project #devjournal
For context, this is a funny
Interaction between an engineer and copilot on Microsoftâs core programming Language đ¤Łđ¤Ż
One of the nicest things about Go is the language itself, comparing Go to other popular languages in terms of the complexity to learn to be proficient in:
- Go:
25keywords (Stack Overflow); CSP-style concurrency (goroutines & channels)
- Python 2:
30keywords (TutorialsPoint); GIL-bound threads & multiprocessing (Wikipedia)
- Python 3:
35keywords (Initial Commit); GIL-bound threads,asyncio& multiprocessing (Wikipedia, DEV Community)
- Java:
50keywords (Stack Overflow); threads +java.util.concurrent(Wikipedia)
- C++:
82keywords (Stack Overflow);std::thread, atomics & futures (en.cppreference.com)
- JavaScript:
38keywords (Stack Overflow); single-threaded event loop &async/await, Web Workers (Wikipedia)
- Ruby:
42keywords (Stack Overflow); GIL-bound threads (MRI), fibers & processes (Wikipedia)
Trumpâs cultural overhaul throttles local arts, humanities programs nationwide
Piper Hudspeth Blackburn and Sunlen Serfaty,  Reporters -  CNN
_Stephan: Aspiring dictator Trump, like his father before him, has always been a White supremacist racist. He and his father were both penalized decades ago for using racism in the renting of the apartments they owned. Trump and his MAGAt followers donât want children to be taught the true history of America ⌠â Read more
On my blog: Firefoxâs Tabs https://john.colagioia.net/blog/2025/05/21/firefox-tabs.html #programming #techtips
On my blog: Developer Diary, Malcolm X Day https://john.colagioia.net/blog/2025/05/19/malcolm-x.html #programming #project #devjournal
10 Most Devastating Computer Viruses
Long before computers made their way into workplaces and homes everywhere, people theorized about a destructive kind of program that could replicate itself and spread between networked machines. In the 1980s and early 1990s, those programs became popularly known as âcomputer viruses.â Youâve probably had one at some point. All it takes is one wrong [âŚ]
The post [10 Most Devastating Computer Viruses](https://listverse.com/2025/05/19/10-most-devastating-comput ⌠â Read more
@kat@yarn.girlonthemoon.xyz I only listened to you while going through my photos, so I did not pay very close attention. :-)
Since you have a proper server â haha, not just one â and hence are not limited, I suggest you learn a real programming language and donât waste your time with this PHP mess. It might have improved a wee bit since I was a kid, but it felt like some hacked together shit. The defaults also were questionable at best, it was easier to hold it wrong than right. This stands testament to bad design and is especially terrible from a security point of view.
Youâre right, programming is like any other craft. You only truly learn by actually doing it. And this just takes time. Very long time to master it. Or as close to as it gets. The more you know, the more you realize what else you donât know (yet). Itâs a never ending process. So, take it easy, donât get discouraged, happy hacking and enjoy the endeavor! :-)
New Life Hack: Using LLMs to Generate Constraint Solver Programs for Personal Logistics Tasks
Comments â Read more
What Problems are Truly Technical, not Social?
Most âtechâ problems (and solutions) seem social, with e.g. most newer startups relying on internal connections to gain real world adoption, otherwise blocked due to institutional apathy and bad regulations (sms 2fa, hospital faxesâŚ)
A recent (unlocated) poll asked a similar question: âwhat percent of workers in the software industry are employed writing programs that should not exist?â While we do have NP-hard problems, politically hard problems like avoi ⌠â Read more
Flawed Federal Programs Maroon Rural Americans in Telehealth Blackouts
arah Jane Tribble and Holly K. Hacker, Â Â - Â Med Page Today | Kaiser Family Foundation
_Stephan: I live on a rural island, and depend on telehealth sessions with doctors, because if telehealth ends, as the Republicans are trying to do, a 15-minute call would become a daylong trip to the mainland. Sadly, even worse plans to extend internet access have not proceeded under Trump and th ⌠â Read more
Using AI to build a tactical shooter
This video demonstrates a nice mental model of how to structure AI assisted programming for building prototypes (planning stage and implementation stage), how to increase speed by varying the input (audio vs. text), along with different smaller tactics to improve the process.
On my blog: Firefoxâs Local Storage https://john.colagioia.net/blog/2025/05/14/firefox-local-storage.html #programming #techtips
I have zero mental energy for programming at the moment. đŤ¤
Iâll try to implement the new hashing stuff in jenny before the âdeadlineâ. But I donât think youâll see any texudus development from me in the near future. âšď¸
tar and find were written by the devil to make sysadmins even more miserable
@kat@yarn.girlonthemoon.xyz @prologic@twtxt.net Given that all these programs are super old (tar is from the late 1970ies), while trying to retain backwards-compatibilty, Iâm not surprised that the UI isnât too great. đ¤
find has quite a few pitfalls, that is very true. At work, we donât even use it anymore in more complex scenarios but write Python scripts instead. find can be fast and efficient, but fewer and fewer people lack the knowledge to use it ⌠The same goes for Shell scripting in general, actually.
On my blog: Developer Diary, International Nurses Day https://john.colagioia.net/blog/2025/05/12/nurses.html #programming #project #devjournal
Hidden HackerOne & Bugcrowd Programs: How to Get Private Invites
âPrivate programs are where the real gold lies⌠but no one tells you how to get there. Let me break it down for youâââwith secrets mostâŚ
[Continue reading on In ⌠â Read more
** Dad shrapnel **
In a flash I think Iâgetâ liveliness in relation to programming. Itâs talked so much about in the context of programming systems and languages â as being something they do or do not intrinsically have or supportâŚbut what if itâs actually about the process of doing the thing, and not inherent to the thing you do it with. A noun-gerund kinda dichotomy.
Left with dad shrapnel, 5 minutes here, 20 there, 120 on the horizon, with which to poke at projects what if the key to collaboration is liveliness? Sporadic, low ⌠â Read more
** Collaboration is a scary word **
I like programming partially because itâs a practice I can, with appropriate to unhealthy application of effort, usually accomplish something at least proximal to my intention.
This isnât true for visual art, nor music. Lately Iâve been feeling like the little games and toys I wanna make are sorta hampered by my total inability to make stuff I find aesthetically appealingâŚsoâŚIâve been thinking about collaboration. Which is a scary word because, you know, other people and all, but I figured Iâd ⌠â Read more
[$] LWN.net Weekly Edition for May 8, 2025
Inside this weekâs LWN.net Weekly Edition:
Front: Debian and essential packages; Custom BPF OOM killers; Speculation barriers for BPF programs; More LSFMM+BPF 2025 coverage.
Briefs: Deepin on openSUSE; AUTOSEL; Mission Center 1.0.0; OASIS ODF; Redis license; USENIX ATC; Quotes; âŚ
Announcements: Newsletters, conferences, security updates, patches, and more. â Read more
[$] Hash table memory usage and a BPF interpreter bug
Anton Protopopov led a short discussion at the 2025 Linux Storage, Filesystem,
Memory-Management, and BPF Summit about amount of memory used
by hash tables in BPF programs. He thinks that the current memory layout is
inefficient, and wants to split the structure that holds table entries into two
variants for different kinds of maps. When that proposal proved
uncontroversial, he also took the chance to talk about a bug in BPFâs call
instruction. â Read more
Release Candidate of iOS 18.5, MacOS Sequoia 15.5, iPadOS 18.5 Available, Public Release Coming Soon
A release candidate build for iOS 18.5, iPadOS 18.5, and MacOS Sequoia 15.5 is now available for users enrolled in the beta testing programs. For users not in the beta testing programs, what this basically means is that the final versions of these system software releases is coming soon, perhaps even next week. macOS Sequoia ⌠[Read More ⌠â Read more
Interviewing Software Developers: From Junior to Architect in a Single Programming Task
Comments â Read more
[$] Injecting speculation barriers into BPF programs
The disclosure of the Spectre\â¨class of hardware vulnerabilities created a lot of pain for kernel
developers (and many others). That pain was especially acutely felt in the
BPF community. While an attacker might have to painfully search the kernel
code base for exploitable code, an attacker using BPF can simply write and
load their own speculation gadgets, which is a much more efficient way of
operating. The BPF comm ⌠â Read more
On my blog: Developer Diary, Day of the Midwife https://john.colagioia.net/blog/2025/05/05/midwives.html #programming #project #devjournal
@andros@twtxt.andros.dev Programming is art. You become good at art by practising your art. You learn artistic patterns by being inspired by and reading others art works. The most importance however is that you practise your art.
Nobody want to be a shitty programmer. The question is: Do you do anything not to not be one?
Reading blogs or social media and watching YouTube videos is fun. After them, your code may be a little better, of course. But you need a lot. You need to study! Read good books and study the code of other programmers, for example. Maybe work with a new language, architectures and paradigms. You need break the routine.
If you know Object-oriented programming, you learn functional programming.
If you know Model-View-Controller, you learn Model-View-ViewModel.
If you donât know anything about architectures, you learn Clean Architecture, Hexagonal Architecture, etc.
If you know Python, you learn Ruby or Go.
If you know Clojure or Lisp⌠you donât need to learn anything else. You are already a good programmer. Just kidding. You can learn Elixir or Scala.
Be a good programmer my friend.
understanding-j: An introduction to the J programming language that gets to the point
Comments â Read more
@bender@twtxt.net Yes, you right. But is premium for more than that.
I use a feature I love a lot: customising different searches with different themes or links.
Itâs easy to understand with an example. I have a search with the name âDjangoâ. I set sources: Django documentation, stack overflow, topic âprogrammingâ and so on. Itâs very quick to find Django solutions.
I also have another way to find my stuff: search my blog and repositories.
I had problems paying for the first mouths, now itâs a working tool for me.
Confession:
Iâve never found microblogging like twtxt or the Fediverse or any other âmodernâ social media to be truly fulfilling/satisfying.
The reason is that it is focused so much on people. You follow this or that person, everybody spends time making a nice profile page, the posts are all very âego-centricâ. Seriously, it feels like everybody is on an ego-trip all the time (this is much worse on the Fediverse, not so much here on twtxt).
I miss the days of topic-based forums/groups. A Linux forum here, a forum about programming there, another one about a certain game. Stuff like that. That was really great â and it didnât even suffer from the need to federate.
Sadly, most of these forums are dead now. Especially the nerds spend a lot of time on the Fediverse now and have abandoned forums almost completely.
On Mastodon, you can follow hashtags, which somewhat emulates a topic-based experience. But itâs not that great and the protocol isnât meant to be used that way (just read the snac2 docs on this issue). And the concept of âlikesâ has eliminated lots of the actual user interaction. âšď¸
Republican posts video defending law that declared slaves âthree-fifthsâ of a person
Sarah K. Burris,  Senior Editor -  Raw Story
_Stephan: I think it is very important to recognize that Donny â2 dollâ, as Lawrence OâDonnell called him on his program tonight, when Trump said basically that American children have too many toys, is just the leader of a racist fascist coup, but far from the only person perpetrating this destruction of the feder ⌠â Read more
@lyse@lyse.isobeef.org Oh, no, this is vastly exaggerated. Neil deGrass Tyson says, the earth is smoother than a cue ball (billiard): https://www.youtube.com/watch?v=OMP5dNsZ-6k That would make for a very dull OpenGL program, though. đ
@movq@www.uninformativ.de Agreed, finding the right motivation can be tricky. You sometimes have to torture yourself in order to later then realize, yeah, that was actually totally worth it. Itâs often hard.
I think if you find a project or goal in general that these kids want to achieve, that is the best and maybe only choice with a good chance of positive outcome. I donât know, like building a price scraper, a weather station or whatever. Yeah, these are already too advanced if they never programmed, but you get the idea. If they have something they want to build for themselves for their private life, that can be a great motivator Iâve experienced. Or you could assign âem the task to build their own twtxt client if they donât have any own suitable ideas. :-)
Showing them that you do a lot of your daily work in the shell can maybe also help to get them interested in text-based boring stuff. Or at least break the ice. Lead by example. The more I think about it, the more I believe this to be very important. Thatâs how I still learn and improve from my favorite workmate today in general. Which Iâm very thankful of.
Remembered a fun little âhello worldâ program I made in 2018:
https://movq.de/v/a1c4a819e6/vid.mp4
(It runs smoothly. My computer just isnât fast enough for a smooth X11 screengrab at that resolution.)
Weâre all old farts. When we started, there werenât a lot of options. But today? Iâd be completely overwhelmed, I think.
Hence, Iâd recommend to start programming with a console program. As for the language, not sure. But Python is probably a good choice
Thatâs what I usually do (when we have young people at work who never really programmed before), but it doesnât really âhitâ them. Theyâve seen so much, crazy graphics, web pages, itâs all fancy. Just some text output is utterly boring these days. âšď¸ And thatâs my problem: I have no idea how I could possibly spark some interest in things like pointers or something âlow-levelâ like that. And I truly believe that you need to understand things like pointers in order to program, in general.
4th Beta of iOS 18.5, MacOS Sequoia 15.5, iPadOS 18.5 Available for Testing
Apple has issued the fourth beta version of iOS 18.5, macOS Sequoia 15.5, and iPadOS 18.5, for users participating in the beta testing programs for apple system software. There are also new betas available for watchOS, tvOS, and visionOS, if those are applicable to you. No significant new features or changes are expected in any ⌠[Read More](https://osxdaily.com/2025/04/28/4th-beta-of- ⌠â Read more
@xuu@txt.sour.is Hahaha, thatâs cool! You were (and still are) way ahead of me. :-)
We started with a simple traffic light phase and then added pedestrian crossing buttons. But only painting it on the canvas. In our computer room there was an actual traffic light on the wall and at the very end of the school year our IT basics teacher then modified the program to actually control the physical traffic light. That was very impressive and completely out of reach for me at the time. That teacher pulled the first lever for me ending up where I am now.
[$] Inline socket-local storage for BPF
Martin Lau gave a talk in the BPF track of the 2025 Linux Storage, Filesystem,
Memory-Management, and BPF Summit about a performance problem
plaguing the networking subsystem, and some potential ways to fix it. He works on
BPF programs that need to store socket-local data; amid other improvements to
the networking and BPF subsystems, retrieving that data has become a noticeable
bottleneck for his use case. His proposed fix prompted a good deal of discussion
about how the data should be laid out ⌠â Read more
On my blog: Developer Diary, Workersâ Memorial Day https://john.colagioia.net/blog/2025/04/28/workers-memorial.html #programming #project #devjournal
@movq@www.uninformativ.de I started with Delphi in school, the book (that we never ever used even once and I also never looked at) taught Pascal. The UI part felt easy at first but prevented me from understanding fundamental stuff like procedures or functions or even begin and end blocks for ifs or loops. For example I always thought that I needed to have a button somewhere, even if hidden. That gave me a handler procedure where I could put code and somehow call it. Two or three years later, a new mate from the parallel class finally told me that this wasnât necessary and how to do thing better.
You know all too well that back in the day there was not a whole lot of information out there. And the bits that did exist were well hidden. At least from me. Eventually discovering planet-quellcodes.de (I donât remember if that was the original forum or if that got split off from some other board) via my best schoolmate was like finding the Amber Room. Yeah, reading the ITG book would have been a very good idea for sure. :-)
In hindsight, a console program without the UI overhead might have been better. At least for the very start. Much less things to worry about or get lost.
Hence, Iâd recommend to start programming with a console program. As for the language, not sure. But Python is probably a good choice, it doesnât require a lot of surrounding boilerplate like, say Java or Go. It also does exceptionally well in the principle of least surprise.
I should probably clarify: Which language/platform? Something graphical or web-based right from the beginning or do you start with a console program?
To the parents or teachers: How do you teach kids to program these days? đ¤
[$] Code signing for BPF programs
The Linux kernel can be configured so that
kernel modules must be signed or
otherwise authenticated to be loaded
into the kernel. Some BPF developers want that to be an option for BPF programs
as well â after all, if those are going to run as part of the kernel,
they should be subject to the same code-signing requirements. Blaise Boscaccy
and Cong Wang presented two different visions for how BPF code signing could
work at the 2025 Linux Storage, Filesystem, Memory ⌠â Read more
âDeep red rural Americaâ hurts most as Trump attacks on liberal programs backfire: report
Jennifer Bowers Bahney,  Contributing Writer -  Raw Story
_Stephan: Just as I, and many others have predicted, MAGAt world is going to experience the worst effects of the Trump coup and dismantlement of the economy and government. And in many ways, MAGAt voters didnât even think about that when they voted. Here is an example of what I mean. I think ⌠â Read more
Beta 3 of iOS 18.5, MacOS Sequoia 15.5, iPadOS 18.5 Released for Testers
In what must be the most exciting thing to happen on a Monday since the prior Monday, Apple has released the third beta version of iOS 18.5, MacOS Sequoia 15.5, and iPadOS 18.5. These new thrilling third beta versions are available to the developer wizards participating in the beta testing programs of Apple system software, ⌠[Read More](https://osxdaily.com/2025/04/21/beta-3-of-ios-18-5-mac ⌠â Read more
On my blog: Developer Diary, Grounation Day https://john.colagioia.net/blog/2025/04/21/grounation.html #programming #project #devjournal
White House proposes eliminating Head Start funding as part of sweeping budget cuts
JOCELYN GECKER,  Reporter -  Associated Press
_Stephan: Since its inception in 1965, the Head Start program has served nearly 40 million children and their families. If you have a preschool child, are they benefiting from a Head Start program? Well, Dictator Trump doesnât give a damn about the wellbeing of little children, and he is working hard to eliminate ⌠â Read more
[$] Taking BPF programs beyond one-million instructions
The BPF verifier is not magic; it cannot solve the
halting problem. Therefore,
it has to err on the side of assuming that a program will run too long if it
cannot prove that the program will not.
The ultimate check on the size of a BPF program is the
one-million-instruction limit â the verifier will refuse to process more than
one-million instructions, no matter what a BPF program does. Alexei Starovoitov gave
a talk at the 2025 L ⌠â Read more
CISA extends funding to the CVE program (BleepingComputer)
Sergiu Gatlan reports
that the US government has extended funding for the Common
Vulnerabilities and Exposures (CVE) program, following yesterdayâs reports that funding
would run out as of April 16.
âThe CVE Program is invaluable to cyber community and a priority of
CISA,â the U.S. cybersecurity agency told BleepingCompu ⌠â Read more
MITRE Warns CVE Program Faces Disruption (Security Week)
Security Week is one of several outlets reporting
that the funding for the CVE program at MITRE disappears as of
April 16.
Maintained by MITRE Corporation, a not-for-profit organization that
operates federal R&D centers, the CVE program is funded through
multiple channels, including the U.S. government, industry
partnerships, and international organizations.
⌠â Read more
Beta 2 of iOS 18.5, MacOS Sequoia 15.5, iPadOS 18.5 Released for Testers
New betas are available as iOS 18.5 beta 2, MacOS Sequoia 15.5 beta 2, and iPadOS 18.5 beta 2, for users who are participating in the beta testing programs for Apple system software. No notable new features or major changes are expected in these beta versions, at least thus far, suggesting theyâre likely focused on ⌠[Read More](https://osxdaily.com/2025/04/14/beta-2-of-ios-18-5-macos-sequoi ⌠â Read more
[$] In search of a stable BPF verifier
BPF is, famously, not part of the kernelâs promises of user-space stability. New
kernels can and do break existing BPF programs; the BPF developers try to
fix unintentional regressions as they happen, but the whole thing can be something of a bumpy
ride for users trying to deploy BPF programs across multiple kernel versions.
Shung-Hsi Yu and Daniel Xu had two different approaches to fixing the problem
that they presented at the 2025 Linux Storage, Filesystem,
Memory-Management, and BPF Summit. â Read more
On my blog: Developer Diary, Pohela Boishakh https://john.colagioia.net/blog/2025/04/14/pohela-boishakh.html #programming #project #devjournal
[$] Inlining kfuncs into BPF programs
Eduard Zingerman presented a daring proposal that âmakes sense if you think
about it a bitâ at the 2025 Linux Storage, Filesystem,
Memory-Management, and BPF Summit. He wants to inline
performance-sensitive kernel functions
into the BPF programs that call them. His
prototype does not yet address all of the design problems inherent in that idea,
but it did spark a lengthy discussion about the feasibility of his proposal. â Read more
Red Hat DEI Activists Encourage âKilling Fascistsâ, âRaising Hellâ
Following Red Hat & IBM taking the axe to DEl programs and Diversity Quotas, Leftists Extremists within the Linux giant are throwing a temper tantrum. â Read more
Erlang Solutions: Elixir for Business: 5 Ways It Transforms Your Processes
Elixir is a lightweight, high-performance programming language built on the Erlang virtual machine. Itâs known for its simple syntax and efficient use of digital resources. But how does this translate to business benefits?
Elixir is already powering companies like Discord and Pinterest. It helps businesses reduce costs, improve process efficiency, and speed up time to market.
Here are five reasons why Elixi ⌠â Read more
[$] A new type of spinlock for the BPF subsystem
The 6.15 merge window saw the inclusion of a new type of lock for BPF programs:
a resilient queued spinlock that Kumar Kartikeya Dwivedi has been working on
for some time. Eventually, he hopes to convert all of the spinlocks currently
used in the BPF subsystem to his new lock.
He gave a remote presentation about the design of the lock at the
2025 Linux Storage, Filesystem,
Memory-Management, and BPF summit. â Read more
FreeDOS 1.4 released
Version\â¨1.4 of FreeDOS has been
released. This is the first stable release since 2022, and
includes improvements to the Fdisk hard-disk-management program, and
reliability updates for the mTCP set of TCP/IP applications for
DOS.
This version was much smoother because Jerome Shidel, our
distribution manager, had an idea after FreeDOS 1.3 that we could have
a rolling test release that collected all of the changes that people
mak ⌠â Read more
Sometimes, we spend months stuck in inertia, distracted by screens and routine. So Iâd like to give you a simple reminder: creating-in whatever form-is what makes you feel alive.
The beauty of working on projects is not in their âsuccessâ, but in the simple act of working on them. Whether itâs writing, cooking, programming or redecorating the house: play with ideas without pressure, engage in an activity to test, fail and discover without judgement.
In the end, what remains is not a perfect product, but the satisfaction of completion and valuable lessons.
Find a project, no matter how small, and let it take you without expectations.