1. 9

No, this is stupid. Use the right interval for the job. I do have a strong bias for such half-open intervals, but they are obviously not always the right thing. In a recent project, I thought I was being clever by using [) intervals where most of the literature uses [] intervals; turns out that using exclusively either leads to breakage in certain edge-cases.

1. 4

It’s not obvious to me that the benefits from choosing a specific type of interval for each application outweigh the downsides from lack of consistency. Do you perhaps have any notational conventions that help alleviate these pitfalls?

1. 3

Consistency is not an excuse for giving incorrect answers.

Do you perhaps have any notational conventions that help alleviate these pitfalls?

I do not. Else-thread, it was suggested to use a name ending in ‘x’ to refer to an exclusive bound on a range.

1. 4

Consistency is not an excuse for giving incorrect answers.

I don’t follow. You can always rewrite a [] interval as a [) interval, can’t you? I don’t see why enforcing consistency has to lead to incorrect answers.

Here’s a different way to put this: can you give more details about why [] intervals were so much better in the project you’re discussing? (whereswaldon gives an example in another part of the comments, but I’m curious to hear yours.)

1. 3

You can’t naively choose the open bound for a closed bound because you need to know the implied precision. You can often infer it but not always. Especially tricky when you mix in floating point errors.

1. 2

You can’t convert an open bound to a closed one if your type has arbitrary precision.

Closed intervals are great and intuitive for all kinds of things. E.g. fetching the second to fifth elements in an array: A[2:5] in Julia (1-based indexing with inclusive ranges) vs A[1:5] in python (0-based with right-open interval).

Open intervals are good for stuff too, but I don’t think Dijkstra or this author give compelling reasons to always choose [) intervals. E.g. their argument for finding the length of an interval, if you have interval objects then you can just use length(2:5).

1. 1

It’s somewhat involved, and I don’t think the details are too important; it does involve nonintegers, as the siblings say. A 2-D vector rendering algorithm will exhibit artifacts if the bounds on its primitives are always half-open.

The GP asked about notational conventions—I realised I do have something to say here: in this project, I use bitmaps to indicate which bounds are inclusive and which exclusive. As a final preprocessing step, purely for performance reasons, I regularise the bounds, pursuant to the particular floating/fixed-point representation in use.

2. 1

not obvious to me that the benefits from choosing a specific type of interval for each application outweigh the downsides from lack of consistency.

To be fair the benefits in the reverse direction are not clear to me. I think I agree with the “right interval for right job” perspective, but this may be down to personal preference.

1. 2

Nice post. Computers should be fun.

1. 3

This seems sensible enough. I do note there seems to be a discrepancy between the presentation and the reference implementation: the presentation gives special values for the float special cases `NaN`, `+Inf`, and `-Inf`, but a scan of the source code seems to indicate that these values are neither parsed nor generated by `muon.py`.

1. 3

Implementation is incomplete, it was mainly designed to compare Muon with JSON, but JSON lacks +-Inf and NaN

1. 1

Not to disparage the effort, but I’m curious why the author has chosen to implement an X11 compatibility layer and not a Wayland one, since X is rapidly approaching obsolescence in the Linux space.

1. 23

since X is rapidly approaching obsolescence in the Linux space

This is said a lot, but it isn’t really true.

1. 3

This is said a lot, but it isn’t really true.

But it should be. X is …… old. It should be resting.

1. 18

Linux is only about seven years younger than X. I guess it must be approaching obsolescence too.

