These are chat archives for akkadotnet/akka.net

28th
Apr 2015
Sean Gilliam
@sean-gilliam
Apr 28 2015 01:33
Glancing over the TPL discussion and this came to mind
Nikita Tsukanov
@kekekeks
Apr 28 2015 06:49
@rogeralsing
Just a wild idea. Do we really need that ambient state? It's used in ~20 places and mostly for saving/restoring it
What if we remove it and store a reference to ActorCell in actor itself?
in this case all problems with passing the state will go away, since the reference to the actor is embedded in await continuation closure
Nikita Tsukanov
@kekekeks
Apr 28 2015 06:54
The only problem I see, is that Self might be used in constructor code, but that can be resolved by temporary falling back to TLS method
So, the actor gets its cell in constructor from TLS and then just uses that saved reference
Nikita Tsukanov
@kekekeks
Apr 28 2015 07:00
Oh, it's used in Tell, damn
Roger Johansson
@rogeralsing
Apr 28 2015 09:08
yepp its used for implicit sender
Nikita Tsukanov
@kekekeks
Apr 28 2015 09:14
I believe that scala implementation does not use ambient context for that since scala has these juicy implicit parameters
is that so?
Nikita Tsukanov
@kekekeks
Apr 28 2015 09:31

@rogeralsing

#912 is@ ready for merge

