--- Log opened Fri Jan 18 00:00:32 2019 | ||
-!- Netsplit *.net <-> *.split quits: shogun-buildbot | 03:00 | |
-!- Netsplit over, joins: shogun-buildbot | 03:07 | |
-!- shubham808 [~atom@14.139.240.247] has joined #shogun | 08:29 | |
-!- gf712 [90520892@gateway/web/freenode/ip.144.82.8.146] has joined #shogun | 09:42 | |
-!- gf712 [90520892@gateway/web/freenode/ip.144.82.8.146] has quit [Ping timeout: 256 seconds] | 09:47 | |
-!- Lefteris [836fb90d@gateway/web/freenode/ip.131.111.185.13] has quit [Ping timeout: 256 seconds] | 09:47 | |
-!- gf712 [90520892@gateway/web/freenode/ip.144.82.8.146] has joined #shogun | 09:52 | |
-!- shubham808 [~atom@14.139.240.247] has quit [Ping timeout: 245 seconds] | 11:36 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 12:04 | |
-!- mode/#shogun [+o wiking] by ChanServ | 12:04 | |
-!- gf712 [90520892@gateway/web/freenode/ip.144.82.8.146] has quit [Ping timeout: 256 seconds] | 12:06 | |
-!- gf712 [8028b333@gateway/web/freenode/ip.128.40.179.51] has joined #shogun | 12:42 | |
-!- gf712 [8028b333@gateway/web/freenode/ip.128.40.179.51] has quit [Quit: Page closed] | 13:05 | |
-!- gf712 [8028b333@gateway/web/freenode/ip.128.40.179.51] has joined #shogun | 14:24 | |
-!- HeikoS [5aae0436@gateway/web/cgi-irc/kiwiirc.com/ip.90.174.4.54] has joined #shogun | 15:47 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 15:48 | |
@HeikoS | gf712 yoyo | 15:48 |
---|---|---|
@HeikoS | wiking yo | 15:48 |
@wiking | ho | 15:48 |
@HeikoS | wiking wanted to ping you on the website report thingi | 15:49 |
@wiking | i know | 15:49 |
@wiking | had to jump in eth to some stuff | 15:49 |
@HeikoS | okok | 15:50 |
gf712 | Hi! | 15:51 |
@HeikoS | gf712 hi! | 15:52 |
gf712 | I'll work on the PR for the Python **kwargs | 15:52 |
@HeikoS | cool patch, this will make the python examples finally use all your stuff | 15:52 |
gf712 | Yup, and it works! | 15:52 |
gf712 | But yes I am not sure what caused the issue with KMeans | 15:52 |
@HeikoS | yep the one I merged already used it in the legacy examples | 15:53 |
@HeikoS | and notebooks (though I didnt run those) | 15:53 |
@HeikoS | yeah the kmeans is weird | 15:53 |
gf712 | I tried out in my machine and I had the same issue | 15:53 |
gf712 | I didn't look too much into it because it works fine with the new API | 15:54 |
@HeikoS | can you check the example python code that is generated | 15:54 |
@HeikoS | before and after? | 15:54 |
@HeikoS | because it seems like the .put("distance", d) is missing | 15:54 |
@HeikoS | wiking you had a look at this c++ committee doc? | 15:55 |
@wiking | HeikoS: yep, today i'll add stuff | 15:55 |
@wiking | it's a good initiative | 15:55 |
@wiking | dunno how long it'll take | 15:55 |
@HeikoS | c++ 31? :D | 15:55 |
@wiking | but basically they are solving all the things | 15:55 |
@wiking | that we are doing | 15:55 |
@wiking | :D | 15:55 |
@wiking | linalg etc etc | 15:55 |
@wiking | :) | 15:55 |
@HeikoS | that is good | 15:57 |
@HeikoS | autpdiff? | 15:57 |
@wiking | :> | 15:58 |
@wiking | it has been just started | 15:58 |
@HeikoS | would be cool to have linear algebra part of c++, at least the basic stuff | 15:59 |
@HeikoS | and then also build those graphs | 15:59 |
@wiking | there's a proposal for graph as well | 16:02 |
@wiking | check the google group | 16:02 |
@wiking | it's active and interesting | 16:02 |
@HeikoS | cool will do | 16:04 |
@HeikoS | gf712 are the rhs/lhs of the distance oject also null in what you posted? | 16:05 |
gf712 | no, distance populated rhs and lhs | 16:07 |
gf712 | EuclideanDistance(disable_sqrt=false,lhs=DenseFeatures(...),m_lhs_squared_norms=Vector<double>(0): [],m_rhs_squared_norms=Vector<double>(0): [],rhs=DenseFeatures(...)) | 16:07 |
@HeikoS | mmh | 16:08 |
@HeikoS | I wonder whether "put" is called | 16:08 |
@HeikoS | can you python debug this? | 16:08 |
@HeikoS | and see inside monkey patch code what happens? | 16:08 |
gf712 | yup, I'll have a better look | 16:11 |
gf712 | but put is not called with sg.KMeans is it? | 16:11 |
gf712 | it seems like m_rhs_squared_norms and m_lhs_squared_norms aren't initialised when using the distance factory | 16:14 |
gf712 | could that be the issue? | 16:14 |
@HeikoS | the default ctor of distance doesnt do that? | 16:20 |
@HeikoS | gf712 ? | 16:20 |
gf712 | doesn't seem like it | 16:20 |
gf712 | but that isn't the issue | 16:21 |
gf712 | kmeans=sg.KMeans(k=2, distance=d) | 16:21 |
gf712 | doesn't work | 16:21 |
gf712 | but then kmeans=sg.KMeans(2, d) works... | 16:21 |
@HeikoS | ok needs a cleanup the thing you rwrote above. all properties need to be initialized by the default ctors | 16:21 |
@HeikoS | anyways | 16:21 |
@HeikoS | we need to look at what happens in the python code you wrote | 16:22 |
@HeikoS | that calls all the put | 16:22 |
@HeikoS | because I think | 16:22 |
@HeikoS | with the way things work now | 16:22 |
@HeikoS | sg.KMeans accepts kwargs | 16:22 |
@HeikoS | but just simply ignores them | 16:22 |
@HeikoS | since it is never replaced | 16:22 |
@HeikoS | ah yeah that must be it | 16:23 |
@HeikoS | you see what I mean? | 16:23 |
@HeikoS | sg.KMeans just happens to accept kwargs without throwing an error | 16:23 |
gf712 | Ah ok! | 16:23 |
gf712 | so it caused these issues when I changed python.json | 16:23 |
@HeikoS | yes, pretty subtle | 16:24 |
gf712 | But then everything is ok if we use the factory instead of KMeans? | 16:24 |
@HeikoS | it is bad that sg.KMeans doesnt moan upon receiving wrong arguments | 16:24 |
@HeikoS | yes it is | 16:24 |
@HeikoS | but changing the behaviour might lead to undefined behaviour of the examples | 16:25 |
@HeikoS | here we were lucky | 16:25 |
@HeikoS | that kmeans asserts for a distance | 16:25 |
@HeikoS | some algorithms dont | 16:25 |
gf712 | hmm, how do the other algorithms handle kwargs in python? | 16:25 |
@HeikoS | idk | 16:25 |
@HeikoS | usually all ctors throw error | 16:25 |
@HeikoS | try calling sg.KMeans with some random arugments | 16:26 |
@HeikoS | (Pdb) sg.KMeans(10, 10, 10)*** NotImplementedError: Wrong number or type of arguments for overloaded function 'new_KMeans'. Possible C/C++ prototypes are: shogun::CKMeans::CKMeans() shogun::CKMeans::CKMeans(int32_t,shogun::CDistance *,bool) shogun::CKMeans::CKMeans(int32_t,shogun::CDistance *) shogun::CKMeans::CKMeans(int32_t,shogun::C | 16:26 |
@HeikoS | Distance *,shogun::SGMatrix< float64_t >) | 16:26 |
@HeikoS | gf712 stuff like that | 16:26 |
@HeikoS | but in fact | 16:26 |
@HeikoS | (Pdb) sg.KMeans(foo=1, bar=2)KMeans(cluster_centers={function},data_locked=false,dimensions=0,distance=null,k=3,labels=null,max_iter=10000,max_train_time=0,radiuses=Vector<double>(0): [],solver_type=0,store_model_features=true) | 16:26 |
@HeikoS | I never noticed that | 16:26 |
@HeikoS | it is bad | 16:26 |
gf712 | yup, that's what was happening with the example | 16:27 |
@HeikoS | well ok, in your case, changing to the factory solves it | 16:27 |
gf712 | but if we use put we don't have these issues | 16:27 |
gf712 | since it raises an error if the arg doesn't exist | 16:27 |
@HeikoS | but we do have places in the examples where explicit ctors are used | 16:28 |
@HeikoS | we would need to change all of those to factories first, or not use kwargs | 16:28 |
gf712 | but the plan is to use factories right? | 16:28 |
@HeikoS | so explicit ctors AND kwargs is a nogo in meta examples | 16:28 |
@HeikoS | yes it is | 16:28 |
@HeikoS | just talking about what there is | 16:28 |
@HeikoS | before we merge your PR, we need to briefly look at all examples | 16:29 |
gf712 | ok, but when we check against the cpp results we would get an error right? | 16:29 |
@HeikoS | meta examples that is | 16:29 |
gf712 | because the results would be different | 16:29 |
@HeikoS | since only those use the kwargs stuff | 16:29 |
@HeikoS | legacy dont | 16:29 |
@HeikoS | ah good point | 16:29 |
@HeikoS | well | 16:29 |
@HeikoS | not all examples have a test file | 16:29 |
gf712 | true, another reason to move all to meta | 16:29 |
@HeikoS | I suggest: let's merge and solve this in another PR | 16:30 |
@HeikoS | like: quickly look at them all and fix the ones that need | 16:30 |
@HeikoS | maybe there are none | 16:30 |
gf712 | yup, it's on the todo list for 7.0.0 right? :p | 16:30 |
gf712 | as in change all to the new API | 16:31 |
@HeikoS | yep | 16:31 |
gf712 | OK, I'll just make some minor changes for the documentation in case we all get hit by a bus... | 16:31 |
@HeikoS | hehe | 16:31 |
@HeikoS | yeah and this double string name thing would be good to get rid of | 16:32 |
@HeikoS | otherwise let | 16:32 |
@HeikoS | 's go :) | 16:32 |
gf712 | btw, did you see my "did you mean..." implementation? | 16:32 |
@HeikoS | link? | 16:35 |
gf712 | https://github.com/shogun-toolbox/shogun/pull/4473 | 16:35 |
gf712 | inspired by my lack of ability to spell perceptron | 16:36 |
@HeikoS | ah! | 16:37 |
@HeikoS | haha :D | 16:37 |
@HeikoS | checking | 16:37 |
@HeikoS | understand | 16:38 |
@HeikoS | good idea in general | 16:38 |
@HeikoS | but doing it in python I am not so sure | 16:38 |
@HeikoS | an autocomplete would be something done in python | 16:38 |
@HeikoS | but this string parsing stuff .... maybe rather import a lib in c++ and do in via that? | 16:39 |
gf712 | yup, was more of a proof of concept | 16:39 |
@HeikoS | this would be implemented in swig c++ | 16:39 |
@HeikoS | so not within libshogun | 16:39 |
gf712 | Just didn't have levenshtein implementation in C++ at hand | 16:39 |
@HeikoS | but in the swig extension | 16:39 |
@HeikoS | I think this is a really good idea | 16:40 |
@HeikoS | we can even have this for put/get | 16:40 |
@HeikoS | So I like the idea | 16:40 |
gf712 | Yup, since we can get the param names | 16:40 |
@HeikoS | in Python, I would love to see some tab autocomplete | 16:40 |
@HeikoS | but I think we shouldn't do this correcting just for the python apiu | 16:40 |
@HeikoS | too much pollution for the effect (imo) | 16:41 |
gf712 | not sure how that works.. would have to dig in to ipython | 16:41 |
@HeikoS | lisitsyn was talking about this | 16:41 |
@HeikoS | so I suggest we leave it to him | 16:41 |
@HeikoS | but in fact | 16:41 |
@HeikoS | this thing you did in python there | 16:41 |
@HeikoS | would be a very neat entrance taslk for GSoC | 16:41 |
@HeikoS | for a student to do this in shogun.i | 16:41 |
gf712 | OK, I can leave the PR open as a template | 16:42 |
@HeikoS | yes, would you mind writing an issue with this? | 16:42 |
@HeikoS | Ill edit it and tag it | 16:42 |
gf712 | Yup, I can do that | 16:42 |
@HeikoS | And say that it related to the "user experience" GSoC project | 16:43 |
@HeikoS | (no link needed as those do change) | 16:43 |
wuwei[m] | HeikoS: hey, I just added some roadmap | 16:43 |
@HeikoS | wuwei[m] cool will check | 16:44 |
@HeikoS | nice, yeah this will make it easier for this PR to evolve | 16:45 |
@HeikoS | wuwei[m] so speaking of GSoC | 16:45 |
@HeikoS | what would you like to see being done in a project by a student? | 16:45 |
wuwei[m] | I hope the student to help with the ongoing refactor, and better xval (continue the last year's story) | 16:47 |
wuwei[m] | distance/kernel api | 16:48 |
wuwei[m] | these might be a bit difficult, but important to the machine refactor | 16:48 |
@HeikoS | cool, so let's make a list maybe? | 16:49 |
@HeikoS | xvalidation | 16:49 |
@HeikoS | distance/kernel | 16:49 |
@HeikoS | what else? | 16:50 |
wuwei[m] | and maybe string features, but this one can have lower priority | 16:50 |
wuwei[m] | adding EmbedStringFeatures, and removing SGString | 16:51 |
@HeikoS | yeah both good points | 16:51 |
@HeikoS | maybe some of the substitution errors ir not a failure pattern stuff? you saw the recent PRs on this right? | 16:52 |
@HeikoS | wuwei[m] how do we make the project sound more interesting that simply "refacotring"? :D | 16:52 |
wuwei[m] | yeah I saw that pr | 16:52 |
wuwei[m] | does "moderizing" sound better :) | 16:53 |
@HeikoS | yes that is already a bit better | 16:54 |
@HeikoS | we can maybe think a bit why you were interested last year? | 16:54 |
@HeikoS | and then try to use this also for this year's project | 16:54 |
wuwei[m] | something like "hacking into a huge codebase" | 16:55 |
wuwei[m] | that's why I'm interested | 16:55 |
@HeikoS | Also, could you remove/prune the things that have been done on the wiki page: https://github.com/shogun-toolbox/shogun/wiki/GSoC_2019_project_detox | 16:57 |
@HeikoS | I will add something in those hacking a huge codebase lines | 16:57 |
wuwei[m] | sure will update it | 16:57 |
@HeikoS | oh wait i pasted wrong project | 16:57 |
@HeikoS | 1 sec | 16:57 |
@HeikoS | ok done | 16:58 |
@HeikoS | as a first step: remove all that has been solved | 16:59 |
@HeikoS | next step. add bullet points of what we want to do | 16:59 |
@HeikoS | next step: add links to all open PRs and other ressources that we can show so that people have an idea of the work that lies ahead | 16:59 |
@HeikoS | I will then write some text etc | 16:59 |
@HeikoS | lisitsyn yo! | 17:05 |
wuwei[m] | re immutable features, last year I dropped a few non-const methods, the rest can be done after we use feature iterators | 17:06 |
@HeikoS | I guess we need to package and structure this somehow | 17:10 |
@HeikoS | so feel free to heavily edit things | 17:10 |
@HeikoS | put bullet points | 17:10 |
@HeikoS | and I will turn them into some story later | 17:10 |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 17:24 | |
-!- Lefteris [836fb90d@gateway/web/freenode/ip.131.111.185.13] has joined #shogun | 17:25 | |
@HeikoS | Lefteris yo! | 17:25 |
Lefteris | hello | 17:25 |
Lefteris | I thought I was in in the channel but it was just stuck | 17:25 |
@HeikoS | lol no worries | 17:25 |
@HeikoS | so | 17:26 |
@HeikoS | we now have this single get method gil added | 17:26 |
@HeikoS | I put a link to the commit in your PR | 17:26 |
Lefteris | ok | 17:26 |
@HeikoS | this tried all the options get_real, get_real_vector, get_int ... etc | 17:26 |
@HeikoS | it doesnt try one for srring list | 17:26 |
@HeikoS | and actually, that method doesnt even exist | 17:26 |
@HeikoS | (since we never exposed sting lists to the new API yet) | 17:26 |
@HeikoS | so we need to add this to the swig interfaces and this single get method | 17:27 |
@HeikoS | so need to map | 17:27 |
@HeikoS | SGObject::get<SGStringList<bool>> to get_bool_string_list | 17:27 |
@HeikoS | etc | 17:27 |
Lefteris | I see | 17:28 |
@HeikoS | SGObject::get<SGStringList<char>> to get_char_string_list | 17:28 |
@HeikoS | I suggest we start with char and see how it goes? | 17:28 |
Lefteris | great thank you | 17:28 |
Lefteris | yes. there is an issue with the java version too but I will solve the python first | 17:28 |
@HeikoS | yeah that is usually the best approach | 17:29 |
@HeikoS | the shogun.i file contains a lot of magic between c++ and the interfaces | 17:29 |
@HeikoS | in particular translation of templated methods to python names etc | 17:30 |
Lefteris | ok | 17:30 |
@HeikoS | Lefteris it should be relatively quick to add this method | 17:34 |
@HeikoS | IIRC all swig interfaces support string lists as a type | 17:35 |
Lefteris | yes. I am testing now | 17:35 |
@HeikoS | It would be great to have this exposed to the API actually, major step forward in porting the string examples/applications | 17:35 |
Lefteris | yes, many of the examples use it. | 17:35 |
gf712 | Posted the issue in https://github.com/shogun-toolbox/shogun/issues/4475 | 17:36 |
Lefteris | a lot of yak shaving for this one | 17:36 |
@HeikoS | Lefteris big codebase for you :D | 17:37 |
Lefteris | probably | 17:37 |
@HeikoS | gf712 btw you think we could clean this thing up a bit, rather than doing all this copy-pasting: https://github.com/shogun-toolbox/shogun/blob/develop/src/interfaces/swig/shogun.i#L233 | 17:37 |
gf712 | yup, can use sg._rename_python_function | 17:38 |
gf712 | I can put it all in the python typemaps.i | 17:38 |
gf712 | will be easier to maintain | 17:38 |
@HeikoS | good idea | 17:39 |
Lefteris | the interfaces confused me a bit but now I amd starting to understand it. It is a good idea to implement when developing scientific softwware | 17:39 |
gf712 | good thing _rename_python_function works for both modules and classes :D | 17:39 |
@HeikoS | Lefteris yeah the interfaces came a long way | 17:40 |
@HeikoS | gf712 when I was a boy a always dreamed of writing code that modifies itself :D | 17:40 |
gf712 | haha it works until at some point you hit some recursion and everything crashes | 17:41 |
@HeikoS | Lefteris the idea now kinda is that we (the shogun devs) do all the annoying work that that researches can easily add algorithms | 17:41 |
gf712 | btw shouldn't levenshtein be implemented in shogun (at some point)? | 17:41 |
@HeikoS | gf712 my inspiration came from "Short Circuit" | 17:42 |
Lefteris | HeikoS: I agree!! | 17:42 |
@HeikoS | gf712 maybe, but only if it would serve some other purpose as well I guess | 17:42 |
gf712 | It just tends to be more useful hamming, which has been implemented | 17:43 |
@HeikoS | gf712 it would be overkill to instantiate CDistance using string features and then do the error msg passing using that or? | 17:43 |
@HeikoS | oh I see | 17:43 |
@HeikoS | maybe then it should be done in a similar way | 17:43 |
@HeikoS | kinda funny if shogun used itself to generate error msgs | 17:43 |
gf712 | maybe, but can return CStringFeatures instead of std::set<std::string> to get all the shogun objects | 17:44 |
gf712 | that would be halfway there | 17:44 |
gf712 | and it would be more optimised using shogun operations (hopefully) | 17:45 |
gf712 | so it might almost be worth it :D | 17:45 |
@HeikoS | we can have a ctor for string features from std | 17:45 |
@HeikoS | where is hamming distance implemented? | 17:45 |
gf712 | and yes, generating it's own error messages would almost be a application | 17:45 |
gf712 | in distances | 17:46 |
@HeikoS | ah yes | 17:46 |
@HeikoS | CHammingWordDistance | 17:46 |
@HeikoS | sigh | 17:46 |
@HeikoS | class CHammingWordDistance: public CStringDistance<uint16_t> | 17:46 |
@HeikoS | I hate those | 17:46 |
gf712 | https://github.com/shogun-toolbox/shogun/blob/develop/src/shogun/distance/HammingWordDistance.h | 17:46 |
gf712 | yup | 17:46 |
@HeikoS | fixing template parameters when inheriting | 17:46 |
@HeikoS | and the algorithm doesnt even make use of that in any way | 17:47 |
@HeikoS | so completely pointless just creating problems ... | 17:47 |
gf712 | haha | 17:47 |
gf712 | I thought about working from that for lv, but yea I lost motivation.. :D | 17:48 |
@HeikoS | for lv? | 17:48 |
gf712 | levenshtein | 17:48 |
gf712 | too complicated to write.. | 17:49 |
@HeikoS | ah I see | 17:49 |
@HeikoS | I am sure there is some c++ out there | 17:49 |
@HeikoS | well entrance task it | 17:49 |
gf712 | yup, I linked it on the issue | 17:49 |
@HeikoS | sometimes there are quite clever people coming along solving those things if these are documented clearly | 17:49 |
gf712 | but I am not sure if it is the dynamic programming solution | 17:50 |
gf712 | which should be much quicker | 17:50 |
@HeikoS | for error msg that shouldnt matter | 17:50 |
gf712 | like the one I wrote in Python | 17:50 |
@HeikoS | for the ml it does | 17:50 |
gf712 | Yup, exactly | 17:50 |
@HeikoS | there we go | 17:51 |
@HeikoS | http://www.jmlr.org/papers/volume17/rieck16a/rieck16a.pdf | 17:51 |
@HeikoS | the authors are also shogun committers | 17:52 |
@HeikoS | http://www.mlsec.org/harry/ | 17:52 |
@HeikoS | they also have another tool called "sally" which is complementary | 17:53 |
@HeikoS | lots of good trivia | 17:53 |
gf712 | The implementation is easy, just need to decide which data structure to use | 17:53 |
@HeikoS | btw any updates on the openml glueing script? | 17:53 |
@HeikoS | I am really curious how that will go | 17:53 |
gf712 | I haven't started on that yet | 17:54 |
gf712 | Was focusing on getting stuff ready for 7.0.0 | 17:54 |
gf712 | but I can give it a go this weekend/next week | 17:54 |
gf712 | need this to go through first, I think https://github.com/openml/openml-python/pull/543 | 17:55 |
@HeikoS | Lefteris any luck with the swig? | 18:05 |
Lefteris | yes, it is working | 18:05 |
@HeikoS | cool | 18:05 |
Lefteris | I will correct the other mistakes I have and try to make java work | 18:05 |
@HeikoS | gf712 that is better actually the release is pressing :) | 18:05 |
@HeikoS | gf712 as said you can just start doing a simple python script | 18:06 |
@HeikoS | where you collect all the calls they do in there | 18:06 |
@HeikoS | dont worry about the java for now Lefteris | 18:06 |
@HeikoS | it is ok if the CI fails | 18:06 |
Lefteris | ok | 18:07 |
@HeikoS | we can fix that in a second step | 18:07 |
@HeikoS | once it works locally send it | 18:07 |
@HeikoS | and then we can iterate | 18:07 |
gf712 | OK, I can write something to get started | 18:07 |
@HeikoS | also the CI tests all the interfaces for you faster than your own machine | 18:07 |
@HeikoS | gf712 things like description api etc | 18:07 |
gf712 | assuming viktors PR is merged | 18:07 |
@HeikoS | gf712 sorry that previous was for Lefteris | 18:10 |
@HeikoS | gf712 I think you can get started quite a bit before viktors PR is merged as we already can see things that are needed from the shogun side | 18:10 |
gf712 | Oh, I just meant using the changes that he is proposing | 18:10 |
gf712 | but yes, I 'll see what is required | 18:11 |
gf712 | and get on it | 18:11 |
@HeikoS | cool | 18:11 |
@HeikoS | I will write some gsoc projects this coming | 18:11 |
@HeikoS | week | 18:11 |
@HeikoS | oh and btw we might end up geting giovannit to support both of you gf712 and Lefteris | 18:12 |
@HeikoS | from another angle on the same project | 18:12 |
@HeikoS | let's see how that goes | 18:12 |
@HeikoS | Ok, I'mm off for now | 18:12 |
@HeikoS | see you guy later | 18:12 |
Lefteris | bye, thanks!! | 18:13 |
gf712 | ok! | 18:15 |
gf712 | see you later | 18:15 |
-!- HeikoS [5aae0436@gateway/web/cgi-irc/kiwiirc.com/ip.90.174.4.54] has quit [Ping timeout: 246 seconds] | 18:22 | |
-!- Lefteris [836fb90d@gateway/web/freenode/ip.131.111.185.13] has left #shogun [] | 18:25 | |
-!- witness [uid10044@gateway/web/irccloud.com/x-dxmrcayopwhxspcd] has joined #shogun | 18:39 | |
-!- witness [uid10044@gateway/web/irccloud.com/x-dxmrcayopwhxspcd] has quit [Quit: Connection closed for inactivity] | 20:48 | |
--- Log closed Sat Jan 19 00:00:34 2019 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!