HNHacker News
TopNewBestAskShowJobs

gnull

1,197 karma · joined December 5, 2018

You can contact me over ntjvwmi7l@mozmail.com
submissionscomments
gnull··on Mutt – Text-based mail client for Unix
Aerc can display a thread in a tree-view of a directory, yes. Run :toggle-threads to see it (I'm using Maildir backend).

Using notmuch backend, one could also have a key to display all the emails that are in the same thread as the current one, so that you get a nice conversation-like view which includes sent emails as well (Purebred does this by default, for example). This is not supported out of the box yet, but I'm thinking of implementing a patch for it in the coming weeks.

gnull··on Mutt – Text-based mail client for Unix
Aerc has rolled out signing and encryption support recently. I've tested signing, seems to work fine. And now it uses normal GPG keystore, not its own.
gnull··on The existence of true one-way functions depends on Kolmogorov complexity
And one-way functions are not necessarily the hardest to invert. They are, in some sense, "hard enough", at least as hard as certain threshold (speaking informally).
gnull··on The existence of true one-way functions depends on Kolmogorov complexity
Yes, I realized I made some rushed conclusions there.
gnull··on The existence of true one-way functions depends on Kolmogorov complexity
> I think the article also mentions this

My bad, I didn't read the article carefully enough.

> I don't get what is the significant difference between this finding and Levin's.

I think it's generally very important to find connections between distant and seemingly unrelated fields. And it's even better to express two seemingly separate fields in the same terms. Because then there's a lot of potential to cross apply the techniques which were developed in those fields. You can see the linked result not only as a formal construction of a problem with certain properties, but also as a link between two distant fields and as one of the many steps needed to maybe one day show that those fields are the same thing. One of my theoretician friends likes to say that solutions in mathematics are valuable because of the "moral" they have, i.e. the possibilities and lessons they demonstrate, not because they formally satisfy some conditions.

Think of Physics, Chemistry and Biology. Centuries ago they were completely separate fields. A growing plant and a lightning bolt were completely different concepts which seemed to be operated by their own distinct laws and have nothing to do with each other. But as the Science progressed, people learned about the elemental particles and could see now that lightning bolt and a plant are not separate concepts, but only manifestations of the same laws and processes on lower levels. Now Physics, Chemistry and Biology are not completely distinct domains (Richard Feynman would argue that the latter two are sub-fields of Physics) and techniques and findings from one can be sometimes converted to the others.

gnull··on The existence of true one-way functions depends on Kolmogorov complexity
Identifying the connection between one-way functions and Kolmogorov complexity is truly impressive. But the article oversimplified a few things that may be misleading for someone.

1. One-way functions are not all cryptography. Some constructions may need stronger assumptions than one-way functions (we don't know yet if they do). So this problem is a “Master Problem” only for a subset of cryptography (symmetric encryption, pseudorandom generators, etc.).

2. This is not the first “Master Problem” to base one-way functions on. There's Levin's complete one way function [1; Section 4.3]. Breaking it is proven to be as hard as any other one-way function, in other words if there exist one-way functions then this is one of them. But Levin's construction is somewhat artificial (it combines many one-way function candidates to create the “master one-way function”) and is not as surprising since its techniques and formulation are similar to how the usual one-way functions are defined. The connection from the linked article, on the other hand, is very surprising and unusual; it connects one-way functions to a more distant field which (to me) seems to be operating with quite different concepts.

It's also fun to know that similar “Master Problems” exist for other primitives too. For example, for public-key encryption there's a Complete Public Key cryptosystem [2]. Albeit this one is similar in spirit to Levin's construction (not as surprising IMO as the linked article), the complete cryptosystem is obtained by combining many other cryptosystems.

[1]: https://arxiv.org/abs/cs/0012023

[2]: https://eccc.weizmann.ac.il//eccc-reports/2006/TR06-046/inde...

gnull··on Tell HN: If You Are in Russia
As a side question, how similar is Putin's war in Ukraine to the numerous wars started by U.S. (say, in the middle East, Yugoslavia)? Are these fair to compare?

I'm trying to understand the scale of Putin's decision, not to justify it or engage in whataboutism.

gnull··on JetBrains Mono – the free and open-source typeface for developers
https://hoogle.haskell.org/?hoogle=%28%21%3D%29&scope=set%3A...

Using Haskell is one such situation. Haskell's inequality operator is /= which someone could expect when they see ≠. Some people redefine != as a custom operator (see link), which can bring even more confusion with this ligatures.

gnull··on JetBrains Mono – the free and open-source typeface for developers
The ligature ≠ for != is very C/C++/Java-specific, which is kind of annoying. Is there a way to selectively disable ligatures like this one?
gnull··on Russia sends troops to Kazakhstan to put down deadly uprising
Oh, really? What's the pattern? (I'm not in Almaty, so I can't see it myself.)
gnull··on Russia sends troops to Kazakhstan to put down deadly uprising
(It was a joke.)
gnull··on Russia sends troops to Kazakhstan to put down deadly uprising
Yes, the "foreign actors" part is an obvious lie to justify the Russia's help.
gnull··on Russia sends troops to Kazakhstan to put down deadly uprising
The fuel prices caused protests in one region. The others joined in solidarity. But after seeing how much support the protests have, more people started joining and the protest became political, demanding to change the regime.

In Almaty, the protests got violent with killings and mass looting. A few other cities saw looting and destruction of ex-president's statues, but most of Kazakhstan was peaceful, including the place where the original gas-price protests started. The violence part does not represent the sentiment of the majority, I would bet, it's something organized; I don't know by whom and for what reason.

gnull··on Russia sends troops to Kazakhstan to put down deadly uprising
https://novayagazeta-ru.translate.goog/articles/2022/01/05/v...

I found the explanation of this article quite convincing.

The key takes is: Tokayev, the Kazakhstan's president, does not completely trust his own forces and is afraid they might be more loyal to the old president, or the elites might see him as weak and try to plot against him. Therefore, he asks Putin for his armed forces to assist in stabilizing the situation. This is good for both of them: Tokayev stabilizes his position and gets some time to fire or prosecute the officials he doesn't trust, and Putin gains more influence over Tokayev in the future — Tokayev becomes dependent on Putin's support.

Over the last two days, Tokayev has made some big changes in the government structure. For example, he fired the old president Nazarbayev from his current position of The Chairman of the Security Council (which he technically wasn't authorized to do). The old president hasn't made any public response to that, and is rumored to have escaped to Europe with his whole family (flightradar has shown a few private jets leaving the country as the riots got violent). Tokayev has also removed some of the Nazarbayev's people (people who served under Nazarbayev for a long time) from their positions yesterday; one big example is Massimov, the head of Kazakhstan's National Security Committee, the country's main intelligence service.

Watching the local news closely these last days, I'm getting convinced that someone is orchestrating the violence and shooting on the streets. There's a footage of people handing out firearms to the protestors (it looks more like hunting rifles and shotguns, so it must be the loot from the firearm stores; but some of them have combat AKs they captured from the police, one video shows them having an RPG grenade). And those armed people with no uniforms are too organized: they give actual armed fights to the police and army forces — not something you could expect from a spontaneously gathered crowd. The organization and determination are shocking: they move from one government building to another, seizing things, burning cars and buildings, focusing on important ones (firearm stores, police offices, city administration) in the situation where mobile broadband is off. Yesterday, the government has withdrawn its forces from the city (friends of my friends who are in the police say they were ordered not to wear uniforms) and evacuated the main buildings. Today they are entering back and fighting the bandits, they report that a few groups were already eliminated.

Having said this, obviously not everyone who's out on the streets now is one of those organized bandits. There are many people who genuinely came for a peaceful protest before it was hijacked into what it is now, and there's also people who are seizing the opportunity to loot and wreak havoc unpunished and drunk (what comes to mind is the video of a guy trying to set a traffic light on fire using a gas burner).

Disclaimer: I'm not in Kazakhstan right now, but I'm watching the situation closely through media and my friends there

EDIT: Removed the news of TV broadcast tower being stormed, it turned out to be fake

gnull··on Russia sends troops to Kazakhstan to put down deadly uprising
We could distribute the mining farms to people's homes to warm them up, this way everyone wins.
gnull··on I Miss RSS
RSS is like your Facebook feed, not HN or Reddit. It's a different application.
gnull··on Wingman for Haskell
Is the an out-of-the box way to use it in Kakoune right now?
gnull··on Sarco suicide capsule ‘passes legal review’ in Switzerland
They will not let you have a reliable and painless death. I bet some people will be stopped by the pain that a traditional suicide methods might bring, as well as the risk of staying alive but getting mutilated for the rest of their life as a result.
gnull··on Sarco suicide capsule ‘passes legal review’ in Switzerland
“Permission” was just a bad way to put it. I'm sure what they are actually talking about is making sure that the person is making the decision in clear mind and not under the effect of drugs, strong temporal emotions and is not being forced by someone to do this.
gnull··on Show HN: MathLingua – A Structured Language of Mathematics
So is it like math written in natural language but more structured and cross-referenced?
gnull··on Show HN: Retrocomputing with Clash: Haskell for FPGA Hardware Design
I'm trying to look at one specific component here, the language itself. My claim is that as a language Clash is way better than SystemVerilog.

True, Verilog has more mature tooling and is better supported by vendors at the moment. But most of it is because Verilog is old, and because hardware people have little knowledge of (and demand for) good programming languages; not because it's a good language (maybe it's better than the other even worse languages, but it's not good by the software programming standards). It's not that Verilog is somehow inherently good for implementing tooling for it, absolutely not better than Clash.

> far more types than just wire

You mean integers and C-style structs? “Far more” is a big stretch here. And these “types” are not very useful: they are only used to decide how operators should behave on values. As far as I remember, even Verilog's assignment doesn't care about types, as long as left- and right-hand side have the same number of bits, the assignment is allowed.

> generate allows me to avoid almost all copying

At the cost of: extra work (you're essentially implementing polymorphism by hand), inferior readability, increased risk of making mistakes, no support from the compiler. Generate can be almost perfectly replaced by code generation in Python.

Seriously, look at the way Clash allows parametrizing things, you will be impressed.

gnull··on Show HN: Retrocomputing with Clash: Haskell for FPGA Hardware Design
Sorry it it came out as dismissive. I only wanted to show that my claim is specifically about the language, not current state of tooling which I'm not as familiar with (and which is important).
gnull··on Show HN: Retrocomputing with Clash: Haskell for FPGA Hardware Design
I don't know what is tapeout, but Clash can describe any circuit that Verilog can. If you wanted to, you could one-to-one translate the circuit descriptions between the two.

We could argue about the current state of tooling for Clash and its ability to work together with vendor-specific tools and other ecosystem stuff, I don't know much about this. But as a language Clash can do everything Verilog does.

gnull··on Show HN: Retrocomputing with Clash: Haskell for FPGA Hardware Design
Clash is not pseudo, it's actual HDL. Right now it compiles to Verilog, yes, but this is minor a technicality.

> the choice of HDL (which was 95% of the time, Verilog, for the rest, VHDL), was never actually 'important'; the language features were never critical to the completion of the project

Because both are equally bad, and have little meaningful difference in their features.

> Verilog is fully adequate for any kind of serious HDL development.

This confirms my past experience of interacting with hardware people. They have extremely low standard for their programming languages and tooling in general, and don't like reflecting on these too much. They just suck it up and do the job, no matter what.

My Verilog just quietly accepts the code which assigns values to a wire which is declared as input? I guess it's my fault, I will just be more careful in the future not to do that again.

My Verilog doesn't allow parametrizing modules with anything other than natural numbers? Well, I'll just duplicate code, that's how we always did it.

My Verilog has no types other than "wire" and "array of wires" (and also allows assigning array[2][3] to array[3][2] emitting no warning)? It's fine, I will just try to keep in mind what data I have in which wires and try to make sure I never mix things up.

My Verilog uses pseudo-imperative code with "assignments" in it to describe a network of flipflops with combinational logic between them? It's ok, I will just train my brain to convert between the two even though there's no good reason for Verilog to be like that.

My Verilog has constructions which are synthesizable only when used in one very specific way, instead of clearly differentiating between synthesizable (actual hardware) and un-synthesizable (imperative testing code)? It's ok, I will just remember the details.

My Verilog produces so much noise in the build logs that nobody actually reads it unless something breaks? I guess I just have to be more careful or write more testbenches.

> I just can not see how these new languages can be a serious alternative to Verilog/VHDL

This is learned helplessness.

Clash has better, more natural abstractions for the wires and flipflops. Combinational and sequential logic are clearly separated. It also uses many primitives of Haskell which make your code more compact, easier to read and verify. You can parameterize modules with anything, including other modules, this drastically reduces code duplication and lets you manage the code on a higher level (while still seeing how does it correspond to bits and wires).

gnull··on The reMarkable as a notebook and eBook reader
I've been quite happy with my Remarkable.

The only thing that annoys me is not having buttons to turn pages. Swiping over a touchscreen is counterproductive and Remarkable sometimes fails to recognize the gesture.

gnull··on Org Mode Is One of the Most Reasonable Markup Languages to Use for Text (2017)
Would be funny if someone wrote a language server for org mode in elisp on top of emacs and offered all of its functionality to the other editors.

But jokes aside, is there something that doesn't let us implement a language server for org mode?

gnull··on Show HN: Made a web app to read a book carefully, paragraph by paragraph
Yeah, the currently active paragraph seems to be always at the same position on the screen (seems to be somewhere in first 1/3 of the screen height). If I've finished reading paragraph i and the next one is i+1, i+1 will appear where i was and i will go up.

I'd want i to stay in place and i+1 appear under it (and become active). This way there is less movement on the screen and I don't have to scan the screen up identifying where the new active paragraph starts, just keep reading the new paragraph where the old one ended.

I imagine it like the difference between scrolling a text with mouse when reading it, or with page-down button. I prefer the latter, this way your eyes move through screen as they would do with paper instead of picture moving and your eyes staying on the same place, and you can also utilize location memory (“I remember that author said X at the bottom right of the page while the top of the page was saying Y”). The other thing is, it provides another way to split the text into “pages” and give you a natural feeling of how much you've read (location memory again, “author is introducing X, I remember that they've set up the scene for it two pages back”).

The current mouse-wheel-scrolling-like approach seems to be more like audiobook that gives you book contents in a continuous stream, while the page-down approach is more like paper split into pages. I think both must have some benefits and looks like your tool (with some change) can accommodate both types of readers.

gnull··on Show HN: Made a web app to read a book carefully, paragraph by paragraph
Can you make it not scroll the text when it's not necessary? Sort of pop the new paragraphs under the one I just read, keeping the latter in place, until the screen fills up.
gnull··on Web Browser Engineering
I think a good example of two solutions used in browsers and OSes that are meaningfully similar (and not inherent to all systems software) would convince me better. Do you have one?
gnull··on Web Browser Engineering
Great blog design, btw! I love the way it displays footnotes (if you can call them that now) on page margins.

Does it have RSS?

← PreviousPage 8 of 12Next →