Stefan Sedich
@stefansedich
Apr 28 2015 09:51
.NET sucks somtimes
oh you want a client for Kafka sure here is one
oh you want to rebalance partitions between consumers, nope.
Roger Johansson
@rogeralsing
Apr 28 2015 10:08
:+1:
Stefan Sedich
@stefansedich
Apr 28 2015 10:09
with unlimited time sure contribute back to the connector
but you have time constraints to get something done :(
Stefan Sedich
@stefansedich
Apr 28 2015 10:24
ah cool I found a driver hidden in some forked kafka repo not mentioned anywhere offical
phew
Natan Vivo
@nvivo
Apr 28 2015 13:38
Akka.net was mentioned on latest dotnetrocks panel on .NET Fringe as a great example of .NET OSS project
Roger Johansson
@rogeralsing
Apr 28 2015 13:49
:)
Both me and Aaron have individually been on dotnetrocks
Natan Vivo
@nvivo
Apr 28 2015 13:51
i heard both
the closest I got was getting a .net rocks mug
Roger Johansson
@rogeralsing
Apr 28 2015 13:52
Has Aarons aired yet?
Natan Vivo
@nvivo
Apr 28 2015 13:52
but then, I didn't do anything haha
yes
oh
no
sorry, I heard aaron on hanselminutes
Roger Johansson
@rogeralsing
Apr 28 2015 13:52
Yepp
Natan Vivo
@nvivo
Apr 28 2015 13:52
Aaron's .net rocks will be on air on 5/5 I think
Natan Vivo
@nvivo
Apr 28 2015 14:11
@rogeralsing I'm curious about Stephen Cleary's answer on CallContext... because CallContext was created for remoting purposes, and it seriaizes the state for that reason
It seems SyncContext is not serialized, just kept in memory... but people don't want that anymore for some reason
Roman Golenok
@shersh
Apr 28 2015 14:16
About async\await. Go to use Reactive Extensions (Rx) xD
Natan Vivo
@nvivo
Apr 28 2015 14:17
What? =)
Roman Golenok
@shersh
Apr 28 2015 14:26
Rx - https://github.com/Reactive-Extensions it's about how to create pipeline from any async actions
Natan Vivo
@nvivo
Apr 28 2015 14:27
I know what it is, not sure what your comment meant.
Anyway, no more async/await for today. =)
Let's rejoice we all agreed for one day.
Roger Johansson
@rogeralsing
Apr 28 2015 14:36
wouldnt an instanced taskscheduler also solve the probelm? that is, one scheduler per actor. there is one built into .net "exclusive somesoemthing scheduler pair"
if the scheduler itself held the context
I have no idea how expensive any of schedulers / contexts are to create.. might be super expensive
Natan Vivo
@nvivo
Apr 28 2015 14:37
But then we'd have one instance for each actor
Natan Vivo
@nvivo
Apr 28 2015 14:37
Yes, I think we could get away without that
Roger Johansson
@rogeralsing
Apr 28 2015 14:37
that one seems to be for exactly that purpose
Natan Vivo
@nvivo
Apr 28 2015 14:38
interesting. seems to be 4.5 only
Roger Johansson
@rogeralsing
Apr 28 2015 14:39
I think one can build simple actors with it as it only execute one task at a time
" the specified scheduler with a maximum concurrency level and a maximum number of scheduled tasks that may be processed as a unit." its like a mailbox, isnt it? if you set concurrency level to 1, and unit size to 100, then you have the default akka mailbox
Natan Vivo
@nvivo
Apr 28 2015 14:40
the problem as I see is: sending the message to the actor makes actors behave correctly, but loses context
maintaining context is easy, but loses actor control
hm
let me understand that
Roger Johansson
@rogeralsing
Apr 28 2015 14:41
I think we have to stick to the current impl for v 1.x and forward, and then just get rid of the problem using Typed Akka
Natan Vivo
@nvivo
Apr 28 2015 14:41
yes, i agree. there is not much we can do now
the thing is that this scheduler doesn't help much unless everything is executed there, right?
and that is not a good option
as a side note, i took a look at what would it take to just let context flow with callcontext with minimum # of changes
if the InternalActorCellRef.Current was kept into the LogicalCallContext directly, it should work
but would add some overhead for every access
Natan Vivo
@nvivo
Apr 28 2015 14:46
this is what HttpContext does. get retrieves from there on every call
(and it seems httpcontext flows with LogicalCallContext, not Synccontext... so I'm not sure why they have a sync context anymore... =))
Roger Johansson
@rogeralsing
Apr 28 2015 14:57
Maybe to sync back to iis thread pool
Natan Vivo
@nvivo
Apr 28 2015 14:58
right. forgot sync context is not about moving data around
it's about having a place to post work items or tasks
in essence, synccontext does exactly what we would want... but for some reason, people are running away from it and I'd like to understand why before trying that route now
Arjen Smits
@Danthar
Apr 28 2015 15:23
Ok. Im back in the land of the living :P Had a national holiday over here, ergo: To much beer.
I kept an eye on stuff through email notifications. But im completely in the dark on how stuff are progressing on the whole async stuff
so if someone could give me a TLDR that would be great.
also im catching up on gitter chat. But sheesh. you guys talk alot :P
..the scrolling.. it doesn't end...
Joshua Benjamin
@annymsMthd
Apr 28 2015 16:05
@Aaronontheweb does clustering use the same endpoint manager for cluster heartbeats and message traffic?
Roman Golenok
@shersh
Apr 28 2015 16:15
Oh, okay, I just finished reading of your async-await-holywar
Natan Vivo
@nvivo
Apr 28 2015 16:21
@Danthar TLDR; everyone agreed that removing reentrant behavior for async makes async/await not evil
@Danthar next step is understanding what can be done to improve things in async world in Akka v1 without breaking the current api, and leave the rest for v2 or something
Roman Golenok
@shersh
Apr 28 2015 16:25
But... I didn't understand how to work with async methods correctly right now in Akka.NET? Only PipeTo? Or .Result? Or ...
Arjen Smits
@Danthar
Apr 28 2015 16:27
holy shit. that was some epic discussion I missed. async-await-holywar is the correct description indeed :D
@shersh Dont use the reentrant mode. And use PipeTo. And whatever you do dont await :P
@nvivo I believe I mentioned reentrant mode being evil several days ago already. Glad we are all in agreement now.
but If I understand correctly, none of the current async await issues (including that stupid testkit bug) has been solved yet then ?
Natan Vivo
@nvivo
Apr 28 2015 16:30
nope =)
that is another issue
Arjen Smits
@Danthar
Apr 28 2015 16:30
yeah ok. So we now have a direction into where we want to go
Natan Vivo
@nvivo
Apr 28 2015 16:30
but I think the first step to solve this problem is to acknowledge the solution is not "stop supporting this shit"
Arjen Smits
@Danthar
Apr 28 2015 16:30
but no fixes yet.
Roger Johansson
@rogeralsing
Apr 28 2015 16:31
Await using suspend mode uses the same semantics as sync actors
And the testkit bug was patched today
Natan Vivo
@nvivo
Apr 28 2015 16:31
Yay! async/await with non-reentrant semantics FTW!
@rogeralsing if we consider Akka Typed, do you see that as Akka 2.0 by removing the old api, or do you think this something that can be enabled with a different actor?
Roger Johansson
@rogeralsing
Apr 28 2015 16:33
Akka typed is a module in JVM, not a replacement
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:33
Typesafe is planning to slowly push akka typed as a standard - if this gets approved by the community
(at least that was my impression)
Arjen Smits
@Danthar
Apr 28 2015 16:34
Await using suspend mode uses the same semantics as sync actors@rogeralsing
Roger Johansson
@rogeralsing
Apr 28 2015 16:34
Yes?
Arjen Smits
@Danthar
Apr 28 2015 16:34
@rogeralsing what does that mean exactly?
i mean
Roman Golenok
@shersh
Apr 28 2015 16:34
Maybe drop C# and use F# only =)
How many people using Akka with Java, not scala? =))
Arjen Smits
@Danthar
Apr 28 2015 16:34
for the TPL support code.
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:35
problem is that to get full power from it, means that eventually they have to drop support for old API
Natan Vivo
@nvivo
Apr 28 2015 16:35
@shersh If akka is to be mainstream, it requires a good c# experience
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:35
@shersh that's not an option, both langs can be supported in akka typed
Roger Johansson
@rogeralsing
Apr 28 2015 16:35
That you can write receive actors that do async await and still only process one message at a time, and you dont get race confitions with yourself inside the actor
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:36
I have an idea of how it could be implemented in C#, but the limitations are heavy
but in each version C# gets more functional features, so maybe one day...
Arjen Smits
@Danthar
Apr 28 2015 16:36
ah yeah that i understood. No I was thinking about, if it would make any difference to the amount of work we have to do to make async/await work for akka.
Roger Johansson
@rogeralsing
Apr 28 2015 16:37
That part does work
Arjen Smits
@Danthar
Apr 28 2015 16:37
because it sounds like that the ambient Actor state would be part of the closure receive method
Natan Vivo
@nvivo
Apr 28 2015 16:37
I agree, the current support works
Arjen Smits
@Danthar
Apr 28 2015 16:38
so that we wont have to keep stuff in the callcontext
because its implicitly closed over as a closure
but i might be completely wrong here
Natan Vivo
@nvivo
Apr 28 2015 16:39
The current code uses callcontext to keep the sender and self in the continuation, not sure if this can be removed
Roger Johansson
@rogeralsing
Apr 28 2015 16:39
It uses call context as there are things like implicit sender
Implicit sender needs that
Arjen Smits
@Danthar
Apr 28 2015 16:39
ah yeah
implicit sender..
hmm
Natan Vivo
@nvivo
Apr 28 2015 16:39
What I believe is that it's possible to not require RunTask, but I need to do some testing
Also, I think this is more of a plan for a new api, not sure which benefits would have in the current api, since ActorBase cannot be changed
Arjen Smits
@Danthar
Apr 28 2015 16:40
Ok so we are still using CallContext. and the TestKit bug was solved with a custom Sync Context.
Roger Johansson
@rogeralsing
Apr 28 2015 16:40
Yes
Arjen Smits
@Danthar
Apr 28 2015 16:41
OK
Roger Johansson
@rogeralsing
Apr 28 2015 16:41
The callcontext stuff is also only used when running async
So no penalty for other actors
Natan Vivo
@nvivo
Apr 28 2015 16:41
The only thing that is seriously bothering me is that callcontext is serialized on thread switching for some reason
Arjen Smits
@Danthar
Apr 28 2015 16:41
Isn't the ActorTaskDispatcher (or what was its name?) used all the time?
Roger Johansson
@rogeralsing
Apr 28 2015 16:41
Only on async
Arjen Smits
@Danthar
Apr 28 2015 16:42
ok. Need to dive in that code bit again then.
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:42
look at Pidgeon.conf
you have all defaults there
Natan Vivo
@nvivo
Apr 28 2015 16:43
@Horusiath who was that for?
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:43
@Danthar
Arjen Smits
@Danthar
Apr 28 2015 16:43
yes sql server support finally got pulled.
@Horusiath im searching for it. but cant find it atm. .. starting up VS.
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:44
yes, it took a while... and now I think it should be rewritten a little ;)
Akka/Configuration/
Natan Vivo
@nvivo
Apr 28 2015 16:44
@Horusiath I'll probably want to create a mysql version at some point
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:45
0.o
wut?
Natan Vivo
@nvivo
Apr 28 2015 16:45
?
don't believe people use mysql?
Roger Johansson
@rogeralsing
Apr 28 2015 16:45
Facebook does
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:46
Natan Vivo
@nvivo
Apr 28 2015 16:46
hahahaha
Joshua Benjamin
@annymsMthd
Apr 28 2015 16:46
Postgres ftw
Natan Vivo
@nvivo
Apr 28 2015 16:46
hahaha
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:46
@rogeralsing Facebook has it's own version of mysql
Roman Golenok
@shersh
Apr 28 2015 16:46
Any redis plugins?)
Natan Vivo
@nvivo
Apr 28 2015 16:46
I'm using mariadb lately, they solved some issues I had with mysql query planner at least
I'm not doing anything massively distributed though. but as a general purpose database, works fine and has good performance if you take some time to understand it
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:47
not yet, I was thinking about one, but it's looks feasible only for EventJournal and I don't know how true persistence (disc sync) should be resolved
Arjen Smits
@Danthar
Apr 28 2015 16:48
@shersh that should not be to hard
but back to the dispatcher thing
Natan Vivo
@nvivo
Apr 28 2015 16:48
the fact is that maybe we can have some base class for SQL databases. from what I have seen code, shouldn't be much different
lunch time, brb
Arjen Smits
@Danthar
Apr 28 2015 16:49
im looking at the Pigeon.conf. and i understand that a default dispatcher is used. but dont understand yet how it automagically picks the TaskActorDispatcher when using async
Roman Golenok
@shersh
Apr 28 2015 16:49
@nvivo as @kekekeks said some days ago =)
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 16:49
Roger Johansson
@rogeralsing
Apr 28 2015 16:49
@Danthar the dispatcher has nothing to do with the taskscheduler
@Danthar the receiveactor has an overload of Receive<T>(Func<T,Task> handler) that apples the task scheduler
if the overload that does not use tasks are used, the task scheduler is not applied
so you can opt in for a specific handler and only pay for the overhead there
Arjen Smits
@Danthar
Apr 28 2015 16:51
ooh ok, found it. Now it starting to make sense.
sheesh that beer destroyed a mighty lot amount of braincells :P. or so it feels..
Roger Johansson
@rogeralsing
Apr 28 2015 16:57
anyone from Denmark here?
Arjen Smits
@Danthar
Apr 28 2015 17:06
@rogeralsing am i correct in stating that in the ReceiveActor the _matchHandlerBuilders is a stack, to support the Become/Unbecome behavior ?
nvm
Roger Johansson
@rogeralsing
Apr 28 2015 17:08
tbh, not sure, that is @HCanber's creation.. the behavior stack is a stack of Receive delegates
Arjen Smits
@Danthar
Apr 28 2015 17:08
Yeah i noticed. But that list of receive delegates is stored in the MatchBuilder
so the stack only ever contains 1 item. which is the default implementation of the MatchBuilder
(if im reading this right)
oh wait there is some recursion going on here
Arjen Smits
@Danthar
Apr 28 2015 17:13
ah yes. its for the Become/Unbecome behavior
I gotta say. That MatchHandler and the stuff in there. That is some nifty code
Natan Vivo
@nvivo
Apr 28 2015 17:17
@Danthar I think it's the opposite
Arjen Smits
@Danthar
Apr 28 2015 17:17
uh o :P
Natan Vivo
@nvivo
Apr 28 2015 17:17
nevermind, I think you figured out
Arjen Smits
@Danthar
Apr 28 2015 17:18
ah
lol resharper. you crazy: Displaying 0 of 2 found usages in solution
in other words. I have found usages. But im not showing them!!!
Natan Vivo
@nvivo
Apr 28 2015 17:23
haha
@Danthar if you ever want to discuss any of these taskscheduler stuff, I'm all for it
Have been looking at solutions to the problem. It's not simple
Arjen Smits
@Danthar
Apr 28 2015 17:25
yup i know. Before I destroyed those braincells, Iv'e been researching and working on the issue as well
What I dont fully understand yet. Is what happens if you call an actor from an asp.net thread, and use Ask. of which you await the result
so
  await myactor.Ask<Julee>("doTheThing!");
