frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

New wave of GLP-1 drugs is coming–and they're stronger than Wegovy and Zepbound

https://www.scientificamerican.com/article/new-glp-1-weight-loss-drugs-are-coming-and-theyre-stro...
1•randycupertino•35s ago•0 comments

Convert tempo (BPM) to millisecond durations for musical note subdivisions

https://brylie.music/apps/bpm-calculator/
1•brylie•2m ago•0 comments

Show HN: Tasty A.F.

https://tastyaf.recipes/about
1•adammfrank•3m ago•0 comments

The Contagious Taste of Cancer

https://www.historytoday.com/archive/history-matters/contagious-taste-cancer
1•Thevet•4m ago•0 comments

U.S. Jobs Disappear at Fastest January Pace Since Great Recession

https://www.forbes.com/sites/mikestunson/2026/02/05/us-jobs-disappear-at-fastest-january-pace-sin...
1•alephnerd•5m ago•0 comments

Bithumb mistakenly hands out $195M in Bitcoin to users in 'Random Box' giveaway

https://koreajoongangdaily.joins.com/news/2026-02-07/business/finance/Crypto-exchange-Bithumb-mis...
1•giuliomagnifico•5m ago•0 comments

Beyond Agentic Coding

https://haskellforall.com/2026/02/beyond-agentic-coding
2•todsacerdoti•6m ago•0 comments

OpenClaw ClawHub Broken Windows Theory – If basic sorting isn't working what is?

https://www.loom.com/embed/e26a750c0c754312b032e2290630853d
1•kaicianflone•8m ago•0 comments

OpenBSD Copyright Policy

https://www.openbsd.org/policy.html
1•Panino•9m ago•0 comments

OpenClaw Creator: Why 80% of Apps Will Disappear

https://www.youtube.com/watch?v=4uzGDAoNOZc
1•schwentkerr•13m ago•0 comments

What Happens When Technical Debt Vanishes?

https://ieeexplore.ieee.org/document/11316905
1•blenderob•14m ago•0 comments

AI Is Finally Eating Software's Total Market: Here's What's Next

https://vinvashishta.substack.com/p/ai-is-finally-eating-softwares-total
2•gmays•14m ago•0 comments

Computer Science from the Bottom Up

https://www.bottomupcs.com/
2•gurjeet•15m ago•0 comments

Show HN: A toy compiler I built in high school (runs in browser)

https://vire-lang.web.app
1•xeouz•16m ago•0 comments

You don't need Mac mini to run OpenClaw

https://runclaw.sh
1•rutagandasalim•17m ago•0 comments

Learning to Reason in 13 Parameters

https://arxiv.org/abs/2602.04118
1•nicholascarolan•19m ago•0 comments

Convergent Discovery of Critical Phenomena Mathematics Across Disciplines

https://arxiv.org/abs/2601.22389
1•energyscholar•19m ago•1 comments

Ask HN: Will GPU and RAM prices ever go down?

1•alentred•20m ago•0 comments

From hunger to luxury: The story behind the most expensive rice (2025)

https://www.cnn.com/travel/japan-expensive-rice-kinmemai-premium-intl-hnk-dst
2•mooreds•21m ago•0 comments

Substack makes money from hosting Nazi newsletters

https://www.theguardian.com/media/2026/feb/07/revealed-how-substack-makes-money-from-hosting-nazi...
5•mindracer•22m ago•0 comments

A New Crypto Winter Is Here and Even the Biggest Bulls Aren't Certain Why

https://www.wsj.com/finance/currencies/a-new-crypto-winter-is-here-and-even-the-biggest-bulls-are...
1•thm•22m ago•0 comments

Moltbook was peak AI theater

https://www.technologyreview.com/2026/02/06/1132448/moltbook-was-peak-ai-theater/
1•Brajeshwar•23m ago•0 comments

Why Claude Cowork is a math problem Indian IT can't solve