For that matter, I was released in 1986….. oh dear, I don’t think my retirement account is ready for that :(

1. 13

Personally I can’t believe lobster.rs is served primarily via TCP and UDP. They are 42 years old and should be put to rest.

</s>

1. 1

You’re right. We should be using SCTP instead.

2. 11

The author explained this here.

1. 9

Even if Wayland does finally replace Xorg for Linux users, it doesn’t necessarily mean people will stop wanting to run X11 applications.

1. 7

X was obsolete, full stop, a decade or two ago. Whether or not a thing is obsolete has little to do with how ubiquitous or useful it is.

1. 9

Andreas Kling (SerenityOS): “Why not just use X?”

1. 3

It appears it’s currently named “SerenityOS Browser”. I think an actual name could go a long way.

1. 9

Why? “Browser” is the logical next step after “Chrome” :D

1. 4

I’m positive this is why everyone still says “Epiphany” instead of “(GNOME) Web”

2. 8

The whole philosophy of SerenityOS is that everything is developed in tandem and as one cohesive system. To give the Browser a distinct name and brand would be in some sense to depart from this ideal.

1. 4

This is really cool. I try out Serenity a couple of times a month and lobste.rs is one of my go-to ‘test sites’ (until recently, one of the relatively few sites that could actually be viewed, due to the now-solved cryptographic limitations). The progress has been amazing; just a few months ago the site was more or less unusable. To get to the point of interactivity is a huge accomplishment as anyone who knows anything at all about the complexity of the modern web can appreciate.

1. 27

I suggested a rant tag since this feels like a super vague long form subtweet that likely has a specific story/example behind it. I don’t understand what dhh actually complains about there and whether it’s genuine without knowing that context.

1. 11

Pretty sure he’s railing against the /r/programmerhumor style “software development is just copy-and-pasting from stack overflow right guiz!” meme. I’m sympathetic to his frustration because this joke (which was never that funny in the first place) has leaked into non-technical circles. I’ve had non techies say to me semi-seriously “programming, that’s just copying code from the internet, right?” and it galls a bit. Obviously we all copied code when we were starting out but it’s not something that proficient developers do often and to assert otherwise is a little demeaning.

1. 9

Obviously we all copied code when we were starting out

Well no, I copied examples from a book. Manually, line by line.

1. 6

I have 20 years experience and I regularly copy paste code rather than memorize apis or painstakingly figure out the api from its docs. I do the latter too, but if I can copy paste some code as a start all the better.

1. 4

The meme starts being a bit more condescending now though. I frequently come across tweets saying things like « lol no one of us has any idea what we are doing we just copy paste stuff ». The copy pasting stuff is kinda true in a way (although a bit more complicated, even as a senior dev I copy paste snippets but know how to adapt them to my use case and test them), but the incompetence part is not. But it sadly starts to feel like there are tons of incompetent OR self deprecating people in the field. That’s pretty bad.

This blog post resonates with me, it really pinpoints something.

1. 3

It’s cool if that’s what he wanted to say, but the inclusion of impostor syndrome and gatekeeping made me think otherwise.

1. 3

That was probably just him hedging against expected criticism

2. 2

Why am I paying this exorbitant salary, to attract people like you with a fancy degree and years of experience when all you ever do is a four-second copy-and-paste job?

You pay it because it because I spent a long time achieving my degree and accumulating years of experience to be able to judge which code to copy and paste where, and why and in only four seconds at that.

No matter the context these reductions are always boiled down to the easy to perform operation, never the understanding behind the operation.

3. 5

It absolutely feels like a subtweet, but I have no idea what the context was. Did someone at Basecamp just post the no idea dog one time too often?

1. 5

The link lives on pages deeper down, so here’s the repo if anyone’s interested https://evilpiepirate.org/git/bcachefs.git/log/

I’ve been following it for a while (and supporting at https://www.patreon.com/bcachefs ). I really hope that it gets to see production use one day. The developer behind it is really consistent with the effort.

1. 2

In Linux tradition, if it is any good, it will likely not get merged.

1. 8

What are some examples of this?

1. 1
1. 1

Reiser4 is the first one that comes to mind.

Tux3 is another.

2. 7

Why do you think so? It’s already been through one round of reviews and some of the required building blocks have been merged.

1. 2

NTFS3 was merged.

1. 8

The biggest challenge will be rallying the Linux desktop developer communities to support this rather than whatever they are working on at the moment (Ubuntu, Linux Mint, elementaryOS, KDE, etc.) The people at System76 seem to be giving themselves a lot of work and I’m not sure if that energy will convert into a dramatically better desktop (that presumably will encourage people to buy more System76 computers).

1. 15

I think it will, and here’s why. In a word - Focus.

I’ve become much more involved in the Linux community again over the last 5 years, and in that time I’ve watched Gnome go through at least 3 ground-up redesigns of various subsystems. I feel like because their project is almost entirely volunteer driven except for the handful of fine folks who get paid to work on it, they go after what’s bright and shiny (e.g. rewrite/redesign) rather than focusing on what many might consider the decidedly less glamorous work of actually polishing their DE for usability and accessibility.

This is an area where KDE IMO shines - they’ve been quietly chugging along for the last several years adding polish and stability to their core. The big problem with trying to use KDE being that you only choices in distro are KDE Neon or a bunch of alternative spins that get even less eyeballs and love than the mainline Gnome flavors of various distributions.

1. 7

The big problem with trying to use KDE being that you only choices in distro are KDE Neon or a bunch of alternative spins that get even less eyeballs and love than the mainline Gnome flavors of various distributions.

OpenSUSE is one of the most established distributions and has been KDE-by-default for decades.

1. 2

Wasn’t aware. That’s great news!

2. 7

I think the attempt is more important than drawing any audience to it. You fail at 100% of the things you don’t try.

1. 3

I remember trying to learn C++ for Win32 when I was a kid. The amount of boilerplate and `int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);`, just to get “Hello, World!” going made the threshold too high. After QBasic and Turbo Pascal, I started learning 16-bit and 32-bit Assembly instead, and it was much easier.

If I were to teach programming to a beginner today, I would start with Crystal, because:

• It has a human friendly Ruby-like syntax.
• It compiles to native. It’s conceptually satisfying to be able to go from a short program to an actual executable.
• No boilerplate is needed to get going with a real program.
• No `#!/usr/bin/env python` and `# -*- coding: utf-8 -*-`. No `if __name__ == "__main__"` (which are not strictly needed, but commonly used).
• No weird operator overloaded `std::cout << ... << std::endl;`.
• No `(cdr (cons 'SUBJECT 'VERB))`. Heads attached to tails is not an intuitive way to think about a list of three numbers.
• No abbreviated `printf("%2\$d %2\$#x; %1\$d %1\$#x",16,17)` (which is handy later on, but cryptic to a beginner).
• Going up one abstraction level in Crystal, to `if` or `def` does not require to keep track of indentation, curly brackets or parentheses. The block just ends with `end`.

After that, I would set up a fun domain that pointed to a Linode or Cloud server that was running a simple Crystal web server. Then I would set up a GitLab git repository with CI, so that when the kid made changes to the simple Crystal web server and typed `git push`, the domain would reflect the changes or they could check the CI web page if the test failed. This way they could experiment with the code and also easily share the results with friends and family, just by giving them the domain (“kids-name-says-hello.com”).

They would also learn modern development practices, but with the low threshold of only having to:

• Edit a very short Crystal source file.
• Learning to type `git commit -a -m "Message"` and `git push`.
• Check the CI pipeline web page for if there were any issues.

The next step could be to teach them very basic HTML (no CSS) and how to add images to the web page, and then how to play sounds if images are clicked on. Add silly noises and it’s bound to be a hit.

The next goal after that would be to draw colorful circles on that web page by using TypeScript.

With basic Crystal, HTML, git usage and TypeScript under their belt, they should have a solid start. Once they were ready for it, creating a small game with Crystal and SFML, or in TypeScript, would be a possibility.

Of course, all kids are different and are motivated by different things, but this is one of many possible ways I would envision that someone could get into programming and find it interesting and fun, with an emphasis on being able to share the results.

1. 1

No #!/usr/bin/env python and # -- coding: utf-8 --. No if __name__ == “__main__”.

I agree these things are weird but you absolutely don’t need them to start hacking around in Python.

1. 2

I agree, but having to keep track of indentation levels is still a disadvantage of Python. At least in the very beginning, IMO.

1. 5

Rocket is impressive but it always feels a bit too heavyweight and opinionated to me. I tend to use `warp`, which isn’t perfect but fits better with how I like to structure web applications.

1. 2

For me it’s blah or spqr

1. 2

Hail Caesar

1. 1

spqr?

1. 2

Yeah, easy to say (‘speaker’), stands out among other data, easy to type, slightly amusing. I saw it in some code years ago and have done it ever since.

1. 1

The amount of loan words (here “homophonic translations”) with Japanese for this subject has always bugged me. There could totally be “new words” created for this domain just like it has in English. And there are definitely things that show up (I think 文字化け/Mojibake is a great example of it, as well as emoji), but it tends to be limited to real nerd-speak stuff.

Every once in a while there’s old people who complain about there being “too much English in the news” because of how heavily loan words are used for new words that show up, and I gotta say that I feel for them when comparing what happens for these words in Japanese vs Chinese.

Loan words as a concept is nice cuz it gives you a “fallback” for new vocabulary, but I really do want that “backfill” in the language later

1. 2

It’s just that different languages have different sensibility about how much loan words are too much. English itself is pretty loan words friendly, compared to, say, Icelandic. It’s just that Japanese is even more friendly than English.

1. 1

Languages will generally borrow rather than synthesise without overarching influence. Icelandic is hostile to loan words not because of anything inherent to the language (its phonology actually means it could assimilate most English words near-verbatim) but rather because of immense cultural and governmental pressure to retain the purity of the language.

2. 2

How do you define what it means for a word to be “Japanese”? The script is directly derived from the ideographic script of Chinese, and like any native language it has loanwords throughout it’s history that now are indistinguishable from the rest of Japanese. Is your objection solely based around Western language loanwords?

1. 1

Japanese script is certainly derived from Chinese. But the spoken language itself has a base which is extremely not derived from Chinese. What happens is the same as (for example) with English and French on that front: simple vocabulary might be very different but technical terms have similar roots (just like latin roots in english and french are very similar, making technical vocabulary very close).

And lots of words are derived from Chinese, as well. There are huge sets of vocabulary like that, just like English has absorbed loads of French. So it’s become part of the language at this point. I don’t think English loanwords have gotten that far into Japanese.

Importing loanwords from English wholesale “is bad” from my perspective because it’s effectively introducing a new word with no relation to any other words in the language. No shared roots, relatively little consideration for words of similar meaning that might hold different nuance… speakers have no chance of figuring out the word at first sight, or independently discovering it.

I mean, whatever, it’s not the end of the world. Just think it’s used more than it needs to be.

1. 19

deconstructing previously assumed-immovable tradeoffs and binary oppositions

When you have one hardback edition of Derrida, everything looks like a nail…

1. 4

I tried implementing this for my data compression coursework recently. It ended up not helping but it was interesting to learn about. I found the Wikipedia page impenetrable but this video helped me grasp the idea.

1. 9

I would love to see a side-by-side with Catala Lang, which was posted here awhile back, though only the Git repo: https://lobste.rs/s/b74svy/catalalang_catala

1. 28

Hi! Author of both Mlang and Catala here :) So Catala is basically an evolution/reboot of the M language, but this time done right using all the PL best practices.

1. 7

Wait, are you for real? That is absolutely fascinating! My wife is a lawyer (which makes me not a lawyer) and I am very interested in these types of intersections. Namely where a highly regimented and regulated domain gives rise to some type of formalism once exposed to CS through some “interdisciplinary process”.

I have studied DSL design peripherally but would really like to pick your brain about some things. I did once, long ago, design a policy language. Are you open to additional discussions and collaboration?

1. 11

Ha ha ha yes this area is fascinating. I have the impression that there’s a lot of people in legaltech that are all trying to make a DSL to express parts of the law but have no clue about how to properly make a DSL.

I am open to discussions and collaboration, moreover both Mlang and Catala are open-source and accept contributions. Hit me up using the email in the Mlang paper for instance :)

