Hacker Newsnew | past | comments | ask | show | jobs | submit | mikhmha's commentslogin

Wow. I am so glad for this post because I am literally planning to do this today. I've been building an MMO using Elixir as the backend, and currently the main website is a static site a friend made for me using Vue.js. Mostly it just functions as a way to display blog posts that show new updates to the game. And it contains a button to "launch" the browser client for the game which is just a redirect to a page hosted on a cloudflare bucket that contains the game files.

But I figure now is the time to update the site. I don't know enough about Vue.js and I'm more of a backend programmer anyways. I've been putting it off for so long. I always figured the site would be temporary until I put in the time to learn some Pheonix. Its a bit strange being in the Elixir world working on a project that doesn't touch Phoenix in any way. To me its like an entirely new domain for a language that I consider myself "skilled" in. Whereas for others Elixir = Pheonix. So this write-up really helps remove the overwhelming feeling I've had about starting, because I don't need liveview or ecto or all the other stuff but most of the learning resources focus on that.

I'm kind of excited to start now. Eventually it will be a not-so static website that will maybe interface with some exposed endpoints running on the main game server so I can show stats like "live players" or a "live map" of the game on the main site. But for now it will remain completely isolated from the game server.


The Phoenix framework is great, and I wish it was more popular.

Specifically how Channels trivially solve several common problems:

https://hexdocs.pm/phoenix/channels.html

The minimal wire traffic on a Phoenix deployment usually surprises people at first. Best of luck =3


Lock-free ring buffer is my favorite data structure. I remember implementing it in C++ and then using a legitimate implementation in the form of boost:SPSC for prod. The idea is so simple. And then I started thinking about designing some programming language or framework around the concept, only to then stumble upon the idea of "message passing" for concurrency. Which of course led me to learn about Erlang. And then I went down the Erlang rabbit hole. It might have been a mistake...I made more money doing C++.


Lol. Funny story :)


I tried using Sora for a month. Never paid for it. I tried many different ways of prompting and I was always underwhelmed by its output. The generation would also take so long and there was like a 50% chance it would fail due to content violations. I will say though that it was kind of addicting in a way. Just trying to crank the lever and see what would come out. But you'd always leave disappointed. It was a casino where the operator was losing money for every play.

I think OpenAI had a brief delusion that it could become some huge social networking app. The App was heavily modeled after TikTok..


Location: Canada (Canadian Citizen)

Remote: Yes. Also open to hybrid and in-person

Willing to relocate: Yes.

Technologies: Elixir, C++, C, Node.js, Godot Game Engine, AWS

Résumé/CV: (resume): https://drive.google.com/file/d/1Zaa-fiZmRCSxHq30d-6mzguWUXj... (linkedin): https://www.linkedin.com/in/XXXXXX/ (available upon request)

Email: XXXXXXXXX (removed due to receiving spam)

Hey. I'm a software developer experienced in designing and building distributed systems. I've been working on a MMORPG that uses Elixir for the backend. This project has been done mostly out of self-interest and curiosity. Currently the game has some players and fans, with servers located across multiple regions.

Prior to this I was a backend developer at a financial services start-up that specialized in implementing payment solutions for non-profit companies. In this role I wore many different hats. I did Data Engineering work in the form of designing schemas and building PCI-compliant data pipelines for use in analytics (DynamoDB, AWS Lambda, AWS S3, AWS Athena). I also built out several integrations to different CRM + ERP platforms. Furthermore I was responsible for the company DevOps strategy and architected a multi-AWS account set-up + CI/CD pipeline for all company infrastructure deployments.

I'm open to any intermediate backend or fullstack developer roles. I have some interest in working within the games industry, so if you have any roles there, I would also be interested. Through my work on the MMORPG in elixir, I've gained considerable experience in designing and implementing AI-Actor architecture + Hierarchical Task Networks for autonomous agents. Technical interests include: low latency distributed systems, systems analysis, signal processing, and graphics programming.


In the case of Call of Duty: Black Ops 1. Thee matchmaking + leaderboards system was implemented by DemonWare (3rd party) in Erlang.

Erlang actually has good enough performance for many types of multiplayer games. Though you are correct that it may not cut it for fast paced twitch shooters. Well...I'm not exactly sure about that. You can offload lots of expensive physics computations to NIF's. In my game the most expensive computation is AI path-finding. Though this never occurs on the main simulation tick. Other processes run this on their own time.


The biggest hurdle to a game server written entire on the BEAM is the GC. GC pauses just take too much time, and when you need to get out (for example) 120 updates per second, you can't afford it. Even offloading stuff to C or C++ does not save you, because you either have to use the GC, do a copy, or both.

Game servers typically use very cheap memory allocation techniques like arenas and utilize DOD. It's not uncommon for a game server simulation to be just a bunch of arrays that you grow, never shrink, and then reset at the end of the game.


Good point. Yeah I guess it wouldn't cut it for any fast-paced twitch shooter. Especially with a 120 update per second deadline. A non-deterministic GC pause could have disastorous effects, especially in a tense shootout. I don't know much about GC theory but the GC in BEAM is per process and heap-based? I'm not sure exactly what that entails, but can you not structure the main simulation process to take advantage of this fact?

I find myself interested in developing multi-player simulations with more flexible deadlines. My MMO runs at 10 ticks. And its not twitch-based. So the main simulation process can have pauses and it wouldn't have a big impact on gameplay. Though this has never occurred.

