00:01:02 | Max00355 | Wow, nice :P |
00:01:03 | * | Sergio965 joined #nimrod |
00:01:08 | Max00355 | http://github.com/Max00355 |
00:01:12 | Max00355 | That's mine. |
00:02:19 | dom96 | yeah, some of my projects are also in https://github.com/nimrod-code |
00:02:43 | Max00355 | Oh, wow, awesome. |
00:05:29 | dom96 | hrm, BlooCoin sounds familiar. |
00:05:46 | dom96 | so many *coin nowadays though heh |
00:33:39 | Araq | good night |
00:36:26 | DAddYE | hey there, another noob question |
00:36:36 | DAddYE | I'm unable to find any doc about that |
00:36:46 | DAddYE | if I've: proc poll_init*(loop: ptr TLoop) |
00:37:09 | DAddYE | what the best way to provide a pointer of TLoop |
00:37:14 | DAddYE | (allocated) |
00:37:17 | DAddYE | ? |
00:37:47 | dom96 | addr loop |
00:38:02 | dom96 | But unless you are interfacing with C you shouldn't be using 'ptr' |
00:38:13 | dom96 | use var or 'ref' |
00:39:05 | DAddYE | dom96: I'm interfacing with c |
00:39:24 | DAddYE | dom96: so you mean some: var loop = TLoop.new |
00:39:40 | DAddYE | pool(addr(loop)) |
00:39:41 | DAddYE | ? |
00:39:42 | dom96 | new() only works for 'ref' I think |
00:39:48 | DAddYE | dom96: exaclty |
00:40:48 | DAddYE | so how I can get a pointer of a object? |
00:44:08 | dom96 | DOesn't the C lib have a way to init this TLoop structure? |
00:44:09 | dom96 | oh yeah |
00:44:09 | dom96 | poll_init does the initing. |
00:44:09 | dom96 | Is that a function from the C lib? |
00:44:09 | dom96 | if so then: |
00:44:09 | dom96 | var loop: TLoop |
00:44:09 | dom96 | poll_init(addr loop) |
00:44:44 | DAddYE | dom96: lemme try |
00:45:05 | dom96 | by doing 'addr obj' |
00:45:11 | dom96 | or addr(obj) |
00:46:24 | DAddYE | SIGSEGV: Illegal storage access. (Attempt to read from nil?) |
00:46:34 | DAddYE | so should be allocated before |
00:49:12 | dom96 | show me your code |
00:51:51 | DAddYE | https://github.com/DAddYE/gist/blob/master/uv.nim |
00:53:39 | dom96 | where is the code where you are using the uv wrapper? |
00:54:06 | DAddYE | right now, I'm writing a test so |
00:54:10 | DAddYE | I'm initializing a timer |
00:54:18 | DAddYE | no more than one line |
00:54:28 | DAddYE | var timer = TTimer.new |
00:54:37 | DAddYE | let Loop = default_loop() |
00:54:58 | DAddYE | err = timer_init(loop, addr timer[]) |
00:55:04 | DAddYE | ^^^ |
00:55:20 | dom96 | huh? |
00:55:26 | dom96 | You're not even using poll_init? |
00:55:44 | dom96 | TTimer.new doesn't look right |
00:56:23 | DAddYE | dom96: was a copy/paste issue but the problem is the same |
00:56:24 | dom96 | ok, so default_loop returns a ptr TLoop |
00:56:37 | DAddYE | dom96: exactly |
00:56:42 | dom96 | I think you'd be safer using 'var' there |
00:56:50 | DAddYE | ok |
00:57:22 | dom96 | and then remove the [] |
00:57:38 | dom96 | on which line does the segfault happen? |
00:58:13 | DAddYE | this was a try since addr(TTimer.new) => pointer to => ref TTimer |
00:58:27 | DAddYE | [] is a dereference so a pointer to pointer |
00:58:30 | DAddYE | (I guess) |
00:58:45 | dom96 | lol, yeah. I don't think doing that is a good idea :P |
00:58:55 | dom96 | var timer: TTimer |
00:59:01 | dom96 | var loop = default_loop() |
00:59:04 | DAddYE | okj |
00:59:10 | dom96 | err = timer_init(loop, addr timer) |
00:59:12 | dom96 | Should work. |
00:59:21 | dom96 | But i'm not familiar with libuv |
01:00:36 | DAddYE | yep, it does |
01:00:38 | DAddYE | thanks man |
01:00:52 | DAddYE | just because is day 2 for me in Nimrod |
01:01:23 | DAddYE | var timer: TTimer means => var timer = null of TTimer type ? |
01:02:33 | DAddYE | var timer: TTimer means => declares timer to have type TTimer |
01:02:44 | DAddYE | and timer is NULL |
01:02:45 | DAddYE | right? |
01:03:11 | dom96 | kinda |
01:03:42 | dom96 | var timer: TTimer # declares a variable of name `timer` and type `TTimer` |
01:04:10 | dom96 | Each of the fields of the object are initialised to their defaults. |
01:04:25 | DAddYE | dom96: so after timer_init(loop, addr timer) |
01:04:27 | dom96 | i.e. if TTimer object has an int field it is '0' (IIRC) not nil. |
01:04:32 | dom96 | timer itself is not nil |
01:04:47 | DAddYE | what happen to the original timer var? |
01:04:56 | DAddYE | how I can see fields populated ? |
01:05:09 | dom96 | I dunno what libuv does, but it possibly sets the fields to some values. |
01:05:13 | dom96 | repr may work |
01:06:02 | * | Associat0r quit (Quit: Associat0r) |
01:06:02 | DAddYE | echo repr(timer) |
01:06:04 | DAddYE | SIGSEGV: Illegal storage access. (Attempt to read from nil?) |
01:06:07 | DAddYE | -.- |
01:06:19 | DAddYE | from the manual should fill fields |
01:08:38 | dom96 | maybe it doesn't. |
01:08:49 | dom96 | why do you want to see all the fields? |
01:12:37 | DAddYE | dom96: just for testing |
01:13:09 | dom96 | I still feel that repr should never just crash. |
01:13:31 | dom96 | Not sure what Araq's take was on that. |
01:13:47 | DAddYE | echo repr(timer) |
01:13:51 | DAddYE | before timer_init |
01:14:02 | DAddYE | report correctly all fields to their default value |
01:14:06 | DAddYE | after timer_init |
01:14:09 | DAddYE | just crash |
01:22:11 | * | q66 quit (Quit: Leaving) |
01:29:12 | * | DAddYE quit (Remote host closed the connection) |
01:29:46 | * | DAddYE joined #nimrod |
01:33:05 | dom96 | anyway, I have to sleep. |
01:33:07 | dom96 | Good night |
01:34:19 | * | DAddYE quit (Ping timeout: 256 seconds) |
02:13:26 | * | Sergio965 quit (Ping timeout: 240 seconds) |
02:30:21 | * | DAddYE joined #nimrod |
02:34:48 | * | DAddYE quit (Ping timeout: 245 seconds) |
03:10:11 | * | DAddYE joined #nimrod |
03:33:19 | * | Trix[a]r_za is now known as Trixar_za |
03:56:16 | DAddYE | Araq: big question, why nimrod is not case sensitive |
03:56:46 | DAddYE | ? |
04:36:32 | * | OrionPK quit (Read error: Connection reset by peer) |
04:40:08 | Max00355 | Because it isn't Java |
04:43:45 | Max00355 | dom96: BLC sounds famiular you say? They were popular about two months ago. I created it myself frm scratch. |
05:00:57 | DAddYE | Max00355: what does it means? |
05:01:05 | DAddYE | Max00355: every language I know is sensible case |
05:01:12 | DAddYE | maybe Visual Basic isn't |
05:58:37 | * | comex quit (Quit: Coyote finally caught me) |
05:58:45 | * | comex joined #nimrod |
07:07:44 | * | Associat0r joined #nimrod |
07:07:44 | * | Associat0r quit (Changing host) |
07:07:44 | * | Associat0r joined #nimrod |
07:26:02 | * | zahary joined #nimrod |
07:34:15 | Araq | DAddYE: Lisp, Pascal, Ada, Eiffel, Basic are case insensitive |
07:34:49 | Araq | it's mostly some historic thing as keyboards only supported upper case |
07:36:52 | Araq | that said, nimrod is style insensitive because people spend too much time about underscore_crap vs camelCase vs PascalCase |
07:37:01 | Araq | *arguing about |
07:39:08 | DAddYE | Araq: I can agree, but let's say that modern language are case sensitive |
07:39:18 | DAddYE | then u can dictate your stile |
07:39:22 | DAddYE | then u can dictate your stYle |
07:39:31 | DAddYE | like we do with T and P |
07:39:46 | DAddYE | having a sensible case will help me a lot |
07:39:55 | DAddYE | so I can avoid TIo |
07:40:08 | Araq | yes but the idea is that your IDE/editor can render the identifiers as you prefer |
07:40:26 | Araq | though no editor does that yet ;-) |
07:40:41 | DAddYE | Araq: not at all we use and Ide like Eclipse/VS |
07:40:50 | DAddYE | I'm a poor man with vim |
07:40:52 | DAddYE | :D |
07:41:03 | Araq | consistency is better left to tools IME |
07:41:12 | DAddYE | I agree |
07:41:14 | DAddYE | but say that |
07:41:20 | DAddYE | TIo |
07:41:38 | DAddYE | if isn't written by you isn't under stable at first look |
07:41:42 | DAddYE | IO |
07:41:49 | Araq | *shrug* I can deal with your nick here, DAddYE |
07:41:55 | DAddYE | Araq: hahahah |
07:41:57 | * | Trixar_za is now known as Trix[a]r_za |
07:42:04 | DAddYE | I mean, I'm for freedom |
07:42:17 | DAddYE | but _ and camel case are for me the opposite |
07:42:26 | DAddYE | I've a style where |
07:42:33 | DAddYE | Types are CamelCase |
07:42:37 | DAddYE | constant CONSTANT |
07:42:41 | DAddYE | but |
07:42:46 | DAddYE | timer_start |
07:42:49 | Araq | I've programmed in enough languages to not give a shit about these things |
07:42:53 | DAddYE | shouldn't be the same of timerstart |
07:43:13 | * | Trix[a]r_za is now known as Trixar_za |
07:43:50 | Araq | using case to distinguish between different entities is just another form of hungarian notation |
07:43:54 | DAddYE | that's a thing, but consider that I need to spend time to figure out a different name |
07:44:12 | Araq | I agree it causes problems for wrappers |
07:45:02 | Araq | constants are CONSTANT because of the preprocessor |
07:45:08 | DAddYE | Time = object; TIME = enum; [1 .. 60]; |
07:45:14 | Araq | we have no preprocessor so it doesn't make sense |
07:45:40 | DAddYE | proc time() = Time.now |
07:46:02 | DAddYE | is easier (remember that I'm super new) |
07:46:05 | DAddYE | to |
07:46:17 | DAddYE | TTime = object; ETIME = enum; [1 .. 60]; |
07:46:37 | DAddYE | proc time() = TTime.now |
07:46:41 | Araq | there is no ETIME |
07:47:08 | DAddYE | I saw that in some wrappers |
07:47:15 | DAddYE | otherwise (like I've) |
07:47:20 | DAddYE | TTime = object; TIME = enum; [1 .. 60]; |
07:47:35 | DAddYE | proc time2() = Time.now |
07:47:49 | Araq | and then we use TiMe for a time represented as a float? |
07:48:00 | Araq | and why is that a good idea? |
07:48:16 | DAddYE | Araq: I'm not a super expert to say that |
07:48:17 | DAddYE | but |
07:48:33 | DAddYE | ruby, python, go, clojure, |
07:48:36 | DAddYE | scala |
07:48:40 | DAddYE | java |
07:48:45 | DAddYE | and so on are in that way |
07:48:52 | DAddYE | so programmers like me |
07:48:59 | DAddYE | that have code for 10 years |
07:49:17 | DAddYE | have some difficulties to learn a different way |
07:49:54 | DAddYE | TIO, TTIME, TOS, looks more weird than Io Time TimeFloat |
07:50:05 | DAddYE | or OS |
07:50:50 | Araq | you can do 'var time: time' btw |
07:51:05 | Araq | the T vs P is about value vs reference types |
07:51:35 | Araq | which require different coding styles so I thought it is a good idea to keep that convention from delphi |
07:51:37 | DAddYE | but if I omit T/P |
07:51:50 | DAddYE | then when I need a procedure |
07:51:57 | DAddYE | I should invent a name |
07:52:26 | Araq | yeah I figured inventing names is a big problem for many people |
07:53:28 | Araq | btw Go -- does something special with case too |
07:53:35 | DAddYE | yes |
07:53:41 | * | Trixar_za is now known as Trix[a]r_za |
07:53:50 | Araq | python -- likes to be case insensitive |
07:54:03 | Araq | at least Guido wanted that once |
07:54:24 | DAddYE | go, has Camel for public |
07:54:39 | DAddYE | go is very strict about those things and people seems to like it |
07:54:41 | Araq | Java, Scala, Ruby - I don't think the creators of these languages really thought about it |
07:54:51 | DAddYE | hahahah, totally agree |
07:55:40 | DAddYE | can we argue that 90% of common used languages are case sensitive? |
07:55:44 | DAddYE | isn't a thing of style |
07:55:53 | DAddYE | I mean, you know that better than me |
07:56:07 | DAddYE | is more as a habit that we haven't |
07:56:17 | DAddYE | and sensible case reduce at least by 3 |
07:56:25 | DAddYE | our naming rules |
07:57:10 | Araq | *shrug* 90% use {} too |
07:57:33 | DAddYE | not using it |
07:57:41 | DAddYE | is different to say |
07:57:49 | DAddYE | use ∫∫ |
08:00:07 | Araq | http://www.reddit.com/r/programming/comments/1i3qi9/cereal_a_c11_library_for_serialization_binary_xml/cb0sijv |
08:01:18 | Araq | btw experiments showed snake_case to be more readable and yet I hate it |
08:03:06 | DAddYE | I'm for it in procedures |
08:03:16 | DAddYE | helps your readability |
08:03:19 | DAddYE | but like in javashit |
08:03:26 | DAddYE | I've no problems with CamelCase |
08:03:41 | Araq | so what do you do as a language designer? design for the Right Thing (TM) or design for yourself? ;-) |
08:03:43 | DAddYE | camelCase for functions |
08:04:07 | DAddYE | give up the choice |
08:04:14 | DAddYE | to do whatever u what |
08:04:25 | DAddYE | BUT |
08:04:39 | DAddYE | if you want to contribute in my repo, please read my code style guide |
08:04:54 | DAddYE | simple good and okay for most of us |
08:05:05 | DAddYE | http://uscilab.github.io/cereal/index.html |
08:05:12 | DAddYE | wrote in camel case he can |
08:05:22 | DAddYE | if he like it that's okay |
08:05:28 | DAddYE | but I can't |
08:05:33 | DAddYE | and that's my problem :D |
08:05:52 | Araq | but that problem is mitigated in Nimrod ;-) |
08:05:53 | DAddYE | only STUPID that should NO CODE |
08:06:01 | DAddYE | only STUPID that should write NO CODE |
08:06:16 | DAddYE | can do: timer_start then timerstart then TimerStart |
08:06:34 | DAddYE | fortunately never seen that code |
08:06:35 | Araq | you know ... it's all the same to me |
08:06:50 | Araq | it's something like timer-start |
08:07:00 | DAddYE | is lispy |
08:07:05 | DAddYE | I don't like it that much |
08:07:15 | DAddYE | but I wrote a lot of code in clojure |
08:07:27 | DAddYE | and it's okay... for lisp languages |
08:07:54 | DAddYE | maybe you can consider it stupid |
08:07:57 | DAddYE | but like lua |
08:08:15 | DAddYE | people complain about index that start from 1 |
08:08:26 | DAddYE | there are good reason behind it |
08:08:33 | DAddYE | (index of array) |
08:08:36 | Araq | btw psychology tells us people remember the sound of words, not their spelling |
08:09:01 | DAddYE | infact here we came |
08:09:07 | DAddYE | TTime |
08:09:20 | DAddYE | titime? |
08:09:28 | DAddYE | ttime? |
08:09:36 | Araq | t_time ? |
08:09:44 | DAddYE | same |
08:09:46 | Araq | oh wait t_time is bad but time_t is fine |
08:10:03 | DAddYE | or _s if is a struct |
08:10:05 | Araq | because time_t comes from C so it's a classic |
08:10:22 | DAddYE | honestly I hate a lot prefixes |
08:10:25 | DAddYE | and suffixes |
08:10:32 | DAddYE | I prefer camelcase |
08:10:42 | DAddYE | UPPER => I know is a constant |
08:10:59 | DAddYE | Capitalize => That's is a type or a Object |
08:11:03 | Araq | what if it's read from a config file? |
08:11:23 | DAddYE | lower_maybe_underscore => method/procedure |
08:11:34 | Araq | is a "conceptually" constant CONST for you? |
08:12:01 | DAddYE | unless is a crappy json thing |
08:12:03 | DAddYE | yes |
08:12:21 | Araq | fair enough but then the compiler can't enforce your naming scheme |
08:12:28 | Araq | and that sucks imho |
08:12:36 | DAddYE | wait |
08:13:10 | DAddYE | are u sure that CIO is a constant? |
08:13:20 | Araq | no |
08:13:20 | DAddYE | so is the same |
08:13:35 | Araq | but then I don't program by guessing around in the first place |
08:14:20 | Araq | my mouse cursor should tell me what it is when moving over it |
08:15:00 | DAddYE | unless again is a config file |
08:15:00 | DAddYE | or like a lot of us |
08:15:10 | Araq | I know, I know, people don't use/have the proper tools |
08:15:10 | DAddYE | you code in vim/emacs |
08:15:40 | DAddYE | never tried aporia but |
08:16:00 | DAddYE | Eclipse sucks in all sense |
08:16:00 | Araq | so? |
08:16:20 | DAddYE | VS is good but I prefer lost an hand before using again windows |
08:16:20 | Araq | Visual Studio is bearable, Delphi was great |
08:16:40 | DAddYE | don't know that much on linux |
08:16:55 | DAddYE | but on mac stylish tools like sublime |
08:16:55 | DAddYE | python powered |
08:17:10 | DAddYE | or Texmate Ruby+c++ |
08:17:35 | DAddYE | both good but again unless some weird plugin is a vanilla text editor |
08:17:45 | DAddYE | I mean |
08:17:45 | DAddYE | the point is |
08:17:55 | DAddYE | if you make nimrod case sensitive |
08:17:55 | DAddYE | you can dictate your coding style |
08:18:20 | DAddYE | you can still write PTime => The only case where I totally agree |
08:18:30 | DAddYE | if you like TTime you can write it |
08:18:40 | DAddYE | but if another one would like to use Time and time |
08:18:50 | DAddYE | should be free to do it |
08:19:15 | DAddYE | isn't a critique |
08:19:15 | DAddYE | but trust me |
08:19:30 | DAddYE | you are saying me |
08:19:40 | DAddYE | hey bro, you are right handed but now start to write with the left |
08:20:10 | Araq | type Time = TTime |
08:20:10 | Araq | and you're free again |
08:20:30 | DAddYE | no |
08:20:40 | DAddYE | proc time(): |
08:20:50 | DAddYE | will be raise a redefined problem |
08:21:15 | Araq | we could change that, it's a bit buggy already |
08:21:15 | DAddYE | another important thing |
08:21:25 | DAddYE | is that in this way |
08:21:25 | DAddYE | IMHO |
08:21:35 | DAddYE | you are archiving the opposite problem |
08:21:45 | DAddYE | some code itself in nimrod |
08:21:45 | DAddYE | is written in CamelCase |
08:22:00 | DAddYE | some in snake_case |
08:22:10 | DAddYE | some without any of them |
08:22:30 | DAddYE | some like the lua wrapper |
08:22:30 | Araq | yeah and I can import it and write it so that it adheres to my style |
08:22:40 | DAddYE | even without T/P/E |
08:23:00 | Araq | lua_usesthisstyle |
08:23:20 | Araq | so ... how do you fix that in C? |
08:23:20 | Araq | you can't |
08:23:30 | DAddYE | infact |
08:23:30 | Araq | you're stuck with their bad taste |
08:23:50 | DAddYE | you're case sensitive |
08:24:15 | DAddYE | if you want to rename UV_Time function (all of them are lowercase btw) |
08:24:30 | Araq | also ... me/the compiler enforcing a naming scheme is a nice idea |
08:24:30 | Araq | however |
08:24:40 | Araq | I don't know of a working naming scheme |
08:24:40 | DAddYE | proc myCoolName: {.importc "lua_cool_name"} |
08:25:20 | DAddYE | I can't argue for procedures |
08:25:20 | DAddYE | whatever is okay to me |
08:25:30 | DAddYE | but types Imho |
08:25:40 | DAddYE | should start for CapitalLetter |
08:25:50 | DAddYE | const UPPER |
08:25:50 | DAddYE | then, IMHO up to the coder |
08:26:15 | DAddYE | 99% know that code is like the os (unix) |
08:26:15 | DAddYE | case sensitive |
08:26:25 | DAddYE | 1% don't know that isn't |
08:27:35 | DAddYE | and trust me we can see some differences between snake or camel but ONLY in procedures/methods/functions |
08:27:35 | DAddYE | never seen in my life |
08:27:50 | DAddYE | class foo < Bar; end |
08:28:00 | DAddYE | or type my_type |
08:28:10 | Araq | time_t |
08:28:35 | DAddYE | struct |
08:28:35 | DAddYE | or type |
08:28:45 | DAddYE | sorry type |
08:28:55 | DAddYE | but again |
08:29:10 | DAddYE | that's is up to the coder |
08:29:10 | DAddYE | python codebase |
08:29:20 | DAddYE | is in CamelCase |
08:29:20 | DAddYE | and is c |
08:29:35 | DAddYE | preventing case sensitive |
08:29:55 | DAddYE | you aren't avoiding those exception |
08:30:11 | DAddYE | but allowing TiMeIsNow |
08:30:11 | Araq | well |
08:30:41 | Araq | C doesn't prevent TiMeIsNow either it's just that you're stuck with it |
08:31:01 | Araq | should the guy writing the definition be drunk |
08:31:16 | DAddYE | exactly for the same reason |
08:31:26 | DAddYE | case insensitive should be unnecessary |
08:31:36 | DAddYE | other than a bit confusing |
08:31:46 | DAddYE | mostly removed 3 choices |
08:31:46 | DAddYE | for naming |
08:31:56 | DAddYE | that is 90% of the problem |
08:32:11 | Araq | I'm sorry but you don't make sense |
08:32:36 | Araq | ok, so it's myIdent in Python and in C it's my_ident |
08:32:36 | Araq | and I mix these languages |
08:32:51 | Araq | and it's no problem |
08:32:51 | Araq | but when I have the same thing all in Nimrod |
08:33:01 | Araq | it starts to be a problem |
08:33:01 | Araq | for you |
08:33:11 | Araq | and I have no idea why that is |
08:33:21 | DAddYE | the fact that I need to prefix everything |
08:33:36 | Araq | you don't |
08:33:36 | Araq | but it's the convention in the stdlib |
08:33:51 | Araq | oh wait, you don't like conventions that are not your own |
08:33:51 | DAddYE | otherwise I've redefinition problem |
08:34:11 | DAddYE | enum HOUR, MINUTE, SECOND |
08:34:11 | DAddYE | conflict with |
08:34:11 | Araq | you could give different things different names |
08:34:21 | DAddYE | proc hour |
08:34:21 | Araq | also there is .pure for enums |
08:34:36 | DAddYE | yea thanks to you I figure out the problem |
08:34:51 | DAddYE | but I spent 1 hour gsubbing last day |
08:34:51 | DAddYE | :D |
08:35:41 | DAddYE | in C I can write struct Foo {}; function foo(){}; |
08:35:41 | DAddYE | in nimrod not |
08:36:01 | DAddYE | in python again class Foo: |
08:36:01 | DAddYE | def foo |
08:36:11 | DAddYE | nimrod not |
08:36:11 | DAddYE | that's the thing |
08:36:31 | Araq | some say functions should be verbs and types should be nouns ... |
08:37:01 | DAddYE | in C I can write struct Time {}; function time(){}; |
08:37:11 | DAddYE | or I should |
08:37:11 | DAddYE | in C I can write struct TheTime {}; function time(){}; |
08:37:21 | Araq | in nimrod I can type allinlowercasefordebugging |
08:37:31 | Araq | and I surely don't want to miss *that* |
08:38:21 | Araq | you know ... for the people who have no proper tools like a debugger ;-) |
08:38:21 | DAddYE | I think a macro/template debug allinlowercasefordebugging could work |
08:38:36 | Araq | I don't think so |
08:38:56 | DAddYE | or even better: autocomplete :D |
08:39:16 | Araq | I have no intellisense for the conditions in breakpoints |
08:39:16 | Araq | in visual studio |
08:39:36 | Araq | makes you realize how much case sensitivity does suck |
08:40:01 | Araq | it's only bearable due to autocomplete IMHO |
08:40:21 | Araq | of course the autocomplete itself is case insensitive |
08:40:21 | Araq | proving my point :P |
08:40:41 | DAddYE | Araq: the point is that u use windows |
08:40:51 | * | XAMPP_ joined #nimrod |
08:41:11 | DAddYE | and the system itself told you |
08:41:11 | DAddYE | in years that is insensitive |
08:41:31 | DAddYE | unix guys |
08:41:31 | DAddYE | is the opposite |
08:42:01 | * | Araq despises Unix |
08:44:01 | DAddYE | btw up to you, at end is your language :D |
08:44:31 | DAddYE | quick info, do u really like windows? |
08:44:31 | DAddYE | 0.0 |
08:44:41 | * | XAMPP quit (Ping timeout: 264 seconds) |
08:45:36 | Araq | I'm typing this on a Linux ... |
08:46:21 | * | Araq doesn't like any OS really |
08:46:41 | DAddYE | wow, for I moment I was scared :D |
08:46:51 | Associat0r | DAddYE: I use windows |
08:48:01 | DAddYE | Associat0r: we are talking about like/dislike os'es |
08:48:16 | DAddYE | Araq: back to a real code |
08:49:01 | Araq | DAddYE: there is 'repr' in the language and I have mRepr that is the magic value for it and opcRepr is its opcode in the VM I'm writing |
08:49:16 | DAddYE | https://github.com/DAddYE/gist/blob/master/uv.nim#L806-L807 |
08:49:16 | Araq | with your way I'd have REPR for the magic and then need opcRepr anyway |
08:49:41 | Araq | or use .pure enums which I don't like |
08:50:21 | * | Araq doesn't mind prefixes, they always sneak into Araq's world |
08:51:01 | DAddYE | proc repr; const/enum M_REP, O_REP |
08:51:21 | DAddYE | but again turning on case sensitive will never change your stile |
08:51:36 | Araq | yeah prefixes ftw ;-) |
08:51:36 | DAddYE | turning of yes |
08:51:46 | DAddYE | turning off yes |
08:51:56 | * | DAddYE can't spell today |
08:52:41 | DAddYE | but I can create a type: Rep |
08:53:11 | Araq | I'm willing to implement something to lessen your pain but you'd better come with something that works |
08:53:11 | DAddYE | which 99.8% of coder should know that in c'ish language starting with Capital means class/struct/object/type |
08:53:11 | Araq | *come up |
08:53:31 | Araq | and why is that important? |
08:53:41 | Araq | we have the ':' to indicate "type following here" |
08:53:56 | DAddYE | for me is: |
08:54:16 | DAddYE | does that guy who wrote that wrapper used the prefix |
08:54:36 | Araq | again the convention is to skip the C prefixes |
08:54:56 | Araq | because you can do uv.setInterval() |
08:54:56 | DAddYE | but you can't create types without prefixes |
08:55:06 | Araq | yes you can |
08:55:06 | DAddYE | uv.ttimer |
08:55:41 | Araq | and you can also write tTime which may read better for you as it emphasizes the Time aspect better |
08:56:01 | DAddYE | I will kill my self before |
08:56:01 | Araq | but as I said |
08:56:16 | Araq | come up with a good proposal to "fix" this language wart |
08:56:26 | DAddYE | type/classes/etc in modern languages should be throated with Capital |
08:56:26 | DAddYE | Araq: okay |
08:56:36 | Araq | which it obviously is because I spent too much time arguing about it |
08:56:36 | DAddYE | will do this weekend |
08:56:51 | Araq | I have to go, see you later |
08:56:51 | DAddYE | Araq: https://github.com/DAddYE/gist/blob/master/uv.nim#L806-L807 |
08:57:21 | Araq | what about it? |
08:57:21 | DAddYE | beside the fact I don't need do: |
08:57:31 | DAddYE | (was just a try) |
08:57:41 | DAddYE | doesn't work |
08:58:01 | Araq | write a bug report then |
08:58:16 | DAddYE | u're right |
08:58:16 | DAddYE | but not sure if is a bug |
08:58:26 | DAddYE | SIGSEGV: Illegal storage access. (Attempt to read from nil?) |
08:58:56 | DAddYE | since you talk about repr |
08:58:56 | DAddYE | on line https://github.com/DAddYE/gist/blob/master/uv.nim#L794 |
08:59:06 | DAddYE | repr(time) raises the same problem |
08:59:16 | DAddYE | but |
08:59:26 | DAddYE | *timer |
08:59:36 | DAddYE | but I checked and is populated |
08:59:36 | DAddYE | so timer.timout => 1000 |
08:59:46 | DAddYE | timer.data => pointer |
08:59:46 | DAddYE | and so on |
08:59:56 | DAddYE | I guess is GC thing |
09:01:51 | DAddYE | using discard works well |
09:02:21 | Araq | I don't think it's a Gc thing |
09:02:31 | Araq | but I'm away |
09:02:41 | DAddYE | oki |
09:19:11 | * | Associat0r quit (Quit: Associat0r) |
09:53:11 | * | DAddYE quit (Remote host closed the connection) |
09:53:41 | * | DAddYE joined #nimrod |
09:57:51 | * | DAddYE quit (Ping timeout: 245 seconds) |
10:09:41 | * | fowl quit (Quit: EliteBNC free bnc service - http://elitebnc.org) |
10:29:16 | * | fowl joined #nimrod |
10:34:31 | * | EXetoC joined #nimrod |
10:36:31 | * | q66 joined #nimrod |
10:41:56 | * | fowl quit (Quit: EliteBNC free bnc service - http://elitebnc.org) |
10:55:42 | * | DAddYE joined #nimrod |
11:00:52 | * | DAddYE quit (Ping timeout: 264 seconds) |
11:12:37 | * | Amrykid quit (Changing host) |
11:12:37 | * | Amrykid joined #nimrod |
11:19:52 | * | jbe_ joined #nimrod |
11:21:42 | dom96 | hi jbe_ |
11:23:37 | jbe_ | hi dom96 |
11:23:57 | jbe_ | was just looking at your code |
11:24:12 | jbe_ | what's the state of the sdl2 wrapper? |
11:24:32 | jbe_ | or actually, sdl/sfml support in general |
11:24:42 | dom96 | The state is pretty good I think. |
11:25:57 | jbe_ | just started messing with Nimrod yesterday, love it so far |
11:27:22 | dom96 | I haven't personally used fowl's sdl2 wrapper but i've used the sdl wrapper that is in the stdlib and it worked well. I think it wraps an older sdl version though. |
11:27:42 | jbe_ | yeah |
11:28:02 | dom96 | I've created a game using SFML for Ludum Dare and didn't have any problems with the wrapper |
11:28:17 | jbe_ | cool, which one? |
11:29:02 | dom96 | https://github.com/fowlmouth/nimrod-sfml |
11:29:22 | * | zahary quit (Quit: Leaving.) |
11:29:52 | dom96 | jbe_: how did you find out about Nimrod? |
11:30:02 | * | nihathrael quit (Quit: Unknown Horizons - Open Source real-time strategy with the comfy 1602 feeling!) |
11:30:22 | * | nihathrael joined #nimrod |
11:31:32 | jbe_ | hmm let me think... it was something very very random, i don't remember, i think i heard it mentioned somewhere and googled it :P |
11:32:22 | dom96 | I see. I'm asking because i'm wondering what the best way to advertise nimrod is :P |
11:36:22 | jbe_ | hmm.. i'm surprised the language isn't more famous, but i guess maybe that can be a good thing in the beginning.. |
11:36:52 | jbe_ | as soon as some awesome software gets written using it, perhaps... |
11:37:22 | dom96 | I think most people don't use it because there is no big company behind it. |
11:37:57 | jbe_ | good point :| |
11:39:02 | jbe_ | could you help me understand a compile error? |
11:39:22 | jbe_ | was just trying to use sdl_ttf from std |
11:40:02 | jbe_ | scene/root.nim(45, 40) Error: type mismatch: got (PFont, cstring, TColor) |
11:40:02 | jbe_ | but expected one of: |
11:40:02 | jbe_ | sdl_ttf.RenderText_Blended(font: PFont, text: cstring, fg: TColor): PSurface |
11:40:22 | * | zahary joined #nimrod |
11:41:42 | dom96 | yeah, that error is confusing. |
11:41:52 | dom96 | (I've submitted an issue about on github IIRC) |
11:42:02 | dom96 | in any case, I bet the problem is that you are passing a colors.TColor not a sdl.TColor |
11:42:22 | jbe_ | oh man, of course.. thanks! |
11:43:22 | jbe_ | i'm getting a little confused by module names some times |
11:52:22 | * | fowl joined #nimrod |
11:52:52 | * | zahary quit (Read error: Connection reset by peer) |
11:53:02 | * | zahary joined #nimrod |
11:56:57 | * | DAddYE joined #nimrod |
11:57:22 | * | q66 quit (Quit: Leaving) |
11:58:22 | * | q66 joined #nimrod |
12:00:42 | * | q66 quit (Client Quit) |
12:01:22 | * | q66 joined #nimrod |
12:53:42 | * | jbe_ quit (Read error: Operation timed out) |
13:27:58 | * | OrionPK joined #nimrod |
13:31:53 | * | Araq0 joined #nimrod |
13:33:43 | Araq0 | Dom96 fix the logs |
13:35:03 | Araq0 | People now depend on them |
13:35:43 | * | Araq0 only has a phone here... |
13:35:43 | dom96 | I know |
13:37:03 | * | Associat0r joined #nimrod |
13:37:03 | * | Associat0r quit (Changing host) |
13:37:03 | * | Associat0r joined #nimrod |
13:37:58 | Araq0 | Well? Whats the problem? |
13:38:23 | dom96 | There is a bug. |
13:38:33 | dom96 | I'm fixing it. |
13:38:33 | dom96 | Chill man. |
13:38:53 | Araq0 | Ok |
13:38:53 | Araq0 | Bbl |
13:39:03 | * | Araq0 quit (Quit: Bye) |
13:52:23 | dom96 | done |
13:58:45 | * | zahary quit (Quit: Leaving.) |
14:01:14 | * | gradha joined #nimrod |
14:15:13 | * | jbe_ joined #nimrod |
14:26:14 | * | zahary joined #nimrod |
14:31:33 | gradha | I'm trying to package a regex' parameters into a const tuple, to later create the object through re |
14:31:56 | gradha | so I have R_BLAH = (s: "somestring", flag: {reExtended}) |
14:32:22 | gradha | then I want to write "let regex = re(R_BLAH)" |
14:32:41 | gradha | but it says the R_BLAH can't be called |
14:33:18 | gradha | is there any way to unpack it or do I suck it and pass R_BLAH[0] and R_BLAH[1]? |
14:37:20 | gradha | meh, [] doesn't do what I want it to do here, pity |
15:03:11 | gradha | oh, forgot, NimBot: high five! |
15:04:32 | dom96 | I think you have to suck it up and do it the verbose way |
15:04:52 | gradha | maybe if I pester Araq enough... |
15:05:56 | gradha | in python you can do this prefixing the packed variable with *, maybe nimrod could figure this out at compile time and prevent the *, but then what if there's ambiguity |
15:06:28 | gradha | huh, maybe an unpack macro in stdlib? |
15:07:05 | gradha | the macro would replace PARAM with PARAM[0], ..., PARAM[n] |
15:07:38 | gradha | of course, how could I doubt the awesome nimrod, it's all there for me to play with |
15:07:50 | dom96 | yeah, write a macro :P |
15:08:43 | gradha | hmm... the unpack would work for tuples and arrays with fixed lenght, but how to do it for seqs? |
15:09:09 | gradha | hmm... maybe if the macro could "know" it's being used inside a proc, and statically gather the input parameters, so it would us 0..n reading the proc's parameters... |
15:11:21 | gradha | is it possible for a macro to know it's parent in the AST where it is being invoked? |
15:11:47 | gradha | if that's possible you could write macros which modify outer scopes, scary |
15:18:05 | gradha | things that scare you more than death: you touch the power cord and the laptop suddenly says it's not plugged in |
15:28:45 | EXetoC | don't worry, we'll have immortality pills soon |
15:29:21 | gradha | should feed one to my laptop |
15:31:08 | EXetoC | get your priorities straight, man |
15:31:42 | gradha | right, download porn |
15:31:55 | EXetoC | give one to your freezer first |
15:31:57 | EXetoC | lol |
15:45:15 | Max00355 | Can someone explain to me how to use os.walkDir() |
15:45:30 | Max00355 | I can not seem to figure it out. |
15:47:07 | gradha | what kind of trouble you have? |
15:47:24 | gradha | here's an usage example of mine https://github.com/gradha/awesome_rmdir/blob/master/awesome_rmdir.nim#L42 |
15:48:32 | Max00355 | When you import os you don't call the function by doing os.walkDir? |
15:49:01 | gradha | that's only needed if you also imported something else or defined your own walkDir locally, so you need to desambiguate the call |
15:49:23 | gradha | if both modules a and b define the same proc, you would need to use a.proc b.proc if you import both |
15:49:30 | gradha | but if you only import a, it's fine without prefix |
15:49:55 | Max00355 | Oh, cool |
15:50:01 | Max00355 | Didn't know that. |
15:50:10 | gradha | the system module is imported by default, so you don't need to system.whatever for everything, unless you have a conflict |
15:50:22 | Max00355 | Okay, I see. |
15:50:42 | Max00355 | For Python is .split() or whatever for everything. |
15:52:50 | Max00355 | So you can not echo within a function? |
15:53:11 | gradha | please ellaborate on that |
15:53:38 | Max00355 | proc walk(path: string): |
15:53:48 | Max00355 | for x in walkDir(path): |
15:53:52 | Max00355 | echo(x) |
15:54:02 | Max00355 | discard walk("/") |
15:54:09 | Max00355 | You must return? |
15:54:28 | gradha | as you defined proc, it doesn't return anything, so no need for discard |
15:54:40 | gradha | should be "proc wal(path: string) =" though |
15:54:40 | Max00355 | Ohhh, that's what discard is for |
15:54:54 | Max00355 | Ah, another point, why =? |
15:54:59 | gradha | also, you can use the {.discardable.} pragma to tell the compiler not be stingy |
15:55:12 | gradha | the = is used for the proc body, the : is used for the return type |
15:55:13 | Max00355 | Gotcha |
15:55:25 | Max00355 | Sorry I am so noobish... I am just starting to really pick up Nimrod... |
15:55:37 | Max00355 | I am not used to this static programming stuff and what not.. |
15:55:49 | gradha | no problem, it's not hard really |
15:56:17 | Max00355 | I know, but it is different. |
15:56:25 | gradha | I'm refactoring now some nimrod code and it's a *pleasure* to change a type and have the compiler tell you all the places its wrong, rather than fail at runtime some time later |
15:56:46 | Max00355 | So the compiler is throwing an error that I have no return type declared/ |
15:57:08 | gradha | likely due to the colon |
15:57:09 | Max00355 | But I am not returning anything |
15:57:20 | Max00355 | I took the colon away |
15:57:28 | gradha | did you replace it with the equal sign? |
15:57:32 | Max00355 | I did |
15:57:43 | gradha | hmm.. something else is wrong then, can you post a snippet? |
15:58:02 | gradha | or is it just that proc walk as you wrote? |
15:58:24 | Max00355 | Oh wait, I fixed it, my bad. |
15:58:31 | * | DAddYE quit (Ping timeout: 276 seconds) |
15:58:32 | Max00355 | I was trying to return something. |
15:58:46 | Max00355 | Okay, so when do you use a colon and when do you use an equal sign? |
15:59:00 | gradha | if your proc doesn't return, use an equal sign |
15:59:14 | Max00355 | Ahhh, okay. |
15:59:17 | Max00355 | Awesome. |
15:59:18 | gradha | if you return anything, you need "proc name(foo: type): return_type = body" |
15:59:33 | Max00355 | Awesome |
15:59:37 | dom96 | It's also a pleasure to see the types in the docs. It's annoying to have to scan the function's docstring to determine what should be passed to a function in Python. |
16:00:04 | gradha | dom96: when will Aporia display that info when completing something? |
16:00:53 | dom96 | gradha: once I get some free time and get rid of my laziness :P |
16:01:29 | gradha | ah, cool, then don't buy deus ex fallen for ios, it's on sale now |
16:01:45 | dom96 | I bought The Last of Us instead lol |
16:02:59 | gradha | cordyceps fungus, sounds like a programmer illness |
16:03:10 | Max00355 | Does the developer of Nimrod ever come into this channel? |
16:03:21 | gradha | Max00355: nah, not gonna happen |
16:03:42 | Max00355 | Haha |
16:04:07 | gradha | he never comes into this channel because he's always here (Araq) |
16:04:41 | dom96 | Some say that the developer of Bitcoin has left the development of Bitcoin to pursue creating his own programming language :P |
16:05:03 | gradha | programming languages are clearly more profitable |
16:05:35 | Max00355 | I really can't believe how much bitcoin exploded. |
16:05:38 | Max00355 | It's incredible. |
16:05:44 | gradha | I wonder if his language will use the $ sign for something... |
16:05:55 | Max00355 | PHP |
16:05:57 | Max00355 | PERL |
16:05:59 | Max00355 | GAY |
16:06:08 | Max00355 | $_POST['name'] |
16:06:12 | Max00355 | I mean waht the fuck is that?! |
16:06:19 | Max00355 | Global variables are nasty.. |
16:06:22 | gradha | interesting, didn't know about the GAY programming language |
16:06:30 | Max00355 | Really? |
16:07:58 | Max00355 | Okay, so something I could never understand in any other language because I was spoiled by Python is random numbers. |
16:08:50 | gradha | what is to understand about random numbers? they are... random, so, like 4 |
16:09:02 | Max00355 | rand(100) returns 83 every time |
16:09:13 | gradha | mine is m/221/ |
16:09:20 | gradha | sorry, https://xkcd.com/221/ |
16:09:47 | Max00355 | LOL |
16:10:06 | gradha | called rand(100) right now three times and got 7, 49, 73 |
16:10:13 | gradha | clearly a poorer implementation of 4 |
16:10:24 | dom96 | gradha: Speaking of The Last of Us, it's pretty interesting that the zombie infection is caused by a fungus. |
16:10:53 | gradha | dom96: why is that interesting? |
16:10:59 | Max00355 | Hey, that exists in the ant world! |
16:11:22 | gradha | in the human world it's maria which creates zombies, albeit temporarily |
16:11:32 | Max00355 | Boom |
16:12:38 | Max00355 | Malaria* btw |
16:12:47 | dom96 | gradha: Dunno, never heard a zombie story which said that the infection is caused by a fungus. |
16:13:17 | gradha | never understood the people who try to rationalize zombies through pseudo science, it just doesn't make sense, better to think of zombies like something magic |
16:13:33 | Max00355 | http://www.livescience.com/5631-zombie-ants-controlled-fungus.html |
16:13:35 | gradha | fungus, bacteria, virus, whatever |
16:13:56 | gradha | it's all just a gimmick to tell people "look, it's too complicated, treat it like magic", so better think it's magic anyway |
16:14:12 | dom96 | Max00355: oh yeah. I remember reading that, forgot that it's caused by a fungus. |
16:14:24 | Max00355 | Messed up shit isn't it? |
16:15:54 | dom96 | gradha: Meh, magic. It's perfectly reasonable to consider this science fiction. |
16:16:16 | dom96 | And if it can happen to ants, perhaps it can to humans as well? |
16:16:48 | Max00355 | Let's hope it cant |
16:16:56 | Max00355 | can't8 |
16:17:58 | dom96 | yeah, I prefer an apocalypse in the style of the Terminator. |
16:18:09 | dom96 | Then maybe I can use my computer skills to fight the AI :P |
16:18:36 | gradha | or independence day, but you don't have a mac, so you would die |
16:18:39 | Max00355 | Nimrod vs Skynet :P |
16:18:55 | dom96 | lol independence day |
16:19:03 | gradha | or a dog, in independence day dogs survive impressive explosions |
16:19:04 | Max00355 | gradha: Only the hipsters would be left.. my god.. |
16:19:11 | * | Associat0r quit (Quit: Associat0r) |
16:19:38 | dom96 | "let me just code this quick virus in Nimrod and upload it to the alien mothership!" |
16:20:02 | gradha | "darn, I didn't git pull before coming here, I'm doomed with this bug!" |
16:20:48 | dom96 | "screw it, this segfaulting app will do well to disable the alien mothership" |
16:21:48 | gradha | oh, speaking about bugs, why don't you askubuntu how to compile nimrod? |
16:22:19 | gradha | you could ask like "hey, this compiles in other linux, why is ubuntu such crap?" |
16:22:32 | gradha | then you answer yourself how to solve it, like a sir |
16:23:09 | gradha | didn't know http://askubuntu.com was just stackoverflow disguised, heard about it the other day in their podcast |
16:23:20 | dom96 | and then I would get banned |
16:24:01 | gradha | try to be polite then, "can somebody help me fix this shit, please?" |
16:25:56 | Max00355 | What are you guys running |
16:25:59 | Max00355 | ? |
16:26:19 | gradha | I run with macosx, born hipster |
16:26:28 | Max00355 | Oh my god... |
16:26:35 | Max00355 | Disgusting |
16:26:39 | Max00355 | dom96: You? |
16:26:39 | gradha | when macs become mainstream I'll jump to hurd |
16:26:41 | dom96 | Arch Linux. |
16:26:56 | Max00355 | gradha: They have been maib stream. |
16:27:01 | Max00355 | dom96: Real men use Arch |
16:27:10 | dom96 | :D |
16:27:15 | Max00355 | So I am not a real man because I use Mint :P |
16:27:23 | dom96 | lol |
16:27:24 | gradha | ios devices are mainstream, macs not so much, they are just a tiny drop of total computer machines |
16:27:33 | dom96 | You'd be happy to hear that Araq uses Mint too :P |
16:27:43 | Max00355 | Hahaha, well it is awesome. |
16:27:59 | dom96 | I consider switching to a different distro sometimes though |
16:28:10 | Max00355 | I tried Arch and hated it. |
16:28:39 | Max00355 | It took me 4 hours to get everything the way I wanted, then I switched back to Mint in that same day :P |
16:28:56 | Max00355 | I like stuff out of the box. |
16:30:51 | * | Associat0r joined #nimrod |
16:30:51 | * | Associat0r quit (Changing host) |
16:30:51 | * | Associat0r joined #nimrod |
16:31:51 | gradha | didn't nimrod have any proc to expand ~ in paths under unix? |
16:32:22 | dom96 | getHomeDir()? :P |
16:32:36 | gradha | that's what I would call to replace the ~ in the string |
16:33:05 | dom96 | dunno, look around in os.nim, if it doesn't exist there it likely doesn't exist at all |
16:34:14 | Max00355 | I don't understand how Nimrod hasn't gotten more popularity. |
16:34:36 | gradha | people love crap |
16:34:44 | Max00355 | Simple syntax that compiles to C... |
16:34:54 | Max00355 | I wish I had heard about it when I started programming.. |
16:34:57 | dom96 | gradha: well put :P |
16:35:09 | Max00355 | I would have made some really nice shit. |
16:35:15 | Max00355 | I have hit a wall with Python. |
16:35:20 | Max00355 | I can't do anything anymore. |
16:35:36 | gradha | did they ban you from programming? |
16:35:38 | dom96 | Yep, you should rewrite all your projects in Nimrod. |
16:35:52 | Max00355 | Heh, that's a lot of programs :P |
16:36:07 | Max00355 | gradha: Yes, the Python community has shunned me. |
16:37:00 | gradha | Max00355: you are welcome here, we shun the python community instead |
16:37:21 | gradha | I'm also rewriting my python programs in nimrod |
16:37:24 | Max00355 | Haha, I plan on staying for a bit. |
16:37:33 | Max00355 | gradha: Do you have a github? |
16:37:42 | dom96 | Max00355: You should tell all your friends about Nimrod! |
16:37:47 | Max00355 | I have |
16:37:51 | Max00355 | they laugh at me |
16:37:56 | dom96 | what, why? |
16:38:48 | gradha | not hard to figure, https://github.com/gradha |
16:40:22 | gradha | nakefiles are nice, but the constant recompiling is really slow, to run a task it compiles twice |
16:40:50 | dom96 | why twice? |
16:40:51 | gradha | well, I'm sure fowl will like me spamming issues |
16:40:54 | gradha | no idea |
16:41:04 | dom96 | are you compiling the nakefile |
16:41:07 | gradha | I guess first nake compiles the nakefile, but then I see another compilation going on |
16:41:17 | dom96 | and then running the nakefile which compiles something else? |
16:41:32 | gradha | yes, the first compilation is not needed |
16:41:37 | dom96 | just compile the nakefile once? |
16:41:49 | gradha | and then use ./nakefile instead of nake? surely you jest |
16:42:29 | dom96 | yep :P |
16:42:54 | gradha | I guess I'll replace nake in my path with a bash function which compares the date of nakefile.nim and nakefile and runs it or compiles it |
16:45:43 | gradha | ouch, copyFile doesn't preserve the execution bit for installation of binaries |
16:52:14 | EXetoC | most programmers obviously don't prioritize language features |
16:55:10 | * | DAddYE joined #nimrod |
16:57:23 | gradha | I've heard programmers prioritize java over alternatives due to having eclipse, which to me sounds so wrong on many levels |
16:57:57 | gradha | "here, this language is crap, but if you use these crutches, which are crap too, it suddenly becomes wonderful!" |
16:59:38 | EXetoC | most people probably just use whatever will get them employed some day |
17:00:01 | gradha | OTOH bundling language and IDE is a nice strategy, you get one holy war for the price of two |
17:00:15 | gradha | clever dom96, now I understand the meaning of Aporia... |
17:00:16 | * | DAddYE quit (Ping timeout: 276 seconds) |
17:01:26 | EXetoC | put it in a box together with a couple of OOP pamphlets |
17:04:43 | dom96 | gradha: oh? |
17:05:25 | Max00355 | dom96: They laugh because Pythonistas don't like static typing. |
17:05:53 | EXetoC | I got tired of dynamic typing after only a couple of days |
17:06:10 | Max00355 | It is so much easier |
17:06:23 | gradha | dom96: a new planguage is pain, so better make it lang+ide so it is painful only once? |
17:06:48 | dom96 | oh, I thought you were referring to the name |
17:07:43 | gradha | Max00355: it's only easier because it doesn't force you to think ahead of the data, yet that's what makes programs more efficient, or prevents out of range bugs and such |
17:08:12 | gradha | in fact, it's delying the inevitable |
17:08:23 | gradha | consider a python program which serializes to a database |
17:08:39 | gradha | you use a field to store integer values, and python will happily accept anything integer like, so a big number |
17:08:56 | gradha | but then you have to store it in sqlite, and wait, your table only accepts integers in a specific range... |
17:10:23 | gradha | then, dynamic typing is fine when you are writing programs, but can be a pain when you write libraries for other people |
17:10:46 | gradha | suddenly you have people not reading docs and calling your lib with parameters which are just not right, but due to coercion they kind of work and fail in obscure ways |
17:11:02 | gradha | so now you have to add to your functions manual parameter checks for the type, assertions and such |
17:11:14 | gradha | basically, manually implementing a type system |
17:11:32 | gradha | but of course, people who don't mind writing crappy code for others thing its ok to not care |
17:13:19 | gradha | I've yet to talk to a ruby programmer who checks input parameters for correctness or to avoid weird behaviours, they are like "what, why would I check the parameters?", lol |
17:13:35 | dom96 | because Nimrod is so flexible with some hacky macro work you could probably actually implement dynamic typing :P |
17:13:56 | dom96 | but it's probably not the best idea to be writing code like that. |
17:14:15 | gradha | the difference is allowing vs everything is dynamic |
17:14:40 | gradha | in objc you can never be sure of the type of input parameters, so to write really solid code you have to ask your parameters if they actually are the type they say to be |
17:15:01 | gradha | because everything is an object, and objects are wonderful things |
17:43:56 | Max00355 | To each his own. |
17:44:02 | Max00355 | I don't mind manual type checking. |
17:44:12 | Max00355 | try: |
17:44:25 | Max00355 | inp = input("> ") |
17:44:30 | Max00355 | except TypeError: |
17:44:35 | Max00355 | continue |
17:44:37 | Max00355 | Not hard |
17:45:46 | gradha | well, string input sanitization doesn't have much to do with it |
17:46:02 | gradha | consider "def do_something(text):" in python |
17:46:11 | gradha | you can pass anything as text |
17:46:12 | Max00355 | input() only take integers |
17:47:32 | Max00355 | gradha: You can |
17:47:33 | gradha | Max00355: python docs say you are wrong, it returns whatever the string evals to |
17:47:56 | Max00355 | Python3 docs say I am wrong, yes. |
17:48:03 | Max00355 | Python 2.7 docs say otherwise |
17:48:10 | gradha | really? I'm on 2.7 here |
17:48:17 | gradha | input([prompt]) -> value |
17:48:21 | gradha | Equivalent to eval(raw_input(prompt)). |
17:48:26 | gradha | so no type information for value |
17:48:34 | gradha | raw_input returns a string |
17:48:40 | Max00355 | input() returns an integer |
17:48:53 | Max00355 | eval(raw_input(prompt)) is just silly |
17:49:00 | gradha | In [8]: repr(input("")) |
17:49:00 | gradha | "something" |
17:49:00 | gradha | Out[8]: "'something'" |
17:49:06 | gradha | that returned a string, AFAICS |
17:49:27 | Max00355 | I gtg, i'll be on later, Bye! |
17:49:32 | gradha | see ya |
17:56:01 | * | DAddYE joined #nimrod |
18:02:34 | * | DAddYE quit (Ping timeout: 257 seconds) |
18:08:54 | * | jbe_ quit (Quit: Leaving) |
18:24:11 | * | Associat0r quit (Quit: Associat0r) |
18:24:31 | Araq | Max00355: I use the debian edition of mint though ;-) |
18:24:54 | Araq | and enjoy my X11 crashes ... |
18:25:17 | * | Araq just restarted X11 to get back a working mouse cursor |
18:31:15 | * | Associat0r joined #nimrod |
18:31:15 | * | Associat0r quit (Changing host) |
18:31:15 | * | Associat0r joined #nimrod |
18:39:09 | gradha | hah, found a but in parseHex |
18:39:30 | gradha | or rather, a weird behaviour, the proc depends on the input value of the temporal variable |
18:39:44 | gradha | so if I initialize the integer to something else, the resulting parsed value has nothing to do with input |
18:41:02 | gradha | Araq: how do you want me to "fix" that, document the behaviour or make parseHex initialize number before writing to it? |
18:41:40 | Araq | what's the difference between "fix" and "initialize number before writing to it"? |
18:42:23 | Araq | I think it shouldn't touch it in case of error; this way a default value is kept when a parsing error occurs |
18:42:59 | gradha | there's also a side benefit, you can concatenate several calls to parseHex and it works, though you quickly overflow |
18:43:10 | gradha | I'll document it |
18:43:59 | Araq | parseutils.parsehex, right? |
18:44:05 | gradha | yep |
18:45:02 | Araq | how does concatenate produce any meaningful result? |
18:45:14 | Araq | you need to shift it at least |
18:45:24 | gradha | parseHex("c3", temporal); parseHex("68", temporal) == parseHex("c368", temporal) |
18:45:43 | Araq | oh right |
18:46:33 | Araq | hmm |
18:47:00 | gradha | awesome, even parsing hex is fun in nimrod |
18:48:10 | Araq | well if it makes you happy, document it |
18:48:24 | Araq | I can't see a value in this "feature" for now though |
18:48:54 | Araq | on the other hand ... garbage in, garbage out is not too bad for a low level stdlib routine |
18:51:51 | gradha | oh, another unexpected behaviour in re.findAll |
18:52:02 | gradha | since it's an iterator, you shouldn't modify the string you are iterating over |
18:52:17 | gradha | for that it's better to toSeq the result |
18:52:25 | gradha | result was funny |
18:54:07 | Araq | hmm the compiler could easily warn about this |
18:54:38 | * | OrionPKM joined #nimrod |
18:55:18 | gradha | how can the compile detect such behaviour http://pastebin.com/1mhkQE6w ? usage of match variable? |
18:55:44 | gradha | aw, should use parseHex's start parameter instead of range |
18:55:44 | * | DAddYE joined #nimrod |
19:02:48 | Araq | gradha: simple: 'dest' is passed to an iterator so it's "const" for the for loop body |
19:03:15 | Araq | it's a very easy analysis |
19:03:50 | gradha | ok, doit |
19:05:02 | Araq | make a feature request :P |
19:05:23 | gradha | I thought people got irritated with me spamming issues |
19:05:33 | * | OrionPKM quit (Remote host closed the connection) |
19:05:41 | gradha | so I keep them now in my todo |
19:11:20 | Araq | what about closing issues and making a new issue "improve idetools"? |
19:11:42 | gradha | yeah, there's also that, unfulfilled expectations |
19:12:31 | DAddYE | Araq: do you think is the correct way to "instantiate" a pointer ? |
19:12:33 | DAddYE | Araq: proc timer_init*(a2: ptr TLoop; handle: ref TTimer) |
19:12:35 | DAddYE | sorry |
19:12:41 | DAddYE | Araq: https://github.com/DAddYE/gist/blob/master/uv.nim#L790-L794 |
19:13:01 | Araq | ref TTimer is most certainly wrong |
19:13:43 | DAddYE | Araq: so, what do you suggest? |
19:13:59 | DAddYE | (unable to find any doc and I read 80% of all wrappers) |
19:14:00 | DAddYE | :D |
19:14:07 | Araq | dunno perhaps 'var TTimer' |
19:14:19 | DAddYE | Araq: here https://github.com/DAddYE/gist/blob/master/uv.nim#L677 ? |
19:14:53 | DAddYE | and then var t: TTimer = TTimer.new ? |
19:15:02 | DAddYE | timer_init(loop, t) |
19:15:07 | Araq | 'new' is for 'ref' only |
19:15:14 | Araq | no 'ref', no 'new' |
19:15:34 | Araq | so it's only: |
19:15:44 | Araq | var t: ttimer; timer_init(loop, t) |
19:15:58 | Araq | though I would name it initTimer I think |
19:16:22 | Araq | but then you lose even more guessability in your wrapper |
19:17:16 | Araq | whether you can transform 'ptr T' to 'var T' mostly depends onto whether C allows for NULL |
19:19:51 | DAddYE | Araq: ok, thanks lemme try |
19:22:41 | DAddYE | Araq: in your way: type mismatch: got (TTimer) but expected 'ref TTimer' |
19:22:55 | DAddYE | proc timer_init*(a2: ptr TLoop; handle: var TTimer): cint {.libuv.} |
19:24:25 | Araq | don't declare your timer 'ref ttimer' then |
19:24:46 | DAddYE | Araq: I didn't var timer: TTimer |
19:25:51 | Araq | don't use TTimer.new then |
19:26:51 | DAddYE | Araq: I didn't! |
19:27:18 | Araq | well your gist doesn't contain any 'ref' |
19:27:40 | Araq | and if your example code doesn't either I can't see why the compiler would say "expected 'ref TTimer'" |
19:30:55 | DAddYE | Araq: https://gist.github.com/DAddYE/9f2ec7a876164d8fe93f |
19:31:05 | DAddYE | fuck |
19:31:06 | DAddYE | found |
19:31:07 | DAddYE | :D |
19:32:44 | Araq | btw you shouldn't use "block" in a template unless you know what you're doing and know about a codegen bug |
19:33:01 | DAddYE | Araq: infact SIGSEGV: Illegal storage access. (Attempt to read from nil?) |
19:33:11 | DAddYE | I don't what to share with the rest of my code |
19:33:13 | DAddYE | my vars |
19:33:34 | Araq | but since you don't use a dirty template it isn't |
19:33:59 | Araq | no need for 'block' here anymore |
19:34:13 | Araq | maybe we need to update the docs somewhere ... |
19:35:04 | DAddYE | Araq: haaaaaaaaaaaaa |
19:35:45 | DAddYE | Araq: http://build.nimrod-code.org/docs/manual.html#scoping-in-templates_toc |
19:36:02 | DAddYE | http://build.nimrod-code.org/docs/manual.html#scoping-in-templates |
19:36:23 | DAddYE | block only when is immediate |
19:36:26 | DAddYE | or dirty? |
19:36:42 | DAddYE | also there is no enough doc about {.dirty.} and {.inject.} |
19:36:54 | DAddYE | so I've few ideas what they really are |
19:37:18 | Araq | well if you use .dirty everything is injected |
19:37:50 | Araq | if you don't use dirty you need to explicitly inject symbols (unless in certain contexts) |
19:38:27 | Araq | immediate refers to overloading resolution, you can't overload an immediate template |
19:38:33 | DAddYE | btw removed block: |
19:38:41 | Araq | this however enables other possibilities |
19:38:55 | Araq | like passing a non existing symbol to the template |
19:39:19 | DAddYE | cool |
19:39:33 | Araq | most people use .immediate, dirty and call it a day though |
19:39:47 | Araq | this way you get quite C-like macros |
19:40:02 | DAddYE | Araq: removing block still have same sigsev illegal storage access |
19:40:15 | DAddYE | seems timer var get gc'd |
19:40:44 | Araq | so it fails at runtime? |
19:41:31 | Araq | be careful with the "proc" type please, you want "proc ()" instead |
19:41:50 | Araq | and yeah we should fix that, zahary |
19:42:03 | DAddYE | var t = set_timer(1000, 1000) do: |
19:42:31 | DAddYE | SIGSEGV: Illegal storage access. (Attempt to read from nil?) |
19:42:35 | DAddYE | at runtime |
19:42:50 | Araq | hmm |
19:42:51 | DAddYE | if I'll change it with discard set_timer ... works |
19:43:45 | Araq | well ... you got rid of the 'block', right? |
19:44:00 | DAddYE | yep removed |
19:44:36 | DAddYE | Araq: https://gist.github.com/DAddYE/9f2ec7a876164d8fe93f |
19:49:23 | DAddYE | tried also returning var TTimer but no luck |
19:50:04 | DAddYE | aaaaaaaaaaarg |
19:50:07 | DAddYE | I think I found |
19:50:17 | DAddYE | looks the compiler think timer is still NULL |
19:50:20 | DAddYE | or some weird |
19:50:26 | DAddYE | echo repr(timer) |
19:50:38 | DAddYE | => crash |
19:51:00 | DAddYE | but echo timer.my_fields works |
19:51:05 | DAddYE | with updated results |
19:51:42 | DAddYE | that's why I did in past example TTimer.new |
19:51:45 | DAddYE | to avoid that problem |
19:52:00 | Araq | dunno it's weird |
19:52:28 | Araq | make a bug report |
19:52:44 | Araq | workaround should be to change your set_timer template |
19:53:15 | Araq | so that it takes the ttimer to declare |
19:54:27 | Araq | however ... |
19:54:39 | Araq | you do copy the ttimer maybe that doesn't work |
19:55:40 | DAddYE | Araq: here my example |
19:55:41 | DAddYE | https://gist.github.com/DAddYE/9f2ec7a876164d8fe93f |
19:55:45 | DAddYE | with the output |
20:00:24 | Araq | repr(timer) crashing doesn't mean much I think |
20:00:38 | Araq | it follows some pointer it shouldn't follow or something like that |
20:01:01 | DAddYE | ok |
20:01:21 | DAddYE | last to things and I'll stop to boring you |
20:01:22 | DAddYE | :D |
20:01:41 | DAddYE | can I have templates / procs with same name but different signature ? |
20:01:49 | Araq | yes |
20:02:06 | DAddYE | like template set_timer(timeout: uint64, repeat: uint64, timer: expr, actions: proc ()) = |
20:02:12 | DAddYE | and template set_timer(timeout: uint64, repeat: uint64, actions: proc ()) = |
20:02:16 | DAddYE | ? |
20:05:30 | DAddYE | uv.nim(803, 12) Error: wrong number of arguments |
20:09:14 | Araq | they both can't be immediate for this to work |
20:09:48 | DAddYE | they aren't |
20:12:18 | Araq | works for me |
20:13:58 | DAddYE | Araq: https://gist.github.com/DAddYE/9f2ec7a876164d8fe93f |
20:14:37 | Araq | DAddYE: firstly one IS immediate |
20:14:47 | DAddYE | tried now |
20:14:48 | DAddYE | without |
20:14:52 | Araq | secondly you use set_timer version 2 before it's been declared |
20:15:01 | DAddYE | uv.nim(789, 32) Error: undeclared identifier: 't' |
20:15:23 | Araq | well yeah it can't work |
20:15:35 | DAddYE | 0-0 |
20:15:59 | DAddYE | ok I see why |
20:16:04 | DAddYE | I need to dup the code |
20:16:10 | DAddYE | inside my template |
20:16:14 | Araq | you know ... for overloading resolution to work the compiler needs *types*, an undeclared identifier has no type |
20:16:44 | Araq | so it can't work for your use case |
20:17:00 | DAddYE | sorry but |
20:17:03 | DAddYE | so why here works |
20:17:05 | DAddYE | set_timer(1000, 1000, t) do: |
20:17:07 | DAddYE | ? |
20:17:29 | Araq | you can get lucky thanks to a somewhat hard to fix compiler bug ... |
20:17:53 | DAddYE | haaaaaaaa |
20:18:00 | DAddYE | okay here I'm |
20:20:37 | DAddYE | your compiler doesn't like me |
20:20:53 | DAddYE | if I put {.immediate.} on the second template |
20:20:54 | DAddYE | echo("Interval every 1s")()' cannot be called |
20:20:57 | DAddYE | -.- |
20:24:08 | Araq | you need to do 'actions' for immediate and actions() for non-immediate I think |
20:24:27 | DAddYE | Araq: yep figured now |
20:24:58 | DAddYE | doest it looks okay to you now |
20:25:00 | DAddYE | https://gist.github.com/DAddYE/9f2ec7a876164d8fe93f ? |
20:26:24 | Araq | no; as I said you merely get lucky if it works |
20:26:45 | Araq | the compiler shouldn't allow immediate and non-immediate overloads |
20:27:31 | DAddYE | ok |
20:30:18 | DAddYE | Araq: why in some example you returns stmt ? |
20:30:25 | DAddYE | like here http://build.nimrod-code.org/docs/manual.html#scoping-in-templates |
20:30:34 | DAddYE | there is a particular reason behind ? |
20:31:58 | DAddYE | maybe you can chain |
20:39:53 | Araq | it's mostly for historical reasons |
20:40:18 | Araq | ': stmt' and ': void' and nothing all mean the same for template declarations |
20:41:28 | DAddYE | Araq: haaaaa ok |
20:41:28 | DAddYE | Araq: https://gist.github.com/DAddYE/9f2ec7a876164d8fe93f |
20:41:28 | DAddYE | this works |
20:41:38 | DAddYE | tell me that looks so good |
20:41:38 | DAddYE | to you |
20:41:53 | DAddYE | that you want to start coding in UV |
20:41:53 | DAddYE | :D |
20:42:28 | Araq | I would simply rename the one set_timer to decl_timer which makes more sense anyway |
20:42:49 | DAddYE | Araq: yep, totally agree |
20:42:59 | DAddYE | Araq: thanks for your time |
20:44:39 | Araq | you're welcome |
20:44:54 | Araq | now push your wrapper to babel |
20:45:19 | * | DAddYE quit (Remote host closed the connection) |
20:49:59 | gradha | dom96: nimbuild is having problems with the ftp upload, has something changed on the server? |
20:50:29 | gradha | I can telnet into port 21, but trying to use any ftp client just times out |
20:50:49 | gradha | I wonder if this is one of those ftp port thingies which have firewall problems |
20:51:19 | gradha | OTOH I don't have any problems connecting to an italian ftp I manage |
20:52:49 | Araq | port 21 for FTP is the standard though, right? |
20:52:59 | dom96 | that's odd |
20:52:59 | gradha | yes, but ftp always opens a secondary port for data |
20:53:34 | dom96 | the secondary port is only opened when data transfer begins |
20:53:54 | dom96 | But you can't even connect with an ftp client, right? |
20:54:04 | gradha | I can't ls into it |
20:54:14 | gradha | nimbuild fails with Error: unhandled exception: Socket is not connected [EOS] |
20:54:14 | gradha | or Error: unhandled exception: Expected reply '226' got: 421 Data timeout. Reconnect. Sorry. [EInvalidReply] |
20:54:29 | * | DAddYE joined #nimrod |
20:54:39 | DAddYE | Araq: since u have a wrapper in the code base |
20:54:49 | DAddYE | isn't better update it |
20:54:49 | DAddYE | ? |
20:54:59 | Araq | do I? |
20:55:09 | dom96 | well I just noticed that nimbuild crashed |
20:55:09 | gradha | I'd understand if I could not connect to any ftp, but being able to connect to some makes it strange |
20:55:59 | Araq | DAddYE: but your wrapper might be incompatible, better make the stdlib's deprecated and refer to your babel package instead |
20:56:14 | DAddYE | Araq: okay make sense |
20:56:14 | Araq | we have this problem for other things too |
20:56:39 | Araq | IUP, GTK come to mind |
20:56:39 | gradha | dom96: looks like I can log in and ls with the ftp command, but the fancy lftp times out |
20:56:59 | dom96 | lftp? |
20:57:09 | gradha | lftp - Sophisticated file transfer program |
20:57:29 | dom96 | oh |
20:57:39 | gradha | so much for sophistication that it breaks connections |
20:58:14 | gradha | but yeah, something is preventing nimbuild from uploading the data, which is weird |
20:59:19 | dom96 | ugh |
20:59:19 | gradha | using ftp I was able to upload a zero bytes log.txt file, though I can't remove it |
20:59:39 | gradha | during the ftp upload it said "entering passive mode" |
20:59:39 | dom96 | Nimbuild doesn't deal well with builders reconnecting during a build |
21:00:19 | DAddYE | Araq: in my gist can't I change templates to be proc instead? |
21:01:19 | Araq | you can for the non-immediate one but it might cost you a closure |
21:03:09 | DAddYE | ok |
21:03:34 | dom96 | In fact, nimbuild should never crash because the builder's send some incorrect data. |
21:03:44 | * | dom96 adds a try except and calls it a day |
21:03:59 | gradha | since you are at it add another one around the ftp data upload part |
21:04:09 | Araq | dom96: what about the raises: [] annotation? |
21:04:39 | dom96 | gradha: ok |
21:04:39 | * | Araq slaps dom96 for adding try except and calling it a day |
21:04:54 | dom96 | Araq: It's better than creating a restart script |
21:05:04 | dom96 | which ignores ALL crashes |
21:05:04 | Araq | I disagree |
21:05:19 | Araq | a restart script can log the error reliably at least |
21:05:49 | Araq | and the memory protection of processes is nothing to give up easily |
21:06:14 | dom96 | And Nimbuild can't? |
21:06:39 | Araq | well |
21:06:59 | Araq | *I* would write a nimrod restart program instead of a crappy shell script |
21:07:14 | dom96 | Actually my plan isn't ideal. The builder should really terminate when this occurs. |
21:07:29 | dom96 | Otherwise it may continuously be sending the same bad data. |
21:07:59 | dom96 | Araq: ok, write me one then :P |
21:09:19 | Araq | I'm too busy with other things |
21:09:29 | dom96 | yeah, me too. |
21:14:19 | dom96 | oh cool, you get a watcher count on github now. |
21:14:39 | dom96 | "Account for Github research", interesting. |
21:15:29 | Araq | hu? "watcher count"? |
21:15:39 | Araq | shouldn't that be a "stargazers count"? |
21:16:09 | dom96 | There is a difference |
21:16:39 | Araq | yeah; there is no such thing as a "stargazer" |
21:17:34 | EXetoC | beep beep |
21:17:54 | Araq | oh wait ... there is ... lol |
21:18:09 | Araq | it's a real english word ... interesting |
21:28:19 | dom96 | gradha: I'm guessing you want the builder to continue even when ftp upload fails |
21:29:19 | dom96 | not sure I can do that. |
21:29:49 | dom96 | I would have to tell the website that ftp upload succeeded even though it hasn't |
21:30:34 | gradha | wouldn't it be better if it tried to retry? or notify you of the error somehow |
21:30:55 | * | DAddYE quit (Remote host closed the connection) |
21:31:33 | dom96 | yeah, well currently it crashes right? |
21:31:43 | gradha | yes, uncaught exception |
21:31:59 | gradha | I don't mind really, I use the infinite shell script approach |
21:32:20 | gradha | but maybe if the upload was kept it wouldn't try to recompile it, or advance it further |
21:32:30 | gradha | it seems that compilation and upload are separate things |
21:33:02 | dom96 | yeah, but then you don't get the testresults |
21:34:08 | gradha | don't understand, imagine instead of ftp you used dropbox, putting files in a shared folder. nimbuild compiles, then moves the files somewhere, and keeps going |
21:34:23 | gradha | with the ftp it would keep going, and the upload would be left to a secondary nimbuild helper |
21:35:00 | dom96 | yes, but that requires many changes to the code. |
21:35:51 | gradha | so I have now 33MB in the builds directory, useless? |
21:36:08 | dom96 | yeah |
21:36:24 | dom96 | there is no point in keeping the old builds |
21:37:09 | gradha | I guess there's no point in me starting nimbuild again since ftp upload doesn't work now |
21:37:16 | gradha | curse you FTTH! |
21:40:19 | dom96 | hrm, I wonder what happens if I put a proc definition in a try except? |
21:41:19 | Araq | nothing? a proc definition is not executable code |
21:41:58 | dom96 | well just in case I left it out of my try block |
21:42:33 | NimBot | nimrod-code/nimbuild master 3378960 Dominik Picheta [+0 ±1 -0]: Builder will no longer crash if FTP upload failed. |
21:48:07 | dom96 | gradha: well I can successfully connect to the ftp server |
21:48:57 | gradha | I can too, with passive ftp, but nimbuild does something else which doesn't work for me now |
21:50:13 | dom96 | perhaps nimrod's ftpclient module does not support passive ftp |
21:50:21 | * | dom96 can't remember |
21:51:07 | gradha | the thing is, I can still use lftp with an italian ftp, so it's not the passive stuff, but maybe something related |
21:51:31 | gradha | if suddenly "active" ftp was problematic I would be unable to connect to that other server too |
21:53:46 | gradha | ok, so lftp works when I specify a username in the login, but not if I first open the server then try to authenticate |
21:54:48 | gradha | so now the question remains: why is nimbuild refusing to upload if all other ftp tools work? |
21:55:35 | gradha | ok, recompiled the builder and starting another try |
21:55:38 | * | EXetoC quit (Read error: Connection reset by peer) |
21:59:14 | Araq | gradha: [23:58] NimBot macosx-x86_64: Build OK. |
21:59:25 | Araq | you should join #nimbuild |
22:00:18 | * | EXetoC joined #nimrod |
22:20:36 | * | gradha quit (Quit: bbl, need to watch https://www.youtube.com/watch?v=1ZZC82dgJr8 again) |
22:30:59 | fowl | Gradha |
22:31:35 | fowl | Put that nake stuff into nake.nim not a new bash script |
22:31:58 | fowl | Wth son.. lol |
22:32:07 | fowl | I don't know if ur even here |
23:34:11 | * | Associat0r quit (Quit: Associat0r) |
23:48:16 | * | Trix[a]r_za is now known as Trixar_za |