1. 2

As a lawyer designing my own DSL ;) I would love to know how using of Mlang has affected legislation. For example how do you deal with law being changed? Does your parliament creates updates as “diffs” or as already “merged” texts? Do you use lawxml? Soo many questions!

1. 4

The French laws are usually written in terms of “diff”. Also I had made a prototype that warned which articles of law your program was relying on were about to expire https://twitter.com/DMerigoux/status/1252914283836473345?s=19. I don’t use any form of XML, I just copy paste the law text to start writing a Catala program. XML would not improve the way Catala programs are written since the XML structure does not follow the logical structue of the law but rather its formatting structure, which we don’t care when translating it to executable code.

2. 4

Hi Denis - nothing constructive to say except that I am a British CS student and my friends and I are big fans of your work! In fact I think a friend of mine will be basing his undergraduate thesis on your ideas :-)

1. 4

Thanks Jack! Well if your friend does end up basing his undergrad thesis on Catala or else please drop me an email, I’ll be happy to give feedback or suggest interesting things to look at.

2. 2

I want to just praise you for the time and effort you put into this space. I’ve recently got into “hobbyist” law myself, specifically Canadian law (http://len.falken.ink/law/101.txt), and instantly had the same thoughts: where are the formal proofs? :) Sure there are tax calculators, and some will creators, but are they rigorous? Can they tell us other properties of a situation?

I’m 100% going to play with Catala. This is technology worth spending time on because law governs our every day lives.

1. 2

but this time done right using all the PL best practices.

Does this mean that DGFiP is migrating to something one of the implementers considers not done right?

1. 4

I suppose it’s easier to migrate step by step: Improve the tooling, so that everything can be in the open without security concerns and so the system can evolve more easily from its apache cgi-bin roots. That’s what MLang seems to offer.

Once that’s in place, there can be further steps to improve the language (e.g. by introducing Catala) because the foundations are state of the art again. And even if that doesn’t happen, the system is still better off than before because it’s a single system instead of a single system + 25 years of wrappers that extend it ad-hoc.

1. 3

I could not have said it better!

2. 2

Migrating to Mlang improves the compiler but the M language stays the same. For instance, in DGFiP’s M, there are no user-defined functions. And the undefined value in M is a contant reminder of the “billion dollar mistake”. So yes we can definitely improve the M language from its 1990 design :)