https://restofworld.org/2026/indian-it-ai-stock-crash-claude-cowork/
2•Brajeshwar•23m ago•0 comments

Show HN: Built an space travel calculator with vanilla JavaScript v2

https://www.cosmicodometer.space/
2•captainnemo729•23m ago•0 comments

Why a 175-Year-Old Glassmaker Is Suddenly an AI Superstar

https://www.wsj.com/tech/corning-fiber-optics-ai-e045ba3b
1•Brajeshwar•23m ago•0 comments

Micro-Front Ends in 2026: Architecture Win or Enterprise Tax?

https://iocombats.com/blogs/micro-frontends-in-2026
2•ghazikhan205•25m ago•1 comments

These White-Collar Workers Actually Made the Switch to a Trade

https://www.wsj.com/lifestyle/careers/white-collar-mid-career-trades-caca4b5f
1•impish9208•26m ago•1 comments

The Wonder Drug That's Plaguing Sports

https://www.nytimes.com/2026/02/02/us/ostarine-olympics-doping.html
1•mooreds•26m ago•0 comments

Show HN: Which chef knife steels are good? Data from 540 Reddit tread

https://new.knife.day/blog/reddit-steel-sentiment-analysis
1•p-s-v•26m ago•0 comments

Federated Credential Management (FedCM)

https://ciamweekly.substack.com/p/federated-credential-management-fedcm
1•mooreds•26m ago•0 comments
Open in hackernews

Solving a wooden puzzle using Haskell

https://glocq.github.io/en/blog/20250428/
69•Bogdanp•4mo ago

Comments

fjfaase•4mo ago
Solving this kind of puzzles is equal to solving an exact cover. Exact cover is known to be NP-complete.
OskarS•4mo ago
Indeed it is, and Donald Knuth spends a substantial part of the latest volume (4B) of The Art of Computer Programming on solving exact cover problems like this using Dancing Links! He presented an earlier version of the algorithm in this legendary article [1], but as good as that article is, the book is even better (and the algorithm improved!). It also has tons of exercises like this. Cannot recommend it highly enough.

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

tirutiru•4mo ago
Yes that's a brilliant article. I do not think it is in the book yet?

I used a poor man's version to solve a puzzle where one arranges polymino pieces on a grid spelling out the date [1]. No pointers, just keeping track of deleted rows and columns in the recursion.

It is not at all obvious that all 366 days can be solved. To my dismay all of them can be solved in multiple ways - as a human I find some days quite tricky.

[1] https://metterklume.github.io/puzzle/2024/12/24/calendar-puz...

OskarS•4mo ago
It is in the book, it’s a big part of 4B, which was published in 2022. The main topics are backtracking, exact cover using Dancing Links and satisfiability. It’s my favorite volume of the whole bunch.
asplake•4mo ago
I missed any link to the puzzle itself. Does anyone here know where you might get one from?
_ache_•4mo ago
Here is the one from the article.

https://linsoluble-casse-tete.fr/products/25-y-constantin

kqr•4mo ago
I have a 2D variant of this puzzle and got curious about the solvability of various starting positions so I made this graphical tool: https://xkqr.org/info/tetrispuzzlesolver.html

Being able to solve starting from various constraints have turned out really useful for building an intuition for the puzzle.

_ache_•4mo ago
I did the exact same thing in C++ 10 years ago ! Same puzzle. :D

I wonder if I can still find the source code. (Found it! Source code was in French and not very elegant but it works, glorified brute force aka Backtracking).

I'm eager to improve it to find ALL solutions, not just the first one.

https://ache.one/polycube.cpp

gerdesj•4mo ago
Good job. When you said "in French" ... well, "IS_VALIDE" is quite something to see!

It seems you are fluent in Franglais - https://en.wikipedia.org/wiki/Franglais. I have only respect for someone who can flit between languages with that facility.

_ache_•4mo ago
OMG. I was quite young. /o\

I wish it was code-switching but the true may be that my english wasn't very good.

