Hacker Newsnew | past | comments | ask | show | jobs | submit | AlbertVAustin's commentslogin

MikroTik is definitely very nice (I'm running my home network with them ~7 devices). Too bad it's not open-source like OpenWRT is :-/


I like MT but it being closed source always irked me for such a critical device: wonder how many Ghosts in the Shell lurk in there...


I'm actually not that worried about them secretly doing something malicious (although that's also a valid concern) but rather in the "given enough eyeballs, all bugs are shallow" and the general risk factors (MikroTik going bankrupt and we're left with obsolete bug-ridden hardware).

Sadly given the large amount of software that's closed source there I don't see them working towards open sourcing any of it as, even technically, it would be a massive effort.


Agreed, even if it was not their intent it being closed source is malicious itself - we need to promote this discourse in public conciousness so people are less afraid to question the unaudited, outsourced binary blobs that fill their day to day lives.


Funny thing because the author experiences also mirror mine while setting up a computer for kids. I've got two: regular HP laptop with ad-ridden Windows and Raspberry 4 (the one that is all-in-one keyboard).

I can't stand Windows with their ugly dark patterns. Kids actually prefer Raspberry since Minetest works there just fine (although I'd be happy to have a little bit more powerful machine for that).

And I'm thinking on rather getting a more powerful Linux machine (Khadas Edge2?) than de-cluttering Windows (which is a sisyphean task by itself).


> it passes the "your grandmother can use it" test IMO.

Indeed, but note that having the token is still rare. It'd be good if browsers exposed TPMs via WebAuth since they're more common on consumer-grade hardware.

And also the "minor" thing that having only one strong authenticator makes it super-easy to lose own data just in case the authenticator breaks etc.


> And also the "minor" thing that having only one strong authenticator makes it super-easy to lose own data just in case the authenticator breaks etc.

This is why I mentioned "esp with synced passkeys".

WebAuthn can use - but does not necessarily require - hardware-backed keys. iCloud passkeys are an example of an implementation of "soft" keys that are both transparently backed up and synced across the user's devices. Their interfaces are designed to make them difficult to leak (I'd imagine you'd need root+SIP turned off, or a really good OS bug), but are to my knowledge resident in device memory. This is tradeoff for usability. Grandma is never going to be able to use yubikeys to log into things, let alone set one up.


They do. At least Apple implements WebAuthn for Touch ID and Face ID on both its mobile and laptop platforms, using Safari.


Windows also has this; they call it "Windows Hello".


Any string that matches access token regexp provided by Tencent (see https://docs.github.com/en/developers/overview/secret-scanni...).


For public repositories only though. For private repos it's optional, and when enabled the repo admins get an alert to handle it themselves without it going to the vendor.


    .*
;-)


So it is just one bad regexp away from sending them other companies secrets


I don't see what your comment is trying to point out.

The same could be said for all the other Secret Scanning partners GitHub has, like AWS and so on.

That being said, it's impossible that a "bad regexp" is gonna make its way to the GitHub codebase.


> Even if we did do that, I've done some research on measuring difficulty of Sudoku -- many Sudoku grids are unsolvable by humans -- they are far too hard.

> A different, and interesting, question would be how many Sudoku are there which can be considered human-solvable. That's an even more open problem (we'd have to exactly define human-solvable to start).

What does it mean for a sudoku to be non solvable by human? I wrote a sudoku solver once and thought humans solving harder sudokus is basically exactly what a computer would do: guessing number and trying to solve it further, backtracking on failure. Or do you mean non-human solvable as "it would take a lot of time for a human to solve it"?


Not the GP, but I think in general the “guess and check” strategy frowned-upon by the Sudoku community. Ideally you should be able to make progress by making some logical observation (a trivial example: the numbers 1-8 are present in this column, therefore the remaining cell in this column is a 9). Humans can carry this out to complex patterns (the “swordfish” involves looking at 6 cells in 3 different rows/columns and inferring that cells visible to those cannot take on particular values), but it is seems reasonable to say that patterns will reach complexity that humans can’t hold in their heads. Obviously, any such classification would be subjective, but there’s probably a “reasonable” limit to solvability. (Without guess and check)


Obviously, any such classification would be subjective, but there’s probably a “reasonable” limit to solvability. (Without guess and check)

It’s totally subjective. Since sudoku is a closed (fixed size grid, fixed number of symbols), guess-and-check is just a catch-all label for logical inference strategies which haven’t been named yet. New strategies are discovered (and named) all the time and one of the ways to do this is to guess and then, if the guess was correct, go back and try to understand why.