3. 1

I’m just curious: who is driving all this? Is this simply something you one day decided to go and implement, or were you approached by someone to do this seemingly huge project? How do you get it financed, did you have backing from the start?

Fascinating stuff!

1. 10

I started looking into this after watching this talk: https://youtu.be/EshxZVMURt4. I always wondered whether it was possible for me to play with formal methods outside the traditional application domains like security or safety-critical embedded systems. Then I fell into a rabbit hole :) I started with a Python prototype of French law encoded into SMT, then moved to try and use the DGFiP code and ended up coding Mlang, then created Catala as a next logical step. I created these on my spare time during my PhD and was helped by some friends who contributed to the open source repos. I’m only starting now to have institutional backing! During a French PhD, your funding is secured for the whole duration from the start so I didn’t have to worry about it and could focus on other things. I would say stable and long-term unconditional funding enabled me to create all this. In my opinion research should promote that instead of the myriad of tiny little funding sources, each of them requiring a lot of paperwork to fill. But in that regard I go against the zeitgeist.

1. 4

Over many years of experimentation, it was found that if the U in RNA is replaced by a slightly modified molecule, our immune system loses interest.

I feel as if I have no right to call myself a hacker while people in our time discover hacks as good as this.

1. 6

A fun one I’ve noticed recently - January 19th 1970 is (currently) the date you get if you interpret a second-count timestamp such as those in Python as a millisecond-count timestamp like those in JS.