Roger Johansson
@rogeralsing
Apr 28 2015 17:28
yes?
Natan Vivo
@nvivo
Apr 28 2015 17:28
if you await the result, nothing strange should happen
The problem that people had was with .Result
Roger Johansson
@rogeralsing
Apr 28 2015 17:28
which have also been patched
Natan Vivo
@nvivo
Apr 28 2015 17:28
But @kekekeks provided a patch for that
yep
Arjen Smits
@Danthar
Apr 28 2015 17:29
why did .Result fail then? (i understand about the void and deadlock stuff)
oh the context does not flow
Roger Johansson
@rogeralsing
Apr 28 2015 17:30
the flowing context is not relevant in the example you provided
as there wouldnt be any context if you ask from e.g. a webapi method
Arjen Smits
@Danthar
Apr 28 2015 17:31
ok its slowly coming back to me now.
which pr is the one with the .Result fix ?
Natan Vivo
@nvivo
Apr 28 2015 17:37
akkadotnet/akka.net#905
Arjen Smits
@Danthar
Apr 28 2015 17:45
heh, that looks deceptively simple
Natan Vivo
@nvivo
Apr 28 2015 17:46
well, it works
I don't think CastTask was needed, but works
In fact, this Ask<T> is quite strange, because it is just a cast
it doesn't give any guarantees that's what the actor will answer
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 17:48
it guarantees that everything will fuck up, if answer is not what you expected ;)
Natan Vivo
@nvivo
Apr 28 2015 17:49
haha
it would be simpler to always return a Task<object> and cast after await. would be more explicit about what happens
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 17:49
you have non-generic Ask
I think it's useful to have both
Natan Vivo
@nvivo
Apr 28 2015 17:50
I'd agree if that wasn't just a cast
what would be the difference between typing var s = await foo.Ask<string>("bar"); or var s = (string) await foo.Ask("bar")
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 17:52
in F# you can omit <Type>, it will be inferred from the usage
Natan Vivo
@nvivo
Apr 28 2015 17:52
thank you F#
=)
Arjen Smits
@Danthar
Apr 28 2015 17:54
F# type system is like a swiss knife.
Roman Golenok
@shersh
Apr 28 2015 17:55
I'd agree if that wasn't just a cast
Problem with <T> will be if actor will reply with message another type that you are waiting
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 17:55
for me it's pretty limiting, when compared to Ceylon, Scala or Haskell, but still it's far better than Java or C#
Roman Golenok
@shersh
Apr 28 2015 17:57

For example

await myActor.Ask<string>("hello");

and MyActor Tell(10) for example. So it will be CastException

