Having said that I think Quill looks nicer (https://getquill.io/) if you want a DSL like that.
66 karma · joined April 13, 2015
Having said that I think Quill looks nicer (https://getquill.io/) if you want a DSL like that.
The Scalaz/Cats schism was worse in the sense that they were largely the same (at least at the time) which led to a lot of duplicated effort.
I wish ordered UUIDs were built-in to more DBs natively. I remember seeing UUIDv6 being proposed, but I don't know if/when that will be standardised.
Personally, being able to solve problems with the abstractions you can achieve within the language over adding very specific language features to solve them appeals to me more.
Having said that, Arrow has Option: https://arrow-kt.io/docs/apidocs/arrow-core-data/arrow.core/...
I remember getting the feeling that C# is holding it back though. F# can't have any feature that it wants because interop in both directions seems to be a priority. If I recall correctly, that's what is holding back higher-kinded types in F#.
That, and the last time I tried F# on .NET Core things were still very rough. This was when .NET Core was still fairly new though. It might be fine now.
That's why I specifically mentioned ZIO. Things improved greatly after migrating to it. It feels like it plays to Scala's strength. It infers well and we don't have a single implicit import to make it work. Well, with the 1 exception of the optional Duration syntax so that we can write "5 seconds" instead of "Duration(5, TimeUnit.SECONDS)".
I'm not sure there are any real blockers for Scala on Android anymore. I imagine it's mostly a resource problem now. With Kotlin's momentum in that space though, I'm not sure too many people are calling for it anymore. Who knows though, maybe after Scala 3 is finally out the door priorities could shift.
Scala missed its opportunity with Android. I think you just have to concede that to Kotlin at this point and just focus on moving in a direction that is not occupied. Which is why I mention FP with a strong focus on types. There's not much competition there besides Haskell. And since Haskell for the JVM will likely never be a thing (a few have tried, but none have gained traction), Scala is still there. And with the direction Scala 3 is going and all the improvements it brings, it's actually looking quite positive. At least in my eyes.
And besides, I don't think Scala has to be a "worse Haskell" in everything that it does. I think ZIO is a good example of a great Scala library that actually resulted in something really special by embracing what Scala can do: https://zio.dev
I found other articles about this: https://eshapard.github.io/anki/target-an-80-90-percent-succ... https://vladsperspective.wordpress.com/2017/03/14/optimize-y...
I wish I had more specific examples and could quantify it better, but I know I've caught quite a few errors this way.
In SC1, just the act of moving a large army is a commitment and takes quite a few resources. Moving your armies under fog of war and not letting your opponent know exactly how you're set up in order to get a good angle on you is incredibly important. I want to see how much of an importance a great AI puts on that vs the other things it could be doing instead. Are the strongest AIs going to be more methodological, safer, and slow moving? Or will the best AIs try to exploit the imperfect information aspect of the game and try to lure the opponent into making a wrong decision? I feel like AIs tend to excel at the former, but the latter has been a huge component for the very best pros in SC1.
I don't follow SC2, so I don't know much of this also applies there. I just feel like SC1 isn't as mechanical as it's made out to be. There's definitely that huge initial barrier, but once passed that, the game actually feels very delicate and is about good use of resources (including mouse/keyboard actions), timing, and transitions in unit composition to catch your opponent off-balance.
The reason I say BW would be especially interesting is simply because the game has remained basically unchanged balance-wise since v1.08 which came out in 2001. Despite that, the pro scene never left, and we're still seeing some shifts in the meta even today. It would be cool to see a strong AI flip the script completely for such an established and "well understood" game. Opportunities like that are kind of rare, at least when it comes to video games.
https://facebook.github.io/react/blog/2015/10/19/reactiflux-...
http://blog.freecodecamp.com/2015/06/so-yeah-we-tried-slack-...
I see the issue you created about separating the Clojure API from the AI code. I think I'd have to do that because I'll be creating an AI from scratch.
I noticed in the thread you linked to that you mentioned Java packaging and possibilities for contributions. I might be able to help there. Let me know, or if you want to create some GitHub issues, I can take a look later and see which ones I can take.
I see you even hosted a micro tournament recently. I didn't know that was a thing. How did it go? So there's at least some interest for that it seems? If so, I think I'd like to give it a shot too in the future (it'll probably be a while before I can get to this though).
Having an interactive REPL seems like it would be helpful for iterating on micro routines (this is what I want to focus on). I see you already have some situational micro examples too.
I feel like a kid again. Can't wait to try this! Now I'm wishing I still had my StarCraft discs with me.
StarCraft is a very, very deep game. It seems like it would be very easy to waste time on paths that lead to no real gains. And that rather than using interesting AI techniques, the most important thing might in fact be the StarCraft knowledge of the author. And how good they are at distilling the game down to the parts that is going to yield the biggest returns.
Also, StarCraft has very distinct early, mid, and late stages to the game. Focusing only on the early game, and going with a single strategy eliminates a ton of complexity. If you spend all your time on getting an all-or-nothing rush perfected, you've essentially "skipped" all the sophisticated techniques some of the other authors spent their time creating for the mid and late stages. In fact, it seems like some authors did just this and were quite successful.
But even an all-or-nothing rush has a surprising amount of depth, and perfecting that would be a quite a feat. The biggest thing being micromanagement/unit control and knowing what to target first (this is actually very hard). If you don't perfect that, beating a pro doesn't seem like it would be even remotely possible.
I was a huge StarCraft BW fan, and it's the only game where I got to the point where I could sometimes hold my own against pro players. I'm tempted to try BWAPI. Creating a full bot seems like a huge amount of work that I probably don't have time for, but creating a unit control AI sounds like it would be fun. I remember there used to be micromanagement custom game maps that people used to create (basically a series of situational challenges where you have a bunch of units and you could face other human players 1v1). Doing a competition for that as well would be pretty cool I think.
Boxing was already mentioned, but there's also MMA which is in the news right now for this very reason. If you're interested, look up the recent deal between the UFC and Reebok and how nearly all the fighters got screwed by this. Only the top players are getting taken care of, while plenty of others can't even get proper healthcare despite the fact we're talking about a combat sport here. It's unbelievable.
I imagine forming a union must be harder in individual sports rather than team sports. And with e-sports, most players' careers seem to be very short, which can't be helping matters if they ever wanted to form a union. Not much leverage for a variety of reasons.
Also, you could say a form of tipping does exist in Japan (kokorozuke), though it's quite different than what we usually think of tipping. The biggest differences being: 1. It's sort of a way of saying, "Sorry for the trouble" rather than "rating" their service. 2. You give the "tip" beforehand rather than afterwards. And it's likely you'll have to insist that they take it.
You can see this custom in high-end ryokans for example, but even then, it's not required or anything.