1. 32

The problem isn’t so much that Discord successfully used the legal system to shut down someone writing a 3rd party client for their system; but rather than people by the millions are continuing to use Discord anyway. I use Discord myself because a number of communities I belong to have decided upon it as as a schelling point for their communication, and I can’t unilaterally make them stop using it or even (easily) use a different client to connect to Discord’s network that these communities use. The network effects of non-free communication software are one of the most powerful obstacles to computational freedom, and unfortunately I don’t know of an effective way to fight back, other than by rhetorically treating Discord as toxic.

1. 10

Direct quote from a community I’m in:

also throwback to when \$ME got shitty over Discord and wanted us to use some random no name linux thing

It’s an uphill fight :-)

1. 7

I think the main problem with this is that the issues are mostly theoretical.

Because currently they don’t censor anything that people care about and nobody wants a custom client either. So to most of the userbase there is no problem. And if a problem popped up it would still be possible to switch. And the lock-in is not so bad because most people don’t store things that need persistence on Discord. The information is fairly ephemeral.

All in all, I don’t like proprietary solutions but the actual risk of using them seems pretty small.

Edit: Same reasoning applies to a lot of security efforts. :/

2. 4

Examples like this one will hopefully serve as ammo that you and I can bring to discussions in favor of using proprietary software to support free software development. We just need a lot more examples, unfortunately… (and they may not be enough to convince folks.) I also don’t know of an effective way to fight back :(

1. 2

I still wonder why people fall into the same trap over and over again. Are they really thinking “this proprietary walled garden sure must be different from my past experience with proprietary walled gardens”? ;)

1. 5

To a first approximation, nobody who uses Dischord/Facebook/&c is concerned with the proprietary walled garden problem. They evaluate these services using a different set of metrics, and that’s perfectly legitimate. I wish they wouldn’t, but I can’t even get my wife to stop using WhatsApp.

1. 4

I think the last service that gave a sh*t about interoperability and 3rd party access was Flickr. Ever since then the technical and support costs have been deemed to high to allow it.

The head of Discord’s anti-abuse commented on another case on HN here. I think Discord especially is targetted as its gaming-focused.

Although our rules and heuristics do not specifically target 3rd party clients, it does target things that “don’t look like what our official client does” which is very effective at targeting spambots that are constantly waging war against our platform - but has the unfortunate side-effect that using a 3rd party client in certain ways may lead to account termination.

1. 3

I use it for game things and that only. Would be a nuisance if I got banned but not the end of the world.

I fully know and accept the downsides of a walled garden, but I am there because I want to talk to the people who are there. Also the voicechat works, although I would prefer Mumble.

1. 3

I have to wonder if this is inevitable, as much as I hate it. The benefits of centralization are too good (at least in certain metrics) to ignore, much how it was the same for civilization. The frontier is fenced off, hunter-gathers became villagers became empires.