I just read @kat@yarn.girlonthemoon.xyzās blog post over here:
https://bubblegum.girlonthemoon.xyz/articles/learning-to-code-like-it-s-the-90s
Jesus, it must be so overwhelming for young people to get started with programming.
When I started programming, there was the built-in ROM BASIC of that PC and probably a bit of BASIC on a floppy, and that was it. Nowadays? Millions of libraries and frameworks and languages and what not ā and, much worse, thereās the expectation that you need to make something fancy. When I started, printing something and understanding IF was good enough.
Whatās your motivation for running this, btw? š¤
Basically, two things a) feeling generous for folks that either canāt afford or find it hard to have a little place to call home (webpage, feed, whatever) and b) a real opportunity to test some of the components that make it possible sshbox, which I know works well as it fronts my Gitea instanceās Git+SSH service and box, a container runtime I wrote a while ago, recently improved, hardened and polished.
As I said, Iām on vacation, and for about a week now, I did basically nothing but sleep. Day or night.
I canāt tell if this actually is a vacation or just therapy for burnout. š¤
Trying to add basic todo.txt for tracking projects in similar manner to twtxt updates. See https://txt.livingcartoon.org/pages/todo.html for rendered version
@prologic@twtxt.net As have I. š¤ I mean, since I left GitHub, I got basically 0 pull requests anyway.
Even during my time using GitHub, I noticed that ādrive-by PRsā are rarely a good idea. People donāt really know/understand the code or the design principles/goals, so I often turned down PRs. Or I accepted them and was grumpy afterwards. š
What does work is having a team of maintainers/devs. The only question is: How do you build such a team if you donāt accept PRs? Thatās going to be the interesting part.
@movq@www.uninformativ.de Hahaha, a ride indeed. Exactly, this affected each and every Atom feed and only Atom feeds. All RSS feeds worked like nothing ever happened. This std::string to time_t to std::string to time_t dance only happens for Atom feeds. RSS feeds, on the other hand, go right from std::string to time_t and be done. Thatās precisely what the second option is aiming to propose for Atom feeds, too.
I will clarify that tomorrow in the article.
Itās very interesting what kind of quirks accumulate in software over the years. Especially quirks, the basically noone knows of anymore. Until something explodes and gets rediscovered. Luckily, that doesnāt happen all that often.
And every time I ask it to do the same thing, it produces basically the same result. It will sometimes not produce a go.mod, but thatās probably because doing so isnāt as statically high as writing the code to sum numbers from stdin.
So going back to the understanding of how it generated this, is quite simply the most statistically relevant search space of itās weights it has been trianed on and it has basically just produced a series of tokens, one after another that are relevant to the input, the next token and so on. Itās a trivial example I know, but it basically pattern matches itās way through itās vast search space just producing outputs based on context.
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.
You can basically think of this as pattern-matching. Iām very very good at very fast pattern matching and piecing pices of a puzzle together very quickly, sometimes with very little to go on, itās often gotten me into a lot of trouble at work in my career because I can make a lot of assumptions very very quickly.
@bender@twtxt.net Now thatās an interesting philosophical viewpoint right there. But this assumes that the āAIā we seemingly have available to us today is actually telligent, understands and has cognitive reasoning. It does not. All of these LLM models from big-tech companies like Anthropic, OpenAI, Google, Microsoft, Meta and Alibaba are all just very powerful, very large multidimensional neural networks with attention that are very good at statistical probabilities of āwhat comes nextā. I think we get really upset over the wrong things sometimes. We need to continue to be upset that these 𤬠companies have basically destroyed any meaningful value of the concept of Copyright and Intellectual Property and Works of art. The so-called āAIā we have today is just a tool. Can you say for certain that the typewriter and the computer ruined our ability to write? Perhaps yes, but we still learn how to do so, likewise, I still think that learning to write code, research, read and write are all valuable skills to learn. Later on once you have the basics, you can defer some of the ātediousā work to these models, because frankly, theyāre far better at inferencing and pattern matching than you or i will ever be, not because theyāre better at pattern-matching per se, but because they have been trained on a very large corpus and they are much much faster at doing the same basic things we are far superior at.
Is it the fact that ābig techā companies have basically stolen all of human knowledge to their benefit to build these AI(s) thatās the problem? Or is it that these AI(s) can write code better than you can (some of the time)? Or is it that because of all of the above, thereās no joy left in writing code anymore? š¤
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. :-)
And we have a search function now. This should cover most of the basic features, I think.
All sorts of .de domains donāt resolve right now. But not all, movq.de for example still works. All on our server and basically all major other sites are cactus. Maybe some DENIC problem? Iām too tired to investigate, but Iām looking forward to tomorrow to read some report on that. :-) Good night.
The auDA, and some 3rd-party identify service and my Registrar are a joke!
WOW! I just had to share this little story I ran into today.
I tried to register a .AU Domain the other day, only for it to instantly fail.
I emailed support, which took several days to respond, only for them to respond by saying (paraphased):
Weāre sorry, but the identify checks failed. The 3rd-aprty service doesnāt tell us why, But, please make sure that the ID you used matches the Full Name, including any Middle name(s).
I used my Passport number. Which of course has my First, Middle and Last Name.
I can only assume at this point that the checks failed on the missing āMiddle nameā. Why? Because the Registrar I use has a database and user interface for ācontactsā that only have support for First name and Last name. NO Middle Name.
š¤¦āāļø This is basically stupid at this point. Systems cannot be trusted at the most fundamental level, no matter how good they are.
Until we figure out how to build a system that allows an individual to prove to another entity that they are who they say they are without a shred of doubt (i.e: cryptographically), weāre stuffed.
There is literally nothing I can do in this case. The auDA are at fault. The 3rd-party identify service (unknown) are at fault. The registrar are at fault. Hell, even the Passport office are at fault for even bothering to or requiring a Middle name.
How has āidentityā come to this?
This whole thing was pretty weird, btw. I had no idea it was happening until basically yesterday. No news coverage, nobody mentioned it. š¤ And suddenly, boom, weāre going to the moon. What? š
@lyse@lyse.isobeef.org Oops, I guess the new text is a bit obscure. If you follow the link, the text is a bit more explicit, but you still need to know what a lexical scope is. Anyway, this is part of Perl moving very carefully toward being UTF-8 by default while also not breaking code written in the 90s. If you name a recent version like āuse v5.42;ā then Perl stops letting you use non-ASCII characters unless you also say āuse utf8;ā. The ālexicallyā part basically means that strictness continues until the next ā}ā, or the end of the program. That lets you fix up old code one block at a time, if you arenāt ready to apply the new strictness to a whole file at once.
@itsericwoordward@itsericwoodward.com Nice. I just wanted to let you know that the black text color on nearly black button background color in the twtHash tab is basically unreadable. Iāve no idea why the dark theme is preferred over the light one in my browser anyway. :-D
2nd Van trip coming up this weekend, taking Friday off work. Gonna sleep in the Van tonight and see if I can fiddle with the town water supply (basically our outside tap near the Van haha š) and see if I can have a shower in the Van, brush my teeth and go to bed š ā Basically I just want to figure out the rest of the plumbing šŖ
This year for some reason or another, I decided to purchase an Ocarina, Iāve been practising a fair bit every now and again, basically during work breaks and sometimes in the afternoon / evenings (not enough to annoy the family š¤£) Anyhoo, that was 3 months ago, since then Iāve built up a bit of a Repertoire:
- Silent Night
- My Bonnie Lies Over the Ocean
- Amazing Grace
- O Holy Night
- Happy Birthday
- Greensleeves
- Scarborough Fair
- Sheāll Be Coming āRound the Mountain
Iāve now decided to purchase a slightly better quality Ocarina, the one I originally bought was a cheap $28 one, Iām now upgrading to a more professional instrument worth about $80 ā Wish my luck š
@aelaraji@aelaraji.com oh Iāve never had homemade yogurt! cool! I put granola in mine, Iām basic lol ^^
Itās raining and raining and raining and raining. I had hoped my mate canceled the hike today. But he didnāt. He showed up. So, off we went to the Staufeneck Castle Ruin after having a lunch first. The rain drizzling on the umbrella was very nice and I was very glad that he dragged me outside.
It was super wet, though. Entire creeks were coming down on some path sections. A slippery, muddy mess on others. Our boots were already soaked a few kilometers in the trip. The important part was that the feet were warm, though, despite being wet. We barely met anybody in this lousy weather. So we had basically everything for us alone. Thatās always great.
Visibility was poor the higher we got. At 13 a low hanging cloud was moving in, 14 is the result just three minutes later. We couldnāt see the castle 300 meters away anymore. No chance. It was really funny, because the houses in town at two kilometers distance were still visible. Poorly, but you could clearly make out the town. Not the castle, there was just a white wall of cloud :-)
On the way back, we warmed up with tea I brought along. After I dropped off my mate at the train station, I bumped into a fellow scout, so my wet feet cooled off completely in these 15 minutes we talked. The rainjacket mostly held up with the protection of the umbrella, just the sleeves were down. My rain trousers, on the other hand, leaked a little bit a the lower ends. I was glad when I could strip all the wet stuff. I would do it again, though. :-) Now, Iām swapping the newspaper in my boots every half an hour to absorb all the moisture.
https://lyse.isobeef.org/wanderung-auf-die-burg-staufeneck-2026-02-21/
Oh, our leaning silo laughs at the Leaning Tower of Pisa. :-D Iām wondering when it collapses. Iām waiting for this to happen for years now.
The fact that Canada and US do basic mathematical operations algorithms upwards always boggles my mind.
@movq@www.uninformativ.de if they havenāt, I would recommend a āsubtleā nudge. You know, like leaving an advert flier at their door for a āBasic English (including swearing words!) for Dummiesā book, or something like that. :-D :-P
Has a bit of a long history story behind this, where last year at work we were reading this book called Engineering a Safer World and initially came across a service called Speech Reply that allowed me to upload a PDF copy of the book and start to read it, but unfortunately, the free trial right now before I can finish reading it turns out that Speech Reply service cost a whopping US$30 a month and expected me to pay a full year upfront, which was well over US$300 just for one fucking book! So I sent their sales and support staff a message kindly asking if it were possible to just pay for the audio transcription of just a single book or to change to a monthly subscription fee, to which they refused, so basically in the end I got very angry and told them to go fuck themselves and built my own service. A year later here we are :-)
@bender@twtxt.net Iām already using it for tracktivity (meant for tracking activities and events, like weather, food consumption, stuff like that), which is basically a somewhat-fancy CSV editor:
https://movq.de/v/f26eb836ee/s.png
I have a couple of other projects where I could use it, because they are plain curses at the moment. Like, one of them has an āedit boxā, but you canāt enter Unicode, because it was too complicated. That would benefit from the framework.
Either way, itās the most satisfying project in a long time and Iām learning a ton of stuff.
I basically worked through the Christmas break last year. I already had my holidays in Vietnam a few weeks earlier. š
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
š
On my way to having windows and mouse support:
https://movq.de/v/95bbbbd3e8/basic-windows.mp4
It would be cool to have something like Turbo Vision eventually.
(I considered just using Turbo Vision, but itās a C++ library and thatās not quite what Iām looking for. But itās not yet completely off the table.)
Whoo! I fixed one of the hardest bugs in mu (µ) I think Iāve had to figure out. Took me several days in fact to figure it out. The basic problem was, println(1, 2) was bring printed as 1 2 in the bytecode VM and 1 nil when natively compiled to machine code on macOS. In the end it turned out the machine code being generated / emitted meant that the list pointers for the rest... of the variadic arguments was being slot into a register that was being clobbered by the mu_retain and mu_release calls and effectively getting freed up on first use by the RC (reference counting) garbage collector š¤¦āāļø
@movq@www.uninformativ.de From 2:50 PM to 3:23 PM AEST (+10 UTC) there was an outage. Everything went āupā on Down Detector, my EU region went offline, numerous sites were unavailable, and so on. Basically everything to/from the EU appeared to basically go kaput.
it is really annoying and degrading to find that you need to upgrade to payed subscription to enable 2fa on your account, cmon ppl those are basic thingsā¦
@aelaraji@aelaraji.com Yeah and I think I can basically pull the crowssec rules every N interval right and use this to make blocking decisions? ā Iāve actually considered this part of a completely new WAF design that I just havenāt built yet (just designing it).
Oh fuck me! I had basically turned off the route to git.mills.io last night and went ot bed at ~2AM after unsuccessfully trying to control the attacks (bad bots) that were behaving like a DDoS attack. Tried to re-enable the route this monring and *BOOM, theyāre back! As-if they never stopped?! what da actual fuq?!
Anyone have any clever ideas of what I can do here to allows normal users, like you nice folk and block ths obnoxious traffic?!
All my newly added test cases failed, that movq thankfully provided in https://git.mills.io/yarnsocial/twtxt.dev/pulls/28#issuecomment-20801 for the draft of the twt hash v2 extension. The first error was easy to see in the diff. The hashes were way too long. Youāve already guessed it, I had cut the hash from the twelfth character towards the end instead of taking the first twelve characters: hash[12:] instead of hash[:12].
After fixing this rookie mistake, the tests still all failed. Hmmm. Did I still cut the wrong twelve characters? :-? I even checked the Go reference implementation in the document itself. But it read basically the same as mine. Strange, what the heck is going on here?
Turns out that my vim replacements to transform the Python code into Go code butchered all the URLs. ;-) The order of operations matters. I first replaced the equals with colons for the subtest struct fields and then wanted to transform the RFC 3339 timestamp strings to time.Date(ā¦) calls. So, I replaced the colons in the time with commas and spaces. Hence, my URLs then also all read https, //example.com/twtxt.txt.
But that was it. All test green. \o/
@lyse@lyse.isobeef.org @bender@twtxt.net Pfft, they want folks to relocate to Sydney. Fuck that 𤣠Sydney is a bit like San Francisco, Iām not actually sure which is worse. Fuckān expensive as hell, the only palce youād be able to afford to buy or rent is at least ~2hrs out of the city by public transport (i.e: train) and by that time youāve just pissed your life down the toilet, because youād be expected ot work a 9-10hr day + 2-3hrs of travel each way, buy the time you factor in having to wake up super early to get ready to travel in to work, you basically have zero time for anything else, let alone your ufamily,
Fuck that.
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. š
@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:
https://movq.de/v/de26d5edb3/s.png
I wouldnāt dare doing this with GTK.
And maybe I should go back to using GUI designers. Havenāt used those since the Visual Basic days. š¤ It wasnāt pretty, but you got results very quickly and efficiently.
(When I switched to Linux, I quickly got stuck with GTK and that only had Glade, which wasnāt super great at the time, so I didnāt start using it ⦠and then I never questioned that decision ā¦)
Just FTR, in case this wasnāt obvious, the āright to repairā (if there ever is one) needs to be more than just āyouāre legally allowed to repair stuffā.
I just fixed this thing by replacing two capacitors. Great, but this was an absolute shitshow and it took several days. So many obstacles, everythingās tiny, connectors glued together, ⦠It worked in the end, but I was so close to giving up.
Being legally allowed to do something is basically worthless if itās not feasible to actually do it.
@arne@uplegger.eu Yeah SSE + HTMX is basically all you need really. The whole complicated/complex JavaScript ecosystem is overkill.
@lyse@lyse.isobeef.org In my case it was a silver necklace, a hummingbird with a wing connected with the cold welding I mentioned using thin brass wires.
It made it in a goldsmithing class (I went to a private craftmanship high-school) so no phones allowed (no photos of it) and no ātake homeā of the works.
Hereās a rough sketch of it drawn by memory, the dots in the wing is where it connects to the body.

The technique is basically the same as i described, but the scale is much smaller, the whole piece was about 5-6 cm on the largest side.
The rivet was made by drilling a hole through the parts, than with a short and thicker drill you widen the hole on the surface to let the rivet settle flatter on the piece, then with a rubber hammer you hit it to flatten the head until itās snug on the hole, lock them together by doing the same on the other side.
Note that widening the hole with a thicker drill head wonāt make a difference with bigger holes, mine had holes of about 1-2 mm of diameter maximum.
Hereās a sketch of what is going on for clarity.

iām torn between git-daemon and using a forgejo to store my flakes. i can do authz using yggdrasil addresses, but thatās basically the limit. maybe thatās not a bad thing.
@bender@twtxt.net We have quite a few that are basically part of our friendly neighborhood. They knew we wonāt chase them aware, scare them, etc. In fact some of us find little cockroaches to feed them, tose āem up in the air and watch them sweep in and grab the little suckers š¤£
Hi everyone, hereās a little introduction of my twtxt client (still WIP).
The client Iām developing is a single tenant project that runs entirely in the browser (it might use an optional backend).
Itās entirely based on native web-components and vanilla JS, it is designed to act closer to a toolkit than a full-fledged client, allowing users to āDIYā their own interface with pure html or plain javascript functions.
Users can also build their own engines by including a global javascript object that implement the defined internal API (TBD).
Iām planning to build a system that is easy enough to build and use with any skill level, using only pure html (with a homebrew minimal template engine) or via plain JS (Iāll be also providing some pre-made templates too).
Everything can be self-hosted on any static hosting provider, this allows to spread twtxt within communities like Neocities and similarly hosted websites (basically any Indieweb/Smallweb/Digital garden website and any of the common GitHub/Lab/Berg/lify Pages).
It will be probably named something like TxtCraft or craf.txt but Iām not really sure yet⦠š¤ (Maybe some suggestions could help)
Iām still in the experimental phase, so thereās no decent source-code to share yet, but it will soon enough!
Pretty happy with my zs-blog-template starter kit for creating and maintaining your own blog using zs š Demo of what the starter kit looks like here ā Basic features include:
- Clean layout & typography
- Chroma code highlighting (aligned to your site palette)
- Accessible copy-code button
- āOn this pageā collapsible TOC
- RSS, sitemap, robots
- Archives, tags, tag cloud
- Draft support (hidden from lists/feeds)
- Open Graph (OG) & Twitter card meta (default image + per-post overrides)
- Ready-to-use 404 page
As well as custom routes (redirects, rewrites, etc) to support canonical URLs or redirecting old URLs as well as new zs external command capability itself that now lets you do things like:
$ zs newpost
to help kick-start the creation of a new post with all the right āstuffā⢠ready to go and then pop open your $EEDITOR š¤