because of that it will be using non-generic Ask I think. And using PatternMatch after =)
Arjen Smits
@Danthar
Apr 28 2015 18:02
Ask is meant to ask singular questions of your actor. And it implies that you actually KNOW what you are asking. (in other words you know that what your are asking is a valid question, and the actor can respond to it). Its not meant to allow all kinds of pattern matching on the results its getting.
thats what actor implementations are for
Natan Vivo
@nvivo
Apr 28 2015 18:07
I agree, but the thing is that at least for me while learning, when I saw Ask<T>, I imagined it would do something special
like resolving to the type of default(T)
I didn't imagine it would just try to cast. For casting, it's just safer to be explicit in c#
although if there are advantages for F#, I agree it's useful
also, I think C# 6 will do the same
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:09
default(T) is problematic, you'd never know if that value was really returned or just resolved automatically
Natan Vivo
@nvivo
Apr 28 2015 18:10
agree
the thing is: we just added 30 lines of code just to cast a value
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:11
for me possible problem with Ask<T> is that we are casting from object by default, so reinterpret cast will fail
i.e. sender is asking for Ask<int> while replier returns a long
Natan Vivo
@nvivo
Apr 28 2015 18:12
It would be possible to use Convert.ChangeType(typeof(T), value)
but I'm not sure that would be so valuable
helps with numbers only, all the other stuff would require checks
that's why I think an explicit cast from the user would make much more sense in most cases than relying on an internal cast
and that's explicitly from an api design standpoint, I'm not talking about convenience. Tell accepts object, so Ask returns object.
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:15
I have no opinion here, I use Ask basically only when talking with actors from external services and know how it works - only reason against is backward compatibility of the API
Natan Vivo
@nvivo
Apr 28 2015 18:16
I'm not proposing any change. I'm just commenting on the user experience
@HCanber just started the tab x space war there =)
Nikita Tsukanov
@kekekeks
Apr 28 2015 18:21

wouldnt an instanced taskscheduler also solve the probelm? that is, one scheduler per actor. there is one built into .net "exclusive somesoemthing scheduler pair"

