I built a widget set for small monochrome LCDs called "bitwidgets" as part of my g13d rewrite because nothing came close to what I wanted in terms of features and simplicity. I use it to give the G13 applets their UI on the LCD screen. Its built on top of Pillow, and I'm planning on extracting it from the g13 repo as a separate library.
...and yet we still have these things, like Gtk, Tk, ImGUI, some parts of Qt, etc, and they work reasonably well. I just spent time building a new widget set for small LCD screens (~160x40) and built the set in as simple a way as I could, and this was the easiest method to do so. Sure, it's not great from a designer perspective, but it gets the job done -- more or less what HTML + CSS do now, but (frankly) in a far less verbose way.
Just bear in mind, what he says you probably shouldn't take at face value. After all, he is king of shorting currencies that has actively ruined lives.
This article is a bit strange and conflates disk storage with swap and RAM. Modern systems don't necessarily even have swap (looking at you, k8s), so the whole article falls on its face.
> And then there were the secondary store, paper tape, magnetic tape, disk drives the size of houses, then the size of washing machines and these days so small that girls get disappointed if think they got hold of something else than the MP3 player you had in your pocket.
> This article is a bit strange and conflates disk storage with swap and RAM.
The author is pointing out that many programs duplicate OS virtual memory functionality by paging temporary data to persistent storage and loading it when needed. This duplicates the operating system's built in virtual memory capability and has negative effects on the system. The whole idea of virtual memory is to allow a system to handle loads where memory allocated exceeds the size of RAM.
> Modern systems don't necessarily even have swap (looking at you, k8s)
Modern linux does have swap, and it is quite useful. Proper support for swap is coming in k8s (looks like 1.23). Quite a few workloads need swap to run safely, so adding this to k8s will be an improvement.
>> Modern systems don't necessarily even have swap (looking at you, k8s)
> Modern linux does have swap, and it is quite useful. Proper support for swap is coming in k8s (looks like 1.23). Quite a few workloads need swap to run safely, so adding this to k8s will be an improvement.
Ah, I see the HN pedants have arrived. I was not claiming that Modern Linux does not have swap. Note the words "don't necessarily". I was claiming not all machines have swap.
Most of mine do not have it enabled, and I take effort to ensure on machines with 16GB or more RAM that it is disabled. I do run a K8S cluster as well, and those machines do not have swap enabled, not because K8S requires it to be off, but because having it on would be adverse to the health of the flash storage they use.
TBH, this is the kind of vapid pedantic response I've come to expect of the average of HN comments these days, and why I'm considering just not using it anymore at this point.
It would have been funny if I was still 15. But then again, this article is from 2006; The blogosphere was a different place in those days, and I've matured since then as well - hopefully the author has too. Still: Bad joke was bad.
Yeah, that is a really bad take. Remind me again why women drop out of engineering teams. To frame this triggering statement, imagine if he had somehow used breasts to make the same analogy. He’d be in a heap of trouble, prob LIFO’d out of his job
The challenge is to be able to understand how a particular post would appear to various other people who are unlike yourself. So I think you should answer that question yourself. Expend some effort or imagination, or else there’s no point.
Thank you, but there’s hardly any point in arguing with a rock. You might be making great points, but at the end of the day, observers see a man talking to a rock. The rock may roll at some point, through forces beyond yourself
Your comments aren't offensive, but they seem like externalizing your own issues. Asking someone to consider what's offensive isn't constructive, when you aren't able to describe what you think is offensive and why.
I just imagined what if we have to consider other civilizations for our posts and what they might be offended by.
For example, the civilization of Dune is offended by any mention of complex "thinking machines", so any programming topic to them would be like an article full of dick jokes.
Imagine we get visited by aliens, but no matter what we do, they get gravely offended, and we can't understand why.
The joke denies that the reader may be not male. It also shows women where their place is: near the man’s genitals. I can’t see how this is not offensive.
The formal C semantics are defined in Isabelle/HOL, checked, and then the compiler output is also checked. They use standard GCC compilers for all of this.
That's not what the poster is talking about though.
They're talking Von Neumann with a special "blessed" tooling written to not produce behaviors that would let users do nefarious things. They want to reduce the space of possible computations from arbitrary to "only these patterns which are provably safe".
Essentially, they want to hobble the user (malicious or not) and force good behavior by giving them tools that are incompatible with malicious behavior. They want Asimov's Three Laws of Robotics for computation.
The issue being, you run into Halting problem real fast when trying to make that blessed toolset. How does it recognize malicious code or bad series of individually benign, but collectively malignant opcodes? Remember, side channels like Spectre and Meltdown boil down to timing how long it takes for a computer to say "no", and then for you to access a piece of data you know should only be cached if the conditional that was preempted by an access violation was one value or another.
That is, start timer -> run (expected to raise access violation) conditional, branch speculative load -> access check -> exception -> check for result value in cache -> stop timer -> rinse -> repeat
Each of those is a benign command that could be sprinkled in anywhere. Collectively, they are a side-channel. You could still make variations of the same setup by tossing in junk values in between the necessary steps that would avoid this blessed tooling's (assumed) unwavering pattern recognition. I wouldn't actually use a compiler to stop this. You'd use a static analyzer to recognize these combinations; and even then, there's a lot of timer -> thing -> timer stop -> check programs that aren't malicious at all out there.
The answer with computers has been "if it absolutely must remain secret, implement security at a higher level than just the computer". Everyone should know that if you've got access, the computer will do what it's told to do.
The poster's suggestion is a pipe dream; and a dangerously seductive one at that, since anytime you hear from the "Trusted/Secure Computing" crowd, it almost always means someone wants to sacrifice everyone else's computing freedoms so they can write something they can pretend to guarantee will work.
Sorry, the cynicism leaked in a bit at the end there; but I have yet to see a security initiative that does anything but make life miserable for everyone except security people. I'll put up with some unsafe behavior in order to keep the barrier to entry low for the field in general; and accept the cost of more rigid human centric processes to make up for the indiscretions of the machine. Keep abstraction leakage in check.
And yet, this is how our system works. We all need to participate and realize that politics is not a career -- it is part of living in such a system, and a part of our responsibility as citizens. The only way we are going to fix things is if we fix it ourselves.
I have tried in the past as well. Political apathy is a very real, very dangerous vulnerability in our system of government, and is being exploited all the time.
> The only way we are going to fix things is if we fix it ourselves.
The word "we" is pulling a lot of weight in that statement. All politics suffers a free rider problem. We'll fix it if we fix it, sure, but I don't have to be part of that.