As long as: (tick process time) + (send update to clients) + (gc pause) < 100ms, everything is fine?. (My assumption).

Btw what does DOD mean? Is it Data on Demand? Since my game is persistent I can't reset arrays at some match end state. So I store things either in maps on the main server process or I store it in the dedicated client process state (can only be updated via server process).


I am currently doing this! Working on an MMO game server implemented in Elixir. It works AMAZING and you get so much extra observability and reliability features for FREE.

I don't know why its not more popular. Before I started the project, some people said that BeamVM would not cut it for performance. But this was not true. For many types of games, we are not doing expensive computation on each tick. Rather its just checking rules for interactions between clients and some quick AABB + visibility checks.


As someone obsessed with Networking and Networking Topology I am so so fascinated by analog telephone networks. Just the idea of long-distance connections being made via physical wires connecting at switches by human operators feels so raw. I can't even imagine such a thing. When I was younger analog telephone was being phased out. I still remember my dad having to go buy calling cards at convenience stores so he could make long distance calls back home. And then one day there were no more calling cards.

I can imagine lots of lessons learned from telephone networking helped shape ideas around computer network design.


There is no indication of being in a bubble when you're actually in one. Its only after the bubble pops do people recognize it in hindsight. Otherwise there would be no bubbles and we wouldn't see large institutions fall for this crap.

What is a credible indication? Who is credible? Its all subjective. Its possible to fool yourself endlessly when financial incentives are involved. The banks did it with mortgages.


Its not a good argument against him. I read his articles and he is absolutely correct about the state of things. Predicting the crash is a fools errand. I don't use that as a argument to discredit what he actually writes regarding the raw economics of the AI industry.

I say this as someone who has been holding NVDA stock since 2016 and can cash out for a large sum of money. To me its all theoretical money until I actually sell. I don't factor it into financial planning.

You don't see me being a cheerleader for NVDA. Even though I stand to gain a lot. I will still tell you that the current price is way too high and Jensen Huang has gotten high off his own supply and "celebrity status".

After all, we all can't buy NVDA stock and get rich off it. Is it truly possible for all 30,000+ NVDA employees to become multi-millionaires overnight? That's not how capitalism works.


I am all against bubbles and irrational valuations etc. but I think in this case the prospect of future growth was fully justified. There are never guarantees, but Nvidia's price went up 10x or more in three years and e.g. their PER stayed mostly flat. But their PER of 50 three years ago would be 5 today, which would be extremely undervalued. I would say the "market" got it correctly this time.


He’s been absolutely wrong on most things but spreading FUD is how he makes money, like Gary Marcus


I don't care for personalities. You want to mark him as a grifter but is that just an emotional response? I have not bought anything from Ed, I don't subscribe to his newsletter, I don't know much about him beyond visiting his website every few weeks and reading the free articles. He does not sell me vitality pills or coffee mugs. The only soliciting he does is his paid sub stack.

But it goes both ways? Because AI promoters are also spreading FUD. That's how they make money. Because their livelihoods are tied to this technology and all the valuations. So is spreading FUD for you just a condition on whether or not you agree with the person?


If there is any FUD, it is feom other side. No one is scared after they read Zitron article, most are bored because they are dense to read.

But people are literally scared ai will destroy all the jobs after reading articles about how it will. Companies scared not to use ai whether it makes sense or not just to not miss out is where FUD is.


I'm hitting 2 years of unemployment in a month. Its somewhat intentional, the day after I became unemployed (I quit) I started to learn Elixir and began work on building a MMO-type game (this was unplanned). Why? Because I like distributed systems programming. I didn't expect to still be working on it 2 years later. Honestly there was no plan or expectation. I got sucked into this project and it was better than having to look for a job. Its fulfilling and intellectually stimulating. The game has public playtests and I have some interested players.

But now I'm hitting 2 years and the money is starting to dry up so I need to find work again. I always thought working on this type of project would be a win-win for finding work again, but it hasn't helped much. It may even be a hinderance. Employers/Recruiters don't take it seriously or see it as some exotic work experience. I try to tell them - Distributed Systems...the concepts are the same wherever you go. No dice. I'm on the younger side and have 3 years of professional experience at a payments startup doing backend + devops + AWS. Sometimes I wonder if I screwed myself out of the job market. I'm seen as a Junior Dev with a 2 year work experience gap.

I cope by staying in shape. I have a good routine and I even got into swimming over the past year! I think if it wasn't for these activities I would've fell into despair some time ago.


A tip about independent projects on a resume. Put yourself as an employee, a hired contractor, or just a technical co-founder. Don't mention that you're the solo or main founder, unless it's a far past project. I've learned the hard way that regardless of what they may say about looking for autonomous, free thinking, resourceful, self-starters, basically all the qualities of an entrepreneur, employers balk at the label. Some will reject a good profile if they don't feel that you'll be around for more than 2 years, even though many of their recent hires are gone shortly after a single year.

List what the technical challenges of the projects were, what its promoters expected, and how you addressed everything. Don't let entrepreneurial merits overshadow technical ones, especially if you're not after a position like product manager in a company that truly understands how to employ entrepreneurs.

Another way to think about it is that the perception that someone else took a risk on you seems more valuable to employers than you being crazy enough, audacious enough, or courageous enough to dare take on life.


Link to your game? Would love to check it out

Nvm found it will try later since I’m on mobile.

https://swarmmo.games/


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: