Show HN: Swarm – Program a colony of 200 ants using a custom assembly language

dev.moment.com

190 points by armandhammer10 a month ago

We built an ant colony simulation as an internal hiring challenge at Moment and decided to open it up publicly.

You write a program in a custom assembly-like (we call it ant-ssembly) instruction set that controls 200 ants. Each ant can sense nearby cells (food, pheromones, home, other ants) but has no global view. The only coordination mechanism is pheromone trails, which ants can emit and sense them, but that's it. Your program runs identically on every ant.

The goal is to collect the highest percentage of food across a set of maps. Different map layouts (clustered food, scattered, obstacles) reward very different strategies. The leaderboard is live.

Grand prize is a trip to Maui for two paid for by Moment. Challenge closes March 12.

Curious what strategies people discover. We've seen some surprisingly clever emergent behavior internally.

TheAceOfHearts a month ago

That's really cute, it reminds me that Will Wright (creator of The Sims) has referenced this book "The Ants", by Bert Holldobler in multiple occasions as a key inspiration for his games (and in particular SimAnt) and systems thinking. Did you come across that during your research phase or had you not heard about it? I haven't read it yet, but maybe someday I'll get around to it.

  • lightamulet a month ago

    Hey, I'm the one who built this particular challenge!

    I had no clue, but thanks for the book lead! It didn't come up directly, but SimCity 2000 and especially SimCity 4 had a huge impact on me growing up / I still spin up SimCity 4 from time to time, so I imagine there's a massive indirect influence haha.

    • antfarm a month ago

      This is exceptionally beautiful. What did you use to build it? Vanilla JS?

      • lightamulet a month ago

        This is actually all built in nextjs/react, though the initial sketches of the sim had no visualization and were just running in my terminal using bunjs

  • sitkack a month ago

    Will Wright gave at least one great lecture at SIGGRAPH. Wonderful thinker and communicator. #ACM plz unlock this culture.

    Ants have fascinated me from a young age, I’d construct a viewing platform so I could watch the hive at work.

    My favorite were the carpenter ants, so smart. It feels like they have a theory of mind. I didn’t hurt them, but if you disturbe their nest under a board, the efficiency and expediency they would exhibit while collecting their young was fascinating.

    *edit, I meant to ask if you had any other book recommendations?

    • TheAceOfHearts a month ago

      Well, I'm currently reading through "Designing Virtual Worlds" by Richard Bartle. He's known for being one of the creators of MUD (multi-user dungeon). I'm not far along enough to make a judgement on the quality of the contents, but I keep seeing the book title pop up everywhere so it seems important.

  • JamesTRexx a month ago

    Speaking of SimAnt, I soon discovered the bug that by moving into the top corner, the black ants would conquer all squares with no intervention from that one sideways and downwards and too easily win the game.

    Still, it was fun just messing around with the ants, watching the trails, and chasing spiders by calling forth all ants.

grantsucceeded 24 days ago

Thank you, Thank you, Thank you. I'm absolutely having a great time immersing myself in this, but I'm super sad about the day it will be taken down and i cant play anymore. Maybe that day is when the contest is over? Will there be some way i can keep enjoying this beautiful little world after the contest?

I know opening up the source or keeping the hosting up might be really hard to do for legal, security, cost or a million other complicated reasons. so if its not possible, thank you anyway :)

So simple and beautiful. So addicting. Love it! Thank you!

WillMorr 21 days ago

Thanks for organizing this! I had a great time playing with the system for a week even though I did not get anywhere close to the prize pool.

I have no idea if anyone checks these threads after a week but not that it's over, I am super curious what strategies other folks used. I used a python script to pre-process my programs to minimize jumps and downloaded the sim to run an iterative optimizer with parallelization. I just put a little writeup and the code on github https://github.com/Will-Morr/MomentSwarm.

  • cristoperb 20 days ago

    I just came back to check if anyone else was discussing their entry, so thanks for posting your write up!

    I wrote mine by hand just testing it using the in-browser simulator. I initially used subroutines to try to keep things structured but then resorted to inlining most things (and flattening as much state as I could to bare registers) to try to speed things up, though i never quite got my ants to always move within the 64 op step.

    My best score on the official test set was 654 (43rd place). I put my code and a little write up here: https://github.com/cristoper/brain.ant

    • hukdukmukduk 20 days ago

      Here is my entry, I managed to get up to 815 on the validation set during the event, and 825 after:

      https://github.com/hukdukmukduk/brain.ant

      • cristoperb 20 days ago

        Thanks for sharing, and congratulations!

        Interesting that you didn't use dead reckoning at all to return to the nest. I didn't think I could get away with that. And somehow using a second channel to extend the trails never occurred to me.

        • andthenzen 19 days ago

          Thanks to everyone in this chain for sharing! I've learned so much from your programs and was inspired to make my repo public and do a write up as well. I was 52nd place with a score of 599.

          https://github.com/Taxes/ants

          • grantsucceeded 14 days ago

            Wow. thank you so much for the writeup.

            I'm just now (last few months) dabbling with agentic coding, but being an oldschool tech guy I had to dive straight into assembly. It was just too hard for me to level up my agentic skills given the deadline.

            • TheCog 11 days ago

              I wrote a... slightly substantial writeup: https://hallofdreams.org/posts/agents-and-ants/

              • grantsucceeded 8 days ago

                Thanks!

                This challenged coincided with my first dabblings into agentic coding. I wrote all my attempts in hand coded assembly, without doing any basic research. but your site is very entertaining and is reminding me of why the connection of ants/swarms cellular automata to gradient discovery to AI always blows my mind

ynac a month ago

My "hello world" for a new stack is always a version of Worm. Somewhere between Life and your Swarm, Worm wanders around looking for food and water, trying to avoid birds and other issues. Each round the worm survives it grows by a segment. If it doesn't get food or water, it is reduced a segment. And so on. Your Swarm is a few levels up from my iterations, totally inspirational! Thanks!

i_am_a_squirrel a month ago

what is this? assembly for ants?

  • forkerenok a month ago

    It's assembly for people who can code good.. and can do other things good too.

  • yesthisiswes a month ago

    It needs to be at least three times this size!

WillMorr a month ago

I've been working on a surprisingly similar project for the last week: plants grow cells on a grid by executing a raw chunk of memory according to a simple instruction set. I'm aiming more for an evolution simulator, where each plant gets a 1kb brain that is randomized a little when a new plant is spawned.

Most plants right now settle into a simple goto loop that places the requisite cells to survive and then spam seeds until they die. I have seen some interesting variety in body plans emerge where plants sort into discrete species regionally. I'm hoping to eventually get decision making to emerge organically. If things go well this system is theoretically capable of sexual selection (and maybe fisherian runaway) but that's a pipe dream right now.

https://github.com/Will-Morr/PlantBrainGrid

geoffpurvis a month ago

I think I found a bug:

In the reference material under ARITHMETIC, it shows `AND r1 0xFF` as valid. However, actually using that code always produces zero regardless of what is in r1. My experiment concluded that only decimal inputs are supported, and hexadecimal are not, but the reference doesn't say that, and the editor doesn't flag the hexadecimal inputs as an error. Perhaps the reference material should be updated to simply show "255" instead of "0xFF".

Here is code to reproduce:

  ; ==================================================
  ; Bug Report:
  ;   AND operation returns 0 when give a hex argument
  ;
  ; Expected behavior:
  ;   (1 AND 0xF) should either equal 1 or the
  ;   line should be flagged as an error.
  ;
  ; Actual behavior:
  ;   (1 AND 0xF) equals 0 and does not flag error.
  ; ==================================================

  .alias input r0
  .alias output_using_hex r1
  .alias output_using_dec r2

  main:
      ; Pick any number only using bits 0xF
      SET input 1

      ; Test using hex
      SET output_using_hex input
      AND output_using_hex 0xF  ; no error raised

      ; Test using decimal
      SET output_using_dec input
      AND output_using_dec 15  ; (15 == 0xF)

      PICKUP  ; end the tick, so registers are stable
      ; Registers at this tick boundary:
      ; input:            1
      ; output_using_hex: 0 (incorrect)
      ; output_using_dec: 1 (correct)

      JMP main
  • lightamulet a month ago

    thanks for the bug report! oversight on my part, pushing hex support rn :)

JetSetIlly a month ago

Cool. This is how I imagine the ants were programmed by the spiders in Children of Time.

kleiba a month ago

I wish I could read dark-mode but my eyes somehow cannot handle it (not just on that website, in general).

  • purplehat_ a month ago

    there is a `theme set` command

sliken 20 days ago

Any chance of turning this into a server/client with an API so people could use the language of their choice?

CGamesPlay 22 days ago

That was fun! Will there be a blog post / showcase or anything? I came in 9th, and will definitely be writing a blog post. I did not write a single line of antssembly during the contest!

RandomTeaParty a month ago

Did website break?

I only see "MOMENT" and "All systems nominal"

  • greenbit a month ago

    Incredible low contrast font color in use there. Looks like about 0x002000 on pure black (per Mk-1 eyeball).

    What possesses people to go for these barely perceptible color schemes?

    .. a few minutes later ..

    Ok, the crazy low contrast was on the initial landing page. Things have somewhat improved after prodding somewhat blindly at it.

    I'll let the question stand though, bc why do that for what's going to be people's first impression?

  • armandhammer10 a month ago

    try pressing any key or clicking around :)

nozzlegear a month ago

I think I read a Daniel Suarez book about this once.

nurettin a month ago

This is a balancing act between collectors and explorers. There is probably some optimized number. Likely targeted at beginners.

anta40 a month ago

So.... a sort of modern Corewar?

ngvrnd a month ago

Is it possible to reset the source once you've started modifying it?

general_reveal a month ago

Orwell would suggest you use the word normal.

orsorna a month ago

