Awesome. I've been meaning to play around with this more after first hearing about this paper. I tried a similar automata with an even simpler representation for turing machines and there wasn't an abiogenesis moment. I guess the many no-op characters in the original paper allow for it to explore a bigger space of valid programs or to hide data without completely overwriting itself.
I would like to try alternative character encodings, including ones with fewer no-ops where most bytes are valid BF characters. Are more no-ops better? Is self replicating goo the best we can do?
I've done a lot of experimentation around brainfuck, this paper's specific variant, and applications to genetic programming.
My conclusions so far regarding the abiogenesis/self-replicator angle is that it is very interesting, but it is impossible to control or guide in any practical way. I really enjoy building and watching these experiments, but they don't ever go anywhere useful. A machine that can edit its own program tape during execution (which is then persisted) is extremely volatile in terms of fitness landscape over time.
If you are looking for practical applications of BF to real world problems, I would suggest evolving fixed sized program modules that are executed over shared memory in a sequential fashion. Assume the problem + instruction set says that you must find a ~1000 instruction program. With standard BF, the search space is one gigantic 8^1000. If you split this up into 10 modules of 100 instructions, issues like credit assignment and smoothness of the solution space dramatically improve. 8^100 is still really bad, but compared to 8^1000 its astronomically better.
One important operation I've noticed in the examples that do end up with abiogenesis is having a 'copy' operation. In the bf version they use in the paper, one head can copy the byte under it at the location of the other head. Which makes it quite easy to make a self-replicator: just loop on the copy operation and move both heads, essentially (5 instructions). You could try adding the 'copy' operation to your setup and see if that helps!
Location: MO, USA
Remote: Yes
Willing to relocate: Maybe
Technologies: Java, Spring, Typescript, React, GCP, MySQL
Résumé/CV: https://www.linkedin.com/in/alex-sweeney-a206301a8/
Email: ajs1998@gmail.com
I've been programming since I was 13, I graduated with a Bachelor's in Computer Science, and had almost 3 years of experience as a full stack software engineer at a startup. I designed the company's CI/CD pipeline, wrote backend APIs, frontend code and styling, and database queries across about a dozen microservices. I love software engineering and I would love to do it again.
I would not go back. YouTube is a wonderful thing that I can't afford to pay for, and I don't want to live without. There are so many creators I love that would not be able to create and share beautiful things if they didn't get ad money. It's not all bad.
But if I had to choose one or the other, I'd choose no ads.
And that's only comparing "then" to "now". I'm confident that "now" will get worse in the future, making "then" all the more appealing!
I'm all for the idea of small content creators being able to afford to create their work. I wish content creation did not attract so many people who only do it for money, though. Maybe this would be achievable if the rewards were lower. Advertising sucks all the air out of the room for alternative funding mechanisms. If ads were eliminated, there would be other mechanisms.
However, back in reality, I'll concede that (e.g.) Google's massive ad revenue has given them the ability to try a thousand other things, a handful of which will be long-term valuable to the world. But the cost is immense.
That's what YouTube premium is. The fact that someone with no money gets access to all of YouTube seems like a win to me. If the only way to access was premium the world would be a worse place wouldn't it?
Not defending the software, but if you hand over control of your data to software that has the ability to fuck with it permanently, anything that happens to it is on you.
Don't trust the hallucination machines to make safe, logical decisions.
Remote work is great (for the reasons you gave and more) and saying it "sucks" made me roll my eyes, and it's reductive in the same way as saying office work "sucks." I wouldn't have had a job if in-office was the only option. It certainly didn't suck for me.
Being bad at problem solving with people far away is just another problem you can solve with practice. Same as being bad at problem solving even when help is right next to you.
> made me roll my eyes, and it's reductive in the same way as saying office work "sucks."
Yes, "remote work sucks" is reductive, but I elaborated beyond the heading. Also, I wouldn't disagree with "office work sucks." Remote work simply has its warts, too.
> just another problem you can solve with practice
Perhaps, but practice alone clearly isn't enough. I've been working remotely since 2020 and it hasn't gotten more enjoyable. I would love to solve that problem, though. I read Remote: Office Not Required by Jason Fried in the past, but that was written a long time ago. I've added more recent works (Effective Remote Work by James Stanier and The Async-First Playbook by Sumeet Gayathri Moghe) to my reading list.
I’ve worked remote for at least 16 of the past 22 years including my first job out college. It’s always been friggin awesome. The only downside was when I was contracting and I’d get calls in the middle of dinner and I didn’t have the self-discipline to ignore the call. A few times a year I have to travel to work, it’s nice to see folks, but it’s not required to get the work done, I put my big boy pants on and figure it out, or ask for help when I can’t.
Yeah this is driving me crazy. It must be a bug because it says "a new tab has been opened in your default browser" but my default browser is not Safari.
I don't think there's a clear distinction between vibecoding and AI assisted coding because there's black boxes EVERYWHERE no matter how knowledgeable you are. Compilers assist me to not have to think about machine code. Web libraries and frameworks assist me to not care about networking details. AI, vibe coding or not, is all just another thing to assist the user by reducing distractions.
I think it's valuable for developers to understand more of their code rather than less, but who cares to precisely label how much they understand? If they're happy with the passing tests, comfortable making it public, and others want to contribute, then that's what matters.
The distinction is that in vibe coding you don't even look at the code.
Although I don't endorse it for most use cases, I like the distinction. There are some things I vibe code that are useful in the moment but I always throw out
I would go even further, in true vibe coding you have no idea what you’re doing, don’t even have software engineering knowledge, but whatever your prompting is working so you just keep going. It’s basically user-driven development.
I disagree. There are some cases where I want to bang out an experiment and iterate on it. While I have the ability to understand what's going on, the iteration loop makes more sense to go through the model than trying to understand what it did. This feels like vibe coding in those cases, even though I have the skills. Many talented developers I know are doing this as well to address pieces of a larger problem with expanded scope relative to what they could do without vibe coding. I work in research though, where the code is expected to be fairly exploratory (although high quality).
but the point is, you don't know what's going on. It's not that you could understand it's that you actively choose not to know... that's the essence of vibe coding.
I would like to try alternative character encodings, including ones with fewer no-ops where most bytes are valid BF characters. Are more no-ops better? Is self replicating goo the best we can do?
reply