HN user

mikhmha

287 karma

https://github.com/mikhmha

Posts0
Comments86
View on HN
No posts found.

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.

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++.

Goodbye to Sora 4 months ago

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.

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).

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.

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.

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?

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'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.

My game is both "small" and "large" in scope at the same time. Its large in the sense that its a Multiplayer Online Game. But the scope of the gameplay is rather limited. I'm not trying to make a full-out MMORPG with all the content expected of one. And that was never my intention. Its an MMO in the sense that the server architecture can support a lot of players and AI units in the world.

Yet I feel like I get wrongly misjudged as a delusional person trying to make a full-out MMORPG. No my game doesn't have a focus on questing, professions, or theme-park areas and raids. People in this industry are too quick to Pidgeon-hole you into existing game genres when you may be trying to do something new entirely.

I have a playable demo, some interested players who provide feedback in discord, etc. The game mechanics started simple but have gotten more complex with each update. A lot of work is spent in improving the AI and making them behave "smartly". I pay for server hosting and manage the servers. Its just me. But it feels like I don't even get my resume looked at when I'm applying to jobs in the industry. Because I don't have any prior experience?

I'm finding that dedicating yourself to working on your own game can be a detriment to finding an actual job in the industry? It feels like employers are wary about your intentions and whether or not you will stick around.

Employers also don't seem to take home-grown experience seriously? Even if you know more about the niche side of things like networking, graphics, AI programming. If you don't have exact experience in whatever tools/framework they use (UE blueprints, Unity, etc), they think you won't be a good fit. Even though tools are just tools and concepts are more important.

Continuing to work on my MMORPG made with Elixir and Godot. The game has been live for 2 months but there's still lots to do. A lot of the architecture revolves around the AI simulation run in Elixir. I started working on this game after quitting my job on a whim (18 months ago!). I've started to get some daily players which is exciting.

https://swarmmo.games The game is playable in browser! And theres no sign-up required to try it out.

Wow, this sounds like how the AI simulation for my multiplayer game works. Each AI agent has a view of the world and can make local steering decisions to avoid other agents and self preservation. Agents carry out low-level goals that are given to them by squad leaders. A squad leader receives high level "world" objectives from a commander. High-level objectives are broken down into low level objectives distributed among squad units based on their attributes and preferences.

Swimming! I started going 2x a week. I took lessons as a kid but hated it due to a fear of water after a traumatic experience in the deep-end. I don't have that fear anymore and I really enjoy it now. I can tread water! And I can float! The mechanics of swimming and floating make a lot of sense to me now. Now I'm swimming laps to find a technique that lets me swim the longest for the least amount of energy. Mostly I copy the techniques of older folks who are also swimming laps in the lanes next to me. lol.

I figure if the game I'm working on doesn't pan out then I'll go become a sailor or something. I think thats what I'm training for, potential career change.

What are you supposed to do when your manager has terrible and/or selective memory? My last manager would assign me work and then promptly forget half the time what he assigned me. It was bizarre. Sometimes it worked in my favour because I would do something he assigned me - then show him - and then he would sing praises for my "self initiative" and creativity. Like dude, you told me to do this. Of course this sort of amnesia will eventually come back to bite you when you are yelled at because "why are you working on Y?? you should be working on Z!!". Dude you told me to work on "Y" two days ago.

I never understood whose blame the poor memory falls on? In my opinion it was on him to stay organized - something he never made an effort to do. Others would say it was on me to communicate to him what he told me. I don't get paid enough to be his executive assistant. And I don't see the point in communicating better if he would just forget again.

Other times his memory was bizzare. Like he would remember some off comment I'd made to him in a 1-on-1 and then use it as a way to butter me up or appeal to me. I once mentioned to him I follow news in the "programming space" (aka reading this website). And he seemed to remember this whenever he needed to appeal to me to look into some new platform feature clients were requesting. "You read a lot about this stuff right??? Take a look into PDF generation using this library. You read a lot about this stuff right??" I think he thought he was juicing up my ego with this. So bizzare.

Of course its the same manager who did the fundamental sin of complaining downwards to me, and about my peers whenever one of them messed up. Dude you're the CTO. If you can't maintain face then I will lose all confidence in your ability.

OK I'm going to stop venting about my last boss now. Sorry!

Yup! I find Elixir makes it really intuitive to know when to represent a collection as a map and when to use a list of tuples. And its easy to transform between the two when needed.

