frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Working on databases from prison

https://turso.tech/blog/working-on-databases-from-prison
117•dvektor•1h ago•33 comments

Show HN: Zeekstd – Rust Implementation of the ZSTD Seekable Format

https://github.com/rorosen/zeekstd
86•rorosen•17h ago•11 comments

Show HN: Socket-call – Call socket.io events like normal JavaScript functions

https://github.com/bperel/socket-call
12•bperel•2h ago•2 comments

Nanonets-OCR-s – OCR model that transforms documents into structured markdown

https://huggingface.co/nanonets/Nanonets-OCR-s
97•PixelPanda•7h ago•24 comments

Start your own Internet Resiliency Club

https://bowshock.nl/irc/
329•todsacerdoti•6h ago•177 comments

WhatsApp Introduces Ads in Its App

https://www.nytimes.com/2025/06/16/technology/whatsapp-ads.html
14•greenburger•28m ago•6 comments

Jokes and Humour in the Public Android API

https://voxelmanip.se/2025/06/14/jokes-and-humour-in-the-public-android-api/
194•todsacerdoti•13h ago•98 comments

Maya Blue: Unlocking the Mysteries of an Ancient Pigment

https://www.mexicolore.co.uk/maya/home/maya-blue-unlocking-the-mysteries-of-an-ancient-pigment
22•DanielKehoe•2d ago•0 comments

Infracost (YC W21) is hiring software engineers (GMT+2 to GMT-6)

https://infracost.io/join-the-team
1•aliscott•2h ago

Is gravity just entropy rising? Long-shot idea gets another look

https://www.quantamagazine.org/is-gravity-just-entropy-rising-long-shot-idea-gets-another-look-20250613/
113•pseudolus•13h ago•99 comments

Why SSL was renamed to TLS in late 90s (2014)

https://tim.dierks.org/2014/05/security-standards-and-name-changes-in.html
386•Bogdanp•23h ago•180 comments

LLM Chat via SSH

https://github.com/ccbikai/ssh-ai-chat
21•wey-gu•2d ago•12 comments

DARPA program sets distance record for power beaming

https://www.darpa.mil/news/2025/darpa-program-distance-record-power-beaming
104•gnabgib•15h ago•62 comments

A Framework for Characterizing Emergent Conflict Between Non-Coordinating Agents [pdf]

https://paperclipmaximizer.ai/Unaware_Adversaries.pdf
4•ycombiredd•2d ago•2 comments

Solving LinkedIn Queens with APL

https://pitr.ca/2025-06-14-queens
44•pitr•2d ago•12 comments

Modifying an HDMI dummy plug's EDID using a Raspberry Pi

https://www.downtowndougbrown.com/2025/06/modifying-an-hdmi-dummy-plugs-edid-using-a-raspberry-pi/
256•zdw•22h ago•71 comments

Childhood leukemia: how a deadly cancer became treatable

https://ourworldindata.org/childhood-leukemia-treatment-history
232•surprisetalk•1d ago•65 comments

Hyperspectral scans of historical pigments and painting reconstructions

https://github.com/rubenwiersma/painting_tools
18•yig•3d ago•1 comments

Real-time CO2 monitoring without batteries or external power

https://news.kaist.ac.kr/newsen/html/news/?mode=V&mng_no=47450
70•gnabgib•15h ago•21 comments

Twin – A Textmode WINdow Environment

https://github.com/cosmos72/twin
115•kim_rutherford•17h ago•20 comments

Datalog in Rust

https://github.com/frankmcsherry/blog/blob/master/posts/2025-06-03.md
303•brson•1d ago•34 comments

Simplest C++ Callback, from SumatraPDF

https://blog.kowalczyk.info/a-stsj/simplest-c-callback-from-sumatrapdf.html
139•jandeboevrie•20h ago•137 comments

First 2D, non-silicon computer developed

https://www.psu.edu/news/research/story/worlds-first-2d-non-silicon-computer-developed
118•giuliomagnifico•3d ago•25 comments

Chemical knowledge and reasoning of large language models vs. chemist expertise

https://www.nature.com/articles/s41557-025-01815-x
78•bookofjoe•2d ago•40 comments

How the BIC Cristal ballpoint pen became ubiquitous

https://www.openculture.com/2025/06/how-the-bic-cristal-ballpoint-pen-became-the-most-successful-product-in-history.html
21•janandonly•4h ago•46 comments

Telephone Exchanges in the UK

https://telephone-exchanges.org.uk/
146•petecooper•18h ago•64 comments

How to modify Starlink Mini to run without the built-in WiFi router

https://olegkutkov.me/2025/06/15/how-to-modify-starlink-mini-to-run-without-the-built-in-wifi-router/
316•LorenDB•1d ago•97 comments

Occurences of swearing in the Linux kernel source code over time

https://www.vidarholen.net/contents/wordcount/#fuck*,shit*,damn*,idiot*,retard*,crap*
42•microsoftedging•2d ago•56 comments

Fields where Native Americans farmed a thousand years ago discovered in Michigan

https://www.smithsonianmag.com/smart-news/massive-field-where-native-american-farmers-grew-corn-beans-and-squash-1000-years-ago-discovered-in-michigan-180986758/
220•CoopaTroopa•4d ago•99 comments

The Hewlett-Packard Archive

https://hparchive.com
41•joebig•12h ago•12 comments
Open in hackernews

Solving LinkedIn Queens with APL

https://pitr.ca/2025-06-14-queens
44•pitr•2d ago

Comments

