News for hackers. Stuff that matters.

lopsidedBrain

Re:An ex-ARM engineer critiques RISC-V on Sunday November 01, 2020 @12:29PM (#24960990)
Yes. x86 processors translate instructions to internal micro opcodes before scheduling or running them. Those look nothing like the x86 instructions.

Ask HN: How automated is exploit-generation these days?

I religiously apply patches to all my personal machines as soon as they become available. But I've recently been wondering about how much of a difference it makes today. I used to follow this space fairly closely 4-5 years ago, but I don't know what has changed since then.Once a typical use-after-free vulnerability is disclosed publicly, for example, how quickly does it get weaponized? I...

( Read More... | 1 comment | on HN )
Re:From Vector Spaces to Periodic Functions (2019) on Saturday October 24, 2020 @04:12PM (#24881651)
It is partly historical notoriety. It allows one to prove certain statements that seem counter-intuitive. So proofs that employ it can often be viewed with some skepticism.

Moreover, this axiom is _independent_ of the other axioms in ZFC. It is in fact possible to have entirely self-consistent "worlds" of mathematics, ones where axiom of choice is true, and ones where it is false.

More details and examples of alternate axioms are in the Wikipedia article: https://en.wikipedia.org/wiki/Axiom_of_choice

If it seems weird that math can give you contradictory results, remember that the difference only shows up when you deal with some form of infinity (e.g. when performing an operation on an infinitely large set). For any usage of math in the real world, the truth or falsity of this axiom won't give you contradictory results.

Re:Why and How zk-Snark Works (2019) on Sunday October 18, 2020 @03:19AM (#24816090)
One of my highest-cited papers didn't pass peer-review. But that's okay. The citations (of the pre-print version) speak for themselves. If papers like these are good enough that new students entering the field use it as a ramp-up resource, they won't hesitate to cite it over and over again when they submit something for peer-review.

So journal publication is not the only means of recognition.

Speaking of which, computer science is a bit weird in that conference papers tend to have higher visibility than journals, even though the latter still has some of its grandfathered glory. Not all conferences are equal, obviously. Some have a more rigorous submission process than others. But our field definitely carries a bit of skepticism about the value added by journal publishers.

I couldn't actually figure out how to opt out of third-party tracking. They say I have to visit my wireless account, but not sure where to from there.
Re:Language-Agnostic Bert Sentence Embedding on Thursday August 20, 2020 @12:06AM (#24219767)
Huh, for some reason I had just assumed that it must be open based on the buzz around it. Cool.
Re:Language-Agnostic Bert Sentence Embedding on Wednesday August 19, 2020 @02:54AM (#24207864)
For the uninitiated, WTH does semi-public mean? Did GPT-3 only provide an API but not the model?
Re:Dependency on Tuesday August 18, 2020 @02:29AM (#24195846)
Hmm. You're right, not if we are restricting ourselves to rectangles. But if we make A u-shaped, with B nestled in it, we'll be in business!
Re:SQLite 3.33 on Sunday August 16, 2020 @03:30PM (#24180489)
If they have customers who need that kind of database, I'm sure they will be willing to help out with the testing. The setup doesn't have to be too crazy. Storage appliances with 20-30 hard drives are fairly common, actually. Even for individual humans, not just corporations. LVM allows you to easily create a logical volume out of multiple physical volumes, e.g. https://www.redhat.com/sysadmin/creating-logical-volumes.

You might find it interesting to look at the actual sqlite source commits where this change was introduced: https://sqlite.org/src/timeline?r=larger-databases It turns out the number comes from having a max of 2^32 pages in their database. Their default page being 4 kB each: https://www.sqlite.org/pgszchng2016.html

Working backwards, they must have raised it to 64kb: `python -c 'print(1024 * 64 * 232)'` produces 281,474,976,710,656.

Re:SQLite 3.33 on Sunday August 16, 2020 @02:02PM (#24179789)
https://sqlite.org/limits.html

> SQLite was originally designed with a policy of avoiding arbitrary limits. [...] Unfortunately, the no-limits policy has been shown to create problems. Because the upper bounds were not well defined, they were not tested, and bugs were often found when pushing SQLite to extremes.

It does, in that it's much easier for me sign up with a throwaway username. It's also part of the reason HN doesn't require these SSO integrations.
Re:Google offers free fabbing for 130nm open-source chips on Tuesday July 07, 2020 @09:03PM (#23765963)
The material nature of hardware is barely any higher than that of software. Yes, you cannot just copy bits around, but you can take the same design and fabricate millions of chips for pennies. The cost of production for any given chip of Silicon has almost nothing to do with its material cost. It has everything to do with the amount of design work that went into it, just like software. None of that appreciably changes the benefits of cooperation vs competition.
To an extent. I'm actually curious about its angular resolution.
I haven't looked at your past blogs, but it certainly sounds like you are making perfection the enemy of good. Your blogs don't have to be perfect, it just needs to be better than the current state, while not causing unanticipated regressions. Your blogs do not have to be prescriptive either. All you have to say is: I've tried x, y, and z, and it turned out better than a, b, and c in this-and-that manner. Provide your argument, and let readers judge whether your advice applies to their situation.

That said, if you do not have actual data or experience to back up what you are preaching, I definitely welcome the call for caution. It is not useful to insist that "everyone should learn a certain skillset" unless you found those skills relevant in practice in some situation.

It sounds like you've been compiling an interesting collection of stories, ones that might be interesting to a lot of folks here.

Re:SELECT wat FROM sql on Monday April 27, 2020 @03:31AM (#22993715)
People generally expect equality to produce either true or false. Not a tri-value pair.

That interpretation makes sense to me when I read the docs, but is way too easy to miss when I'm actually doing comparisons.

Re:Learning to See in the Dark (2018) on Friday April 17, 2020 @12:56PM (#22900703)
The comparison is fair because it tries to automate expertise.

I'm sure you know exactly how much of which filter to apply for similar results. Laymen like ourselves will need a lot more trial and error. Their contribution here is to provide a push-button, automated mechanism.

I would have probably also tried something simple and given up due to the noise. So this is definitely interesting.

Re:Renaming files with mv without typing the name two times on Wednesday April 15, 2020 @02:09AM (#22875065)
I work in exactly two modes of `gcc` usage. I either accept `./a.out` as the name I deserve, or I write a `CMakeLists.txt`.

There nothing in between.

My trick has always been to rely on tab auto-completion.

    mv foo-<tab>
    mv foo-bar-baz foo-<tab>
    mv foo-bar-baz foo-bar-baz
Now I can edit the second part pretty quickly.

Downside: you have to at least type `foo-` twice.

Upside: command line history still has the full command.

> Why is storage necessary?

Have you ever tried wiring any non-trivial logic without flip-flops? Say, a simple signal routing layer. Even the most basic bits of logic becomes much less efficient to downright impossible without storage.

Re:Exceptions should be Exceptional (2016) on Friday March 13, 2020 @02:21AM (#22565187)
That is sounds more appropriate for either terminating the program or resumable exceptions like division by zero. In languages with a try-catch construct (specially C++), the complexity of implementing exceptions has to do with stack unwinding. This is where you don't want to restart in an outer context, but want to guarantee cleanup for the call frames you are abandoning.
Re:Stages of denial in encountering K on Monday March 09, 2020 @12:16AM (#22522951)
http://maxima.sourceforge.net/ is closer to Mathematica, and is open source.
Re:M3DB, a distributed timeseries database on Saturday February 22, 2020 @01:16PM (#22392397)
Pretty much every successful open source project that people pay attention to is one that has had long-term support behind it. Linux, Mozilla, gcc, clang, git. Almost always, that support begins with the original author.

Protects that don't do that are therefore unlikely to remain interesting for long.

I can't speak for the toolchain maintainers. But with appropriate flags to force or skip those passes, yes I can see something like this being merged in.
GCC does this too fwiw. Whether or not it is considered a bug, it doesn't have one particular root cause. Several common optimization passes assume small function body. Since functions are typically small, many optimizations use this as a window for heavyweight passes.

In other words, intraprocedural optimisation has always been more aggressive than interprocedural optimisation. If you try inlining every function ever into one giant function, you'll be forced to scale back optimization levels.

TL;DR: Don't autogenerate a large monolithic function. Generate many small functions instead.
Re:Category Theory for Programmers (2014) [pdf] on Thursday December 26, 2019 @03:12AM (#21882575)
I didn't read the book yet, but I'll take a crack with a couple of examples:

Unix file systems, and its philosophy of "everything is a file". It wasn't common before Unix to interact with devices through a filesystem. Somebody noticed that simple tasks like "listing with ls" and "hex-dumping with xxd" doesn't need separate utilities for files vs devices, and thus made the abstractions converge. If you ask me, this is the kind of abstraction I wouldn't normally think of. It's useful to know what kind of things to be on the lookout for.

The second example is fuzzing. At least today, it's still kind of painful to have to manually write fuzz-tests for everything we care about. Manually coming up with good test cases is also hard. But remember those Monad laws in Haskell? https://wiki.haskell.org/Monad_laws these are essentially free fuzzing code. If I implement something as a Monad, at least in theory I should be able to reuse existing fuzz-drivers to test my new code as well. I probably would not have had the patience to come up with good tests myself. Similarly for other categories. Again, it's good to know what general interfaces already exist.

Re:An IT migration corrupted 1.3B customer records on Tuesday December 24, 2019 @02:23AM (#21870484)
The part you quoted does not talk about buggy code. Bugs will always exist, the idea is to prepare for them. Migrate systems incrementally, run versions in parallel, have tested rollback strategies at every step, so on and so forth. Not cut corners on backups and contingency plans. Don't rush to launch.

Buggy code is not the problem, but a buggy process is.

Older »