--- Log opened Wed Feb 20 00:00:19 2019 | ||
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 01:31 | |
-!- mode/#shogun [+o wiking] by ChanServ | 01:31 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 03:35 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 04:30 | |
-!- mode/#shogun [+o wiking] by ChanServ | 04:30 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 246 seconds] | 04:34 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 05:26 | |
-!- mode/#shogun [+o wiking] by ChanServ | 05: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 #shogun | 07:38 | |
-!- wiking [~wiking@host-92-21-85-116.as13285.net] has quit [Changing host] | 07:38 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 07:38 | |
-!- mode/#shogun [+o wiking] by ChanServ | 07:38 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 09:24 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 09:25 | |
-!- mode/#shogun [+o wiking] by ChanServ | 09: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 #shogun | 09:32 | |
-!- gf712_ [c13cdcfd@gateway/web/freenode/ip.193.60.220.253] has joined #shogun | 09: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 #shogun | 09:40 | |
-!- mode/#shogun [+o wiking] by ChanServ | 09:40 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 255 seconds] | 09:45 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 09:54 | |
-!- mode/#shogun [+o wiking] by ChanServ | 09:54 | |
@wiking | lisitsyn: yauza | 10:17 |
---|---|---|
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 10:38 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 10:41 | |
-!- mode/#shogun [+o wiking] by ChanServ | 10: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 #shogun | 11:53 | |
-!- mode/#shogun [+o wiking] by ChanServ | 11:54 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 250 seconds] | 11:58 | |
-!- wiking [~wiking@193.60.220.253] has joined #shogun | 12:00 | |
-!- wiking [~wiking@193.60.220.253] has quit [Changing host] | 12:00 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 12:00 | |
-!- mode/#shogun [+o wiking] by ChanServ | 12:00 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 12:11 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 12:21 | |
-!- mode/#shogun [+o wiking] by ChanServ | 12:21 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 245 seconds] | 12:26 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 12:33 | |
-!- mode/#shogun [+o wiking] by ChanServ | 12:33 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 12:42 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 12:48 | |
-!- mode/#shogun [+o wiking] by ChanServ | 12:48 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Read error: Connection reset by peer] | 12:49 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 12:49 | |
-!- mode/#shogun [+o wiking] by ChanServ | 12:49 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 255 seconds] | 12:53 | |
-!- wiking_ [~wiking@37.205.58.146] has joined #shogun | 12: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 #shogun | 13:02 | |
-!- HeikoS [5534e691@gateway/web/cgi-irc/kiwiirc.com/ip.85.52.230.145] has joined #shogun | 15:08 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 15:12 | |
@HeikoS | gf712 yo! | 15:12 |
@HeikoS | lambday yo | 15: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 #shogun | 15:26 | |
HeikoS | lambday gf712 yo | 15:26 |
-!- mode/#shogun [+o HeikoS] by ChanServ | 15:26 | |
gf712 | Heiko hey! | 15:30 |
gf712 | HeikoS | 15:30 |
@HeikoS | gf712 hi! how are things? | 15:30 |
gf712 | good good, was working with Viktor and Lefteris for the past day and a hald | 15:30 |
gf712 | quite useful | 15:30 |
gf712 | how are things there? | 15:31 |
@HeikoS | cool | 15:31 |
@HeikoS | yeah I really liked the second auto pr | 15:31 |
@HeikoS | really neat work | 15:31 |
@HeikoS | good here as well | 15:31 |
gf712 | sorry I didn't quite understand what you meant in the first one | 15:31 |
gf712 | Viktor helped out in the second | 15:31 |
@HeikoS | yeah sure, I wasnt very clear | 15:31 |
@HeikoS | anything unclear as of now? | 15:31 |
@HeikoS | I am currently looking into testig Lefteris new typemap for octave, or string typemaps in general | 15:32 |
gf712 | no, I think I understand what the end goal is | 15:32 |
gf712 | ah is it now working? | 15:33 |
gf712 | we talked about it yesterday and there was an issue before | 15:33 |
gf712 | but should be fixed now | 15:33 |
@HeikoS | what do you mean? | 15:33 |
gf712 | there was some deleting of the original data | 15:34 |
gf712 | but maybe that was something for java | 15:34 |
gf712 | hmm, I am not sure now! | 15:34 |
@HeikoS | not sure | 15:35 |
@HeikoS | I am more about adding string lists to inteegration tests | 15:35 |
@HeikoS | this way we can check what goes in/out and that that is consistent | 15:35 |
@HeikoS | but in any case | 15:35 |
@HeikoS | I wanted to ask you | 15:35 |
@HeikoS | did you get what I meant in the enum email=? | 15:35 |
gf712 | yes, i understand-ish | 15:36 |
gf712 | basically need to replace the enums with something that can be accessed between plugin and base? | 15:36 |
@HeikoS | yes | 15:36 |
@HeikoS | it is a similar problem as some thing I mentioned in your last PR | 15:36 |
@HeikoS | there wont be any central collection of things anymore once shogun is plugin based | 15:37 |
@HeikoS | we can keep the enums in fact, as they are only ints anyways | 15:37 |
@HeikoS | SG_ADD( (machine_int_t*)&liblinear_solver_type, "liblinear_solver_type", "Type of LibLinear solver."); | 15:37 |
@HeikoS | they are registered like this | 15:37 |
@HeikoS | not quite typesafe in terms of put | 15:38 |
@HeikoS | gf712 but we can actually be runtime typesafe at least with the idea that I described | 15:39 |
@HeikoS | where each class registers its own enums somewhere, and how to instantiate the corresponding int value from a string | 15:39 |
gf712 | how would you convert the string to int and back? | 15:40 |
gf712 | not int, enum sorry | 15:40 |
@HeikoS | yes that is the crux | 15:40 |
@HeikoS | I was thinking with a map | 15:40 |
@HeikoS | where each class registers the options | 15:40 |
@HeikoS | map<string, int> | 15:40 |
gf712 | but then the map has to be shared between base and plugin? | 15:41 |
@HeikoS | the map would be central | 15:41 |
gf712 | how would it be populated | 15:41 |
@HeikoS | and upon loading a plugin, it registers its options | 15:41 |
@HeikoS | so for now we could have a global map where the classes dump their values | 15:41 |
@HeikoS | then later this is refactored/changed to plugin loading | 15:41 |
@HeikoS | this 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 anymore | 15:42 |
@HeikoS | and most importantly, we dont need to change any shogun code | 15:42 |
@HeikoS | i.e. the classes internally still work with enums as before, no new types or other changes required | 15:42 |
@HeikoS | so in the naive version, a static map where each class puts a number of entries | 15:44 |
@HeikoS | best would be to structure it | 15:44 |
@HeikoS | so that one can find out what enums are available for each class | 15:44 |
@HeikoS | and do some checks inside put (is that string available for the given class) | 15:44 |
@HeikoS | see what I mean? | 15:44 |
gf712 | hmmm yes, kinda! | 15:46 |
gf712 | just reread your email and it makes more sense to me now | 15:46 |
gf712 | is there a feature branch yet btw? | 15:46 |
@HeikoS | gf712 for the enum thingi? | 15:46 |
gf712 | maybe can start writing something | 15:46 |
gf712 | yes | 15:46 |
@HeikoS | I think this can be done in a single PR | 15:47 |
@HeikoS | not that big of a change | 15:47 |
@HeikoS | need the map, an example how to register, an overload of put, and an updated meta example | 15:47 |
@HeikoS | and that's it | 15:47 |
@HeikoS | and then some details that are not important for the first iteration | 15:48 |
gf712 | so how would the overload of put work? | 15:48 |
gf712 | would it be for strings? | 15:49 |
gf712 | and then that maps to enum? | 15:49 |
@HeikoS | yes I think | 15:49 |
gf712 | and then each class needs to know which enum type it can access? | 15:49 |
@HeikoS | 1. check if there is a match between available enums and the provided string | 15:49 |
@HeikoS | 2, convert to int | 15:49 |
@HeikoS | 3. call the normal put | 15:49 |
@HeikoS | gf712 yeah I think when registering the enums, the class name can be included somehow, so that it is structured | 15:50 |
@HeikoS | ike | 15:50 |
@HeikoS | LibLinear,LIBLINEAR_SOLVER_TYPE | 15:50 |
@HeikoS | LibLinear.LIBLINEAR_SOLVER_TYPE | 15:51 |
@HeikoS | so maybe a nested map | 15:51 |
@HeikoS | map<string, map<string, int> | 15:51 |
@HeikoS | or something | 15:51 |
@HeikoS | similar | 15:51 |
gf712 | hmmm, I guess the map will never grow too much | 15:51 |
gf712 | to causes mem issues | 15:51 |
@HeikoS | no I dont think so | 15:51 |
gf712 | since its all in the stack | 15:51 |
@HeikoS | it is all proportional to number of classes | 15:52 |
@HeikoS | since number of enums is more or less constant | 15:52 |
@HeikoS | number of enums per class tha tis | 15:52 |
gf712 | just thinking that there might be lots of overlap no? | 15:52 |
@HeikoS | or each class has its own static map and registers that in the global map that maps class name to enum map | 15:52 |
@HeikoS | gf712 like enums that are used in multiple classes? | 15:53 |
gf712 | I mean there will be classes which require the same enums right | 15:53 |
gf712 | ? | 15:53 |
gf712 | ah wait | 15:53 |
@HeikoS | no actually not | 15:54 |
@HeikoS | most classes define their own | 15:54 |
@HeikoS | the only ones shared are those internal ones like MachineType | 15:54 |
gf712 | map<string, map<string, int> -> {"class_name", {"??", int}} | 15:54 |
gf712 | what goes in ?? :p | 15:54 |
@HeikoS | but those wouldn't even be registered as they are not for user API | 15:54 |
gf712 | and int | 15:54 |
@HeikoS | {"class_name", {"enum_string", int}} | 15:55 |
@HeikoS | enums["LibLinear"]["L2R_LR"] -> 0 | 15:55 |
gf712 | so int would be for example LIBLINEAR_SOLVER_TYPE::L2R_LR | 15:55 |
gf712 | ah ok | 15:55 |
gf712 | which is 0 | 15:55 |
gf712 | cool! | 15:55 |
@HeikoS | enums["LibLinear"]["L2R_L2LOSS_SVC_DUAL"] -> 1 | 15:55 |
@HeikoS | etc | 15:55 |
@HeikoS | and then | 15:55 |
@HeikoS | obj.put("solver_type", "bla") -> "LibLinear.solver_type cannot take value "bla"" | 15:56 |
@HeikoS | and maybe | 15:56 |
@HeikoS | obj.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 |
gf712 | param_options? | 15:57 |
@HeikoS | yes | 15:57 |
@HeikoS | this can be shared with the "auto" stuff btw | 15:58 |
@HeikoS | same method would also tell the options for auto paramters | 15:58 |
@HeikoS | but thats a detail | 15:58 |
@HeikoS | param_options is a good name | 15:58 |
gf712 | hmmm, OK, I can give this a go | 15:58 |
gf712 | but it is an entrance task right? | 15:59 |
@HeikoS | no, I think that would be too much | 15:59 |
@HeikoS | it would be an entrance task to deploy this for all examples | 15:59 |
@HeikoS | so that we can remove LibLinear and the likes from swig (currently blocked by this) | 15:59 |
@HeikoS | so yes, would be great if you had a good at this | 16:00 |
gf712 | OK, I'll try and draft something, create PR and go from there? | 16:00 |
@HeikoS | yes good! | 16:00 |
gf712 | against develop right? | 16:00 |
@HeikoS | yes for now | 16:00 |
@HeikoS | if it turns out that this grows too big we can do a branch | 16:00 |
@HeikoS | but I dont expect it to | 16:00 |
gf712 | ok! | 16:00 |
@HeikoS | and PRs are nice to discuss | 16:00 |
gf712 | any ideas where to put this static map btw? | 16:01 |
gf712 | just to get started | 16:01 |
@HeikoS | good question | 16:01 |
gf712 | would it live in the session, i.e. init? | 16:01 |
@HeikoS | later on, it would sit with the plugin loader | 16:01 |
@HeikoS | no i dont think | 16:01 |
@HeikoS | because it wont be populated via constructors | 16:02 |
@HeikoS | but rather by static class code | 16:02 |
@HeikoS | mmh | 16:02 |
@HeikoS | later on that will change though | 16:02 |
@HeikoS | plugins are loaded at runtime | 16:02 |
@HeikoS | I dont know | 16:03 |
@HeikoS | maybe sgobject for now, and we can move it depending on feedback of the others | 16:03 |
@HeikoS | or even its own file | 16:03 |
@HeikoS | ah no | 16:04 |
@HeikoS | sgobject is maybe a good start | 16:04 |
@HeikoS | to see how all this plays out | 16:04 |
gf712 | OK, I'll try it out and see what happens :D | 16:04 |
@HeikoS | the map for now needs to be static, but later on definitely can be populated at runtime (upon plugin load) | 16:04 |
@HeikoS | so maybe keep that in mind when writing it | 16:04 |
@HeikoS | lisitsyn at first wanted to autogenerate code that instantiates the map, just like we do for class_list | 16:05 |
@HeikoS | but I like the "classes register their enums" better | 16:05 |
@HeikoS | since they already register parameters anyways | 16:05 |
gf712 | hmmm ok, I see! I think | 16: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 #shogun | 16:13 | |
HeikoS | gf712 sorry my phone died | 16:13 |
HeikoS | and with that my wifi tether | 16:13 |
gf712 | no problem, was grabbing coffee anyway | 16:16 |
HeikoS | same here :) | 16:16 |
HeikoS | btw did you see the workshop in cambrdige? | 16:16 |
HeikoS | see | 16:16 |
gf712 | ah was about to tell you | 16:16 |
gf712 | I am going to Kiev on the Friday | 16:16 |
gf712 | so would only be able to go on Thursday.. | 16:17 |
HeikoS | i see | 16:18 |
HeikoS | maybe come round still, i think this might be fun | 16:18 |
HeikoS | there will be people who are interested in using what we are building | 16:19 |
gf712 | yea I would be keen, but can I still register? | 16:19 |
gf712 | are you going? | 16:19 |
HeikoS | yes you shoul dbe able to | 16:22 |
HeikoS | yes I have registered | 16:22 |
HeikoS | need to look into flights/etc soon | 16:23 |
gf712 | ok, let me have a look | 16:23 |
gf712 | do you think you'll be going straight to Cambridge btw, or you passing by the ATI? | 16:23 |
HeikoS | i think ill come to London first, and then take the train over there | 16:25 |
HeikoS | since I can sort some stuff with my flat then | 16:25 |
HeikoS | so can spend a day at the ati | 16:25 |
HeikoS | gf712 ok cool, my connection is a bit flaky, will do some more coding now | 16:32 |
HeikoS | see you later | 16:32 |
lisitsyn | HeikoS: too long to read! | 16:32 |
HeikoS | lisitsyn lol | 16:32 |
HeikoS | lambday discussed the enum thing | 16:32 |
HeikoS | lisitsyn I mean | 16:33 |
HeikoS | lisitsyn PR incoming, you can read that instead :) | 16:33 |
gf712 | OK! | 16:33 |
lisitsyn | HeikoS: oh gut gut | 16:33 |
gf712 | ttyl | 16:33 |
lisitsyn | gf712: kiev! | 16:33 |
HeikoS | ja sehr gut | 16:33 |
HeikoS | lisitsyn gf712 goes to Russia | 16:33 |
lisitsyn | it is not russia yet | 16:33 |
lisitsyn | :P :P | 16:34 |
lisitsyn | HeikoS: seriously? why? :) | 16:35 |
HeikoS | hehehe | 16:35 |
lisitsyn | HeikoS: should I read the discussion above? | 16:36 |
HeikoS | lisitsyn no it is just a summary of what we discussed on phone | 16:36 |
lisitsyn | ah ok ok | 16:36 |
HeikoS | lisitsyn have a global map that maps string to enum int | 16:36 |
HeikoS | and then use that to avoid all these enum types in the interface | 16:37 |
lisitsyn | yeah that's probably the best | 16:37 |
lisitsyn | well | 16:37 |
HeikoS | lisitsyn one thing is location of map | 16:37 |
lisitsyn | let's say it is not the worst | 16:37 |
lisitsyn | :D | 16:37 |
HeikoS | for now it needs to be static and populated by classes | 16:37 |
HeikoS | lisitsyn but in future it would be runtime populated by loading a plugin | 16:37 |
HeikoS | so not sure how to best anticipate that | 16:37 |
lisitsyn | HeikoS: well on load it can be passed to a class | 16:37 |
HeikoS | lisitsyn it is not the nicest thing but still nicer than class list :D | 16:37 |
lisitsyn | yeah | 16:38 |
HeikoS | lisitsyn yes...just thinking how to minimize future refactoring efforts | 16: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 #shogun | 22:08 | |
-!- mode/#shogun [+o wiking] by ChanServ | 22: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!