I'm afraid that it will cause performance the same way CallContext.LogicalSetData did

Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:21
Ctrl+K+D is answer for everything
Arjen Smits
@Danthar
Apr 28 2015 18:23
@Horusiath +1
i saw @kekekeks mention some kind of sanetabs plugin?
A: why would i want that
B: Is there a VS plugin :P
Natan Vivo
@nvivo
Apr 28 2015 18:24
I think it's easier to adhere to wharever VS uses for formatting
default settings and done
Arjen Smits
@Danthar
Apr 28 2015 18:24
thats the point VS does not care. its a setting :P
Natan Vivo
@nvivo
Apr 28 2015 18:24
default settings FTW
Arjen Smits
@Danthar
Apr 28 2015 18:29
I dont have a strong preference for either one. As long as its consistent.
Natan Vivo
@nvivo
Apr 28 2015 18:33
Agree. But i don't think we should need a plugin for this
Arjen Smits
@Danthar
Apr 28 2015 18:33
a plugin to fix tabs or spaces ?
Natan Vivo
@nvivo
Apr 28 2015 18:33
Yes, from what I see that file requires one
Arjen Smits
@Danthar
Apr 28 2015 18:35
I noticed. so thats why I asked about the plugin. What is it, and why do we need it :P
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:36
going to work on getting v1.0.1 out this morning
Arjen Smits
@Danthar
Apr 28 2015 18:37
sounds great
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:37
looking forward to watching symbolsource.org die in the process
Arjen Smits
@Danthar
Apr 28 2015 18:37
?
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:37
whenever I do NuGet pushy
symbolsource.org barfs up a random error and kills the nuget push job
so I end up having to do it manually
Arjen Smits
@Danthar
Apr 28 2015 18:38
odd
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:38
yep
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:38
no, just normal day in NuGet world
Arjen Smits
@Danthar
Apr 28 2015 18:38
lol.
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:39
@Horusiath @HCanber @rogeralsing can I push v1.0.1 this morning and put these other async fixes into a subsequent patch after we've had a chance to run them? I'd really like to get these other fixes out
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:40
ok for me
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:42
@nvivo listening the the .NET Rocks panel from .NET Fringe now
really wanted to attend that session in-person
Arjen Smits
@Danthar
Apr 28 2015 18:42
@Aaronontheweb its live? cool
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:43
top of the page at the moment
Arjen Smits
@Danthar
Apr 28 2015 18:43
yup already started it
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:43
I have to listen all CraftConf presentations first
Arjen Smits
@Danthar
Apr 28 2015 18:44
are the presentations for .NET fringe live yet ?
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:44
@Danthar don't think so - I think they still want my slides :(
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:44
there's our Orleans friend talking about Saga pattern used in (you didn't expect that ;) ) Halo 4
Arjen Smits
@Danthar
Apr 28 2015 18:44
cracks a whip ^^
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:46
:p
Roman Golenok
@shersh
Apr 28 2015 18:47
Okay, Ask can return Failure istead of <T> because something failed inside
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:49
@Horusiath do you have a little blurb about how to use Akka.Persistence.Sql that I can use inside the release notes?
putting those together now
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:50
all projects have README.md
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:50
noice
I'll use that then
sigh
our build server is misbehaving
have only 1 agent running and it apparently forgot how to NuGet
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:51
maybe we should discuss Paket Manager once more ;)
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:52
can it help stop nuget.org from going down in flames :p ?
"tool of choice for Startups in San Francisco is Golang"
LOL
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:53
it does a strange things with package managment, maybe can even cure the cancer
golang is very entertaining lang, event while it's primitve and cumbersome as f**
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:54
it was a quote from the .NET rocks panel
Bay Area companies run a schmorgasboard of stuff
I see a lot of Node.JS and JVM stuff
and if the company's not really a tech company, Ruby on Rails
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:56
you know, for me there is no such thing as a Go developer. When you have language that you can learn in 2 afternoons and which have no dedicated framework at all, then basically any programmer is a golang programmer
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:56
everyone should know more than 1 language and more than 1 runtime
IMHO
doesn't mean you have to program professionally in each
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 18:57
languages are easy, paradigms and patterns are harder
Aaron Stannard
@Aaronontheweb
Apr 28 2015 18:57
yeah
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:04
aww, heard the part where Ian gave us a shoutout
those dudes from Huddle were all awesome
Arjen Smits
@Danthar
Apr 28 2015 19:08
I did C++ (MFC), Java (JEE, beans the whole shebang), and then ended up at .Net
hobbied in Python with building an AI agent
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:09
@Danthar MFC... my hat is off to you sir
Arjen Smits
@Danthar
Apr 28 2015 19:09
but still. Most valuable stuff learned was still the various paradigmes
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:09
I really like Python and Ruby for scripting
Arjen Smits
@Danthar
Apr 28 2015 19:09
ow sheesh. hated every minute of it. I figured, if this is what programming is? then im outta here
owyeah did Turbo Pascal before that
MFC is the most backwards rediculous stuff ever imagined...
o wait, no that honor belongs to Brainfuck
But thankfully working on .Net for 8+ years now.. so I have purged all that crap from my mind :P
python is great for scripting
ironpython is cool as well
thats the python integration for the DLR (Dynamic Language Runtime)
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:12
I'm probably the youngest of you, I wont share "when I was young" story :P
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:12
@Horusiath I'm 29
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:12
26
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:12
yep, you win :p
Arjen Smits
@Danthar
Apr 28 2015 19:12
26 seriously?
pegged you abit older
ill shut up then
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:13
hahahaha
nah, you're fine @Danthar
Arjen Smits
@Danthar
Apr 28 2015 19:13
koff koff 31 koff koff
Roger Johansson
@rogeralsing
Apr 28 2015 19:13
im 39 :-( , one more year to officialy middle aged
Arjen Smits
@Danthar
Apr 28 2015 19:13
holy!!.. ow I tought you where way younger
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:14
swedes age really well
Arjen Smits
@Danthar
Apr 28 2015 19:14
so they say
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:14
must be all of that cold weather - refrigerates them
Arjen Smits
@Danthar
Apr 28 2015 19:14
ROFL
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:14
@rogeralsing when we should sing Faith no More - Midlife Crisis for you?
:P
I think it's a fishy diet :)
Roger Johansson
@rogeralsing
Apr 28 2015 19:15
you are free to do that on the next core dev meeting ;). ill record you :)
Arjen Smits
@Danthar
Apr 28 2015 19:16
^^
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:17
I
I'll play a mournful Irish flute in the background while he does it
Arjen Smits
@Danthar
Apr 28 2015 19:17
hahaha
irish flutes, if your going irish. Why not bagpipes?
Roger Johansson
@rogeralsing
Apr 28 2015 19:18
isnt that scottish?
Arjen Smits
@Danthar
Apr 28 2015 19:18
LOL. your right
But it was actually when I started doing .Net that I finally went beyond the https://s3-eu-west-1.amazonaws.com/bowwowtimes/wp-content/uploads/2015/01/I-Have-No-Idea-What-Im-Doing-1.jpg phase
c++ was like doing magic. I could implement all kinds of low level stuff
but actually building a non trivial application
Roger Johansson
@rogeralsing
Apr 28 2015 19:20
non trivial apps need golang
Arjen Smits
@Danthar
Apr 28 2015 19:20
.. just throw code against it until it works
same with the java stuff
especially java beans
oh dont get me started on the XML configs...
omg the tags... they haunt me still
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:22
biggest brainmelting experience for me was discovering that Python was whitespace sensitive
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:22
I would like to have a job when each project could be potentially in different lang,
Arjen Smits
@Danthar
Apr 28 2015 19:22
when I started on .Net i had the luck to get in the same team with a guy who actually knew stuff about application design
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:22
suddenly editor wars started making a lot more sense
Arjen Smits
@Danthar
Apr 28 2015 19:24
and he knew where all the good books where at. About those kind of topics.
thinking back. I only now realise how shitty my bachelor education was
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:24
I got lucky with my CS degree
had a really good professor with lots of real-world experience
taught me design patterns, architecture, and network programming in C++
and that's the stuff that stuck with me
Arjen Smits
@Danthar
Apr 28 2015 19:25
mine where all professional teachers who never worked in a real company. Save for 1 guy. Who left 2 years after i graduated, or so i heard. He was pretty good.
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:25
I couldn't tell you shit about using Lisp and ML, even though I used both for a semester
Arjen Smits
@Danthar
Apr 28 2015 19:26
hehe. I was actually top of my class when it came to Java. Even tutored other students.
then I needed to build a real world application in Java with Entity Java beans and I was like... WUT...
I went for a few months wondering if I missed a few classes :P
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:27
yeah, they leave a large gap between knowing how each individual tool works
Arjen Smits
@Danthar
Apr 28 2015 19:28
turned out the teacher was a complete ass, and he was sacked in the end..
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:28
and how to start with a blank sheet of paper and design a full application
Arjen Smits
@Danthar
Apr 28 2015 19:28
that explained alot..but didnt helped me at the time.
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:28
lol
Arjen Smits
@Danthar
Apr 28 2015 19:28
@Aaronontheweb yeah they teached us UML for that
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:28
oh no lol
Arjen Smits
@Danthar
Apr 28 2015 19:28
making class diagrams based on whats in your functional texts
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:28
UML has its place, and it's called the 1970s
Arjen Smits
@Danthar
Apr 28 2015 19:29
oh oh. and waterfall design methodology
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:29
@Aaronontheweb tell that to Vim users ;)
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:29
don't forget using theorems and proofs!
to validate that your hello world app works
important part of the waterfall model
Arjen Smits
@Danthar
Apr 28 2015 19:29
lol yeah
Nikita Tsukanov
@kekekeks
Apr 28 2015 19:29

I think we have to stick to the current impl for v 1.x and forward, and then just get rid of the problem using Typed Akka

What is that "TypedAkka"? I noticed you are talking about it like about some holy grail

Arjen Smits
@Danthar
Apr 28 2015 19:29
look! we build you a rabbit!... but we wanted a mouse
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:30
@kekekeks so right now all we really have in Akka are untyped actors effectively
they're programmed to receive ANY message and maybe handle them
Typed Akka or whatever we're going to call it is the notion of "typed" actors
programmed to handle only a small number of purpose-built, explicitly chosen things
brings the power of static typing to our actor and message definitions
Arjen Smits
@Danthar
Apr 28 2015 19:31
sounds like purposebuild event handlers or something
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:31
@Danthar there is more philosophy behind this
Roger Johansson
@rogeralsing
Apr 28 2015 19:31
Typed akka was originally intended to be JVM akka 3.0 but is now a module in 2.4
Arjen Smits
@Danthar
Apr 28 2015 19:32
      public class MyActor : IReceive<MyMessage>, IReceive<TheOtherMessage>
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:32
@Horusiath and @rogeralsing can explain the concept better than I can - I'm not as familiar with it
Arjen Smits
@Danthar
Apr 28 2015 19:32
something like that?
im all ears
Nikita Tsukanov
@kekekeks
Apr 28 2015 19:32

