News for hackers. Stuff that matters.

nicolas-siplis

Show HN: Serverless, cheater-proof MTG engine using zero-knowledge play

https://chiplis.com/ironsmith/

Hey HN! Tried to show this off a couple times before but didn't really get much traction, figured now that more time's been spent in the UI/UX side of things I'd give it another shot.This is my attempt, started at the beginning of the year, to build a complete Magic: The Gathering engine.Instead of coding individual card scripts, a compiler takes oracle text as input and outputs the card...

( Read More... | no comments | on HN )
Re: on Tuesday June 30, 2026 @08:06PM (#48740858)
Hey HN! I've been working on this for the past few months and I think it's at the point where I'm ready for some user feedback. It's a WASM engine attempting to accurately model all of MTG's rules and cards. AFAIK, this is the first MTG engine which tries to accomplish this by live compiling the entire card collection at runtime, instead of coding each individual card.

You can create your own unique cards to playtest against ("Compile Card" button is what you're looking for), as long as they follow the engine's supported grammar (which I'm working on so that it fully supports Magic's ~30k legally playable cards, currently at 26k partially/20k fully supported).

It also supports 4-way P2P multiplayer lobbies via PeerJS, though I haven't had enough time to test everything network related so there may be some hidden bugs there!

My dev process was heavily influenced by the recent surge in agentic coding, but I think I've settled on an architecture which successfully manages to avoid slop creeping in:

Each card from its original, normalized oracle text into a CardDefinition struct which contains every single behavior for that particular card. By the time this card definition is compiled, we no longer have access to the original oracle text.

Each effect in the card's compiled definition can be decompiled into human readable text, after which a series of normalization steps based on the AST structure of the card's compilation and a post-pass to cleanup awkward wording is applied. The resulting compiled oracle text is compared against the original card's using vector embeddings, which gives us a semantic similarity score.

The entire purpose of this development workflow is making it obvious to the AI which cards are working correctly and which ones still need better support, without having to rely on behavioral tests for every single card. It took me some time until I finally managed to get the architecture to the point where the AI doesn't cheat its way into improving the card coverage, but the whole experience has been a fantastic way of getting used to this new way of coding and I'm excited to see how the future of our profession looks like in a few years.

I'm looking for any kind of feedback, both UI/UX and engine related, so please share your thoughts!

Million thanks for this! I stumbled upon XMage at some point but I didn't think of reusing their test suite. I'll see what Codex can cook up, I already have a WASM API which looks fairly similar to what XMage is doing for their tests so hopefully it won't be too hard to port them over!

Show HN: A (de)compiler and parser/engine for custom Magic: The Gathering cards

https://chiplis.com/ironsmith/

Hey HN! I've been working on this for the past few months and I think it's at the point where I'm ready for some user feedback.It's a WASM engine attempting to accurately model all of MTG's rules and cards. AFAIK, this is the first MTG engine which tries to accomplish this by live compiling the entire card collection at runtime, instead of coding each individual card.You can create your own...

( Read More... | 2 comments | 2 points | on HN )
Re:United Wizards of the Coast on Monday April 27, 2026 @03:55PM (#47926512)
I'm actually working on this right now! https://chiplis.com/ironsmith

It's a parser + (de)compiler and rules engine which I'm trying to get to 100% coverage over all Standard/Modern/Vintage/Commander legal cards. About 23000 of them are partially supported, while 15k currently work in full (~3k more than what MTGA currently supports, IIRC). It also allows for P2P 4-way multiplayer which Arena unfortunately does not :/

Show HN: Ironsmith – MTG card (de)compiler and multiplayer rules engine

https://chiplis.com/ironsmith/

Hey HN! Been working on this for the last couple months and I think it's at the point where it might be worth showing here.The main idea behind the project is that card behavior should come from parsed Oracle text whenever possible, instead of hardcoding each card by hand. Ironsmith has a parser/compiler pipeline that turns card text into structured runtime effects, then executes them through...

( Read More... | no comments | on HN )
Hi HN! The last couple years I fell into an "interesting" relationship with "investing" and so I decided to focus my ludopathy into something remotely useful. Unfortunately, instead of that I bring to you... Gambeth!

Anyone can create their own market with an arbitrary number of options. The submission links to Argentina's presidential elections market, feel free to try it in the Goerli testnet and let me know in the comments if you need some testnet USDC to play with it.

The "Explore markets" option is super barebones but should at least give you the list of all created markets.

I plan on doing a release on the Polygon network, but I'd love to have some feedback for the beta version.

The whole code is open source but honestly pretty illegible at the moment. I need to dedicate a day to splitting/reorganizing the code, and probably start to consider an actual framework instead of vanilla JS. If all that hasn't scared you away: https://github.com/chiplis/gambeth

I'm looking for people willing to contribute to a UI revamp but PR's are welcome on anything and everything, all of the time.

Show HN: Gambeth, serverless decentralized prediction market platform

https://gambeth.com?id=argentina-2023

Hi HN! The last couple years I fell into an "interesting" relationship with "investing" and so I decided to focus my ludopathy into something remotely useful. Unfortunately, instead of that I bring to you... Gambeth!Anyone can create their own market with an arbitrary number of options. The submission links to Argentina's presidential elections market, feel free to try it in the Goerli testnet...

( Read More... | no comments | on HN )
Re:Nitter (Twitter front end) is working again on Monday July 10, 2023 @10:17AM (#36666823)
Hey there, just wanted to thank you because you also fixed my Twitter Spaces downloader app[0]! After the API changes the default bearer token I was using (same as yours) stopped working, but after changing the same way you all's back to normal :D

0: https://github.com/Chiplis/moonbird

Been trying to find one through Twitter but haven't had any luck, would super appreciate an invite!
Re:OpenAI Major Outage on Wednesday May 24, 2023 @06:20PM (#36064577)
One might entertain a contrary perspective on the issue of ChatGPT. Rather than being a monolithic linguistic equalizer, it could be seen as a tool, a canvas with a wide spectrum of applications. Sure, some may choose to use it as a crutch, diluting their creativity, yet others might harness it as a springboard, leveraging it to explore new ideas and articulate them in ways they might not have otherwise.

Consequently, the notion that ChatGPT could 'bring down' the more skilled among us may warrant further scrutiny. Isn't it possible that the 'upper echelons' might find novel ways to employ this tool, enhancing rather than undermining their capabilities?

Similarly, while summarization can be a blunt instrument, stripping away nuance, it can also be a scalpel, cutting through verbosity to deliver clear, concise communication. What if ChatGPT could serve as a tutor, teaching us the art of brevity?

The generated words may risk becoming 'blasé', as you eloquently put it, but again, isn't it contingent on how it's used? Can we not find ways to ensure our individual voice still shines through?

So, while I understand and respect your concerns, I posit that our apprehensions should not eclipse the potential that tools like ChatGPT offer us. It might not just be a 'parrot' – but a catalyst for the evolution of human communication.

Though I'm hoping you didn't suspect it, I should warn you this comment was written by you know what (who?).

Show HN: IronBoy, a highly accurate GameBoy emulator written in Rust, runs WASM

https://nicolas-siplis.com/ironboy/

Hey HN! Been working on this emulator on and off for the last couple years, and thought now would be a good time to try and show it off here.As far as unique features... I think this is the only online GameBoy emulator with support for save files? So there's your reason to exist, I guess.The WASM port was something I had in the back of my mind but I just kept putting it off because it seemed...

( Read More... | 5 comments | on HN )
Re:TypeScripting the Technical Interview on Sunday March 12, 2023 @12:25PM (#35122089)
I remember reading the original version and thinking "Ah, this would be so much more grokkable if only I knew Haskell"... Delusions of grandeur are a marvelous thing!
I _think_ it still works as expected if you enter fullscreen mode from the browser itself, unless I'm misremembering.
Re:Gameboy Doctor: debug and fix your gameboy emulator on Sunday December 04, 2022 @02:01AM (#33851326)
Hey there! I've been working on a Game Boy emulator since last year and found the GameRoy project, which translates the PPU's logic from SameBoy, the (AFAIK) most accurate GB emulator around. I basically copied the PPU logic into my emulator and replaced the "state" property (an integer) with enums for some extra clarity.

https://github.com/nicolas-siplis/feboy

https://github.com/rodrigodd/gameroy

https://github.com/LIJI32/SameBoy/

The explanation I read used Finding Wally as an example:

I can put a piece of paper with Wally's silhouette cut off in front of the book. Align Wally to fit into the silhouette and you're done! The paper just needs to be considerably bigger than the actual book, so other people can tell I know where Wally is without actually knowing his location.

Re:Formalizing a Proof of God by Leibniz on Saturday May 14, 2022 @07:56PM (#31383897)
I have 0 experience with theorem provers (and almost 0 with proofs in general) but am at least somewhat aware of their existence. This might be the first time I feel like I can actually follow the code. Might start learning Oak because of this post, so thanks!
Re:Formalizing a Proof of God by Leibniz on Saturday May 14, 2022 @07:53PM (#31383875)
I think the distinction lies in God being that which cannot be moved, having infinite power is not enough to be God.
Re:Squabble.me – Multiplayer Wordle Royale on Thursday February 03, 2022 @06:09AM (#30191027)
Femme fatale is the first thing that comes to mind.
Re:Ask HN: What the hell happened to Reddit on Firefox? on Friday January 14, 2022 @02:57PM (#29939508)
Update: One of the Reddit devs just posted a comment with some more information: https://www.reddit.com/r/help/comments/s4095g/resolved_block...

Ask HN: What the hell happened to Reddit on Firefox?

Even though the issue has been resolved now, I'd like to start a discussion where we can maybe try to figure out exactly what the hell went wrong.User Agent spoofing did nothing to fix the issue, and there are several reports of people managing to make a cURL/Postman request with the exact same headers Firefox used without any problems. HTTP3 also seemed like an easy suspect because of the...

( Read More... | 3 comments | 8 points | on HN )
Re:Conterintuitive facts in mathematics, CS, and physics on Tuesday October 05, 2021 @07:39PM (#28767175)
Huh, I wonder if there's any relationship to the Hairy Ball theorem. They appear to describe similar situations, but on different dimensions.
Hi HN! These last couple weeks I've been working on what I believe is a really cool idea and think I'm finally ready to show you guys. WSBDD is a fully blockchain based web application, a single static page built using vanilla JS (you need MetaMask installed to interact with it). It allows you to place and schedule arbitrary bets over the contents of any website. It uses Provable's smart oracle[1] to query and extract results from the Internet, which then gets posted to the blockchain and used to determine the bet's winners and award their share of the loser's pool. If you feel like trying your luck, I've created a starting bet on the S&P's 500 price (decimals excluded) on October 9. You can place your bet up until next week's Friday (October 2nd) when the market closes. The website also includes links to the source code[2] and the verified smart contract's code[3].

I'd love to hear some feedback from you! I'm currently trying to think of the best way to handle the discoverability of bets. Right now I have a super simple section showing the last 10 created bets, but it's something I think could be considerably improved.

Also, I am not a big fan of the state of frontend development at the moment, so I decided that it would be a fun exercise to forgo any frameworks and see how far I can push things with plain old JS. I'm relatively happy with the results, but as you can probably tell I'm not a designer or anything of the sort, so any quick tips on that end are super appreciated. I'm now gonna start working on cleaning up the frontend, hoping this gets some discussion going!

[1] https://provable.xyz

[2] https://github.com/nicolas-siplis/wsbdd

[3] https://etherscan.io/address/0xbB2Dfc930A209Aa32E49f0b49264b...

Re:Show HN: Wsbdd – Wei Stakes by Decentralized Degenerates on Friday September 24, 2021 @07:12AM (#28640875)
Hi HN! These last couple weeks I've been working on what I believe is a really cool idea and think I'm finally ready to show you guys. WSBDD is a fully blockchain based web application, a single static page built using vanilla JS (you need MetaMask installed to interact with it). It allows you to place and schedule arbitrary bets over the contents of any website. It uses Provable's smart oracle[1] to query and extract results from the Internet, which then gets posted to the blockchain and used to determine the bet's winners and award their share of the loser's pool. If you feel like trying your luck, I've created a starting bet on the S&P's 500 price (decimals excluded) on October 9. You can place your bet up until next week's Friday (October 2nd) when the market closes. The website also includes links to the source code[2] and the verified smart contract's code[3].

I'd love to hear some feedback from you! I'm currently trying to think of the best way to handle the discoverability of bets. Right now I have a super simple section showing the last 10 created bets, but it's something I think could be considerably improved.

Also, I am not a big fan of the state of frontend development at the moment, so I decided that it would be a fun exercise to forgo any frameworks and see how far I can push things with plain old JS. I'm relatively happy with the results, but as you can probably tell I'm not a designer or anything of the sort, so any quick tips on that end are super appreciated. I'm now gonna start working on cleaning up the frontend, hoping this gets some discussion going!

[1] https://provable.xyz

[2] https://github.com/nicolas-siplis/wsbdd

[3] https://etherscan.io/address/0xbB2Dfc930A209Aa32E49f0b49264b...

Older »