geeunits•4h ago
I've been implementing a bare metal APL Assembly kernel on mac arm and have been surprised at the resurgence of interest in languages like it. I think people are in general thinking about symbol representation/compression to a fundamental level for these performance gains. It's been fun to try and hack AMX implementation and couldn't do any of it without the shoulders of giants / Asahi linux project
7thaccount•2h ago
I'm not hearing about it used much in industry outside of legacy applications like what Volvo has (not that I'm big in the community or anything lol). However, there does seem to be a lot of hobby interest that might eventually go somewhere. I'd like it to catch on as APL is so cool.
miningape•2h ago
I've been writing a Queens clone, while I haven't gotten to the solver part I haven't been able to think up a good/clean way to write said solver. So this is super helpful for me to get some ideas on how a solver should work, and what are the minimum number of rules that the solver should obey (in Queens there are multiple rules that could apply to the same blocks and result in the same decision, but not all rules can be applied in all situations, so narrowing them down to the "axioms" seems difficult).

More of a Math question: I'm also wondering if there's any way to prove that all Queens boards have exactly 1 solution? In other words, is it possible to create a board that has multiple valid solutions?

gus_massa•1h ago
> is it possible to create a board that has multiple valid solutions?

Some simple boards like

  11111111
  22222222
  33333333
  44444444
  55555555
  66666666
  77777777
  88888888
or

  11112222
  11112222
  33334444
  33334444
  55556666
  55556666
  77778888
  77778888
have many solutions.
miningape•1h ago
Thank you! Can't believe I didn't think of this
vidarh•8m ago
Damn you :) - I ended up procrastinating longer than I wanted to on this. This is great one to divide and conquer.

To consider a solver, start with the stupid-simple option:

Step 1. For each open square, copy the board, place a queen there, and recursively call the solver until an option results in 8 placed queens. This will obviously work, but is about as bad as the solution can get. Starting with this means you have an easy test case for every improved version.

To make it better, you want to bail out of that recursion as early and often as you can.

Step 2. Sort the regions by number of open squares, and iterate over the open squares from least-number-of-possibilities to most.

This will naturally place queens for colors that have only one remaining open square first, folllowed by the ones where the odds of hitting the correct square is highest, and so will usually drive down the combinatorical explosion a lot.

Step 3. To improve on this further, at the start of the solve function, check if the board is in an invalid state. That is, the number of regions with open squares must match the number of queens yet to be placed.

This will prune any sub-trees you want to test that would place the board in an invalid state.

Any pruned sub-tree should then cause that square to be marked unavailable before you continue.

Step 4. At the start of the solver mark as many squares that can't have queens as possible. The set of rules you can apply here is pretty big, but you can probably make do with very few. E.g. simple to implement rules would include:

* if any color is present in only one row or column, mark all other squares (of other colors) in that row or column as unavailable.

* if any color is the only color present in a given row or column, mark all squares of that color in other rows / columns as unavailable.

(you can extend the first above to: if any open squares of n colors are present in the same n rows or columns, mark all other squares (of other colors) in those rows or columns as unavailable, but I'm not sure if that will cut down on the recursion enough to be worth the hassle)

There are probably much more elegant solutions, but I think I'd end up with something like this pseudo-code:

    # Find a (possibly/likely incomplete) set of positions to mark as unavailable
    # because they're either impossible due to the current position, or because you
    # can place a queen with certainty
    #
    mark(board)
      while changes during execution:
        for each open square:
          for each color without placed queen:
            if open squares in only one row, mark all other squares of other colors in that row unavailable
            if open squares in only one column, mark all other squares of other colors in that column unavailable
            for each row/for each column: if only one color has open square, place queen.
            # Apply more rules here if you should need it; my hunch - but it is a hunch only - is that the above will prune the tree enough
      return true if still open squares, false if no open squares.

    # Check if the current board is invalid. That is, each color without a placed
    # queen must still have at least one open square.
    #
    invalid(board):
       for each color without placed queen:
          if no open square of this color, then return true
       return false

    pick_square(board):
        color = color with the smallest number of open squares.
        return first open square for "color"

    solve(board):
       while mark(board) and not invalid(board)
          square = pick_square(board)
          copy board.
          place queen on the chosen square on the copied board.
          if solve(copied board) returned solution, then return solution
          else mark square unavailable.
       if all queens placed, return solution,
       else return unsolvable
kjgkjhfkjf•1m ago
How are you generating the boards?
bognition•1h ago
I’ve noticed that many of the hard boards have a “choke point” in the solution where there are a small number of places you can place a specific queen but the information needed to place it can be difficult to gather.

A hacky trick is to place a queen and then ask for a hint. If deployed well, you can use this short circuit the challenge and often solve the puzzle in a fraction of the time.

There isn’t any penalty for taking a hint beyond you’re locked out of your next hint for a period of time.

inanutshellus•33m ago
For the author... This is the "9 queens problem", a classic that predates both the internet and LinkedIn. Renaming and attributing it as "LinkedIn Queens" in this article is distracting.
vidarh•5m ago
"LinkedIn Queens" is different from the classic n-queens problem, in that the queens do not threaten each other diagonally other than immediately adjacent, and secondly each board is split into not just rows and columns, but also colors and only 1 queen can be placed on each row, column, and color.

And these colored regions can be of any size.

kjgkjhfkjf•2m ago
It's not "N-Queens". It's "Star Battle": https://www.puzzle-star-battle.com/.
salomon812•5m ago
I know this puzzle as "Star Battle" where I play it here: https://www.puzzle-star-battle.com where my favorite difficulty for a nice medium difficulty is "Normal 10x10 2 stars"

The LinkedIn Queens seems to be a much easier version of this puzzle.

You can see the Cracking the Cryptic folks (of Miracle Sudoku fame) take on the puzzle here: https://www.youtube.com/watch?v=1KGraaDXP_0