This bias against guess and check seems to be some deep-seated issue from our culture. I know a lot of mathematics teachers frown on guess-and-check as well and that can rub off on their students, possibly implanting the bias for life. Unfortunately, having this bias can really damage a person’s ability to learn and succeed at mathematics in university. It turns out that guess-and-check makes a triumphant return as a strategy for quickly completing proofs when one is unfamiliar with established theory. Sound familiar? That’s just like sudoku!

Working mathematicians, in contrast to poor math teachers at lower levels, have a healthy relationship to the guess-and-check strategy. And that’s good news for them, since they are often working in areas where there is insufficient established theory to make any progress.


It's all down to whether or not there is any logic to the guess and check strategy. Most of the computer algorithms work by picking a number in the possible values, following the eliminations, and repeating. If they hit an error, they backtrack to the last decision, choose a new number from the set and repeat.

If you look at some of the Cracking the Cryptic puzzles on YouTube with "computer" in the title, that covers cases where the computer resorts to a guess and check strategy but where better underlying logic is available in the solve path.


The finite nature of sudoku puzzles guarantees that there is an underlying logic to a given move, whether the solver is aware of it or not. Ultimately, all sudoku strategies are backed by an overriding master logic:

"Does this branch of the game tree contain the completed solution or not?"

Whether or not humans have come up with a name for a given strategy depends, almost entirely, on the depth of that branch.


No that’s not the case. Having a single solution does not mean that there is a logical path to it.

If I have a puzzle where I’m down to a bunch of different options and the only way to make progress is to just try fixing different numbers until the puzzle resolved that not a logical progression , it’s an exhaustive search.


If the solution is unique then there is a logical path to it, though maybe not one feasible to discover for an agent with bounded time and (especially for humans) bounded working memory.

Consider the search tree of a backtracking algorithm operating on a SAT-based representation of a puzzle. A leaf of the tree corresponds to some clause that becomes empty after eliminating literals assigned on the path to that node. If you flip the tree upside down and start from the clauses at the leaves, then two leaves with a common parent represent two clauses with complementary literals that can be resolved upon. So any branch of the algorithm's search tree can be viewed as a tree-structured resolution-refutation proof eliminating some value given a set of prior assignments on the path to the branch, and the tree as a whole can be decomposed into an ordered set of proofs for each elimination in the path to an overall solution.

Or, if you prefer, start again from the SAT-based representation and run a prime implicates algorithm like Tison's. Such an algorithm never advances a "guess" or generates a clause that is not entailed. It simply finds one logical consequence after another until it has found all of them, throwing away subsumed clauses along the way until all that's left is the unique solution.

Either way you will always produce a path to a solution and proof that the solution is unique using elementary rules of propositional logic that anyone can recognize. That, I think, is what your parent means.

Of course, the existence of a proof doesn't mean that a human can find that proof, and that's what we usually mean when we say there's no logical solution. That is, nothing new can be proven by scanning the puzzle looking for pattern matches against a fixed library of known proof templates taken to be the universe of logical techniques, and nothing can be proven from less structured heuristic search within the limits of human working memory and patience.


guess and check for a human works when the problem space is small enough. You can't guess and check yourself through a 300-move forced mate in chess or some bizarre sudoku before dying of old age.

Yeah in theory a human can brute force or guess like a computer, but that's obviously not the point of a meaningful game or problem to solve because it's mindless.


Nothing about the guess and check strategy implies that you have zero prior information and must guess blindly in an attempt to win the lottery for picking the correct move. Typically, people using guess and check have other principles, rules, or heuristics they use to narrow the search space down to a handful of options.

My original point still stands. A cultural bias against guess-and-check is just another way of saying that strategies which determine an exact sequence of moves using only strict deduction from known theory are the only “acceptable” way to play sudoku. That, to me, is highly limiting and absurd. It’s also inefficient because often you’re faced with a choice between two mutually exclusive options and it’s just plain faster and less error-prone to guess and check than it is to carry out all of the deduction in your head before making the correct move.


it's not an absurd limitation. You're not playing sudoku to beat an opponent (idk maybe there's competitive sudoku where people guess if it's most efficient), you're playing to get better at reasoning. Deduction literally is the game, not filling squares with numbers.

If you're doing programming exercises you can brute force or guess a solution but there's a cultural bias against doing that, because what you're trying to learn is how to be smart about the problem, otherwise the exercise is pointless.

Guessing never adds anything to the experience in a game that's deliberately set up to be a test of skill. It's like doing an actual puzzle. Yes you can trial and error the edges of the pieces randomly, maybe that's faster, but it defeats the purpose of puzzling. A puzzle that heavily benefits from guesswork is just a bad puzzle.


If you're doing programming exercises you can brute force or guess a solution but there's a cultural bias against doing that, because what you're trying to learn is how to be smart about the problem, otherwise the exercise is pointless.