wouldnt an instanced taskscheduler also solve the probelm? that is, one scheduler per actor. there is one built into .net "exclusive somesoemthing scheduler pair"

You need discriminated unions for that

Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:32
  1. in typed actor refs are typed - you can tell/ask only message of specific types
Arjen Smits
@Danthar
Apr 28 2015 19:33
interesting. This allows you to enforce message contracts at compile time
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:33
  1. there is no Sender param - if you want to send message back to sender, you have to include it as field of the message - this way we a) can drop envelopes around messages, b) explicitly signal that message should be responded
Roger Johansson
@rogeralsing
Apr 28 2015 19:36
C) get rid of flowing contexts and implicit sender
Arjen Smits
@Danthar
Apr 28 2015 19:36
@rogeralsing i was about to make a similar remark
if typed actors are going to be the only supported actor type. we could make the async stuff so much simpler (here we go again)
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:36
  • actors are no longer classes, they are functions instead. Moreover those functions can be combined using logical operators such as And/Or - this way we could define something like myActorBehavior = (behavior1.Or(behavior2)) where second behavior will be applied only when first one will return undlandled. More realife example : signInActor = (authorize.And(SignInDocument))
Roger Johansson
@rogeralsing
Apr 28 2015 19:37
The implicit context is the root of all pain in here :)
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:37
if typed actors are going to be the only supported actor type. we could make the async stuff so much simpler (here we go again)
Exactly right :)
errr
they won't be the only supported actor type
but working with async in typed actors is a lot easier
Arjen Smits
@Danthar
Apr 28 2015 19:38
@Horusiath combining functors.. lol thats huge
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:38
(personally I think we should combine Akka Behavior definition with Fineagle Service definition)
so that behavior returns Future/Task describing the behavior result
Nikita Tsukanov
@kekekeks
Apr 28 2015 19:39

I'll probably want to create a mysql version at some point

@nvivo Just take linq2db and FluentMigrator and forget about this crap with manually formed requests

It's really easy to write database-agnostic code with these tools
And no any expensive contexts from EF
just pure Linq -> SQL translation and some mapping logic around DataReader
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:40
@Danthar right now F# works in similar way - I'm working on the typed actor refs right now, if they pass I'll try function combinators
Arjen Smits
@Danthar
Apr 28 2015 19:40
It sounds really cool. Allows you to do really powerfull stuff
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:40
the biggest pain point right now for me is to fit this into Akka.Peristence
Arjen Smits
@Danthar
Apr 28 2015 19:41
the interfacing between the two you mean?
Ah yeah, if your only defining a functor.. hmm
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:42
passing the state is not a problem, problem is updating it asynchronously
Arjen Smits
@Danthar
Apr 28 2015 19:43
You will have to wrap it, so wrap your functor in a functor that handles the persistance/stashing stuff
Nikita Tsukanov
@kekekeks
Apr 28 2015 19:43
BTW, have you guys looked at Nemerle?
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:43
no, what is it?
Nikita Tsukanov
@kekekeks
Apr 28 2015 19:43
.NET functional language
Created before F#
With powerful macro system that is light years ahead of F#'s type generators
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:44
it's a language which brought more functional features to C# syntax
Nikita Tsukanov
@kekekeks
Apr 28 2015 19:44
Currently its dev team is hired by JetBrains
Writing some language workbench or something
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:44
yes, Nitra
but it's still buggy and undocumented :/
Nikita Tsukanov
@kekekeks
Apr 28 2015 19:45
But nemerle is mature
has some problems with compiling on Mono (mostly because of xbuild bugs), but still
Arjen Smits
@Danthar
Apr 28 2015 19:45
Does it has any traction? Besides the original creators ?
Nikita Tsukanov
@kekekeks
Apr 28 2015 19:45
dunno
I hope it will, after they release Nitra
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:46
while F# is rarely used by .NET community, Nemerle is like unicorn
Nikita Tsukanov
@kekekeks
Apr 28 2015 19:46
ReSharper support is the only thing Nemerle lacks
The point is that you can use C# and Nemerle code in a single project
Nemerle compiler can compile .cs files
Arjen Smits
@Danthar
Apr 28 2015 19:47
Doesn't rolsyn solve all that ?
Nikita Tsukanov
@kekekeks
Apr 28 2015 19:47
Nope
Roslyn hasn't got a F# compiler inside it, see
Arjen Smits
@Danthar
Apr 28 2015 19:47
no? oh. i thought it did.
Joshua Benjamin
@annymsMthd
Apr 28 2015 19:47
We use F#
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:48
F# compiler is a little nightmare on its own ;)
Joshua Benjamin
@annymsMthd
Apr 28 2015 19:51
It's Visual Studio support is severely lacking but it still is a useful language to model problems in a more functional manner.
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:52
language is great, compiler is slow and complex
Arjen Smits
@Danthar
Apr 28 2015 19:52
Im... 'flirting' with F# . But haven't done anything substantial in it yet. No time :)
Joshua Benjamin
@annymsMthd
Apr 28 2015 19:53
I actually got turned onto functional programming languages by this book http://learnyouahaskell.com/. It boils down the concepts pretty nicely.
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:54
v1.0.1 release right here: akkadotnet/akka.net#921
speak now or forever hold your peace
Arjen Smits
@Danthar
Apr 28 2015 19:55
persanal ??
(in the PinnedDispatcher line)
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:55
lol
just used the quote from the title of the github issue :smile:
Joshua Benjamin
@annymsMthd
Apr 28 2015 19:56
If the issue jumped off a cliff... lol
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:56
lol
ok, let's release this thing
Arjen Smits
@Danthar
Apr 28 2015 19:57
it works on my pc and ship it!
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:57
lol
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:57
@Aaronontheweb how about our plans for pre-release packages for incomming versions of akka ?
Aaron Stannard
@Aaronontheweb
Apr 28 2015 19:57
@Horusiath yeah, I need to figure out how to turn that on for TeamCity
it's a good idea
Arjen Smits
@Danthar
Apr 28 2015 19:58
@Horusiath Is the persistance API going to change substantially any time soon?
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:58
when I'll PR this typed actor refs for F#, I would like give it unofficially to community
Roman Golenok
@shersh
Apr 28 2015 19:58
  1. in typed actor refs are typed - you can tell/ask only message of specific types
Hmm.. Have we not IHandle<T> ?
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 19:59
@Danthar one planned breaking change is change the name of GuaranteedDeliveryActor to AtLeastOnceDeliveryActor (this is an original name from JVM akka persistence)
Arjen Smits
@Danthar
Apr 28 2015 20:01
ah ok. Nothing major then. Im thinking about maybe starting a RavenDB implementation. Since i've done alot with RavenDB in the past.
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 20:01
there are some changes planned for resolving journals/snapshot stores (didn't set official issue for this) but they don't change API (maybe only add one or two field in config files)
Arjen Smits
@Danthar
Apr 28 2015 20:01
:nods:
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 20:02
when we finish Akka.Streams there will be some more significant changes for read side
but this is second half of this year
Arjen Smits
@Danthar
Apr 28 2015 20:03
ok
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 20:03
(in my opinion at least ;) )
Arjen Smits
@Danthar
Apr 28 2015 20:04
well good to know at least.
gtg -> girlfriend complaining :P
dont have any holy wars while im gone ok ?
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 20:05
don't worry
Roman Golenok
@shersh
Apr 28 2015 20:05
GIT or SVN? xD
Bartosz Sypytkowski
@Horusiath
Apr 28 2015 20:06
lol, this will be the short one :D
Joshua Benjamin
@annymsMthd
Apr 28 2015 20:06
git
Roman Golenok
@shersh
Apr 28 2015 20:07
oh... yes. Bad choice xD But I didn't see any svnitter.im )
Aaron Stannard
@Aaronontheweb
Apr 28 2015 20:22
wow, this is a first - the build server ACTUALLY published a new set of NuGet packages all by itself. Including symbol packages!
Aaron Stannard
@Aaronontheweb
Apr 28 2015 20:33
@/all let's get some Retweet love going here: https://twitter.com/AkkaDotNET/status/593151072669073410
Raymen Scholten
@raymens
Apr 28 2015 20:38
retweeted, thanks for the release of a much needed F# bug fix :+1:
Aaron Stannard
@Aaronontheweb
Apr 28 2015 20:41
anytime @raymens - all credit goes to @Horusiath for that one
Aaron Stannard
@Aaronontheweb
Apr 28 2015 20:49
alrighty, just created a milestone for v1.0.2
set a couple of weeks in the future
goal for that one is all the async stuff we talked about plus Cluster fixes
that reminds me - I need to write up the roadmap we laid out last week
we have a feature roadmap for Akka.NET that covers the next few releases
the minor version number ones
Aaron Stannard
@Aaronontheweb
Apr 28 2015 20:58
in the short run: Akka.NET v1.1 is focused on getting a stable release of Akka.Cluster out
in parallel and we will also begin work on Helios 2.0, in order to provide improved Akka.Remote throughput as well as TLS / SSL
those will be released independently of eachother
after that, we're going to try to ship a beta of Akka.Persistence as well as Akka.ClusterSharding for v1.2
with work beginning in parallel on Akka.Streams and the Reactive Streams specification in .NET
Akka.Streams is a massive project
lots of moving parts - and the fully mature versions of Akka.Persistence and ClusterSharding depend on it
the JVM equivalents of those libraries aren't released yet -they're either about to or just did release Akka.Streams v1.0
so there will be a lot of opportunities for new contributors to get their hands dirty with the heavy stuff
as there's a lot of it to go around
Roman Golenok
@shersh
Apr 28 2015 21:03
Where I can read about Akka.Streams and Reactive Streams concepts?
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:03
I'll publish a version of this roadmap in a blog post later this week so you can refer back
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:03
@shersh http://reactive-streams.org/ - this is the Reactive Streams specification
which Akka.Streams is an implementation of
we will contribute a CLR interface into the Reactive Streams project and try to encourage other big data .NET libraries to the do same
errr, encourage other projects to use it
so that way the specification can begin to take hold in our ecosystem too
all of these milestones will be great opportunities for anyone who wants to contribute to get involved
Raymen Scholten
@raymens
Apr 28 2015 21:06
It's great to see more of that stuff coming to .NET
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:08
it really is @raymens
Natan Vivo
@nvivo
Apr 28 2015 21:08
Too... many... akka... projects.... must... focus...
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:08
hehehe @nvivo
Anthony Brown
@bruinbrown
Apr 28 2015 21:08
Sweet! My fix worked
Natan Vivo
@nvivo
Apr 28 2015 21:08
Akka.Coffee - massively distributed coffee maker machine
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:09
the area where we really need help in the short run is getting the Akka.Cluster multi-node tests to pass
Joshua (@annymsMthd) has done some great work there recently
@bruinbrown the .nuspec images fix?
Joshua Benjamin
@annymsMthd
Apr 28 2015 21:09
We are currently running a cluster in the public transit space so I get to find all the bugs:)
Anthony Brown
@bruinbrown
Apr 28 2015 21:09
@Aaronontheweb yeah, first pull request
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:11
nice man - hope it's not your last
@annymsMthd I'm going to start investigating the cluster disconnect bug now - I've had that one affect me live while I'm onstage giving a talk
Anthony Brown
@bruinbrown
Apr 28 2015 21:12
Hope not, 3 more weeks of coursework and exams and then some funemployment to make some more contributions
Natan Vivo
@nvivo
Apr 28 2015 21:14
man, I'm reading the conversation... @Horusiath always surprises me
"i don't like [put most complex thing google/facebook/CERN is using here] - it's too limiting, f# has [put F# feature here], it's nice but [put language I have never heard about here] is much better"
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:16
he's a man of few words, but many pull requests
we have a really good OSS community - very diverse range of people in terms of their experiences, use cases, jobs
and personal collections of animated gifs
Raymen Scholten
@raymens
Apr 28 2015 21:20
hehe, those are always fun
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:21
yeah, it's a lot more fun doing open source when people don't take themselves seriously all thetime
which, clearly, we do not :p
Natan Vivo
@nvivo
Apr 28 2015 21:22
I'm learning things all the time here
for example, just heard about this "tweeter" thing you guys talk about
or something like that
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:22
Tweeter is youtube for facebook
or something like that
Natan Vivo
@nvivo
Apr 28 2015 21:23
I'm still used to books... that wikipedia made of wood
Sean Gilliam
@sean-gilliam
Apr 28 2015 21:23
you use wood?!?!? damn i'm still on clay tablets.
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:23
CUNEIFORM OR BUST
Sean Gilliam
@sean-gilliam
Apr 28 2015 21:24
hehe
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:24
wonder if there were editor wars in 4000 BC
about which type of stylus you should use
the type of clay
etc
what did ancient nerds argue about before the Internet?
Raymen Scholten
@raymens
Apr 28 2015 21:24
whether the earth was round or not?
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:25
yeah, that's a good one
Natan Vivo
@nvivo
Apr 28 2015 21:25
"before the internet".. you mean like when I was a kid?
Sean Gilliam
@sean-gilliam
Apr 28 2015 21:29
nerd1: the earth revolves around the sun damnit!!!
nerd2: are you daft man?!?! clearly the sun revolves around the earth.
Raymen Scholten
@raymens
Apr 28 2015 21:30
that discussion sounds more like the nerds vs religion back then :smile:
Sean Gilliam
@sean-gilliam
Apr 28 2015 21:35

greek nerd Aristotle believed in [geocentrism] (http://en.wikipedia.org/wiki/Geocentric_model) :P

anyways have you play around with async/await ;)

Natan Vivo
@nvivo
Apr 28 2015 21:36
anyone said async/await?
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:36
nooooooooooooooooooo.png
Natan Vivo
@nvivo
Apr 28 2015 21:37
did anyone say "yes"?
Sean Gilliam
@sean-gilliam
Apr 28 2015 21:38
Roman Golenok
@shersh
Apr 28 2015 21:41

Is it normal ?
https://gist.github.com/shersh/e0dfb4f3e4c5a9deb9a6

And using like

var actorRef = Static.System.ActorOf<DbActor>();
            var res = await actorRef.Ask<List<UserContact>>(new DbActor.Query()
            {
                Filter = db => db.Contacts
            });
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:42
yep, that should be fine
afaik
you won't be able to serialize those queries over a network
since they're Func
but if this is all happening locally in-memory
should be fine
might want to refactor your queries to be expressed as stand-alone messages though and have something else that can turn those messages into your actual query expression
Roman Golenok
@shersh
Apr 28 2015 21:44

Hm... but if I want to use over network it should be more primitive?

Something like GetContactsQuery ?

Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:44
yeah - have it be a POCO class
that just defines your read DTO
it's kind of like built-in CQRS
Natan Vivo
@nvivo
Apr 28 2015 21:46
@shersh you should be able to pipe the filter back to the sender instead of calling Result
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:47
oh whoops, I totally missed that - yeah @nvivo's right
Natan Vivo
@nvivo
Apr 28 2015 21:48
.Result is last resort, only do that if there is no way you can run asyncrhonously
@Aaronontheweb after the doc I'm working on, I'd like to document some Remoting and Cluster to learn more about that
is there anything documented about that? found the docs on remoting very shallow
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:49
sounds good - I'm putting a powerpoint together that explains how the entire connection system for Akka.Remote works right now actually
Roman Golenok
@shersh
Apr 28 2015 21:49
Yeah I know, I just tested solution and copy-pasted it.
More, we cant use Ask<List<UserContacts>> here, because result will be List<object> always. And I'm worring about boxing\unboxing performance here
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:49
to help others debug the issues we're having with nodes not being able to reconnect
Natan Vivo
@nvivo
Apr 28 2015 21:50
I need to learn that as I'd like to use it
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:50
@nvivo sounds good - I'll put it on Petabridge's slideshare as soon as it's up
Natan Vivo
@nvivo
Apr 28 2015 21:50
let me know about any docs you produce, and I'll see what I can port to the docs
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:50
might even do a ghetto screencast
Natan Vivo
@nvivo
Apr 28 2015 21:50
cool
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:50
I don't have the setup to do a professional one yet - need a better mic
@shersh why can't you just return Ask<List<UserContacts>> - because of what happens if the ask fails?
Roman Golenok
@shersh
Apr 28 2015 21:52
It will throw InvalidCastException here.
Can't cast List<Object> to List<UserContacts>
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:54
which piece of code returns the List<Object> ?
Roman Golenok
@shersh
Apr 28 2015 21:54
var filter = query.Filter(db).ToListAsync().Result;
Sender.Tell(filter);
Aaron Stannard
@Aaronontheweb
Apr 28 2015 21:54
ah, so it's the query?
Roman Golenok
@shersh
Apr 28 2015 21:59
it requests data from Db using query from message and return result.
So I can using generic IQueryable<T>
But for this I will need specify each Query<T>
Receive<Query<UserContact>>()
Receive<Query<UserTransaction>>()
Receive<Query<SomethingElse>>()
And okay it is bad, because if I'll need to change Database from ms sql to another it may be pain and wasting of time
Aaron Stannard
@Aaronontheweb
Apr 28 2015 22:03
yeah, you might be better off using that low-level message approach we talked about before
and pushing the details of how that query is executed into a dedicated actor
who talks to your datastore
and make everything strongly typed inside of it
that way your Ask operations will work as expected
Stefan Sedich
@stefansedich
Apr 28 2015 23:12
so question if you were developing something like a rabbitmq consumer, is following the way they do things with say https://github.com/sclasen/akka-kafka the nicest way
with a RabbitConsumer which gets passed some RabbitConsumerProps and creates an actor instance that manages things
var consumer = new RabbitConsumer(RabbitConsumerProps.ForSystem(system));
consumer.Start();
or just have a top level actor that reads from hocon config for it's settings
Stefan Sedich
@stefansedich
Apr 28 2015 23:31
actually I don't mind this way either
var system = ActorSystem.Create("rabbit-testing");
system.ActorOf(RabbitConsumerActor.Props(system, "events", 8));
Aaron Stannard
@Aaronontheweb
Apr 28 2015 23:33
yeah, I like the second way best
make it more granular and configurable
Stefan Sedich
@stefansedich
Apr 28 2015 23:33
parent then creates one child per thread passes down settings
job done
amazing how easily I have been able to do this
without actors I would need to implement funky reconnection logic etc
not this time, on restart they just connect again
Aaron Stannard
@Aaronontheweb
Apr 28 2015 23:33
atomizes your codebase so well, do they not?
Stefan Sedich
@stefansedich
Apr 28 2015 23:34
each thread consumer is completely isolated
will probably get this out as a contrib at some point but only a hack to do a proof of concept at work ATM
the akka-rabbitmq stuff in the JVM is pretty basic too
I just spent half an hour wondering why the hell logging was not working
logLevel=DEBUG,
sigh
Aaron Stannard
@Aaronontheweb
Apr 28 2015 23:49
lol
I'm going through and documenting how all of the AkkaProtocolActors do their thing
since it's some of the most convoluted code in the entire project
Stefan Sedich
@stefansedich
Apr 28 2015 23:50
heh
sweet, I gotta try finish that PR of mine cleaning up the Event namespace, got sidetracked at work :\