IRC logs of #shogun for Wednesday, 2019-02-20

--- Log opened Wed Feb 20 00:00:19 2019
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun01:31
-!- mode/#shogun [+o wiking] by ChanServ01:31
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection]03:35
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun04:30
-!- mode/#shogun [+o wiking] by ChanServ04:30
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 246 seconds]04:34
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun05:26
-!- mode/#shogun [+o wiking] by ChanServ05:26
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 245 seconds]05:31
-!- wiking [~wiking@host-92-21-85-116.as13285.net] has joined #shogun07:38
-!- wiking [~wiking@host-92-21-85-116.as13285.net] has quit [Changing host]07:38
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun07:38
-!- mode/#shogun [+o wiking] by ChanServ07:38
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection]09:24
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun09:25
-!- mode/#shogun [+o wiking] by ChanServ09:25
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 245 seconds]09:29
-!- gf712 [c13cdcfd@gateway/web/freenode/ip.193.60.220.253] has joined #shogun09:32
-!- gf712_ [c13cdcfd@gateway/web/freenode/ip.193.60.220.253] has joined #shogun09:37
-!- gf712 [c13cdcfd@gateway/web/freenode/ip.193.60.220.253] has quit [Ping timeout: 256 seconds]09:39
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun09:40
-!- mode/#shogun [+o wiking] by ChanServ09:40
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 255 seconds]09:45
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun09:54
-!- mode/#shogun [+o wiking] by ChanServ09:54
@wikinglisitsyn: yauza10:17
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection]10:38
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun10:41
-!- mode/#shogun [+o wiking] by ChanServ10:41
-!- gf712_ [c13cdcfd@gateway/web/freenode/ip.193.60.220.253] has quit [Ping timeout: 256 seconds]10:43
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection]11:43
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun11:53
-!- mode/#shogun [+o wiking] by ChanServ11:54
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 250 seconds]11:58
-!- wiking [~wiking@193.60.220.253] has joined #shogun12:00
-!- wiking [~wiking@193.60.220.253] has quit [Changing host]12:00
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun12:00
-!- mode/#shogun [+o wiking] by ChanServ12:00
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection]12:11
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun12:21
-!- mode/#shogun [+o wiking] by ChanServ12:21
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 245 seconds]12:26
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun12:33
-!- mode/#shogun [+o wiking] by ChanServ12:33
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection]12:42
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun12:48
-!- mode/#shogun [+o wiking] by ChanServ12:48
-!- wiking [~wiking@huwico/staff/wiking] has quit [Read error: Connection reset by peer]12:49
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun12:49
-!- mode/#shogun [+o wiking] by ChanServ12:49
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 255 seconds]12:53
-!- wiking_ [~wiking@37.205.58.146] has joined #shogun12:53
-!- wiking_ [~wiking@37.205.58.146] has quit [Ping timeout: 268 seconds]12:58
-!- gf712 [c13cdcfd@gateway/web/freenode/ip.193.60.220.253] has joined #shogun13:02
-!- HeikoS [5534e691@gateway/web/cgi-irc/kiwiirc.com/ip.85.52.230.145] has joined #shogun15:08
-!- mode/#shogun [+o HeikoS] by ChanServ15:12
@HeikoSgf712 yo!15:12
@HeikoSlambday yo15:17
-!- HeikoS [5534e691@gateway/web/cgi-irc/kiwiirc.com/ip.85.52.230.145] has quit [Remote host closed the connection]15:23
-!- HeikoS [5534e691@gateway/web/cgi-irc/kiwiirc.com/ip.85.52.230.145] has joined #shogun15:26
HeikoSlambday gf712 yo15:26
-!- mode/#shogun [+o HeikoS] by ChanServ15:26
gf712Heiko hey!15:30
gf712HeikoS15:30
@HeikoSgf712 hi! how are things?15:30
gf712good good, was working with Viktor and Lefteris for the past day and a hald15:30
gf712quite useful15:30
gf712how are things there?15:31
@HeikoScool15:31
@HeikoSyeah I really liked the second auto pr15:31
@HeikoSreally neat work15:31
@HeikoSgood here as well15:31
gf712sorry I didn't quite understand what you meant in the first one15:31
gf712Viktor helped out in the second15:31
@HeikoSyeah sure, I wasnt very clear15:31
@HeikoSanything unclear as of now?15:31
@HeikoSI am currently looking into testig Lefteris new typemap for octave, or string typemaps in general15:32
gf712no, I think I understand what the end goal is15:32
gf712ah is it now working?15:33
gf712we talked about it yesterday and there was an issue before15:33
gf712but should be fixed now15:33
@HeikoSwhat do you mean?15:33
gf712there was some deleting of the original data15:34
gf712but maybe that was something for java15:34
gf712hmm, I am not sure now!15:34
@HeikoSnot sure15:35
@HeikoSI am more about adding string lists to inteegration tests15:35
@HeikoSthis way we can check what goes in/out and that that is consistent15:35
@HeikoSbut in any case15:35
@HeikoSI wanted to ask you15:35
@HeikoSdid you get what I meant in the enum email=?15:35
gf712yes, i understand-ish15:36
gf712basically need to replace the enums with something that can be accessed between plugin and base?15:36
@HeikoSyes15:36
@HeikoSit is a similar problem as some thing I mentioned in your last PR15:36
@HeikoSthere wont be any central collection of things anymore once shogun is plugin based15:37
@HeikoSwe can keep the enums in fact, as they are only ints anyways15:37
@HeikoSSG_ADD(    (machine_int_t*)&liblinear_solver_type, "liblinear_solver_type",    "Type of LibLinear solver.");15:37
@HeikoSthey are registered like this15:37
@HeikoSnot quite typesafe in terms of put15:38
@HeikoSgf712 but we can actually be runtime typesafe at least with the idea that I described15:39
@HeikoSwhere each class registers its own enums somewhere, and how to instantiate the corresponding int value from a string15:39
gf712how would you convert the string to int and back?15:40
gf712not int, enum sorry15:40
@HeikoSyes that is the crux15:40
@HeikoSI was thinking with a map15:40
@HeikoSwhere each class registers the options15:40
@HeikoSmap<string, int>15:40
gf712but then the map has to be shared between base and plugin?15:41
@HeikoSthe map would be central15:41
gf712how would it be populated15:41
@HeikoSand upon loading a plugin, it registers its options15:41
@HeikoSso for now we could have a global map where the classes dump their values15:41
@HeikoSthen later this is refactored/changed to plugin loading15:41
@HeikoSthis way we can both make it safer (the class can check whether it "support" the user provided string as enum), and also we dont need a central definition of all enums anymore15:42
@HeikoSand most importantly, we dont need to change any shogun code15:42
@HeikoSi.e. the classes internally still work with enums as before, no new types or other changes required15:42
@HeikoSso in the naive version, a static map where each class puts a number of entries15:44
@HeikoSbest would be to structure it15:44
@HeikoSso that one can find out what enums are available for each class15:44
@HeikoSand do some checks inside put (is that string available for the given class)15:44
@HeikoSsee what I mean?15:44
gf712hmmm yes, kinda!15:46
gf712just reread your email and it makes more sense to me now15:46
gf712is there a feature branch yet btw?15:46
@HeikoSgf712 for the enum thingi?15:46
gf712maybe can start writing  something15:46
gf712yes15:46
@HeikoSI think this can be done in a single PR15:47
@HeikoSnot that big of a change15:47
@HeikoSneed the map, an example how to register, an overload of put, and an updated meta example15:47
@HeikoSand that's it15:47
@HeikoSand then some details that are not important for the first iteration15:48
gf712so how would the overload of put work?15:48
gf712would it be for strings?15:49
gf712and then that maps to enum?15:49
@HeikoSyes I think15:49
gf712and then each class needs to know which enum type it can access?15:49
@HeikoS1. check if there is a match between available enums and the provided string15:49
@HeikoS2, convert to int15:49
@HeikoS3. call the normal put15:49
@HeikoSgf712 yeah I think when registering the enums, the class name can be included somehow, so that it is structured15:50
@HeikoSike15:50
@HeikoSLibLinear,LIBLINEAR_SOLVER_TYPE15:50
@HeikoSLibLinear.LIBLINEAR_SOLVER_TYPE15:51
@HeikoSso maybe a nested map15:51
@HeikoSmap<string, map<string, int>15:51
@HeikoSor something15:51
@HeikoSsimilar15:51
gf712hmmm, I guess the map will never grow too much15:51
gf712to causes mem issues15:51
@HeikoSno I dont think so15:51
gf712since its all in the stack15:51
@HeikoSit is all proportional to number of classes15:52
@HeikoSsince number of enums is more or less constant15:52
@HeikoSnumber of enums per class tha tis15:52
gf712just thinking that there might be lots of overlap no?15:52
@HeikoSor each class has its own static map and registers that in the global map that maps class name to enum map15:52
@HeikoSgf712 like enums that are used in multiple classes?15:53
gf712I mean there will be classes which require the same enums right15:53
gf712?15:53
gf712ah wait15:53
@HeikoSno actually not15:54
@HeikoSmost classes define their own15:54
@HeikoSthe only ones shared are those internal ones like MachineType15:54
gf712map<string, map<string, int> -> {"class_name", {"??", int}}15:54
gf712what goes in ?? :p15:54
@HeikoSbut those wouldn't even be registered as they are not for user API15:54
gf712and int15:54
@HeikoS{"class_name", {"enum_string", int}}15:55
@HeikoSenums["LibLinear"]["L2R_LR"] -> 015:55
gf712so int would be for example LIBLINEAR_SOLVER_TYPE::L2R_LR15:55
gf712ah ok15:55
gf712which is 015:55
gf712cool!15:55
@HeikoSenums["LibLinear"]["L2R_L2LOSS_SVC_DUAL"] -> 115:55
@HeikoSetc15:55
@HeikoSand then15:55
@HeikoSobj.put("solver_type", "bla") -> "LibLinear.solver_type cannot take value "bla""15:56
@HeikoSand maybe15:56
@HeikoSobj.list("solver_type") -> [list of all acceptable strings]15:57
@HeikoS(or a better name, but something for users to find out what they can do)15:57
gf712param_options?15:57
@HeikoSyes15:57
@HeikoSthis can be shared with the "auto" stuff btw15:58
@HeikoSsame method would also tell the options for auto paramters15:58
@HeikoSbut thats a detail15:58
@HeikoSparam_options is a good name15:58
gf712hmmm, OK, I can give this a go15:58
gf712but it is an entrance task right?15:59
@HeikoSno, I think that would be too much15:59
@HeikoSit would be an entrance task to deploy this for all examples15:59
@HeikoSso that we can remove LibLinear and the likes from swig (currently blocked by this)15:59
@HeikoSso yes, would be great if you had a good at this16:00
gf712OK, I'll try and draft something, create PR and go from there?16:00
@HeikoSyes good!16:00
gf712against develop right?16:00
@HeikoSyes for now16:00
@HeikoSif it turns out that this grows too big we can do a branch16:00
@HeikoSbut I dont expect it to16:00
gf712ok!16:00
@HeikoSand PRs are nice to discuss16:00
gf712any ideas where to put this static map btw?16:01
gf712just to get started16:01
@HeikoSgood question16:01
gf712would it live in the session, i.e. init?16:01
@HeikoSlater on, it would sit with the plugin loader16:01
@HeikoSno i dont think16:01
@HeikoSbecause it wont be populated via constructors16:02
@HeikoSbut rather by static class code16:02
@HeikoSmmh16:02
@HeikoSlater on that will change though16:02
@HeikoSplugins are loaded at runtime16:02
@HeikoSI dont know16:03
@HeikoSmaybe sgobject for now, and we can move it depending on feedback of the others16:03
@HeikoSor even its own file16:03
@HeikoSah no16:04
@HeikoSsgobject is maybe a good start16:04
@HeikoSto see how all this plays out16:04
gf712OK, I'll try it out and see what happens :D16:04
@HeikoSthe map for now needs to be static, but later on definitely can be populated at runtime (upon plugin load)16:04
@HeikoSso maybe keep that in mind when writing it16:04
@HeikoSlisitsyn at first wanted to autogenerate code that instantiates the map, just like we do for class_list16:05
@HeikoSbut I like the "classes register their enums" better16:05
@HeikoSsince they already register parameters anyways16:05
gf712hmmm ok, I see! I think16:06
gf712!16:06
-!- HeikoS [5534e691@gateway/web/cgi-irc/kiwiirc.com/ip.85.52.230.145] has quit [Ping timeout: 268 seconds]16:10
-!- HeikoS [5534e679@gateway/web/cgi-irc/kiwiirc.com/ip.85.52.230.121] has joined #shogun16:13
HeikoSgf712 sorry my phone died16:13
HeikoSand with that my wifi tether16:13
gf712no problem, was grabbing coffee anyway16:16
HeikoSsame here :)16:16
HeikoSbtw did you see the workshop in cambrdige?16:16
HeikoSsee16:16
gf712ah was about to tell you16:16
gf712I am going to Kiev on the Friday16:16
gf712so would only be able to go on Thursday..16:17
HeikoSi see16:18
HeikoSmaybe come round still, i think this might be fun16:18
HeikoSthere will be people who are interested in using what we are building16:19
gf712yea I would be keen, but can I still register?16:19
gf712are you going?16:19
HeikoSyes you shoul dbe able to16:22
HeikoSyes I have registered16:22
HeikoSneed to look into flights/etc soon16:23
gf712ok, let me have a look16:23
gf712do you think you'll be going straight to Cambridge btw, or you passing by the ATI?16:23
HeikoSi think ill come to London first, and then take the train over there16:25
HeikoSsince I can sort some stuff with my flat then16:25
HeikoSso can spend a day at the ati16:25
HeikoSgf712 ok cool, my connection is a bit flaky, will do some more coding now16:32
HeikoSsee you later16:32
lisitsynHeikoS: too long to read!16:32
HeikoSlisitsyn lol16:32
HeikoSlambday discussed the enum thing16:32
HeikoSlisitsyn I mean16:33
HeikoSlisitsyn PR incoming, you can read that instead :)16:33
gf712OK!16:33
lisitsynHeikoS: oh gut gut16:33
gf712ttyl16:33
lisitsyngf712: kiev!16:33
HeikoSja sehr gut16:33
HeikoSlisitsyn gf712 goes to Russia16:33
lisitsynit is not russia yet16:33
lisitsyn:P :P16:34
lisitsynHeikoS: seriously? why? :)16:35
HeikoShehehe16:35
lisitsynHeikoS: should I read the discussion above?16:36
HeikoSlisitsyn no it is just a summary of what we discussed on phone16:36
lisitsynah ok ok16:36
HeikoSlisitsyn have a global map that maps string to enum int16:36
HeikoSand then use that to avoid all these enum types in the interface16:37
lisitsynyeah that's probably the best16:37
lisitsynwell16:37
HeikoSlisitsyn one thing is location of map16:37
lisitsynlet's say it is not the worst16:37
lisitsyn:D16:37
HeikoSfor now it needs to be static and populated by classes16:37
HeikoSlisitsyn but in future it would be runtime populated by loading a plugin16:37
HeikoSso not sure how to best anticipate that16:37
lisitsynHeikoS: well on load it can be passed to a class16:37
HeikoSlisitsyn it is not the nicest thing but still nicer than class list :D16:37
lisitsynyeah16:38
HeikoSlisitsyn yes...just thinking how to minimize future refactoring efforts16:38
-!- HeikoS [5534e679@gateway/web/cgi-irc/kiwiirc.com/ip.85.52.230.121] has quit [Ping timeout: 246 seconds]17:09
-!- gf712 [c13cdcfd@gateway/web/freenode/ip.193.60.220.253] has quit [Ping timeout: 256 seconds]18:37
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun22:08
-!- mode/#shogun [+o wiking] by ChanServ22:08
-!- wiking [~wiking@huwico/staff/wiking] has quit [Client Quit]22:10
--- Log closed Thu Feb 21 00:00:20 2019

Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!