The amount of effort put into this tool...just for hiring to your exact shop? I cannot imagine that's a good return on investment?

  • lightamulet a month ago

    i think this took me (1 person) like 40 hours max? all built in the last week, though i spent more time than i should have on it haha. quite ai-assisted, that's how most of the layout like the editor, player controls, even eval server got set up.

    i spent way too much time on things like the language itself, map generation, and figuring how to only recompute the sim on material code changes vs whitespace and comments (it assembles to "bytecode" with debouncing! and the sim component takes the bytecode as a prop).

    we'll see if good ROI, we definitely intend to run more of these types of challenges in the future, so much of this work won't go to waste

  • sixo a month ago

    There's also a trip to Hawaii in it for you.

  • Kinrany a month ago

    People like doing cool stuff

4b11b4 a month ago

Wait what this is the best reason to write a bunch of assembly AND learn about ants?

  • armandhammer10 a month ago

    And (potentially) go to Hawaii!

    But in all seriousness, ants are smarter than they look. They operate as a collective. Just in the same way that assembly needs to operate collectively to get the best output.

    They're more closely linked than they appear from the outside ;)

    • dspillett a month ago

      > ants are smarter than they look.

      Many moons ago I had a big pot of rhubarb in my back yard¹ and was initially irritated by the appearance of ants and aphids, until I took a moment to watch them and realise that the ants were bringing in the aphids and tending to them. The buggers were farming. The ants can't digest the leaves of the rhubarb, but the aphids can and excrete a sugary by-product that the ants “milk” from them. It is a fascinating bit of nature to read into. They even defend the aphids from predators and so forth, so it isn't a bad life for them either.

      --------

      [1] Not a euphemism for a lovely garden in that case, it was literally about a square yard of concrete behind the mid-terrace I was renting.

    • embedding-shape a month ago

      > But in all seriousness, ants are smarter than they look.

      I'd argue the opposite, ants are dumber than they look. You look at a random ant stack in the forest and it looks like they're smart, but that's only when they're "controlled" by the collective, individual ants themselves are pretty dumb in the end, but it's hard to see as typically we always see them around/in their stacks in nature.

    • lukan a month ago

      As a collective, yes. If you look at individuals, they often go in circles and act really dumb. But for the colony it still works out, bigger brains would cost too much energy I suppose and simple algorithms work. (I often watched real ants while and my head translated their behavior to simple algorithms)

    • kitd a month ago

      Someone else who has read Godel, Escher, Bach by Hofstadter?

      • oddmade a month ago

        Excellent book cheers

macleginn a month ago

What's with "artesenal"? Is this a joke that I don't understand or a surprising way to write "artisanal"?

  • lightamulet a month ago

    the answer is my editor doesn't have spellcheck and i apparently don't know english as well as i thought, fixing :')

ivanjermakov a month ago

All dark themes are too low contrast. Give me pure white (including comments) on pure black please.

  • lightamulet a month ago

    on the home page (dev.moment.com) you can type `theme -h` and then `theme set [name]` to change the color scheme, which carries forward to the sim!

    • ivanjermakov a month ago

      Yes. I checked every theme and all dark themes are too low contrast. Pacman is good but comments are barely readable (gray on dark gray).

FpUser a month ago

Am I being dumb? I was expecting to see ability to look at and run some canned sim

TruffleLabs a month ago

Why? =>

"Moment Engineering by Moment Technology wants to access your {GitHub account name} account Personal user data Email addresses (read-only), profile information (read-only) This application will be able to read your private email addresses and read your private profile information."

sudo_cowsay a month ago

Nice way of hiring but is it really worth it to give the public a trip to Maui (kinda expensive these days)

Does it really reveal that much talent to make it worth the money?

Just curious

  • tgsovlerkhgsel a month ago

    The prizes (Maui trip, second/third prizes, swag kits, shipping for the swag kits) probably cost around $20k in total.

    Assuming an engineer costs $200k/year, 200 effective working days per year, that's 1k/day. Developing the contest (from the idea to building the rules to building the site to playtesting) likely cost more than 20 eng-days, making it the biggest cost.

    Hiring is expensive. If it takes 30 minutes to screen one candidate for suitability for the "real" interview and 5h to do a "real" interview (including evaluation etc.), 5 screenings for one interview-worthy candidate and 5 interviews for one hire (I suspect the real factors might be closer to 10), that's 12.5h of screening and 25h of interviewing per hire.

    • boutell a month ago

      Sure, hiring is expensive, but firing is really expensive! I salute your efforts to get it right on the first try.

  • armandhammer10 a month ago

    It's less about the money. It's about giving people a chance to do something fun / show off their skills and get rewarded for it.

    Plus, Hawaii is awesome.

    • dr_kiszonka a month ago

      I think it is a fun contest! As for recruitment, it suggests to me you are looking for people with no kids, and possibly young people.

    • nylonstrung a month ago

      Appreciate this, very cool of you to do that

  • AndrewKemendo a month ago

    Way less than you would pay for a recruiter

    they usually ask for a non trivial percentage of the first year salary

Uptrenda a month ago

[flagged]

  • mock-possum a month ago

    > my goy master

    I’m sorry your what now?

    • Uptrenda a month ago

      [flagged]

      • wizzwizz4 a month ago

        Nobody who talks like this has ever been Jewish, in my experience: you'd be the first.