I read it this year. I loved it. I think if I read it a few years earlier it would be totally lost on me.

For my self what I found interesting is the depiction of Russia in the 19th century, and the on-going transition from a peasant agrarian society into "modernity" and all the confusion it creates. I am not Russian, yet it all seemed so familiar to me. Why? Because I think this same transition is going on in my ethnic country - though 200 years later. Because the archetypes of people shown, the attitudes among former aristocrats and landowners, inefficient (and unserious) bureaucracy, conflicting ideas about religion vs secularism, inferiority complex towards "modernism", changing views of women's role in society, etc I've seen all the same things.

And of course, the book finally convinced me that I should not give into nihilism and pessimism even when everyone around me does.

A bit unrelated to the main topic but whenever I exceed a certain threshold of smoking cannabis (>0.3g) it seems to induce some automatic rhythmic movement in me. If there's music playing I can tune into the rhythm of the music. If there's no music, I will move around a lot while twisting my limbs, stretching my arms, holding positions and breathing, in various rhythmic and also strange ways. Some people have described it resembling a form of yoga or tai-chi. Whatever it is, it feels like a benefit? I've noticed my posture has improved and in the gym my numbers have also gone up despite 0 diet changes. Its like a full body stretch that activates all these minor muscles in my body.

I don't know - whenever I think about quitting this "bad" habit, I remember that it would just be replaced by sitting around looking at my phone. Being put into this physical trance by a drug has to be infinitely more healthy than that right? I trade one addiction for another.

I see this take on the internet a lot usually combined with some statement of how Schizophrenics are secret geniuses and were the prophets of olden times. It just doesn't square off with my own observations of schizophrenics in real life. How is the condition subjective when you see the same types of symptoms across people? I've seen it with men and women afflicted by the condition - always the persecutory delusions, belief that they are some king or prophet/chosen one, disorganized thinking, and word salads. Why is it always the same symptoms? You're telling me that's not rooted in any common condition?

I don't understand the reasoning? I've been working on an MMORPG game since quitting my job - and I settled on using Elixir for this project despite never using it before. I have a good understanding of distributed systems, and the features/tooling Erlang & Elixir provided were like a dream for me. Initially I thought I'd just try making some proof of concept thing. Fast forward several months later, and I seriously credit Elixir for how far I've gotten with this game. Most of my time is spent writing server-side gameplay code, not tracking down obscure networking & memory bugs. Its even caught cascading bugs caused by gameplay system interactions - when players and a.i were being (wrongly) resurrected from the dead the system just crashed! When 500 a.i agents doing pathfinding every single tick was starting to make the a.i system lag and delay inputs - it was trivial to understand the bottleneck causing the system to degrade. I can go on and on.

DONT get me wrong. What you're saying I actually support. If this allows that company to have quality staff I'm all for it. The less time we both spend on each other the better. So just offer async processing.

Recently I saw the process of filling for 2 insurance claims through 2 different entities. First one used a great ai voice agent that does the process of filtering your query. it understood me perfectly. But then I still had to wait in line for an actual agent. Ok wait for 6 hours. Whatever. Call again - the 2nd time going through the same agent is painful. Its so slow. And all this just to connect me to a human - who was EXCELLENT. What did ai add? And for now a human has to be involved in any complex permission changes to your account. AND I like that.

The 2nd agency I called them through phone. No ai. But it is excellent cause they do async processing. so you reserve a slot and they call you back. i don't care if those are not answered urgently. Because I just want to talk to a human.

I feel the exact same way. I have felt 0 need to use an LLM in my current workflow. If I could explain concisely what my problem is in English - then I would already know the answer. In that case why would I be asking AI the question. And I don't want opinionated answers to subjective questions. Why run that through a filter, I can investigate better myself through links on the internet.

By the way - I think AI or ML whatever has some valid uses right now. but mostly in image processing domain - so like recognizing shapes in some bounded domain OK yea. Generative image - NOT bad but theres always this "AI GLOW" to each image. Something is always off. Its some neat tools but a race to the bottom and mostly users want to generate explicit content lets be real. and they will become increasingly more creative and obtuse to get around the guards. nothing is stopping you from entering the * industry and making tons off money. but that industry is always doing good.

a friend recently suggested to use AI to generate generic icons for my game. Thats a really good use case. but does that radically change the current economy?

[BTW GENERIC STUFF ONLY UNTILL I could hire someone because i prefer that experience way more. you can get more interesting results. 4 eyes are better than 2.