I learn yesterday that a French spy DGSE (French NSA) was spotted by the Canadian after exactly this kind of english errors (and other hints like the use of "octet" instead of "byte" and compiled with french local).

gerdesj•4mo ago
An octet is a byte but I get the point - it's when you use a word in context.

I find it fascinating how you slam words together - who cares about "correct"? Is there really a correct way to program in C++, in both French and a nod to English? In the end if it compiles and works - who cares!

Viva la Franglais++

defrost•4mo ago
An octet is a a musical composition for eight instruments or voices, Or it's a set of 8 things (such as 8 bits) .. a byte is the smallest addressable unit of storage, frequently but not always 8 bits (hence the need for CHAR_BIT), it's tied to hardware; TI DSP chips can have 32 bit or 64 bit bytes.
gerdesj•4mo ago
There are times when an exhaustive and formal definition of a word is not required. This is one of them.

However, I am aware that for some people, it can be annoying when someone else (me in this case) is seemingly lazy or just plain wrong when deploying words.

I used to be somewhat unkind about grammatical errors but let's face it: grammar is what the majority of people say it is and not what is pinned down in a book half-read and quarter-remembered from years ago.

A bit is perhaps the smallest addressable unit of storage (says my light switch) A byte manages to convey 256 different states and I would need eight light switches to store them.

defrost•4mo ago
I'm largely indifferent to errors in spelling, grammar, or definition, save for those cases where others are incorrectly correcting others.

The definition of byte is not a matter of grammar, and here on a forum centered about computing technology and business the distinction that matters not to you matters to many - CHAR_BIT is still part of current standards in important languages and hardware w/out 8-bit bytes is still in current use.

rkomorn•4mo ago
> Viva la Franglais++

It's "vive", not "viva", in French, and "français" and "anglais" are both masculine, so "franglais" is masculine as well (so it would use "le" as an article).

xdfgh1112•4mo ago
Way to miss the point.
rkomorn•4mo ago
Nah. It's a pet peeve from years of hearing "viva la France!" from various Americans.
gerdesj•4mo ago
I'm not American and I really do know what I'm doing when I'm taking le pise.

You'll probably be more likely to hear "viva los Frenchies" from Brits confusing Spanish with French. To us Germanics, you Romantics sound all the same ... or something 8)

cocoto•4mo ago
I tried modeling the problem as a mixed-integer linear program (one binary variable for each possible piece position) and CP-SAT solved this one in two minutes.
cocoto•4mo ago
Edit: Under 10s with CP-SAT after removing many variables (had multiple variables for the same pieces).
crdrost•4mo ago
I'm really surprised at the whole filtering the rotation matrices thing, to me it is like, the long side of the piece is an arrow, that arrow can be pointed in one of six directions, I can rotate in one of four directions after that, so there's 24 orientations:

    orientations = concat [
      [
        [(0,0,0), (t,0,0), (2*t,0,0), (3*t,0,0), (2*t, a, b)],
        [(0,0,0), (0,t,0), (0,2*t,0), (0,3*t,0), (a,2*t,b)],
        [(0,0,0), (0,0,t), (0,0,2*t), (0,0,3*t), (a,b,2*t)]
     ] | (a, b) <- [(1,0), (-1, 0), (0, 1), (0, -1)], t <- [1, -1]]
With translations, okay, there's 40 of those per piece and figuring out the right direction to go with those requires a cross product, sure, let's just generate 5×5×5 = 125 of them and filter out the right 40. But doing 20,000 determinants and whatever it was, 10-15 paragraphs, to filter out the right 24 orientations doesn't make as much sense to me.
fn-mote•4mo ago
I am betting that the author came up with the filtering method in 5 minutes or less and quickly got it working.

The 10 paragraph blog post is the “hard” part: explaining to others who don’t have the same base knowledge.

If I read it correctly, they do even less human-powered work than your solution. It just looks hard because the machinery is unfamiliar.

mkl•4mo ago
My parents have a similar 3×3×3 puzzle, that they couldn't remember how to solve, so most times someone visited them and had a go at it, the puzzle would be left in pieces until I next visited and put it back together. One Christmas I wrote a similar solver in Python and found there were 16 solutions, only a few of which I had found (though most I had seen only once). I printed out diagrams for each solution made with Matplotlib, so now the puzzle can always be put back together. My grandmother had a different 3×3×3 one that turned out to have something like 100-200 solutions.
dividuum•4mo ago
I wrote a solver for a similar puzzle: IIRC it was 3x3x3 with different shaped pieces that left some space unfilled. Some of the pieces had holes and you additionally had three 3-long metal rods to place inside somewhere. I ran my code and it didn’t find a solution. Best it could do was fit all wooden pieces and two of those rods through holes inside the pieces. [Spoiler] Turns out, the solution was to ignore to rods first, leave a 3x1x1 “tunnel” and put all three rods in there, completely ignoring the holes in the wooden pieces. I remember being slightly annoyed :-)
ustad•4mo ago
You all might like the 3x3x3 Soma Cube: https://en.m.wikipedia.org/wiki/Soma_cube
lordgrenville•4mo ago
I think in English one would usually say "position" where the author uses "disposition". (Disposition is closer to "temperament"/"personality".)
mdrslmr•4mo ago
My "conjecture" is, that some depositions could be excluded by comparing two shapes: e.g. if they are back to back, side by side, nob on nob. Here I have in mind two shapes where one is just a rotation around the long axis of the other and shifted by only one unit perpendicular to the axis of rotation.
mdrslmr•4mo ago
With some "random" changes the time for computation on my computer went down from 1534s to 67s. What I did is exclude some pieces I found suspicious. Therefore I introduced basically the function exclude and had to do some bookkeeping of already places pieces.

  ```haskell
  len :: V3 Int -> Float
  len (V3 x y z) = sqrt (x'*x' + y'*y' + z'*z')
                where
                    x' = fromIntegral x :: Float
                    y' = fromIntegral y :: Float
                    z' = fromIntegral z :: Float
  exclude :: Shape -> Shape -> Bool
  exclude [a1, _, _, d1, _]  [a2, _, _, d2, _] = len (a2 - a1) < 1.1
                                                && len (d2 -   d1) < 1.1
  ```

  ```haskell
  conflict :: Shape -> Shape -> [Shape] -> Bool
  conflict occs piece oldPieces = any (\voxel -> elem voxel piece) occs ||
                any (\o -> exclude o piece) oldPieces
  ```

  ```haskell
  subsolutionsSmart :: Int   -- ^ How many pieces should be in the subsolution we're looking for?
                  -> Shape -- ^ Unavailable voxels, already occupied by some piece
                  -> [Shape]
                  -> [[Shape]]
  subsolutionsSmart 0 _ _ = [[]]
  subsolutionsSmart n occupiedVoxels oldPieces = do
    let freeVoxel = pickFreeVoxel occupiedVoxels
    newPiece <- filter
                  (\piece -> elem freeVoxel piece &&
                             not (conflict occupiedVoxels piece oldPieces)
                  )
                  allValidPieces
    let updatedOccupiedVoxels = newPiece <> occupiedVoxels
    let updatedOldPieces = (newPiece:oldPieces)
    otherPieces <- subsolutionsSmart (n - 1) updatedOccupiedVoxels updatedOldPieces
    return $ newPiece : otherPieces
  ```

  ```haskell
  allSolutionsSmart :: [[Shape]]
  allSolutionsSmart = subsolutionsSmart 25 [] []
  ```
concavebinator•4mo ago
Reminds me of a 2D puzzle I solved using Haskell https://github.com/concavegit/tile-placement-puzzle

IIRC it kept a list of board states, updated the list of board states by taking each one and applying possible moves, then removed congruencies or any state that did not have a valid next move.

The pattern seems similar to your approach that deals with rotations, though in 3D