Conversations with a six-year-old on functional programming (2018)
Article URL: https://byorgey.wordpress.com/2018/05/06/conversations-with-a-six-year-old-on-functional-programming/
Comments URL: https://news.ycombinator.com/item?id=48527377
Points: 4
# Comments: 0 â Read more
âYou are meant to be greaterâ: Hospital program unveiled to target youth crime
Youth workers and mentors will be embedded in two major Melbourne hospitals under a pilot program to divert young offenders away from crime. â Read more
âYou are meant to be greaterâ: Hospital program unveiled to target youth crime
Youth workers and mentors will be embedded in two major Melbourne hospitals under a pilot program to divert young offenders away from crime. â Read more
Need a U.S. Visa and Want to Skip a 12-Month Line? Thatâll Be $750
A new fast-track program will allow certain visa applicants to pay a premium and secure an interview within 10 business days. â Read more
Need a U.S. Visa and Want to Skip a 12-Month Line? Thatâll Be $750
A new fast-track program will allow certain visa applicants to pay a premium and secure an interview within 10 business days. â Read more
Maths camps and coding programs in $75m boost for Victoriaâs brightest students
Extra programs on botany, music and dance are also part of a $75 million state government announcement of free extension programs for prep to year 12. â Read more
Experts fear WAâs nature is âunravelling before our eyesâ. A new report sets out to turn the tide
The stateâs peak conservation body has put forward a suite of recommendations, including expanding the EPA and reviewing WAâs prescribed burning program. â Read more
The Ă Programming Language
Article URL: https://github.com/Panzerschrek/U-00DC-Sprache/
Comments URL: https://news.ycombinator.com/item?id=48391838
Points: 3
# Comments: 0 â Read more
Experts fear WAâs nature is âunravelling before our eyesâ. A new report sets out to turn the tide
The stateâs peak conservation body has put forward a suite of recommendations, including expanding the EPA and reviewing WAâs prescribed burning program. â Read more
WA is ahead of the pack for solar uptake. But what happens to panels at the end of their lives?
The WA government will tip $17.8 million into a program to recycle solar panels and lithium-ion batteries in a bid to recover valuable materials and reduce the waste being sent to landfill. â Read more
Secret government plan for radical expansion of suburban high-rise push
There are currently 60 high-rise activity centres. A secret state government proposal calls for 150 more. â Read more
Gleam v1.17.0 Released
Article URL: https://gleam.run/news/single-file-gleam-beam-programs-with-escript/
Comments URL: https://news.ycombinator.com/item?id=48377080
Points: 13
# Comments: 1 â Read more
âISIS brideâ accused of trying to indoctrinate children into terrorism before return to Australia
Rayann El Houli insists she has since renounced violent extremism, but hasnât completed an anti-terror program because it was âa bit muchâ for her. â Read more
More Australians report feeling lonely. This WA program is trialling a new idea to help
If we are serious about improving health outcomes and reducing pressure on our health system in Western Australia, we must start recognising community connection as a form of care. â Read more
Huge demand for vegetable seedlings
In March Tasmaniaâs biggest vegetable and flower seedlings producer almost sold out of vegetable plants, â Read more
A Bipartisan Amendment Would End Police License Plate Tracking Nationwide
One line tucked into a federal highway bill would strip funds from cities and states unless they kill their automated plate tracking programsâeffectively banning the tech for all but toll collection. â Read more
Retailer says tobacco licence ânot worth the paper itâs printed onâ amid illicit market
A Senate inquiry has heard the illicit tobacco market now accounts for around 50-60% of all tobacco sales in Australia - worth around 7 billion dollars to crime gangs.
Itâs estimated the federal government is now losing out on more than 11 billion dollars in tobacco excise annually.
While public health advocates and the tobacco industry argue over the merits of lowering the tobacco excise, sma ⊠â Read more
Poppy processor has new owner
Tasmaniaâs largest poppy processor has a new owner, and itâs on board with a vision to extract more value from alkaloid poppies grown here. â Read more
Light Phone Is Making Its Dumb Phone More Useful With Third-Party âToolsâ
A new developer program for LightOS allows anyone to create tools for the Light Phone, whether thatâs a local public transit app for your city or a way to read ebooks. â Read more
Wine industry calls for government investment
It might sound like a good problem to have - a glut of wine sloshing around local barrels.
But a decline in export markets and changes in consumer behaviour have left some grape growers ripping up their vines and exiting the industry altogether.
In the latest development - one of Australiaâs largest wineries - Winemasters SA - Â has appointed administrators following a failed sales bid.
GUEST: Lee McLean, ⊠â Read more
Pears the size of a human head grown at Paracombe
At a South Australian-owned, grown and produced juice manufacturer, pears the size of a human head are turning heads after popping up by the propertyâs fire exit. â Read more
The Latest Push to Extend Key US Spy Powers Is Still a Mess
A US surveillance program that lets the FBI view Americansâ communications without a warrant is up for renewal. A new bill aims to address mounting lawmaker concernsâwith smoke and mirrors. â Read more
Newly Deciphered Sabotage Malware May Have Targeted Iranâs Nuclear Programâand Predates Stuxnet
Researchers have finally cracked Fast16, mysterious code capable of silently tampering with calculation and simulation software. It was created in 2005âand likely deployed by the US or an ally. â Read more
SpaceX and Blue Origin compete to be first to return humans to the Moon
SpaceX and Blue Origin are both building lunar landers for the Artemis program, but only one can get to the Moon first. Now that Artemis II has succes⊠â Read more
Matt Gaetz: whistleblower claimed US has an âalien breeding programâ
Details of a secret US alien hybrid breeding program were reportedly once told to former Rep. Matt Gaetz. A peculiar story has been doing the rounds t⊠â Read more
Nationals deputy leader says supermarkets should pay farmers more for produce
Farmers have urged Australiaâs major supermarket chains to pay more for fresh produce, in response to increased fuel and freight costs.
GUEST: Darren Chester, Shadow Minister for Agriculture, Fisheries and Forestry
PRODUCER: Isadora Bogle â Read more
Discussion paper released on the Tasmanian Wine Industry as harvest begins
Itâs a busy time of the year for the wine industry in Tasmania with the latest vintage underway. â Read more
New vintage underway
As predicted, a late start for the 2026 Tasmanian wine grape vintage with harvest getting underway this week. â Read more
UFO spotters once thwarted a secret Soviet nuclear program
During the Cold War, a spate of mysterious sightings ended up exposing a plot to hide nukes from the US. Back in 1967, eagle-eyed skywatchers in the w⊠â Read more
Declassified files detail CIAâs little known behavioral control program
During the 1950s, the CIA had been working on a program designed to find ways to manipulate peopleâs behavior. Known as Project Artichoke, the endeavo⊠â Read more
Fancy a 15% discount on my #Domestika #Python + #CreativeCoding course?
A_B_A_VILLARES-2026
Valid up to March 13th
(Beware Domestika also uses dark patterns like a very low priced offering that will trigger a âyearly subscriptionâ after a month if you donât read the small print and cancel⊠not nice)
New Wine making facility opened in Northern Tasmania
A shortage of contract wine making facilities has led to a new venture in the states north, opening just in time for vintage. â Read more
What really happened to NASAâs original Moon landing tapes ?
Tape recordings made during the Apollo program were reportedly wiped due to a tape shortage⊠or were they ? You would think that something of such m⊠â Read more
Fuck me dead! I accidentally confused an HTML file for a YAML file and manually opened it in my browser. Unfortunately, I clicked on the OK button of the popped up dialog a bit too fast, it just caught me off guard. It asked which program to open the YAML file in. Of course Firefox thought that it could handle that and suggested itself by default. Conveniently, the âdonât prompt me again and always use this selection from now onâ checkbox was enabled.
And then the endless loop of death started. Turns out, this fucking browser canât do shit with YAML files and delegated to what had been just configured. Oh, would you look at that!? Firefox! Empty tabs after empty tabs appeared. Killing and restarting Firefox just loaded the last session with all the tabs and the loop continued.
Some bloody snakeoil on my work machine slows down link openening requests by two, three seconds. Itâs always absolutely anoying, but luckily, it actually limited the rate of new tabs popping up. I still could not close the many tabs fast enough that had accumulated before I noticed what was going on in the background.
Going to the settings to change them was always interrupted with a new tab opening in the foreground.
Finally, killing Firefox and renaming the file on disk before restarting Firefox did the trick and broke the loop. I was still holding down Ctrl+W for a minute or so to get rid of the useless tabs. I didnât want to loose the important tabs, so just ditching the session wasnât an option.
@movq@www.uninformativ.de Ah, great!
I have to analyze what is taking yt-dlp so long start up. Two and a half, three seconds just to determine that a video is in the download archive and then abort is nuts. Iâm wondering what this program does before that.
I canât remember if the hex viewer back then had these options. Donât even recall what software that was. :-)
The one that I used during my Windows 95 days was âHex Workshopâ. It had similar features, just not as promimently displayed. It shows them down there in the statusline as âValueâ:
Newer versions can probably do more, havenât checked. đ (Assuming this program still exists.)
Apart from selecting text to copy into the clipboard. But that probably has the potential for trouble and interference with button clicks, etc.
Yeah, thatâs a big problem: Once you activate mouse mode in the terminal, the terminal loses the ability to select text. đ Youâd either have to emulate that in the program itself (like Vim does) or give the user an easy way to turn mouse support on/off during runtime.
How did the startup times develop?
Theyâre pretty stable at around 230 ms on my old NUC. Itâs just fast enough so that it doesnât annoy me.
Iâm inclined to remove all mouse support, except for moving windows. đ€ I originally wanted this to emulate the behavior of DOS programs, but a) mouse support is a lot of code, b) using the mouse is cumbersome anyway and I would rarely do it.
NT avocado farm getting closer to reality
A Top End horticulturalist is working on tropical variates of avocado and has agreed to supply a grower with hundreds of trees. â Read more
Encouraging my kids to program as they draw: https://akkartik.name/post/2026-01-28-devlog
What a beautiful, beautiful 0°C Sunday arvo and evening! The weather forecast delayed the snow by the minute. An hour or so after it finally started very, very lightly, I headed off for the woods to check out the lake again. Unfortunately, with the fresh snow layer, the crazy wild surface texture of the ice sheet wasnât visible anymore. But it brought some other nice views and photo opportunities.
I initially thought that I just go for a quick turn. However, with the snowfall a wee bit increasing I was hooked and kept going. Visibility was poor, but the snow blankets just looked too stunning. The road surfaces were quite slippery, so I often just walked alongside the pathways. On downhill slopes I had some good fun sliding down the road on my feet. With varying success. Luckily, I managed not to fall.
On the summit of the mountain the twigs had those absolutely magnificently looking windblown crystal coverings. Awwwwwww! They never get old. It was already getting dark, so the camera was tired and wanted to sleep. The snow program then made use of the flash and Iâm quite pleased with how these shots turned out.
Two deer crossed the road in front of me and ran into the woods, that was sight for sore eyes. Although I felt bad that they had to flee from me in this white terrain. By the time I got home, the snow had accumulated around eight centimeters in height, even in town down in the valley. Walking on this fresh snow is just amazing. And I love the sound it makes. Today, the snow consistency must have been just right, because the crushing sound was really loud.
I cannot recall that I had frozen hair and beard before, but today, there was a thick ice buildup. In case I had, it was definitely never this much. Felt really cool.
Enough of this preliminary skirmishing, there ya go: https://lyse.isobeef.org/waldspaziergang-2026-01-25/
Another project where Iâm going to use my terminal widget toolkit is a hex editor. This is still very young, obviously, and thereâs a lot of work to do (both in the toolkit and this particular application), but Iâm making some progress:
https://movq.de/v/2bae14ed16/vid-1769283187.mp4
Since this program is UTF-8 clean (I hope), you can do things like enter multi-byte UTF-8 sequences or paste them from the system clipboard (another hex editor I just tried failed to do this correctly):
https://movq.de/v/e9241034c1/vid-1769283755.mp4
Under the hood, Iâm using mmap() with MAP_PRIVATE, which is really cool: I get the entire file as a byte array, no matter how large it is, no need to actually read it upfront; and MAP_PRIVATE means that I can write to this area however I like without changing the underlying file. The kernel does copy-on-write for me. Only when you hit Save, it will write to the filesystem. And itâs just a couple lines of code. The kernel does all the magic. đ„ł
Spent basically the entire day (except for the mandatory walk) fighting with Pythonâs type hints. But, the result is that my widget toolkit now passes mypy --strict.
I really, really donât want to write larger pieces of software without static typing anymore. With dynamic typing, you must test every code path in your program to catch even the most basic errors. pylint helps a bit (doesnât need type hints), but thatâs really not enough.
Also, somewhere along the way, I picked up a very bad (Python) programming style. (Actually, I know exactly where I picked that up, but I donât want to point the finger now.) This style makes heavy use of dicts and tuples instead of proper classes. That works for small scripts, but it very quickly turns into an absolute mess once the program grows. Prime example: jenny. đ©
I have a love-hate relationship with Pythonâs type hints, because they are meaningless at runtime, so they can be utterly misleading. Iâm beginning to like them as an additional safety-net, though.
(But really, if correctness is the goal, you either need to invest a ton of time to get 100% test coverage â or donât use Python.)
./bin/mu -B -o ... -p muos/amd64 ... target.
Whohoo! đ„ł
You have no idea how great a feeling this is! This includes the Mu stdlib and runtime as well, not just some simple stupid program, this means a significant portion of the runtime and stdlib âjust worksââą đ€Ł
Btw @movq@www.uninformativ.de youâve inspired me to try and have a good âol crack at writing a bootloader, stage1 and customer microkernel (”Kernel) that will eventually load up a Mu (”) program and run it! đ€Ł I will teach Mu (”) to have a ./bin/mu -B -o ... -p muos/amd64 ... target.
Iâm trying to implement configurable key bindings in tt. Boy, is parsing the key names into tcell.EventKeys a horrible thing. This type consists of three information:
- maybe a predefined compound key sequence, like Ctrl+A
- maybe some modifiers, such as Shift, Ctrl, etc.
- maybe a rune if neither modifiers are present nor a predefined compound key exists
Itâs hardcoded usage results in code like this:
func (t *TreeView[T]) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
switch event.Key() {
case tcell.KeyUp:
t.moveUp()
case tcell.KeyDown:
t.moveDown()
case tcell.KeyHome:
t.moveTop()
case tcell.KeyEnd:
t.moveBottom()
case tcell.KeyCtrlE:
t.moveScrollOffsetDown()
case tcell.KeyCtrlY:
t.moveScrollOffsetUp()
case tcell.KeyTab, tcell.KeyBacktab:
if t.finished != nil {
t.finished(event.Key())
}
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'k':
t.moveUp()
case 'j':
t.moveDown()
case 'g':
t.moveTop()
case 'G':
t.moveBottom()
}
}
}
})
}
This data structure is just awful to handle and especially initialize in my opinion. Some compound tcell.Keys are mapped to human-readable names in tcell.KeyNames. However, these names always use - to join modifiers, e.g. resulting in Ctrl-A, whereas tcell.EventKey.Name() produces +-delimited strings, e.g. Ctrl+A. Gnaarf, why this asymmetry!? O_o
I just checked k9s and theyâre extending tcell.KeyNames with their own tcell.Key definitions like crazy: https://github.com/derailed/k9s/blob/master/internal/ui/key.go Then, they convert an original tcell.EventKey to tcell.Key: https://github.com/derailed/k9s/blob/b53f3091ca2d9ab963913b0d5e59376aea3f3e51/internal/ui/app.go#L287 This must be used when actually handling keyboard input: https://github.com/derailed/k9s/blob/e55083ba271eed6fc4014674890f70c5ed6c70e0/internal/ui/tree.go#L101
This seems to be much nicer to use. However, I fear this will break eventually. And itâs more fragile in general, because itâs rather easy to forget the conversion or one can get confused whether a certain key at hand is now an original tcell.Key coming from the library or an âextendedâ one.
I will see if I can find some other programs that provide configurable tcell key bindings.
@lyse@lyse.isobeef.org Itâs not super comfortable, thatâs right.
But these mouse events come with a caveat anyway:
ncurses uses the XM terminfo entry to enable mouse events, but it looks like this entry does not enable motion events for most terminal emulators. Reporting motion events is supported by, say, XTerm, xiate, st, or urxvt, it just isnât activated by XM. This makes all this dragging stuff useless.
For the moment, I edited the terminfo entry for my terminal to include motion events. That canât be a proper solution. Iâm not sure yet if Iâm supposed to send the appropriate sequence manually âŠ
And the terminfo entries for tmux or screen donât include XM at all. tmux itself supports the mouse, but Iâm not sure yet how to make it pass on the events to the programs running inside of it (maybe thatâs just not supported).
To make things worse, on the Linux VT (outside of X11 or Wayland), the whole thing works differently: You have to use good old gpm to get mouse events (gpm has been around forever, I already used this on SuSE Linux). ncurses does support this, but this is a build flag and Arch Linux doesnât set this flag. So, at the moment, Iâm running a custom build of ncurses as a quick hack. đ And this doesnât report motion events either! Just clicks. (I donât know if gpm itself can report motion events, I never used the library directly.)
tl;dr: The whole thing will probably be âkeyboard firstâ and then the mouse stuff is a gimmick on top. As much as Iâd like to, this isnât going to be like TUI applications on DOS. Iâll use âWindowsâ for popups or a multi-window view (with the âWindowManagerâ being a tiny little tiling WM).
Leasing vineyards
Farmers take many risks with the weather, what sort of crop will grow, and will the price be right. â Read more
Vacation: Doing crazy things like C on DOS, lots of Rust, bare-metal assembly code, everything is fine.
Back at work: How the fuck do I move an email in this web mail program? Am I stupid? đźâđš
@bender@twtxt.net Theyâre not completely impossible, but C makes it much easier to run into them. I think the key point is that in those âsafeâ languages, buffer overflows are caught and immediately crash the program (if not handled otherwise) instead of silently corrupting memory, not being noticed right away and maybe only later crashing at a different location, where it can be very hard to find the actual root cause. This is a big improvement in my book.
Some programmers are indeed horrible. Iâm guilty myself. :-)
I like the article.
I came across this on âWhy Is SQLite Coded In Câ, which I found interesting:
âThere has lately been a lot of interest in âsafeâ programming languages like Rust or Go in which it is impossible, or is at least difficult, to make common programming errors like memory leaks or array overruns.â
If thatâs true, then encountering those issues means the programmer is, simply, horrible?
@movq@www.uninformativ.de I quite like this part:
Many people write programs, but few stick with a program long enough to distill it.
I think this is finally a good metaphor to talk about âsimpleâ software:
https://oldbytes.space/@psf/115846939202097661
Distilled software.
I quote in full:
principles of software distillation:
Old software is usually small and new software is usually large. A distilled program can be old or new, but is always small, and is powerful by its choice of ideas, not its implementation size.
A distilled program has the conciseness of an initial version and the refinement of a final version.
A distilled program is a finished work, but remains hackable due to its small size, allowing it to serve as the starting point for new works.
Many people write programs, but few stick with a program long enough to distill it.
I often tried to tell people about âsimpleâ or âminimalisticâ software, âKISSâ, stuff like that, but they never understand â because everybody has a different idea of âsimpleâ. The term âsimpleâ is too abstract.
This is worth thinking about some more. đ€
And now the event loop is not a simple loop around cursesâ getch() anymore but it can wait for events on any file descriptor. Hereâs a simple test program that waits for connections on a TCP socket, accepts it, reads a line, sends back a line:
https://movq.de/v/93fa46a030/vid-1767547942.mp4
And the scrollbar indicators are working now.
Iâll probably implement timer callbacks using timerfd (even though thatâs Linux-only). đ€
More widget system progress:
https://movq.de/v/87e2bce376/vid-1767467193.mp4
I like the oldschool shadow effect. đ Not sure if Iâll keep it, but itâs neat.
The menu bar is still fake.
Had to spend quite a bit of time optimizing the rendering today. This can get really slow really quickly.
Unicode is Pain.
I might be able to start porting my first program (currently uses urwid) soon. đ€
Nice! đ Here are the startup latencies for the simplest Mu (”) program. println("Hello World"):
- Interpreter: ~5ms
- Native Code: ~1.5ms
@movq@www.uninformativ.de Yeah, I see. Just crudely checked on my computer, with around 0.013 seconds, Python 2.7 seems a tad faster than Python 3.14âs 0.023 seconds in this little program.
The lazy imports sound not too bad, but I just skimmed over them. There are surprisingly many exceptions, but yeah, no way around them. :-)
mu (”) now has builtin code formatting and linting tools, making ” far more useful and useable as a general purpose programming language. Mu now includes:
- An interpreter for quick âscriptinogâ
- A native code compiler for building native executables (Darwin / macOS only for now)
- A builtin set of developer tools, currently: fmt (-fmt), check (-check) and test (-test).
I assume you made the thing load quickly, didnât you?
Thatâs the problem with Python. If you have a couple of files to import, it will take time.
I want this to be reasonably fast on my old Intel NUC from 2016 (Celeron N3050 @ 1.60GHz) and I already notice that the program startup takes about 95 ms (or 125 ms when there are no .pyc files yet). Thatâs still fine, but it shows that Iâll have to be careful and keep this thing very small âŠ
Python 3.14 will bring lazy imports, maybe that can help in some cases.
Well, you girls and guys are making cool things, and I have some progress to show as well. đ
https://movq.de/v/c0408a80b1/movwin.mp4
Scrolling widgets appears to work now. This is (mostly) Unicode-aware: Note how emojis like âđ â are double-width âcharactersâ and the widget system knows this. It doesnât try to place a âđ â in a location where thereâs only one cell available.
Same goes for that weird âĂ€â thingie, which is actually âaâ followed by U+0308 (a combining diacritic). Python itself thinks of this as two âcharactersâ, but they only occupy one cell on the screen. (Assuming your terminal supports this âŠ)
This library does the heavy Unicode lifting: https://github.com/jquast/wcwidth (Take a look at its implementation to learn how horrible Unicode and human languages are.)
The program itself looks like this, itâs a proper widget hierarchy:
(There is no input handling yet, hence some things are hardwired for the moment.)
@lyse@lyse.isobeef.org Iâm toying with the idea of making a widget/window system on top of Pythonâs ncurses. Iâve never really been happy with the existing ones (like urwid, textual, pytermgui, âŠ). I mean, theyâre not horrible, itâs mostly the performance thatâs bugging me â I donât want to wait an entire second for a terminal program to start up.
Not sure if Iâll actually see it through, though. Unicode makes this kind of thing extremely hard. đ«€
The compiler technique Iâm using here is to not âemitâ most of the runtime if itâs actually never used in your program, and also dropping dead code in the SSA pass.
@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. đ
My little toy operating system from last year runs in 16-bit Real Mode (like DOS). Since Iâve recently figured out how to switch to 64-bit Long Mode right after BIOS boot, I now have a little program that performs this switch on my toy OS. It will load and run any x86-64 program, assuming itâs freestanding, a flat binary, and small enough (< 128 KiB code, only uses the first 2 MiB of memory).
Here Iâm running a little C program (compiled using normal GCC, no Watcom trickery):
https://movq.de/v/b27ced6dcb/los86%2D64.mp4
Next steps could include:
- Use Rust instead of C for that 64-bit program?
- Provide interrupt service routines. (At the moment, it just keeps interrupts disabled.)
@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âm seeing crashes in the 3D subsystem. (Gallium? Glamor? Whatever other Mesa thing they have? No idea.) In the logs I find this:
malloc(): unaligned tcache chunk detected
And thatâs why I still care about Rust and want to learn more about it, even though itâs giving me so much headache and Iâve given up so many times. Because Rust currently seems to be the only popular systems programming language that tries to eliminate these error classes.
And of course âthe Rust experimentâ in the Linux kernel has recently been concluded as âsuccessfulâ, so that alone is reason enough for me:
I just completed âSecret Entranceâ - Day 1 - Advent of Code 2025 #AdventOfCode https://adventofcode.com/2025/day/1 â However I did it in my own toy programming language called mu, which I had to build first đ€Ł
Ahh thatâs because I forgot to call main() at the end of the source file. mu is a bit of a dynamic programming language, mix of Go(ish) and Python(ish).
$ ./bin/mu examples/aoc2025/day1.mu
Execution failed: undefined variable readline
Searching the web a bit brings up lots of threads where people hate WebP. The problem being that browsers support WebP but other programs tend to be problematic ⊠? đ€
@prologic@twtxt.net Nothing stops you from programming while in Vietnam. đđđ
All hail SAâs new Cherry King as first box goes for $65k
The first box of cherries this season went under the hammer at the SA Wholesale Produce Market in Pooraka, raising money for Variety - the Childrenâs Charity, assisting sick & disadvantaged kids. â Read more
NTâs largest banana farm suffers cyclone damage
The NTâs largest banana farm suffered damage from Cyclone Fina on the weekend, losing about 40 per cent of its fruit. â Read more
FTR, I see one (two) issues with PyQt6, sadly:
- The PyQt6 docs appear to be mostly auto-generated from the C++ docs. And they contain many errors or broken examples (due to the auto-conversion). I found this relatively unpleasent to work with.
- (Until Python finally gets rid of the Global Interpreter Lock properly, itâs not really suited for GUI programs anyway â in my opinion. You canât offload anything to a second thread, because the whole program is still single-threaded. This would have made my fractal rendering program impossible, for example.)
@prologic@twtxt.net Hm, same startup delay. (Go is not an option for me anyway.)
Itâs hard to tell why all this is so slow. Maybe in this particular case it has something to do with fonts: strace shows the program loading the fontconfig configs several times, and that takes up a bulk of the startup time. đ€ (Qt6 or Java donât do that, but theyâre still slow to start up â for other reasons, apparently.)
To be fair, itâs âjustâ the initial program startup (with warm I/O caches). Once itâs running, itâs fine. All toolkits Iâve tried are. But I donât want to accept such delays, not in the year 2025. đ Imagine every terminal window needing half a second to appear on the screen ⊠nah, man.
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.)
@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. đ
âComputação e o ensino superior artĂstico portuguĂȘs: currĂculos e prĂĄticas nos cursos de graduação pĂșblicosâ
âComputing and the Portuguese higher arts education: curricula and practices in public undergraduate programsâ
https://www.scielo.br/j/ep/a/dmVzQzqPXTjdPn7dBFtsvnw/?lang=pt
Javaâs Swing is allegedly in âmaintenance modeâ, so I doubt itâs a good idea to use it for new programs. For example, I very much doubt that it will ever support Wayland.
The replacement is supposed to be JavaFX, but thatâs not included in JREs â anymore! It used to be, now itâs not, even though itâs well over 15 years old now.
This whole thing (âJava GUIsâ) appears to have stagnated a lot. Probably because everything is web stuff these days âŠ
https://www.oracle.com/java/technologies/javafx/faq-javafx.html#6
Event gives access to small wineries in Tasmania
The owners of around forty vineyards in the south of the state are hoping the weather holds out for the next few days as they prepare to open the gates for the annual Spring in the Vines. â Read more
@movq@www.uninformativ.de Uh, that actually looks not that terrible. Somehow, I remember Swing GUIs being way uglier.
As for Visual Basic, I only had to use VBA once in my life. That was in the beginning of my career when I inherited a project from a leaving coworker. Fuck me, was that awful. Just alone the damn compiler error dialog box popping up in my face all the time while editing and the compiler already trying to parse the unfinished and hence of course uncompilable code. Boy, that left a lasting impression on me. I ported everything to Java very quickly. Luckily, the code base wasnât all that large at that point in time. I had to add a bunch of new features after that, so I was very glad that I convinced my workmate/project manager to do that first. We didnât even need a GUI, the button in Excel was transformed to a command line program that just generated the large file.
But I cannot comment on the VB GUI designer, I never used that. Your screenshot looks very similar to the Delphi one, though. Only towards the end of my Delphi days I found out about the possibility to make the widgets snap to window edges and corners (I donât remember how that was called), so that resizing the windows was actually possible without messing up their entire contents.
Switching to Linux, Delphi wasnât an option anymore. For some reason I couldnât use Kylix. Maybe it was already dead by the time I changed OSes. Or I couldnât get it to run. I just donât remember. I just recall that the unavailability of Delphi was the reason it took me a while to actually settle on Linux. I then fully switched to Java. The GridBagLayout was my absolutely favorite Swing layout manager. I reckon I used it 98% of the time, because it was so powerful and made the windows resize properly, just as I had learned to do in Delphi shortly before.
Up until discovering Swing, I used Javaâs AWT for a short amount of time. That was very limited I think and I hit the limits fairly quickly. Later at uni, we had one project making use of SWT. Didnât convince me either. I could be wrong, but I think there was also a SWT GUI designer plugin for Eclipse. If there really was, that one wasnât in the same street as Delphiâs (there must be a reason I forgot about it ;-)).
The one for Delphi was quite good.
It was! I didnât use Delphi for long, though. Dunno why, I always gravitated towards Visual Basic back then. đ
These days I donât deal with GUI programming anymore.
I also avoid it when possible, because ⊠itâs exhausting, because ⊠the tools that I have/know are âsubparâ. Doing anything regarding GUIs always feels like a chore. That wasnât the case in the VB days.
Well, I made this in ~2009 with Java/Swing and it was pretty nice to work with, custom widgets and all:
I wouldnât dare doing this with GTK.
@movq@www.uninformativ.de The one for Delphi was quite good. But JCreator (I donât remember exactly) was awful and I never looked back to GUI designers. Always layed out the GUI by hand in code myself since then. These days I donât deal with GUI programming anymore.
Theming on Qt6 is a bit unusual (you have to install qt6ct and then set an environment variable for every Qt program?), but at least pcmanfm-qt doesnât look like brain damage anymore now. đ€ (Except thereâs no darkmode. What is this, 1980?)
Oregon State University Teaches âWhite Rageâ as Computer Science
OSUâs Computer Science program â which had a $1 Million Dollar grant for âGender-Inclusive Open Sourceâ â teaches about âWhite Supremacyâ and âReparationsâ instead of programming. â Read more
When my program crashes with no error message at all â Read more
@dce@hashnix.club Arch is the most stress-free OS Iâve ever run (I last reinstalled it 14 years ago, only rolling updates since then) â but to be honest, I sometimes wonder what role my general choice of software plays. I mostly run minimalistic software or programs that I wrote myself. I guess that greatly reduces the chance of breakage. đ€
Account Take Over | P1âââCritical
It started off like any other day until I got an unexpected emailâââan invite to a private bug bounty program. Curious, I jumped in. TheâŠ
[Continue reading on InfoSec Write-ups »](https://infosecwriteups.com/account-take-over-p1-critical-5468ce8218b9?sour ⊠â Read more
22. How to Get Invites to Private Programs
Unlock the secrets to landing exclusive private program invites and level up your bug bounty journey.
[Continue reading on InfoSec Write-ups »](https://infosecwriteups.com/22-how-to-get-invites-to-private-programs-9bbb5166 ⊠â Read more
Beyond the AI Hype: Guido van Rossum on Pythonâs Philosophy, Simplicity, and the Future of Programming
Comments â Read more
Carney announces long-awaited automatic tax filing, makes school food program permanent â Read more
Programming in the sun with Vim and DC1 â Read more
It happened.
âCan you help me debug this program? I vibe coded it and I have no idea whatâs going on. I had no choice â learning this new language and frameworks would have taken ages, and I have severe time constraints.â
Did I say ânoâ? Of course not, Iâm a ânice guyâ. So Iâm at fault as well, because I endorsed this whole thing. The other guy is also guilty, because he didnât communicate clearly to his boss what can be done and how much time it takes. And the boss and his bosses are guilty a lot, because theyâre all pushing for âAIâ.
The end result is garbage software.
This particular project is still relatively small, so it might be okay at the moment. But normalizing this will yield nothing but garbage. And actually, especially if this small project works out fine, this contributes to the shittiness because management will interpret this as âhey, AI worksâ, so they will keep asking for it in future projects.
How utterly frustrating. This is not what I want to do every day from now on.
Lobsters Interview with Zdsmith
I had the pleasure of interviewing, befriending @zdsmith whose passions are very close to my heart. He explores the different forms of notation (Iverson, Naur), makes combinatory programming approachable, ported J to Janet, created an ergonomic notation for requirements gathering, designed his own [shorthands](https://blog.zdsmith.com/series/sh ⊠â Read more
[$] Gccrs after libcore
Despite its increasing popularity, the Rust programming language is still
supported by a single compiler, the LLVM-based rustc. At the 2025 GNU Tools\âšCauldron, Pierre-Emmanuel Patry said that a lot of people are waiting
for a GCC-based Rust compiler before jumping into the language. Patry, who
is working on just that compiler (known as âgccrsâ), provided an update on
the status of that project and what is coming next. â Read more
Python 3.14.0 (final) is here
This is the stable release of Python 3.14.0
Python 3.14.0, the newest major release of the Python programming language is here!
Shutdown Threatens Food Aid Program Relied on By Millions of Families
Associated Press Reporters, Â Â - Â MedPage Today | Associated Press
_Stephan: Trump is a psychopath, and so are a number of his vassals like Stephen Miller. They demonstrate their mental illness every day, and it just gets nastier. They obviously care nothing for the wellbeing of American families as this report details. And, meanwhile, the Republican Congressmembers just docilely watch ⊠â Read more
New program allows parents of kids with complex needs to take a break
An Australian-first pilot program gets underway in WA in the hope of not only giving the parents of children with complex needs a break, but helping them navigate the maze of different support systems. â Read more
A case for learning GPU programming with a compute-first mindset â Maisterâs Graphics Adventures
Comments â Read more