I realized that there is more to do in handling the team positions. Since the number of each position is fixed, the whole array of team_position can be replaced with a fixed set of integers.
With that change, it is also possible to add symmetry breaking on the player identifiers within each type of player position.
These two changes taken together makes the HiGHS solver taker around 3.2s on my machine, and OR-Tools with 10 threads takes 1.28s.
VS code (developer interface) has this feature where you activate a text input with a hotkey. It is used to trigger specific actions. You can type text and it will give you the actions that match the text. You also see a list of the actions you triggered that way previously.
This is great because I don't have to remember how to trigger a specific action and I can also discover new actions just by searching.
Ultimately it doesn't change the UI, but it sounds quite similar to what the author describes. There is some potential there with a search bar that is more about intent than text matching.
This brings back memories from my old days of VS programming (.NET C# or C++) with IntelliSense when I used to bless every object instance with Ctrl+Space.
That's why remote work is so liberating. You don't have to stay at your desk but you can move your body and free your mind as much as you like. When I get back to the office I feel stuck. Physically and mentally.
I never felt constrained or locked out even at office. I would go for a walk. I would space out at desk. I would chat with people. No one got offended. Of course it probably helped that mg boss was not in the same states.
This article makes some assumptions that could easily change the result. By the way, if you have a batch size of 1 you're back to the initial hypothesis which is obviously not how things work in the fast food industry.
I think it misses the point of idle time and availability. From the supply chain theory, if your resources are always 100% busy, your delivery time will go infinite because as soon as something takes a little more time as expected then you can never catch up.
This applies particularly well to software engineering.
Nice article.
I built my own online version of a turn based board game because none exists at the moment. I just want to play with my family so I didn't bother coding a server at all, instead all clients communicate their actions to all others so I naturally implemented the deterministic approach. I haven't thought about secret state so it's interesting to see a possible solution for that. Fun!
I'm also writing an online version of a board game I like, to play with family and friends. I am about to start the networking part, and I actually intended to implement the deterministic approach, although I didn't know the concept had a name before reading the article. It's nice to read some validation that it is a good design.
I'm curious to know how you achieve not to need a server at all. How do you create the initial connection between clients without a server to negotiate NATs and things like that?
If you target desktop, should be fine, but mobile users tend to use cell towers which are on Symmetric NAT, which would require a TURN server on top of the WebRTC.
Even on desktop you run into people with weird configs. For example my router will not allow mDNS to work but my ISP NAT is pretty good so I can connect two machines as long as they’re not on the same network! In the end you almost always will need a relay to guarantee connectivity for any random pairing of participants in a large enough population.
The good news is that WebRTC is perfectly straightforward if all you want to do is to connect to a server on the open internet.
It is web-based, yes. I was aware of WebRTC but assumed I would need a least to host the server myself. I'm looking at the links you provided and they seem very interesting. Thank you.
Initially I thought I would be able to do it with webRTC but it turns out you still need some kind of specific server to connect clients.
Instead I cheated a little bit and used a messaging service https://ably.com/.
It was easy to setup and use, and their free plan is generous.
Another thing I didn't achieve is to find a RNG I could configure with a seed, so amongst my client I have a special one, the "host" who is drawing the cards, etc.
Overall it's been working really well. There is one thing that is particularly difficult without a server, that is debugging. Especially if using a mobile phone, you're in the dark when a bug happens. And with Ably and the free tier, you have to be connect in debug mode beforehand to see the logs, very unpractical.
Good luck with your game!
Not sure how far along you are, but I could help you build the game if you are willing to try making it for acos.games. I built a simulator that can help speed up development which is done in React and NodeJS.
Thank you for the suggestion. However I am close to finishing all the game mechanics, just on a single computer (the game has no secret knowledge so it playable on a single computer or, at worst, via screen sharing). Also I'm implementing it in Scala.js with Indigo [1], and part of the reason for the project is to have an excuse to learn Indigo, so i wouldn't change the technical stack.
It sounds like good advice. Heck I don't wanna automate my life, especially not up that point. Imagine if the people the author contacted knew why, I wouldn't be too happy about it.
Slightly related, I try to remember my closest friends birthdays, means more to me if I can remember it rather than a generic reminder...
I've been working on native mobile apps in the last couple of years, and I realized the only reason companies want to push native apps is because they can do whatever they want with the tracking and 3rd party stuff in general.
Seriously this native apps world is so backwards compared to the web...
I'll take youtube as an example, on the mobile web app you can block most ads and you don't get the latest stupid features youtube is trying to push for some reason.
Sometimes I'm brought back to the native app through a link and I'm shocked.
The only reason I keep it is Chromecast support.
Depending on your feeling towards the ethics of it:
YouTube Vanced (3rd party YouTube app) with its integrated sponsorblock actually makes the app pleasant to use, it also unlocks some of the premium only features like background play.
No root required, although you're buggered if you run iOS presumably
Nice app, but I had to uninstall it after a week due to frankly ludicrous battery usage. My phone (pixel 3) battery typically lasts for 2-3 days between full charges, but with YouTube Vanced installed I was running out of battery by 8pm. I want to like this app, but the battery drain was insane.