What exactly counts as “being smart about the problem” is culturally determined. In my view, taking ten times as long to solve the problem using pure deduction (because you’re struggling to hold all of the possibilities in your head simultaneously) is being less smart about the problem than making an informed guess and then quickly and mechanically checking whether you were correct.

A puzzle that heavily benefits from guesswork is just a bad puzzle.

That puts an upper limit on the difficulty rating of puzzles which is in some sense limited by the imagination of solvers.


Unless the whole point of the puzzle is to determine the logic.

Bruteforcing (aside from taking longer is just not interesting. When people are setting puzzles a lot of time and effort is put into how the logic is expected to work on the path to solving. When people post puzzles for testing if people find a spot where bifurcation is necessary they’ll generally point it out and the setter will check to see if they made an error or whether the person testing has missed some of the logic.


Guess-and-check is not brute forcing. I addressed this in another part of this thread.


Ok, what do you mean by “guess and check”?

Because general rule for a sudoku to not be considered is that at no point should you be in a position where you are needing to simply try different solution paths to find one that works.

I’d recommend watch a video by cracking the cryptic on YouTube to see how the solve works at the higher levels, as it’s possible I’m misunderstanding what you’re meaning by guess and check, and you’re meaning similar logic to what is used. In that case the problem is calling it “guess and check” leading us sudoku folk to think you’re meaning bifurcation.


IOW: intelligence is data compression.


Intelligence is the ability to craft a more optimal solution than a brute force approach would take.

In the domain of data compression, Kolmogorov complexity https://en.wikipedia.org/wiki/Kolmogorov_complexity is one of the approaches to try to measure that amount.


Guess-and-check is not the same as brute force (nor exhaustive search). No one is sitting there with an empty sudoku grid, filling the whole thing in with guessed numbers, checking to see if the solution is valid, then erasing everything and starting over. Literally no one does that, not even software sudoku solvers (it takes way too long).

Guess-and-check is literally just another name for backtracking algorithms. These do not work (for humans) without an adequate suite of rules that can be use to prune the search space.


> New strategies are discovered

I highly doubt it. In Sudoku, it is either logically deducible that a particular value is to be placed into a given square. Or else it isn't; one can deduce that one of several values can be placed there, after all other exploration elsewhere has been exhausted.

Deducing what can be placed into what square is a simple elimination. If the square is in a row that already has 7, 7 cannot be placed there. If it's in a 3x3 square that has 5, 5 cannot be placed there. If it's in a column that has 4, 4 cannot be placed there. For every square of the Sudoku board, we can do this evaluation. We hit upon a square where all values are eliminated but one, and so that one is confirmed. Based on that confirmation, we can update the other eliminations and keep going. When this process cannot continue, there is no choice but to guess. OK, here we can have a 7 or a 4, and so it goes.

I don't see how you can pretend to have some strategies here, let alone ones with pet names and all.

People have different systems for tracking the information, to be sure.


Sure, you can always use backtracking to solve any sudoku, but people come up with new, more effective strategies all the time, eg. https://www.youtube.com/watch?v=ZLcey7qiXv8


What is "more effective" than "solve any"?


I think there's some leeway for bifurcation, so "guess and check" when there's only two possibilities. It's not as "clean", but from what I gather it's commonplace in competitive sudoku because in some situations it's the fastest way to find the next digit.

But obviously to get to bifurcation you still need to infer enough to narrow a cell down to two choices, so that would still put a limit on solvability.


I would not call what the GP describes as ”guess and check”, but as “backtracking”.

That is just making logic observations, using the grid as a memory aid (“let’s see, if foo is a 1 and bar is a 2, then that’s a 7, and then that must be a 4, and that a 3, and then we hit a dead end, so the claim “this is a 1 and this is a 2” in’s true. Maybe foo is a 1 and bar is a 3? No, that’s clearly incorrect. Maybe foo is a 1 and bar is a 4? Etc)

I think human Sudoku solving is different, though. Humans don’t do a depth-first search, but a breadth-first one for paths that soon lead to being able to fill in some squares. Experienced solvers probably have heuristics for finding them.

I think I would rate the difficulty of a puzzle by the ¿average? depth needed in such a depth-first search to permanently place a new digit in a new cell, with correction factors for the number of paths at that depth that do that and the number of cells to fill in.


Generally if a puzzle requires bifurcation it’s considered to be at least partially broken.

The setter is expected to have made it so that determining each cell can be done without simply seeing if a choice eventually succeeds. Of course exactly how many steps to count as bifurcation is fairly nebulous.


> frowned-upon by the Sudoku community

{citation-needed}

What community, and does it include mathematicians and logicians?

Sudoku puzzles that are solvable without guessing must be generated in a way that this is assured.

There is also an understanding that Sudoku puzzles should have exactly one solution.

It's possible for Sudoku puzzles to have a unique solution, yet be impossible to solve without guessing and backtracking. The process of deduction reaches a point at which it cannot be deduced what value to fill next into what square. It is narrowed down to several possibilities, which have to be pursued in parallel; e.g with backtracking. You follow all the paths, and discard them, returning to the divergent point, whenever a contradiction is reached: violation of the Sudoku constraints.

You can't just frown upon some solution method which is inescapable.


A human with sufficient pens and paper available is a (time-constrained) universal Turing machine, so the only Sudokus that aren't solvable by humans are those that take longer than a few decades to solve. In practice, humans don't like spending that much time on solving a single puzzle. And to most humans emulating a Turing machine is also not particularly enjoyable.


There are lots of Sudokus wuth multiple correct solutions, and no way to differentiate them.


These shouldn't be considered valid sudoku puzzles. Uniqueness is an attribute of valid puzzles.


Generally people solve Sudokus in almost the exact opposite way.

They do very clever reasoning (much more advanced than basically any computer sudoku solver), but very little, or no, backtracking. This is mainly because backtracking more than 1 or 2 times becomes unreasonable (do you start making hundreds of photocopies of your Sudoku?)

The reason computer solvers don't do the advanced reasoning which humans do is it turns out it isn't worth it -- by the time you find and apply the reasoning, you can have done a few million backtracks, which will usually have solved the problem anyway.


I once wrote a Sudoku solver using the following algorithm: For each empty field, find which values could possibly be written there (which values are not already written in the same row/column/quadrant). Then it applied the following two rule: (1) If there is only one possible value for a field, write it there. (2) For each row/column/quadrant, for each value: if the value can possibly be written only in one field, write it there. Repeat this in a while loop, finish if you checked the rules and couldn't write anything.

No recursion, constant memory usage.

I assumed that this would not be enough. I was like "first I will code the obvious thing, then try the algorithm on examples from a book I bought, find the examples this cannot solve, and then think about further rules which could solve those examples". But as I tried it on the puzzles in the book, it solved all of them.

Which went against my intuition, as I was pretty sure I sometimes use more complicated rules when solving Sudoku by hand. But it turned out that it is somehow really simply for me to miss an opportunity.

This is of course not a proof that each uniquely solvable Sudoku can be solved by this algorithm, but I think that in practice at least 99% of them can be.

Then I tried an opposite thing, to use this solver to create puzzles. Like, create a full board, then try removing random numbers and check if the solver can solve this; stop when no number can be removed. This actually created pretty hard puzzles; harder than any example in my book.


Search for 'minimal Sudoku' I think it's 17 given numbers and try those on your solver. I wrote a backtracking solver which tried on the fields with least possibilities first. It needed considerable time for these puzzles.


This is a fun way of solving, but I think your book was fairly simple :)

A good way to find hard sudoku, and hard techniques, is "sudokuwiki.org".


The process you're describing is commonly (and usually derisively) referred to as "bifurcation," because experience solvers will generally only resort to "guessing" when there are only two possible values for a cell.

Strategies for solving sudoku puzzles are many and varied, but if a puzzle can only be solved by "guessing a number" rather than logically working out where a number goes or which number goes in a cell, it's probably a pretty bad puzzle.


Puzzles which require guessing at any point are generally considered "not solvable". The goal of solving a sudoku puzzle is not actually to get a grid with 81 numbers in it, and trying to progress by guessing defeats the whole point.


I've been using https://migadu.com for some time and it works fine (also underwent a Gmail->Migadu migration using imapsync).


Shipped as in "merged to master" but Emacs 28 that will feature this has not been released yet, or am I wrong?


You are right but for what it's worth I've been running the nativecomp build for months now and had exactly zero issues.


Huh, I thought it had released already. Been running 28 for about half a year maybe? Works perfectly.



Release branch for Emacs 28 has been cut, but Emacs 28 has not been released yet, no. Emacs main branch is now 29.0.50 now.


You're right. I've read so much about it that I had stored it as "it's here" in my mind.

Thanks!


How would you address other users? Using SHA of the password?


You can say what is suggested is similar to tripcodes used in some imageboards. If you put `User##password` (where `User` is optional) in the name field when you post something your name will be displayed (differs in each site) like `User!!rEkSWzi2+mz`. So your "account" is the password, no username is needed, and you can have a nickname if you want.


Folks could/should have as many contact aliases as they desire. They can send them securely to others whom they want contact with. A single username per customer is a lame approximation to what humans really want/need.

Further, it's not necessary to be a unique name - there are plenty of Joe's in the world already. It's not ambiguous if you're contacting the Joe you know.

In any case the username is unnecessary when authenticating. Why not prompt for address, or mother's maiden name too? It's all the same sort of weak 'authentication' that could be eliminated with a proper password/access key.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: