I teach a free software development course to my undergrad students. It's really exciting to stumble upon one of the work they did for my class in the wild (it's the first listed bug fix — which is the last of the three pull requests this student got merged in Immich during my course). I feel so proud! :)
This is too oddly written to read in its entirety and I don't get the point. I mostly still do things like it says it worked in 2008. The difference with the "modern" workflow with 1400 packages and a build system is that web pages I put online just work, unlike most modern website which are horribly bug ridden and take ages to load and render.
I really don't understand that some people are still trying to sell blockchain-based electronic voting. But anyway, I just wanted to tell a fun anecdote about the impossibility of making an obfuscater that works for any arbitrary program, or rather, since this is trivial for Quines [1], that it is possible to protect any program from obfuscation by making a simili-Quine of it. Given a program P, it is possible to construct a program Q(P) that takes an additional optional boolean input that defaults to false and which, when this additional input is false (i.e., by default), behaves exactly like the program P, but when called with the additional input set to true, acts as a Quine instead of executing P, thus outputs the source code for Q(P) (which is constructed to includes P's source code). This is guaranteed to work basically because an obfuscater cannot change the behavior of a program without breaking indistinguishability. I remember having a lot of fun working on that as an undergrad a long time ago [2].
I think the analogy presented here is broken. RSS doesn't depend on Google Reader at all. Even at its prime, RSS depended less on Google Reader than email depends on Gmail now. In ATProto, AppViews heavily depends on Relays to be useful, and Relays are quite expensive to run. Also, the yellow circles which represent blogs in the RSS illustration are really not of the same nature as the same circles which represent posts on Facebook. Blogs are self-sufficient, for example.
I'm not saying ATProto is bad at all, but I feel like this blog post adds more confusion than it clarifies anything.
I liked Symbian a lot, but I agree that Maemo was superior! Two after what I told above, in 2010, a few friends of mine had N900 and they seemed great. I was still in my study at the time and I interviewed for a summer internship at Nokia to work on Maemo and it was going great, but at some point during the recruitment process, that part of Nokia was sold (to Intel I think? the MeeGo project was announced a bit later) so they stopped all hiring even of interns and I had to find another internship.
Oooh! I fondly remember my N95! Pictures and movies it took were great, at least for the time, and it had apps and a lot of stuffs like a browser that were presented as new on the phone space when the first iPhone was released, while I had my N95 for almost a year at this time. Symbian was a really nice system.
This is a good introduction to Dune, but frankly, Dune kinda sucks. I mean, it is very powerful, and works very well, but it's too much of a hassle, especially for beginners. I don't want a language specific build system to require two different files to actually be usable, even on very simple projects… I still use it because it is the de facto standard, but I really preferred ocamlbuild [1], which was actually a tool that just worked without any configuration necessary for simple projects that uses standard tools. Where you would need to write a Makefile and call make, you could just write nothing and call ocamlbuild and it would just work. Dune lost that ability entirely.
So it's as confusing as I thought to do it that way. I wasn't sure if I thought so because I'm already familiar with all these concepts or because this introduction is indeed convoluted. Thanks for taking the time to reply!
Thanks for putting it this way. I have to admit I was really astonished by the question as I feel like HN is very much pro-AI at least in the sense that there is more AI promotion on HN than there is AI acceptance among people in the real world. It's been months if not years since most of the posts are about genAI, and in a largely favorable way. It's actually quite fascinating that for some people it feels like the opposite.
I feel like introducing lambda calculus (using JS syntax) would be less cumbersome and convoluted than referring to "the challenge" without really justifying it and deferring to respect the rules for so long. But maybe some people entirely unfamiliar with these concepts find this approach easier?
I agree with that. I'm just stating that it's contradictory with the project's own principles.
> Program directly against syscalls
It's the very first one of the listed principles. In the paragraph after this title it even says it "must" be the case in italic to insist on it, and there's a footnote to define what they mean, which is very clear in that pthreads should be out according to this principle.
First, thanks for sharing this link, it was an interesting read! A few remarks below.
I had a hard time reading the wc code in the article. First I had to go to the GitHub to understand that "da" stands for dynamic array, and then understand that what the author calls wc is not at all the wc linux commands, which by default gives you the number of lines, words, and characters in a file, not the count of occurrences of each word in the file, which is what the proposed code does.
Also, since I had to read the GitHub README, another remark: it says that sp_io uses pthreads rather than fork and exec. Both of those approach (but especially pthreads) are contradictory to the explicit goals of programming against lowest level interfaces. I believe the lowest level syscall is clone3 [1], which gives you more fine grained control on what is shared between the parent and child processes, allowing to implement fork or threads.
The author of this paper holds that quantum computers will never be able to go above the limit of a thousand qubits.
> Hence, insofar as a classical computer will never factor a 2,048-bit RSA integer, RaQM (rational quantum mechanics) predicts that a quantum computer will not either. This predicted breakdown of QM could be testable in less than 5 y.
People here who know about quantum computing, what do you think of this work?
The same thing happened with my blog a few weeks ago. It was well referenced for years and suddenly almost all of my entries are not indexed anymore. The Search Console indicates that the URLs were crawled but are currently not indexed, and contrary to technical problems, there nothing I can do to fix it, I just have to accept that most of my articles cannot be found via Google anymore.
EDIT: I don't actually think it is related, but now that I think of it, the timing corresponds with when I started setting up TDMRep to forbid using my content to train LLMs.
I moved my domains and mailboxes from Gandi to Infomaniak when Gandi went from "no bullshit" to full shit hole after TWS bought them. The service is top quality and their customers service was really helpful in transferring my third-level .name domain which has always been a hassle. This news makes me even more glad I chose Infomaniak.
Not just for LLMs, but in general if code is produced automatically by a tool and isn't going to be a hundred percent proofread and tested by humans who could have written it manually, it's always better to use the safest possible language so that the compiler can catch most of the errors. So yeah, Rust or OCaml are good candidates. Performance is also a good point but it's a secondary issue in my opinion.
Oh, since you're here, I want to say thank you for all your guides! I learned from them yeaaars ago, and still recommend them to my own students to this day, especially your network programming guide which is linked from all of the network lab session sheets of my systems and networks course. Thanks!
I teach such a course, and we don't have that. First, students must work on an existing issue of the project they choose and are only allowed (for my course) to submit an issue or a PR non related to an existing issue if they have already finished a first contribution that have been merged by the maintainers into to same project. The course grade is based on multiple factor and the code of the contribution itself is far from being the most important. The most important aspects are communication with the developers (and being respectful and polite certainly is significant) and the ability to identify and then respect the (often implicit) conventions of the project, as well as the proper use of the forge workflow for submitting a PR (fork, clone, branch, PR, discuss, etc.). Getting the contribution actually merged into the project is a neat bonus on the grade but is not required to pass the course.
Also, I totally ban using LLM, and unmotivated students often choose to work on very simple issues like easy refactoring or cosmetic aspects of web projects. It's okay with me for two reasons: first because it filters out unmotivated students from working of important issues and giving useless review work to open source maintainers, but also because we have all the other courses to do complex projects, here the point is to teach them by practice the workflow of contributing to an actual project, discussing with actual people, etc.
For some students it's already a good thing to have been able to get a copy of the latest development version of a given project, to install all of its development dependencies and tools, to compile it, and to reproduce the bug they chose to work on. It's not enough to pass the course, but it's a necessary first step to contribute to any project and it's quite a different experience from what they're used to with small school projects that are designed for teaching or that they entirely wrote themselves.
In the CS bachelor degree I'm responsible of, we have exactly that in the third and last year (it's in France, so as in ~all Europe the licence lasts three years and then students continue their studies doing a master in two years).
I've been teaching this course for ten years now, and it's been fantastic. A lot of open source contributions, mostly trivial, but some more significant than others too, have been made, to a lot of different projects. It teaches students to actually work on a real code base, using a real workflow (fork, clone, branch, commits, PR, review, commits, review, … hopefully merge), talking (in English) with maintainers, having to update tests and documentation not just code, and having to respect a lot of conventions that are not always explicitly listed anywhere (a first work that I always ask them to do is to present the project they have chosen, its tools, platforms, and languages, and to list all the programming conventions (indentation, naming, etc.) they can identify). At the end of it, it also make them realize what they can do, because at the beginning of the semester most of them think they will never be able to actually make a contribution to a real project.
This year only there were contributions to NewPipe, Cartes.app, Immich, Fossify apps, PyGameEngine, Jax, Shortcut, Wikimedia Commons App, Godot, …
Some years ago I even had students contributing to ls (yes, in the GNU core-utils).
Website: https://pablo.rauzy.name/ http://pablo2httpff4vogufavlmbxw4jkgb3amnywex2xdnchpztkdu2luead.onion/
Links: https://pablo.plus/