56 karma · joined July 7, 2014
You'll be disappointed if you hold the general public to a higher intellectual standard.
So I read about maven; I read, and I read, ... still poop. It seems like a chore to publish to maven central repository. I'm lazy, and not the good kind of lazy, the lazy kind of lazy.
Fortunately there is https://jitpack.io/. Once you published your project on github, you've published it to maven world. That removes one step in the whole publication business which is already too messy.
It is great, I highly recommend it!
Here we have an inherently concurrent problem - user actions and some IO actions occur concurrently. That problem cannot be reduced by some API or language trick.
I'm very surprised that many people here argue that async code is much better to understand than sync code. Ok, so that part is subjective, and let's file it under personal preference. For people who love synchronous coding but fear the cost of threads, I'm trying to make an argument that the fear is probably not justified.
For example, in Go, when you read a value from a channel, it's just like a good old blocking call, as far as the programmer is concerned.
On the other hand, an "async" read would involve callback, promise, or some other constructs.
The hard part is, if the modifications do not form a single, predictable, serialized chain, how can the programmer reason about them? This problem is independent of async/sync. If you use C# async for a UI action, you still need to worry about it.
Of course, C# has great async support; but it is still a complicate thing that programmers must be very cautious about when applying.
Also, the discussion is in the context of imperative programming.
heart-beat - yes we'll need concurrent threads for handling concurrent requests in the blocking world; the question is whether this will result in too many threads, which depends on the application.