A good example of a complex use of textures with #3D in #py5!
https://github.com/vsquared/TruncatedCube-py5
The #py5 #LiveCoding feature can be briefly described as a tool that runs your module mode sketch and keeps an eye on changes at the source file, updating the running sketch with changes you save from your editor/IDE.
You can use with any coding editor from the command line, or, if you use #Thonny IDE you could help me test this experimental version of the thonny-py5mode plug-in!
https://discourse.processing.org/t/using-py5s-live-coding-feature-on-thonny-ide/48967
The #py5 #LiveCoding feature can be briefly described as a tool that runs your module mode sketch and keeps an eye on changes at the source file, updating the running sketch with changes you save from your editor/IDE.
You can use it with any coding editor, invoking it from the command line, or, if you use #Thonny IDE you could help me test this experimental version of the thonny-py5mode plug-in that adds a Live Coding mode!
https://discourse.processing.org/t/using-py5s-live-coding-feature-on-thonny-ide/48967
Real tired of doing these, but here’s another Android developers vs Google update, this time there’s both good and bad news.
The good:
-Users will be able to enable “sideloading” for all current and future devices, attached to their Google account, rather than having to undergo the tedious 24 hour wait including process, on each device.
-Rather than these changes to “sideloading” and “advanced workflows” being implemented at random different dates, in different countries, we’ll all get them come 2027.
The bad:
As GrapheneOS developers recently mentioned “Google replaced pushing Git tags for certain source code with obtaining source code via Google Drive after making a request through Google Forms. It’s completely ridiculous and they’ve gradually become very slow at handling requests. They’re in clear violation of the GPLv2 now.”
whole thread: https://grapheneos.social/@GrapheneOS/117057099753905023
I really am saddened by the current state of LG, as someone who used their phones and monitors for decades and still uses and albeit cautiously recommends their TVs, to those who can also go through the hours long process, to reconfigure them.
They really are the ultimate great hardware, burdened by adware and spyware filled anti-consumer firmware company.
@prologic@twtxt.net Hmmm, I have no idea how to solve that problem. 😅 Some jenny stuff aside, I received zero bug reports or code contributions since leaving GitHub in 2018.
I thought I had made that super easy, because you can just send me an email – no sign-up process, nothing. But that’s way too old-school, people don’t know how to use git format-patch (let alone git send-email) and they also don’t understand that they can just send me a link to their forked Git repo (which can be hosted anywhere). Git is super flexible and powerful, but those features are hardly ever used.
Maybe people even need some kind “reward”, or “fame”. Like those “achievements” that you can unlock on GitHub. (Something to put in their CV … ?)
The only place where this would be an issue is the Twtxt Search Engine – But as the GDPR also points out:
Art. 17
The one place the “it propagated and I can’t recall it” problem is legally acknowledged is Art. 17(2), and it explicitly scales to what’s technically feasible:
“…the controller, taking account of available technology and the cost of implementation, shall take reasonable steps, including technical measures, to inform controllers which are processing the personal data that the data subject has requested the erasure…”
Best-effort, given the technology. A decentralised, append-only, content-addressed feed is the available technology, and its limits are baked into the standard the law applies. Nobody — not the user, not you — is obliged to guarantee every cached copy vanishes.
So just because I enjoy this kind of thing (looking into laws and trying to understand them…):
GDPR is about roles, not ownership
There’s no property right in personal data under GDPR. The whole regime hangs on three roles:
- Data subject — the person the data is about.
- Controller (Art. 4(7)) — “the natural or legal person … which, alone or jointly with others, determines the purposes and means of the processing of personal data.”
- The rights in Arts. 16 and 17 are exercised by a data subject against a controller. They compel a third party to rectify or erase. They are not self-executing duties that a piece of software must expose.
That’s the key. In your architecture, for a user’s own posts about themselves sitting in their own feed on their own device:
- the user is the data subject, and
- the user is also the only person “determining the purposes and means” of that data.
There is no third party controller to compel. The “right to erasure” is a right to make someone else delete — and there is no someone else. It is satisfied the instant the user can change the file. A UI button is a convenience, not a legal requirement. Omitting it removes zero rights, because the data is a plain-text file the user can edit or delete by any means — editor, sed, git, their file manager. Full practical control is retained; nobody is being denied anything by anyone.
Hurray, I can now press gg instead of g to go to the top in tt. Much better! :-) Other multi-key combinations are also easily possible now.
I should probably write a real article about this at some point, but here we go. The only downside with my new key binding system is that it breaks tview’s established pattern. You’ve got an InputHandler(), that is implemented using WrapInputHandler(…). It typically then directly implements the switching logic depending on the key press. Something like this:
func (w *Widget) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
// WrapInputHandler allows for intercepting key events with SetInputCapture(…)
// from the outside for customization. This handles the default key bindings.
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
switch event.Key() {
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'k':
w.scrollUp()
return // we already handled the event, stop processing
case 'j':
w.scrollDown()
return
}
}
}
// We didn't handle the key event. Maybe the parent
// widget knows what to do with it.
if handler := w.parent.InputHandler(); handler != nil {
handler(event, setFocus)
}
})
}
From the outside, you can intercept and either stop or continue the widget’s original key handling with a potentially rewritten key event using SetInputCapture(…):
w := NewWidget()
// customized or additional key bindings
w.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
switch event.Key() {
case tcell.KeyUp:
// Rewrite the event, so the "cursor up" key is an alias
// for the vim key binding "k", that is handled by the
// wrapped input handler above. (I know, I know, this is a
// completely unrealistic example, why would anyone use
// cursor keys when there are vim key bindings available?!)
return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'q':
app.Stop()
// we already handled the event, do not pass it
// to the wrapped input handler above
return nil
case 'r':
toggleMessageReadStatus()
return nil
}
}
}
// we didn't handle the event, pass it to the wrapped
// input handler above
return event
}
Since they all expect a single key, I’ve noticed that using multiple dedicated KeyBindings of mine on these different levels kinda breaks multi-key handling with common prefixes. The outer-most KeyBinding captures the prefix, but it can’t transfer it to the inner one if not handled by the outer one. At least not without some more (potentially ugly) changes. So, I now have to work with just a single KeyBindings object for the entire widget chain (if it consists of multiple other widgets or the regular input handler and input capture are in the game). The outside needs to register all its key bind customizations or extensions at the same level that the original widget handles its default ones. Doable by exposing the widget’s KeyBindings instance, but not pretty. You always have to keep this in mind.
With the KeyBindings, it will look like that:
type Widget struct {
parent tview.Primitive
// make it available to children or the outside either by
// direct field access or by providing a getter method
KeyBindings *bind.KeyBindings
}
func NewWidget() *Widget {
w := &Widget{KeyBindings: &bind.KeyBindings{}}
w.KeyBindings. // default key bindings
Bind0(bind.KeySequence('k', w.scrollUp).
Bind0(bind.KeySequence('j', w.scrollDown)
return w
}
func (w *Widget) InputHandler() InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
// also note the missing support for focus transfer at the moment
event = w.KeyBindings.Capture(event)
if event == nil {
return
}
if handler := w.parent.InputHandler(); handler != nil {
handler(event, setFocus)
}
}
}
And then from the outside, or in a child widget:
w := NewWidget()
w.KeyBindings. // additional or customized key bindings
Bind1(bind.KeySequence(tcell.KeyUp), func(*tcell.EventKey) *tcell.EventKey {
return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
}).
Bind0(bind.KeySequence('q'), app.Stop).
Bind0(bind.KeySequence('r'), toggleMessageReadStatus)
When directly working with tview primitives that are not part of custom widget implementations, the following works well so far:
textView := tview.NewTextView().
SetWordWrap(true).
SetText("…")
SetScrollable(true)
textView.SetInputCapture((&bind.KeyBindings{}).
Bind0(bind.KeySequence('q'), app.Stop).
Bind1(bind.KeySequence('g', 'g'), func(*tcell.EventKey) *tcell.EventKey {
return tcell.NewEventKey(tcell.KeyHome, 0, tcell.ModNone)
}).
Capture)
I need to sleep on this some more.
Also, writing very long messages like this one is really not all that fun in tt’s editor. I should absolutely provide a way to shell out to vim.
(Took me about one and a half hours to compose, holy crap. But not only because of not using vim. Although, that might have saved me a quarter hour or so for sure. Proof-reading this message also uncovered quite a few bugs in my real documentation. So, that’s a big win!) Good night!
Host header is sent by the client. And don’t even think about serving UTF-8 or even just putting utf-8 in the content type. 😅 And for the JPEG thumbnails I pass a special flag to ImageMagick so that IBM Web Explorer from OS/2 won’t trip. 🤣 And always use link rel="stylesheet" for CSS, because some browsers render inlined CSS as literal text. And … probably more that I forgot by now. 😂
I’m in the process of making a big page with photos and screenshots, and this is more stuff than I expected.
So I’ve been working on GoNIX the last few days… Which is derived from µLinux – At least it’s entire build process. GoNIX however has a 100% Go userland, including the init process, package and service management.
Now… As an experiment, because I was able to make much process on enhancing the build tools and package management, I decided to see if I could build a “Desktop” Gui of sorts…
I still wanted it to be fairly minimal and lightweight. So I went with wayland (of course) and labwc and yambar. So far I’m liking the result 👌 42 packages in the wayland-desktop meta port. Not too bad. Not sure if I can slim that down anymore… But trying to avoid Mesa/GL as that drags in far too much “cruft”.
Every now and then, I think that I have carefully proof-read my message enough times and hit the “Add message” button in tt. But then, in the message tree, I spot another missed typo. My process is then to go to my twtxt.txt and fix it by hand. However, I still have to clean up tt’s cache. This is rather tidious:
- Recall the
sqlitebrowser ~/.local/share/twtxt/tt2.sqlitefrom my shell history.
- Switch to the “Browse data” tab.
- Go to the
messagestable and wait a second or two until it’s loaded.
- Sort by the
created_atcolumn twice, so that I get descending order.
- Select the first message, which is typically the one in question.
- Find the “Remove currently selected row” button in the tool bar.
- Commit the changes.
- Close sqlitebrowser.
So, I finally implemented the removal of messages from the cache in tt. I can now hit d and confirm the removal. Bam! Should have done that ages ago!
Next up is the search, I think.
When writing the code takes two hours and the deployment process takes two days ⌘ Read more
Report urges overhaul of WA’s Aboriginal heritage processes amid consultant warning
A major review into native title and cultural heritage approvals in Western Australia’s resources sector has urged more than two dozen recommendations as industry groups warn of consultants “clipping the ticket” as part of the process. ⌘ Read more
My automated doubt development process
Article URL: https://www.alexself.dev/blog/automated-doubt
Comments URL: https://news.ycombinator.com/item?id=48437305
Points: 4
# Comments: 1 ⌘ Read more
@lyse@lyse.isobeef.org Ah, I almost thought so (that you wrote it by hand), but then I looked at the source code and saw the TOC and I was like: “Naah, probably not. I would be way too lazy to do that manually.” 😅 And indeed … ha.
Oh god, yeah, that’s a lot of <span>. 🤔 Can’t really avoid that, I guess, especially if you want to do syntax highlighting of code blocks.
You wrote your own site generator, didn’t you?
In parts. I write everything in Markdown (it’s online, even: https://movq.de/blog/postings/2026-05-29/0/POSTING-en.md), plus a few Vim shortcuts (to generate thumbnails, for example), and then python-markdown renders it: https://pypi.org/project/Markdown/ This process is wrapped in a shell script, like “re-render every page if the .md file is newer than the .html file” and that’s mostly it. And the Atom feed generator is completely custom. 🤔
@movq@www.uninformativ.de It’s the “Lyse types the entire HTML by hand” generator. Yes, no kidding. I write articles so rarely, that I can do that once in a while. It’s fun to some degree, but also not.
After some time, I finally recorded some Vim macros to insert <b>…</b>, <var>…</var>, <span class=s>…</span> etc. around the tokens. This helped a little bit. But I was still questioning my mental state doing it like that. I also had to fix a bunch of the end tags by hand, because the word movement wasn’t enough or the end movement went too far. Quite the annoying process for sure.
But I think the HTML looks a wee bit nicer and is maybe even semantically a little bit better than having only <span>s everywhere. I find the <span class="whatever"> just soo awfully long. Of course, I never look at the code again, but knowing, that e.g. there is a <b> and it saves so many bytes in comparison, makes me happy. It is a more elegant solution in my opinion. Not by much, but better nonetheless. It’s a matter of simplicity. Admittedly, even I can’t avoid the <span>s alltogether. Oh well. On the other hand, I’m sure that this does not make any difference whatsoever. I bet, nobody and nothing, like a screenreader, analyzes the HTML for that, where this would be truly useful.
Oh! Maybe text browsers, though. It just occurred to me while composing this reply. :-) Haha, I lost my bet quickly. w3m picks up at least the <b> for keywords and builtin types, <u> for filenames and <i> for comments. Yey. No different styles for <var> and <mark>, unfortunately. elinks only renders the bold. It’s cool that I had the right intuition right from the beginning, despite being unable to pinpoint it. :-)
All the <span> hell with common syntax highlighters is a downer for me that keeps me from looking more into them. If I wrote more articles, I might rig something up with Pygments. At least that’s somehow positively connotated in my brain. Not sure if it actually deserves it, but I dealt with that in some loose form (can’t even remember) years and years ago. Apparently, it wasn’t too terrible.
To prepare the table of contents, I used grep and sed with some manual intervention in the end. The entire process can be improved. Absolutely.
You wrote your own site generator, didn’t you?
Launch HN: Rudus (YC P26) – AI for concrete contractors
Hi HN, we’re Rishi and Sahil. We’ve developed Rudus ( https://www.rudus.ai/), an AI-powered takeoff and estimation platform built for concrete subcontractors.
Takeoff is the process of measuring and quantifying materials from concrete plan sheets. Rudus identifies every concrete structure (footings, walls, columns, slabs), pulls in related details, and eliminates hours of manual quantity calculation. Here’s a demo: [https://www.youtube.com/w … ⌘ Read more
How Turkey Hacked the Hair Transplant Industry
From specialized motors to the use of machine learning algorithms, Turkey’s billion-dollar hair-transplant industry is the result of a constant process of innovation. ⌘ Read more
it’s “probabilistic” not “deterministic”
Yep, I know. And when I tell that to people and tell them “if we use AI here, we lose the ability to debug this stuff”, then all I get is: “But it’s good enough. We don’t need to debug this. Non-deterministic computing has its use cases.”
But that is just not how I’d like to model/implement our business processes. 🤔 I want something reliable, not “it mostly works”.
Most of the time, I take a very very long time to do anything. If I say, for example, “I’ll build an IRC Web Client”, that may not happen for weeks, if not months, until my sub conscience has has time to process everything. It’s like basically a “feeling” of internal readiness. I never talk through it, never actively think about it, it just happens.
@lyse@lyse.isobeef.org Alright. 😅
Yeah, don’t waste time on this. I have a vacation coming up and I won’t touch this subject, either. Fuck this shit.
I really like your style of writing, btw. It’s much calmer and less aggressive then mine. :-) When I turned my bullet points into paragraphs, I got a bit mad in the process.
This is like the 32nd iteration of that list and it was much worse in the beginning. 😂
@movq@www.uninformativ.de I really like your style of writing, btw. It’s much calmer and less aggressive then mine. :-) When I turned my bullet points into paragraphs, I got a bit mad in the process.
Sure, feel free to include anything you want. Regarding citing, this is where twtxt falls short in my opinion. Especially with feed rotation, classic links die quickly. Message hashes only help so much. Nobody outside the twtxt universe knows how to deal with them. So, not perfect for inclusion on a web page. Linking to a thread or message on some yarnd instance might be the more user-friendly option. But the disadvantage is that it’s “just” a mirror, not the primary or original source. In all reality, this could be considered splitting hairs, though.
I should have probably written a proper article. That would have given me time to review the result more carefully, too. ;-) Perhaps that’s something for the future. But honestly, I’m not sure if I really want to waste my time and energy on that subject. So many other fun or useless things come to mind right away that I could do instead. 8-)
So, yeah, do whatever feels best to you. I don’t mind being cited or linked, but I also don’t mind not to be cited or not to be linked to. :-D Not a helpful answer, I know. Sorry. ;-) But anyway, thanks for asking, mate! I do appreciate it.
To finish my thought, linking to my frontpage is probably also useless, since I deliberatly do not have a table of contents there. In fact, my entire frontpage is rather silly.
Of course, @movq@www.uninformativ.de! Most of my points are also included in your list.
First of all, programming is what I really do enjoy the most. So, it doesn’t make any sense at all to not do this anymore. “But you could use your now free time to do something much cooler and more valuable!”, others might reply. Fuck no, I don’t want to waste my time with other shit that doesn’t fulfill me, why on earth would I want to do that?
All this hallucination reduces quality badly. In my experience, it’s also happening much more rapidly than I expected. Even though developers are still supposed to own and understand whatever has been generated under their name and even be responsible for that, the sad reality is that teammates often blindly trust the AI output. “But I asked the AI and it told me that $this was impossible”, “I’ve no idea either, but the AI just generated it” are responses I get more often. What really makes my angry is when I point out a flaw and suggest an alternative and this is the reaction. It happened several times that just trying it out and seeing it clearly work to proof my point only took me half a minute, but people still did something handwavy else instead.
The learning effect is drastically reduced. The more time I spend on a topic, the better the odds that whatever I learned actually makes it over into long-term memory. It’s like if a collegue just says “do it like that” or “this solves your problem”, but neither explains the why or how. Somehow, people are still convinced that it’s a completely different story when you replace the human counterpart with a computer program in this equation.
Skills are unlearned. It’s like with automation in general, just much worse. You end up in a state where you’ve no clue how anything works under the hood or how to actually find out important information that are needed to solve your problem. You’re screwed when a process breaks out of the blue. Even though it can become also rather terrible, with classical automation you’re typically still be able to decipher how exactly the thing was supposed to do something.
The energy consumption is sooo high, I absolutely do not want to be a part in burning down our planet. I’m sure I find (and probably have long found without knowing) other ways to contribute to worsen our climate crisis.
The scraper part is already covered in detail in your list. :-)
I’m convinced that license and copyright violations are only played down or even refused entirely because companies want to make big money quickly. With the work of others of course. Their double standards are obvious, they still try to actively keep their own stuff secret and out of any training sets. At most for internal use only. Virtually noone in charge is interested in good long-term solutions. Short-term for the win, when disaster eventually strikes, the causers are long gone, the responsibilities in other hands.
Vendor lock-in is something that lots of folks are only realizing very slowly. It’s completely crazy to me. This drug dealer routine should be well-known by now. It’s fucking everywhere. Yet, people are always surprised when they found themselves caught in it.
Adding new AI stuff only increases complexity. But complexity is the enemy that everybody should fear and reduce as much as possible. Of course, this is not limited to AI at all. And everywhere I look around, people in charge looooove to make things way more complicated than they ever need to be. Yet, simplicity is the real art and much harder to achieve.
I don’t understand why we have to go back full force to the ambiguity of natural languages. This alone should be more than enough to realize what a stupid idea all that is. Linked to that is that the “instruction set” is interpreted differently with newer model versions. I mean, is has to be. Why else would somebody want to upgrade in the first place than to get more Powerful™ Features™?
Some people argue that with AI the democratization is empowered. However, in my view, the exact opposite is the case. Models are getting so large that you can basically not run them locally or even train them. So, you have to rely on whatever the vendor offers you and runs for you. In the end, this only gives the owners more power, the multi billionaires. Not exactly what I understand by democratization.
Finally, technology assessments are missing completely. Or they are faked such that mostly only the (questionable) benefits are listed. But all the negative impact is just ignored.
Let’s keep some popcorn around for when this all explodes. :-)
I should have changed the key binding from Print to Shift+Print a long time ago to launch import and upload the screenshot to my server. I was constantly hitting that stupid key on accident when I actually wanted to press [AltGr].
If I only could map a key binding to slap these damn ThinkPad T15 keyboard layout designers at Lenovo remotely in the face. Seriously, who in their right mind puts Print (in German Druck) between AltGr and Ctrl at the bottom row to begin with?! Exactly. Nobody. What a horrible location.
Best Last-Minute Mother’s Day Deals on Mom-Approved Gifts (2026)
Give Mom the best and save some cash in the process with these legitimate discounts on WIRED-approved gifts. ⌘ Read more
I Am Begging AI Companies to Stop Naming Features After Human Processes
Anthropic announced “dreaming” for AI agents to sort through “memories” at its developer conference. Can we not? ⌘ Read more
Best Mother’s Day Deals on Mom-Approved Gifts (2026)
Give Mom the best and save some cash in the process with these legitimate discounts on WIRED-approved gifts. ⌘ Read more
How to Buy a Bike That’s the Right Size for You
Shopping for a bike that fits your body and suits your needs typically involves a lot of trial and error. Here’s our advice on how to make the process—and your ride—as painless as possible. ⌘ Read more
Cada edição começa com o “State of Libre Graphics”, um momento para rever as novidades de cada projeto ao longo do ano que passou. Alguns que não estava a acompanhar e/ou não conhecia, e que agora quero:
- Blockbench - modelação 3D low-poly
- Coollab - animação em tempo real (tipo TouchDesigner)
- Friction - motion graphics
- Glaxnimate - animação vetorial
- Graphite - motor de animação 2D e etc
- Hyper8 - publicar vídeos na web
- L5 - Processing + Lua
- Makepad - IDE pra shaders em Rust
- Openrndr - creative coding
- Ossia Score - sequenciador intermedia
- OurPaint - pintura com pigmentos digitais
- PixiEditor - editor 2D à base de nós (nodes)
- TiXL - motion graphics em tempo real e VJ
Another AI rant:
One of the “key features” of LLMs is that you can use “natural language”, because that is supposed to be easier than having to learn a programming language. So, when someone says to me, “I automated this process using AI!”, what they mean is: They have written a very, very large Markdown document. In this document, they list what the AI is supposed to do.
In prose.
This is a complete disaster.
Programming and programming languages have one crucial property: They follow a well-defined structure and every word has a well-defined meaning. That is absolutely brilliant, because I can read this and I can follow the program in my head. I can build a mental model. I can debug this, down to the precise instructions that the CPU executes. This all follows well-defined patterns that you can reason about.
But with these Markdown files, I am completely lost. We lose all these important properties! No debugging, no reasoning about program flow, nothing. It’s all gone. It’s a magic black box now, literally randomized, that may or may not do what you wanted, in some order.
People now throw these Markdown files at me … and … am I supposed to read this? Why? It’s completely random and fuzzy.
Sadly, these AI tools are good enough to be able to mostly grasp the authors intentions. Hence people don’t see the harm they cause, because “it works”.
We already have a ton of automations like this at work: Tickets get piped through an LLM and these Markdown files / prompts determine what will happen with the ticket, and maybe they trigger additional actions as well, like account creation or granting permissions. All based on fuzzy natural language – that no two humans will ever properly agree on.
Jesus Christ, we’re now INTENTIONALLY bringing the ambiguity of legal texts and lawyers into programming.
Using natural language is NOT easier than using a programming language. It is HARDER. Have you people never read a legal contract? And that stuff can STILL be debated in a court room.
I can’t begin to comprehend why we, tech folks, push this so hard. What is wrong with you? Or me?
(And, once again, we’re ignoring other factors here. LLMs use a ton of energy and ressources, that we don’t have to spare. It’s expensive as fuck. It doesn’t even run locally on our servers, meaning we give all these credentials and permissions to some US company. It’s insane.)
Moon Davé doesn’t mention #py5 directly but very briefly shows something done with #Processing + #py5 cc @py5coding@py5coding
#Processing: #CreativeCoding and the Future of Education (at #fossdem26)
#Processing: #CreativeCoding and the Future of Education (at #fosdem26)
WA hop growers gear up for harvest as craft beer tastes evolve
Local brewers are experimenting with new flavours, while some farms invest in US-made machinery to modernise and streamline the harvest process. ⌘ Read more
Mars organics point at presence of possible biological processes
According to new research, organics found on Mars cannot be explained by any known geological process. The search for life on Mars - and in particular… ⌘ Read more
TIL that #Processing 4 on Windows now has an installer!
I is not just a zipped folder anymore, I wonder if it will make it harder for people to use it on restricted school labs…
TIL that #Processing4 on Windows now has an installer!
https://processing.org/download
I is not just a zipped folder anymore, I wonder if it will make it harder for people to use it on restricted school labs…
TIL that #Processing4 on Windows now has an installer!
https://processing.org/download
It is not just a zipped folder anymore, I wonder if it will make it harder for people to use it on restricted school labs…
Em vez de fazer o que eu devia estar fazendo… eu melhorei o “grid layout” da minha página de sketches diários. As imagens retangulares quando reduzidas na grade estavam “cropando” e agora só escalam para a largura da coluna. Clicando nas imagens da grade é possível ver uma versão ampliada em “overlay”.
@bender@twtxt.net That’s the plan! Once I’m happy with this v1 (and we find no other obvious bugs/issues) updating “Changes” with user-facing / human-freidnyl changes is part of the release process!
If you search for #py5 on the #InternetArchive you might find it mentioned in the #Processing Community Catalog 2021 commemorating 20 years of the Processing community projects and their developments!
https://archive.org/details/processing-community-catalog-2021/page/n401/mode/2up?q=py5
(There is a page by @hx2A@hx2A and another one by me!)
Hey folks! We have recently had a wonderful new release of #py5, read about the new 3D trimesh integration feature and the matplotlib TextPath integration.
That release was quickly followed by a release to fix some small issues that surfaced this last week. Please check out py5 0.10.9a1 and join us at https://github.com/py5coding/py5generator/discussions to share your experiences!
#CreativeCoding #Processing #Python #genuary (sorry for the hashtag spamming, I couldn’t resist!)
Mu (µ) is now getting much closer to where I want it to be, it now has:
- A
processstdlib module (very basic, but it works)
- An
ffistdob module that supportsdlopen/dlsymand calling C functions with a nice mu-esque wrapperffi.fn(...)
- A
sqlitestdlib module (also very basic) that shows off the FFI capabilities
😅
@prologic@twtxt.net That might be a challenge, at least in 16-bit Real Mode: The OS follows the model of COM files on DOS, i.e. the size of the binary cannot exceed 64 KiB and heap+stack of the running program will have to fit into that same 64 KiB. 😅 (The memory layout is very rigid, each process gets such a 64 KiB slice.)
And in 64-bit Long Mode, there is no “kernel” yet. The thing in the video is literally just a small bare-metal program.
But some day, maybe. 😃
Almost all photos turned out to be blurred today. That made sorting a very quick process. Delete, delete, delete, … https://lyse.isobeef.org/waldspaziergang-2025-12-26/
@lyse@lyse.isobeef.org These tables get shuffled around every time your OS switches to another process. It’s crazy that so much is going on behind the scenes.
There is a #Processing survey going on at:
https://docs.google.com/forms/d/e/1FAIpQLSduTT2cWlXzr7QG_g4LJ-Op6LwVTI7dtXHCGVH_FdI0BK00qg/viewform
I’m happy it mentions #py5 at some point.
At the end there is this invitation for the Processing Discord server. I find it unfortunate that the Processing Foundation is moving the community towards a closed, opaque platform controlled by a corporation, when they have the open and searchable forum powered by Discourse. I wish I understood the reasoning. I know Discord can be “convenient” but IMHO the downsides are much bigger.
@kiwu@twtxt.net Assembly is usually the most low-level programming language that you can get. Typical programming languages like Python or Go are a thick layer of abstraction over what the CPU actually does, but with Assembler you get to see it all and you get full control. (With lots of caveats and footnotes. 😅)
I’m interested in the boot process, i.e. what exactly happens when you turn on your computer. In that area, using Assembler is a must, because you really need that fine-grained control here.
I rewrote all my solutions in Rust (except for day 10 part 2) and these are the runtimes on my i7-3770 from 2013 (this measures CLOCK_PROCESS_CPUTIME_ID, not wallclock):
day01/1 [ 00.000501311] Result: 1066
day01/2 [ 00.000400298] Result: 6223
day02/1 [ 00.000358848] Result: 12586854255
day02/2 [ 00.000750711] Result: 17298174201
day03/1 [ 00.000106537] Result: 17405
day03/2 [ 00.000404632] Result: 171990312704598
day04/1 [ 00.000257517] Result: 1626
day04/2 [ 00.007495342] Result: 9173
day05/1 [ 00.000237212] Result: 505
day05/2 [ 00.000142731] Result: 344423158480189
day06/1 [ 00.000229629] Result: 4076006202939
day06/2 [ 00.000279552] Result: 7903168391557
day07/1 [ 00.000204422] Result: 1622
day07/2 [ 00.000283816] Result: 10357305916520
day08/1 [ 00.029427421] Result: 84968
day08/2 [ 00.028089859] Result: 8663467782
day09/1 [ 00.000310304] Result: 4764078684
day09/2 [ 00.015512554] Result: 1652344888
day10/1 [ 00.000796663] Result: 375
day10/2 [ --.---------] Result: 15377 (Z3)
day11/1 [ 00.000416804] Result: 753
day11/2 [ 00.000660528] Result: 450854305019580
day12/1 [ 00.000336081] Result: 577
day12/2 [ 00.000000695] Result: no part 2
A little under 90 ms total.
On my Samsung NC10 netbook from 2011 with its Intel Atom N455 at 1.6 GHz:
day01/1 [ 00.003771326] Result: 1066
day01/2 [ 00.003267317] Result: 6223
day02/1 [ 00.003902698] Result: 12586854255
day02/2 [ 00.006659479] Result: 17298174201
day03/1 [ 00.000747544] Result: 17405
day03/2 [ 00.002737587] Result: 171990312704598
day04/1 [ 00.001263892] Result: 1626
day04/2 [ 00.044985301] Result: 9173
day05/1 [ 00.001696761] Result: 505
day05/2 [ 00.000978962] Result: 344423158480189
day06/1 [ 00.001387660] Result: 4076006202939
day06/2 [ 00.001734248] Result: 7903168391557
day07/1 [ 00.001295528] Result: 1622
day07/2 [ 00.001809659] Result: 10357305916520
day08/1 [ 00.277251443] Result: 84968
day08/2 [ 00.284359332] Result: 8663467782
day09/1 [ 00.003152407] Result: 4764078684
day09/2 [ 00.071123459] Result: 1652344888
day10/1 [ 00.005279527] Result: 375
day10/2 [ --.---------] Result: 15377 (Z3)
day11/1 [ 00.003273342] Result: 753
day11/2 [ 00.005139719] Result: 450854305019580
day12/1 [ 00.002857552] Result: 577
day12/2 [ 00.000004421] Result: no part 2
A little over 700 ms total.
I like this. You get performance that’s more or less in the ballpark of C, but without the footguns.
#Processing & #py5 tip:
Remember the shapes you put on draw() will be redrawn over and over, and if they don’t move (leaving a trail) you might want to either clean each frame with background(...), or stop the draw loop (noLoop() in Processing or no_loop() in py5), otherwise you kill the anti-aliasing of the lines :D
”`python
import py5
def setup():
py5.size(200, 200)
py5.stroke_weight(2)
# a line that will drawn once only
py5.line(10, 10, 190, 90)
def draw():
# you could clean the frame here with background(200)
# this other line will be redrawn many times
py5.line(10, 110, 190, 190)
def key_pressed():
py5.save('out.png')
py5.run_sketch()
”`
#Processing & #py5 tip:
Remember the shapes you put on draw() will be redrawn over and over, and if they don’t move (leaving a trail) you might want to either clean each frame with background(...), or stop the draw loop (noLoop() in Processing or no_loop() in py5), otherwise you kill the anti-aliasing of the lines/strokes/edges!
I’m posting this tip because even using these tools for years and knowing this, today I briefly thought something was odd/broken because my lines were ugly with no “smoothing” :D
”`python
import py5
def setup():
py5.size(200, 200)
py5.stroke_weight(2)
# a line that will drawn once only
py5.line(10, 10, 190, 90)
def draw():
# you could clean the frame here with background(200)
# this other line will be redrawn many times
py5.line(10, 110, 190, 190)
def key_pressed():
py5.save('out.png')
py5.run_sketch()
”`
@prologic@twtxt.net I couldn’t find the exact blog post from before, one that used redirection directives in its nginx config. but I found [this one ](https://melkat.blog/p/unsafe-pricing#:~:text=Something%20else%20I’ve%20been%20doing%20this%20year,%20fine.) mentioning a similar process but done differently.
@prologic@twtxt.net The periodic blacklists updates will be done automatically in the background, as for the different processing mechanisms (rules, collections of rules, remediation …etc) you just install/add the pre-made ones from the hub and call it a day, they’ll get periodic updates when needed. But you could easily create and add your own in case you want to block or white-list a specific behavior
@prologic@twtxt.net The main thing that I tought of is that whomever is abusing your services must be a well known actor (by range/set of IPs) that got reported by other Crowdsec users. So to my simpleton’s understanding, your reverse-proxy/web server passes the requests by crowdsec for processing, they get banned for $N hours if the source has already been blacklisted by the community or violates any of a set of behavior base rules (and even more hours for repeat offenders); otherwise the requests/responses go as per usual. Not sure if I got things right but this might help paint a better picture of the process.
Today during class we built a small example showing #random vs. #PerlinNoise
#Processing #Python py5
Microsoft Removes DEI From Employee Review Process
“[Diversity & Inclusion] is just gone and not mentioned. ⌘ Read more
Be it Java with Swing or PyQt6, it takes ~300 ms until a basic window with a treeview and a listbox appears. That is a very noticeable delay.
Is it unrealistic to expect faster startup times these days? 🤔
Once the program is running, a new second window (in the same process) appears very quickly. So it’s all just the initialization stuff that takes so long. I could, of course, do what “fat” programs have done for ages: Pre-launch the process during boot, windowless. But I was hoping that this wasn’t needed. 😞 (And it’s a bad model anyway. When the main process crashes, all windows crash with it.)
ProcessOne: On Signal Protocol and Post-Quantum Ratchets
Signal improved its protocol to prepare encrypted messaging for the quantum era.
They call the improvement “Triple Ratchet” (or SPQR = Signal Post-Quantum Ratchet).
[Signal Protocol and Post-Quantum Ratchets\ \ We are excited to announce a significant advancement in the security … ⌘ Read more
@bender@twtxt.net The only problem with uploading is the procesing. Do you expect any server-side processing of the WebP or just store and host?
@prologic@twtxt.net Let’s go through it one by one. Here’s a wall of text that took me over 1.5 hours to write.
The criticism of AI as untrustworthy is a problem of misapplication, not capability.This section says AI should not be treated as an authority. This is actually just what I said, except the AI phrased/framed it like it was a counter-argument.
The AI also said that users must develop “AI literacy”, again phrasing/framing it like a counter-argument. Well, that is also just what I said. I said you should treat AI output like a random blog and you should verify the sources, yadda yadda. That is “AI literacy”, isn’t it?
My text went one step further, though: I said that when you take this requirement of “AI literacy” into account, you basically end up with a fancy search engine, with extra overhead that costs time. The AI missed/ignored this in its reply.
Okay, so, the AI also said that you should use AI tools just for drafting and brainstorming. Granted, a very rough draft of something will probably be doable. But then you have to diligently verify every little detail of this draft – okay, fine, a draft is a draft, it’s fine if it contains errors. The thing is, though, that you really must do this verification. And I claim that many people will not do it, because AI outputs look sooooo convincing, they don’t feel like a draft that needs editing.
Can you, as an expert, still use an AI draft as a basis/foundation? Yeah, probably. But here’s the kicker: You did not create that draft. You were not involved in the “thought process” behind it. When you, a human being, make a draft, you often think something like: “Okay, I want to draw a picture of a landscape and there’s going to be a little house, but for now, I’ll just put in a rough sketch of the house and add the details later.” You are aware of what you left out. When the AI did the draft, you are not aware of what’s missing – even more so when every AI output already looks like a final product. For me, personally, this makes it much harder and slower to verify such a draft, and I mentioned this in my text.
Skill Erosion vs. Skill EvolutionYou, @prologic@twtxt.net, also mentioned this in your car tyre example.
In my text, I gave two analogies: The gym analogy and the Google Translate analogy. Your car tyre example falls in the same category, but Gemini’s calculator example is different (and, again, gaslight-y, see below).
What I meant in my text: A person wants to be a programmer. To me, a programmer is a person who writes code, understands code, maintains code, writes documentation, and so on. In your example, a person who changes a car tyre would be a mechanic. Now, if you use AI to write the code and documentation for you, are you still a programmer? If you have no understanding of said code, are you a programmer? A person who does not know how to change a car tyre, is that still a mechanic?
No, you’re something else. You should not be hired as a programmer or a mechanic.
Yes, that is “skill evolution” – which is pretty much my point! But the AI framed it like a counter-argument. It didn’t understand my text.
(But what if that’s our future? What if all programming will look like that in some years? I claim: It’s not possible. If you don’t know how to program, then you don’t know how to read/understand code written by an AI. You are something else, but you’re not a programmer. It might be valid to be something else – but that wasn’t my point, my point was that you’re not a bloody programmer.)
Gemini’s calculator example is garbage, I think. Crunching numbers and doing mathematics (i.e., “complex problem-solving”) are two different things. Just because you now have a calculator, doesn’t mean it’ll free you up to do mathematical proofs or whatever.
What would have worked is this: Let’s say you’re an accountant and you sum up spendings. Without a calculator, this takes a lot of time and is error prone. But when you have one, you can work faster. But once again, there’s a little gaslight-y detail: A calculator is correct. Yes, it could have “bugs” (hello Intel FDIV), but its design actually properly calculates numbers. AI, on the other hand, does not understand a thing (our current AI, that is), it’s just a statistical model. So, this modified example (“accountant with a calculator”) would actually have to be phrased like this: Suppose there’s an accountant and you give her a magic box that spits out the correct result in, what, I don’t know, 70-90% of the time. The accountant couldn’t rely on this box now, could she? She’d either have to double-check everything or accept possibly wrong results. And that is how I feel like when I work with AI tools.
Gemini has no idea that its calculator example doesn’t make sense. It just spits out some generic “argument” that it picked up on some website.
3. The Technical and Legal Perspective (Scraping and Copyright)The AI makes two points here. The first one, I might actually agree with (“bad bot behavior is not the fault of AI itself”).
The second point is, once again, gaslighting, because it is phrased/framed like a counter-argument. It implies that I said something which I didn’t. Like the AI, I said that you would have to adjust the copyright law! At the same time, the AI answer didn’t even question whether it’s okay to break the current law or not. It just said “lol yeah, change the laws”. (I wonder in what way the laws would have to be changed in the AI’s “opinion”, because some of these changes could kill some business opportunities – or the laws would have to have special AI clauses that only benefit the AI techbros. But I digress, that wasn’t part of Gemini’s answer.)
tl;drExcept for one point, I don’t accept any of Gemini’s “criticism”. It didn’t pick up on lots of details, ignored arguments, and I can just instinctively tell that this thing does not understand anything it wrote (which is correct, it’s just a statistical model).
And it framed everything like a counter-argument, while actually repeating what I said. That’s gaslighting: When Alice says “the sky is blue” and Bob replies with “why do you say the sky is purple?!”
But it sure looks convincing, doesn’t it?
Never againThis took so much of my time. I won’t do this again. 😂
https://villares-shop.fourthwall.com/
#Python is for artists too!
#CreativeCoding #py5 #Processing #LSystem
Se vocês quiserem presentear alguém com uma coisa diferente… Andei fazendo umas camisetas e canecas com uns desenhos meus:
https://villares-shop.fourthwall.com/ (internacional)
https://umapenca.com/villares/ (Brasil)
Tem coisa sobre as bibliotecas de #Python para computação científica e geometria que eu uso na #ProgramaçãoCriativa e tem também aviãozinho colorido, plantas fractais e uns outros desenhos abstratos, tudo feito usando programação. #shapely #trimesh #numpy #py5 #processing
ProcessOne: Europe’s Decentralized Messaging Survives “Chat Control” Threat
Good news for anyone building messaging infrastructure in Europe: Denmark&aposs Council presidency is abandoning mandatory detection orders in the Child Sexual Abuse Material (CSAM) proposal for now. The proposal was nickna … ⌘ Read more
Rolando hoje o segundo dia do evento #Compoetica2025 online e presencial à tarde no @garoa@garoa em São Paulo.
Programação completa em https://compoetica.github.com
Transmissão em https://www.youtube.com/@compoetica
#ProgramaçãoCriativa #py5 #p5js #ML5 #Processing #SDL #Algorave #hackerspace #Brasil #SãoPaulo
ProcessOne: AI Bots Can’t Use WhatsApp Anymore. So… Who Are They Going to Talk To?
Meta just closed the gates on AI chatbots. I think this is an early warning.
Starting January 15, 2026, [WhatsApp will ban all third-party general-purpose AI chatbots from its platform](https://techcrunch.com/2025/10/18 … ⌘ Read more
@movq@www.uninformativ.de Yeah, give it a shot. At worst you know that you have to continue your quest. :-)
Fun fact, during a semester break I was actually a little bored, so I just started reading the Qt documentation. I didn’t plan on using Qt for anything, though. I only looked at the docs because they were on my bucket list for some reason. Qt was probably recommended to me and coming from KDE myself, that was motivation enough to look at the docs just for fun.
The more I read, the more hooked I got. The documentation was extremely well written, something I’ve never seen before. The structure was very well thought out and I got the impression that I understood what the people thought when they actually designed Qt.
A few days in I decided to actually give it a real try. Having never done anything in C++ before, I quickly realized that this endeavor won’t succeed. I simply couldn’t get it going. But I found the Qt bindings for Python, so that was a new boost. And quickly after, I discovered that there were even KDE bindings for Python in my package manager, so I immediately switched to them as that integrated into my KDE desktop even nicer.
I used the Python KDE bindings for one larger project, a planning software for a summer camp that we used several years. It’s main feature was to see who is available to do an activity. In the past, that was done on a large sheet of paper, but people got assigned two activities at the same time or weren’t assigned at all. So, by showing people in yellow (free), green (one activity assigned) and red (overbooked), this sped up and improved the planning process.
Another core feature was to generate personalized time tables (just like back in school) and a dedicated view for the morning meeting on site.
It was extended over the years with all sorts of stuff. E.g. I then implemented a warning if all the custodians of an activitiy with kids were underage to satisfy new the guidelines that there should be somebody of age.
Just before the pandemic I started to even add support for personalized live views on phones or tablets during the planning process (with web sockets, though). This way, people could see their own schedule or independently check at which day an activity takes place etc. For these side quests, they don’t have to check the large matrix on the projector. But the project died there.
Here’s a screenshot from one of the main views:
This Python+Qt rewrite replaced and improved the Java+Swing predecessor.
Meus cursos no Sesc em novembro!
ProcessOne: 🚀 ejabberd 25.10
Release Highlights:
If you are upgrading from a previous version, there are no mandatory changes in SQL schemas, configuration, API commands or hooks.
Other contents:
- **[New option
archive_muc_as_mucsubinmod_mam]( … ⌘ Read more
@prologic@twtxt.net Ah, I see. Yeah, you might be right. (Still a fragile process due to the general AI wonkiness, but it can help to some degree, yes.)
It feels very good that the two issues I reported for #Processing recently have people working on them!
The UK Begins Process of Blocking 4Chan in 60 Days
The United Kingdom Office of Communications (Ofcom) has issued a fine to 4Chan. ⌘ Read more
ProcessOne: Europe’s Digital Sovereignty Paradox - “Chat Control” update
October 14th was supposed to be the day the European Council voted to mandate scanning of all private communications, encrypted or not.
The vote was pulled at the last minute.
Germany withdrew support, creating a blocking minority that blocked the Danish Presidency&aposs hope to g … ⌘ Read more
@movq@www.uninformativ.de I submitted it via the form on their website (https://digital-markets-act.ec.europa.eu/contact-dma-team_en) and got the following response:
Dear citizen,
Thank you for contacting us and sharing your concerns regarding the impact of Google’s plans to introduce a developer verification process on Android. We appreciate that you have chosen to contact us, as we welcome feedback from interested parties.
As you may be aware, the Digital Markets Act (‘DMA’) obliges gatekeepers like Google to effectively allow the distribution of apps on their operating system through third party app stores or the web. At the same time, the DMA also permits Google to introduce strictly necessary and proportionate measures to ensure that third-party software apps or app stores do not endanger the integrity of the hardware or operating system or to enable end users to effectively protect security.
We have taken note of your concerns and, while we cannot comment on ongoing dialogue with gatekeepers, these considerations will form part of our assessment of the justifications for the verification process provided by Google.
Kind regards,
The DMA Team
Unlocking Local AI on Any GPU: Docker Model Runner Now with Vulkan Support
Running large language models (LLMs) on your local machine is one of the most exciting frontiers in AI development. At Docker, our goal is to make this process as simple and accessible as possible. That’s why we built Docker Model Runner, a tool to help you download and run LLMs with a single command. Until… ⌘ Read more
Mining giant gets $600m worth of taxpayer funds to keep refinery open
The last Australian copper smelter processing third-party product will stay open after its owner accepted a support package. ⌘ Read more
How GitHub Copilot enabled accessibility governance process improvements in record time
See how we turned weekly accessibility grade signals into an automated, accountable remediation workflow—powered by GitHub Copilot and cross‑functional collaboration.
The post [How GitHub Copilot enabled accessibility governance process improvements in record time](https://github.blog/ai-and-ml/github-copilot/how-we-automated-accessibility-compliance-in-five-h … ⌘ Read more
@lyse@lyse.isobeef.org Cool! 😎 You might be interested in my own learnings and toying around with building my own container engine / tooling (whatever you wanna call it) box. I had to learn a bunch of this stuff too 😅 Control Groups, Namespaces, Process Isolation, etc.
Ukraine disables 40% of one of Russia’s largest oil refineries processing 17.5 million tons annually ⌘ Read more
Trump Just Gave the Military an Extremely Sinister Mission
Fred Kaplan, - Slate
Stephan: As usual Trump tells us what he is going to do, but our political system does not seem to be able to process what he says. I am going to be a dictator and take revenge against those who oppose me he made very clear, and that is exacty what he is doing.
Before a gatheri … ⌘ Read more
Gap-controlled infrared method enables analysis of molecular interfaces
A novel spectroscopic method developed at Institute of Science Tokyo, Japan, enables highly sensitive analysis of molecules at material interfaces, using a combination of conventional ATR-IR, precise gap-control and advanced data processing. The technique offers a low-cost alternative to conventional interfacial spectroscopy and has potential applications in material sciences, nanotechnology, and biological sciences. ⌘ Read more
Making yogurt with ants revives a creative fermentation process
Researchers recreated a nearly forgotten yogurt recipe that once was common across the Balkans and Turkey—using ants. Reporting in iScience on October 3, the team shows that bacteria, acids, and enzymes in ants can kickstart the fermentation process that turns milk into yogurt. The work highlights how traditional practices can inspire new approaches to food science and even add creativity to the dinner table. ⌘ Read more
I know good people who work at Microsoft (like Guido van Rossum and Pamela Fox) but I don’t trust MS a iota. Making Processing work on VS Code… I don’t know if I like it. It leads people to a tool too much under MS control. I guess VS Code is too big to fail now?
I know about VS Codium… also, I’m struggling to move my stuff out of GitHub.
wafer.space Launches GF180MCU Run 1 for Custom Silicon Fabrication
wafer.space has launched its first pooled silicon fabrication run on Crowd Supply, known as GF180MCU Run 1. The campaign offers designers the opportunity to fabricate 1,000 chips of their own design using GlobalFoundries’ 180 nm mixed-signal process. The initiative is aimed at providing accessible, structured access to custom silicon, with dies expected to ship in […] ⌘ Read more
[$] Fedora floats AI-assisted contributions policy
The Fedora \
Council began a process to create a policy on AI-assisted
contributions in 2024, starting with a survey to ask the community
its opinions about AI and using AI technologies in Fedora. On
September 25, Jason Brooks published
a draft policy for discussion; so far, in keeping with the spirit of
compromise, it has something … ⌘ Read more
What is “com.github.squirrel” on the Mac?
If you’re a Mac user who watches system resource use by keeping an eye on Activity Monitor, htop, top, or any other monitor of deeper system processes, you may have seen a process called “com.github.squirrel” and wondered what it is, and perhaps even wondered if it’s bad. Is it dangerous or malware? github.squirrel has a … Read More ⌘ Read more
«The Hudson River is flowing through the heart of Times Square this month.
Press play to hear from Marina Zurkow & James Schmitz [@hx2A@mastodon.art] the artists behind ‘The River is a Circle (Times Square Edition)’ - September’s #MidnightMoment, a visual “combination of live data and a matrix of researched information about the Hudson River ecology,” says Zurkow.»
ProcessOne: Why Europe’s ‘Chat Control’ Proposal Will Cripple European Communication Industry While Failing to Protect Children
On October 14th, the European Concil will vote on a regulation that … ⌘ Read more
«Welcome to the #AutomatingGIS processes course! Through interactive lessons and hands-on exercises, this course introduces you to #GeographicDataAnalysis using the #Python programming language. If you are new to Python, we recommend you first start with the Geo-Python course (geo-python.readthedocs.io) before diving into using it for GIS analyses in this course.
Geo-Python and Automating GIS Processes (‘#AutoGIS’) have been developed by the Department of Geosciences and Geography at the University of Helsinki, Finland. The course has been planned and organized by the #DigitalGeographyLab. The teaching materials are openly accessible for anyone interested in learning.»
«Welcome to the #AutomatingGIS processes course! Through interactive lessons and hands-on exercises, this course introduces you to #GeographicDataAnalysis using the #Python programming language. If you are new to Python, we recommend you first start with the Geo-Python course (geo-python.readthedocs.io) before diving into using it for GIS analyses in this course.
Geo-Python and Automating GIS Processes (‘#AutoGIS’) have been developed by the Department of Geosciences and Geography at the University of Helsinki, Finland. The course has been planned and organized by the #DigitalGeographyLab. The teaching materials are openly accessible for anyone interested in learning.»
https://autogis-site.readthedocs.io/en/latest/
(via Paul Walter no linkedin)
https://villares-shop.fourthwall.com (International)
https://umapenca.com/villares (BR)
#Python #CreativeCoding #Processing #py5 #TShirt #GenerativeArt #SupportArtists
I “created two issues” today on #Processing, no I didn’t introduce new bugs I just wrote two bug reports :)
https://github.com/processing/processing4/issues/1243
Should I make more T-shirts?
https://villares-shop.fourthwall.com/
https://umapenca.com/villares/
#Python #Processing #py5 #CreativeCoding #FLOSS #numpy #shapely #trimesh
@zvava@twtxt.net oh duh! Sorry, I promised I read, my brain just didn’t process it right. I shall follow your progress, and offer bits and pieces of unrequested trivialities. :-)
ProcessOne: Spotify’s Direct Messaging Gambit
Last week, Spotify quietly launched direct messaging across its platform in selected areas, allowing users to share tracks and playlists through private conversations within the app. The feature was rolled out with mini … ⌘ Read more
There’s always something more urgent: I’ve been known for a long time that sooner or later I’d feel prompted to switch from #github to somewhere else (since 2018 at least!), but I’ve been postponing and only very slowly flirting with the idea… That didn’t work too bad for me: if I had rushed into it I would have probably migrated to #gitlab, before knowing about the more objectionable sides to it. In the end, 2025 was the year I finally acted upon the urge to move. I did not do a very thorough analysis of the alternative hosts - what I have been reading about them along the years felt enough, and I easily decided to choose #codeberg. Being hasty like that, alas, was a mistake: I just now found - during this slow and time-consuming process of deciding what and how to migrate - that there is a low repository limit on codeberg: “The owner has already reached the limit of 100 repositories.” I’m not complaining, mind you, and those “lucky 100” that are already there will stay - at least as a sort of backup. But this means that codeberg is not for me - and so this time I turn to you, the #mastodon community.
What github alternative, not self-hosted, should I move my >100 projects into?