<< 01-02-2018 >>

00:02:30*yglukhov quit (Ping timeout: 260 seconds)
00:05:09FromGitter<honewatson> talking about USP high performance garbage collection has been promoted as a selling point for the nim language
00:05:16FromGitter<honewatson> (https://files.gitter.im/nim-lang/Nim/2ptO/image.png)
00:06:01FromGitter<honewatson> (https://files.gitter.im/nim-lang/Nim/e3h5/image.png)
00:13:03*MJCaley quit (Quit: MJCaley)
00:22:50*MJCaley joined #nim
00:33:23*yglukhov joined #nim
00:37:40*yglukhov quit (Ping timeout: 240 seconds)
00:47:52*dddddd quit (Ping timeout: 256 seconds)
00:49:55FromGitter<zacharycarter> thank you skrylar for the blockchain info
00:56:16skrylarsure
00:56:55skrylarhonewatson: it did when it was new
00:58:01skrylarwhen seaside first came out, many years ago, their "big thing" is that it made clever use of continuations so your web app was coded like a desktop; then it went behind the scenes and managed all the request/responses and the continuations
00:58:50skrylarso you could just write "i have these two buttons, if you push this button do this, if you push this counter do that, blah blah" and it wasn't like NodeJS where you had to write a ton of onerror or whatever
00:59:13skrylarnow that nodejs is out, sure, you could argue that its just a syntactically cleaner version of that. but it predates nodejs fame
00:59:50skrylarwhat makes seaside (and to a elsser extent aida/web) a nonstarter is that the only "fast" and "professional" smalltalks are pay-money, and not trivial monies, unlike ruby which is just free
01:00:08*ipjk quit (Read error: Connection reset by peer)
01:00:13skrylarCogVM is their luajit, but it came way after seaside was hot
01:08:17*huonw quit (Ping timeout: 276 seconds)
01:08:32*huonw joined #nim
01:09:05*yglukhov joined #nim
01:10:16*dddddd joined #nim
01:13:40*yglukhov quit (Ping timeout: 260 seconds)
01:19:55*MJCaley quit (Quit: MJCaley)
01:28:12*MJCaley joined #nim
01:43:38FromGitter<honewatson> ok thanks for the info. Often the best thing never wins in Software. Its all about promotion and build community.
01:44:47FromGitter<honewatson> Seems as though productivity in of itself is not really a strong selling point
01:44:48FromGitter<honewatson> https://medium.com/smalltalk-talk/smalltalk-s-proven-productivity-fe7cbd99c061
01:47:44FromGitter<honewatson> Once you get leads you need to get converts
01:53:59skrylarneolangs often have difficulty understanding people's objections IMO
01:54:21skrylarSBCL people were telling me off when i suggested being able to embed with C might be an advantage
01:54:34skrylarlo and behold, being able to embed with C is why Unity and Mono are a couple
01:55:16skrylarPharo is trying to handle the "user prism" with books, but then they are releasing "stable" versions that invalidate their supporting materials
01:56:15skrylarhaven't run in to that with nim yet, but admittedly i don't do anything too weird or rely on blogs
01:56:43*yglukhov joined #nim
01:58:02skrylarthere is also an issue where many times people would like to use a neolang but can't because they also need to use some framework that demands control over the runtime; for instance OGRE p(in 2012 when I used it) was extremely demanding in that it wanted to create and manage windows for you, and took a lot of effort if you wanted to use your own hrefs
01:58:19skrylarthis tends to screw up when you get ex. Go or Squeak which also want to control the runtime
01:58:31skrylari think nim does have a nim_init or such though
02:01:05*yglukhov quit (Ping timeout: 248 seconds)
02:03:30FromGitter<jamesalbert> @Varriount I haven't inspected the packets exactly, more so just the headers being sent. ⏎ ⏎ @Araq the strange this is that every other wss:// works fine with websocket.nim (the ones I tried) except for gdax, but I'm able to connect to gdax with other libraries
02:23:48*S1tiSchu joined #nim
02:26:57*S1t1Schu quit (Ping timeout: 240 seconds)
02:28:10*skelett quit (Ping timeout: 256 seconds)
02:30:18*chemist69 quit (Ping timeout: 240 seconds)
02:31:30*xkapastel quit (Quit: Connection closed for inactivity)
02:43:08*MJCaley quit (Quit: MJCaley)
02:44:24*chemist69 joined #nim
02:47:50shashlickhonewatson: I'll really vouch for Nim productivity - started a console text editor 1/2 a month ago (spent 3 of those days scavenging for info on keymaps). It's already quite feature rich.
02:48:29shashlickfirst time I decided to use channels between threads and it took 15 minutes and compiled and worked the first time I tried
02:50:26shashlicki've been using Nim for 10 months now so it's not like I have years of experience with the ecosystem or something
03:01:24*icebattle quit (Remote host closed the connection)
03:09:12FromGitter<honewatson> @shashlick yeah Nim is very productive. The point of the article is that productivity has no correlation to popularity. The least productive languages C and JS are two of the most popular while a bunch of highly productive languages are not very popular at all.
03:10:06FromGitter<honewatson> Productivity is definitely a strong selling point for me but doesn't seem to be for plenty of other people/businesses.
03:11:06shashlickwell, I feel a lot of companies forced to use C for performance or portability reasons can consider nim
03:11:38shashlickbut given there's no stable release to build on, it's hard to bet your business on it
03:14:14FromGitter<honewatson> Yeah it is interesting though my feeling is that Nim generally is pretty stable. Seems there is some edge case issues with things like sockets.
03:15:06FromGitter<honewatson> Wallaroo labs used Pony to create their product. Pony is not yet v1. I investigated the language but hate slow compile times. There are much less libraries than Nim too.
03:15:08FromGitter<honewatson> https://www.wallaroolabs.com/
03:15:10shashlickit's not that nim is unstable, every release is good but the thing is you need a long term commitment to a release branch
03:15:37shashlicklike at my work, we do extensive embedded firmware in C
03:15:56shashlicknim would definitely speed up the turnaround and quality
03:16:17shashlickbut it's not feasible to introduce since we can't pick 0.17.2 and expect bug fixes for the next 2 years
03:16:53shashlickif we come back after 6 months, nim may have released 0.17.3, or 0.18 who knows
03:17:22shashlickso a roadmap of stabilty is essential to any serious adoption
03:17:43shashlickthere are always people willing to go bleeding edge, but most industries are hyper conservative for very sensible reasons
03:17:51FromGitter<honewatson> I think v1 is just around the corner but yeah the roadmap thing is all about public relations and promotion.
03:17:58shashlickyep
03:18:04FromGitter<honewatson> reelvalley used Nim and their team provided a lot of bug fixes
03:18:07FromGitter<honewatson> to Nim
03:19:58FromGitter<honewatson> I do feel that Nim is ideally suited to the Cloud/Web/Dev Ops too. Its easy to write testable code that fits easily into Continuous Integration and containerized deployment.
03:28:32*radagast quit (Quit: radagast)
03:44:47*endragor joined #nim
04:06:48*tinAndi joined #nim
04:12:18*tinAndi quit (Ping timeout: 240 seconds)
04:19:28*yglukhov joined #nim
04:23:59*yglukhov quit (Ping timeout: 248 seconds)
04:27:06*dddddd quit (Remote host closed the connection)
04:35:09skrylarshashlick, a lot of companies are "forced to use C" because the people deciding the tooling have no qualifications to be doing so
04:35:31skrylarthey just go "i hear there's a lot of PHP devs" and then that suddenly becomes the requirementt
04:36:29skrylarthere is a perverse inversion involved; the more jobs a person needs to fill for a tech, perhaps the worse that technology is. yet people see jobs available and decide it is desirable. so the lack of quality in a product, in turn reinforces that people should use it because bad quality = more jobs = better marketshare
04:55:03*yglukhov joined #nim
04:59:45*yglukhov quit (Ping timeout: 248 seconds)
05:07:05*scriptum quit (Ping timeout: 256 seconds)
05:11:54*scriptum joined #nim
05:34:31*radagast joined #nim
05:50:58radagastAre non Nim related questions welcome? If so, why use priority queue? If I feed a stream of samples to a PQ, it's not guaranteed that the queue will return N max/min items of the stream, right?
05:55:33FromGitter<matrixbot> `petersjt014` well I don't speak nim and nobody else is awake, so yes
05:56:10FromGitter<matrixbot> `petersjt014` A PQ has a pretty specific use case
05:56:49FromGitter<matrixbot> `petersjt014` https://en.wikipedia.org/wiki/Priority_queue
05:58:43FromGitter<matrixbot> `petersjt014` And the rank assignment is extra overhead--if retrieving min/max items was a main priority, you might consider a Fibonacci heap or something instead
06:00:43FromGitter<Varriount> I'm awake
06:02:32FromGitter<matrixbot> `petersjt014` Ah. Hi.
06:04:48FromGitter<matrixbot> `petersjt014` I'm here because I was maybe going to try installing/running the language for the first time (If I can stay awake)
06:05:03FromGitter<matrixbot> `petersjt014` But in the mean time I can nerd out about data structures a bit
06:07:28FromGitter<matrixbot> `petersjt014` From IRC (bridge bot) (Gitter): also: https://en.wikipedia.org/wiki/Binary_heap#Summary_of_running_times
06:07:50FromGitter<matrixbot> `petersjt014` Time compexities are nice to know if you feel like optimizing
06:09:14FromGitter<matrixbot> `petersjt014` But back to Priority Queues:
06:11:11FromGitter<matrixbot> `petersjt014` IF it helps, you can sort of think of them as a set of *m* individual queues, one per priority
06:12:43FromGitter<matrixbot> `petersjt014` Each one Behaves As a normal queue, FIFO style
06:14:20FromGitter<matrixbot> `petersjt014` One really fitting use case is network connection managment
06:16:13FromGitter<matrixbot> `petersjt014` packets are ordered, *and* some are more important than others (i.e. NTP vs web page request vs voip)
06:17:29*nsf joined #nim
06:18:20*yglukhov joined #nim
06:20:14FromGitter<matrixbot> `petersjt014` Also: the set of individual queues (lanes/channels might be a better term) are separate enough that multithreaded versions aren't too hard to write
06:22:00FromGitter<matrixbot> `petersjt014` I'm not sure if that answers your question, but I hope that example helps! :)
06:22:35*yglukhov quit (Ping timeout: 240 seconds)
06:27:14radagastThanks, it was informative.
06:28:56FromGitter<matrixbot> `petersjt014` you're welcome. also the wiki page (https://en.wikipedia.org/wiki/Priority_queue#Applications) has several more practical applications.
06:31:39FromGitter<matrixbot> `petersjt014` And one last tip: the best way to learn new data structures/algorithims well is to write one yourself, preferably in several languages for good measure.
06:32:24FromGitter<matrixbot> `petersjt014` You won't need to know how the hell a ctrie works most days of your life, but when you do it'll pay off
06:32:53*Yardanico joined #nim
06:42:33*yglukhov joined #nim
06:46:35*yglukhov quit (Ping timeout: 240 seconds)
06:55:13*Yardanico quit (Read error: Connection reset by peer)
06:56:05FromGitter<survivorm> @petersjt014 - how are you connecting to nim channel via matrix?
06:56:13*solitudesf joined #nim
06:56:25*radagast quit (Remote host closed the connection)
06:56:35FromGitter<matrixbot> `petersjt014` https://riot.im/app/#/room/#gitter_nim-lang=2Fnim:matrix.org
07:01:02FromGitter<matrixbot> `survivorm` Thanks
07:01:52FromGitter<matrixbot> `survivorm` Gitter app in linux is "not so good", so, i'm trying to find something else
07:02:56FromGitter<matrixbot> `petersjt014` stuff like this (https://stackoverflow.com/questions/32490505/weechat-and-gitter) is a thing
07:03:38FromGitter<matrixbot> `petersjt014` and any room with a matrix bot will work with the matrix client
07:06:10FromGitter<matrixbot> `survivorm` Good. Personally, i've been a big fan of jabber in icq era. As far as i can see, matrix is a development of jabber idea
07:17:54*yglukhov joined #nim
07:20:01*MJCaley joined #nim
07:22:07*yglukhov quit (Ping timeout: 248 seconds)
07:24:17*MJCaley quit (Ping timeout: 248 seconds)
07:25:59*gangstacat quit (Quit: Ĝis!)
07:31:38*gangstacat joined #nim
07:47:29*brainacid joined #nim
07:47:37brainacidHello
07:48:02*yglukhov joined #nim
07:48:05FromGitter<matrixbot> `petersjt014` Hi
07:48:24FromGitter<matrixbot> `petersjt014` fyi I have literally just started with the language
07:48:33FromGitter<matrixbot> `petersjt014` so might not be able to answer
07:48:58FromGitter<matrixbot> `petersjt014` but I can offer help on other things (see the above chatlogs)
07:50:26brainacidI havent started yet in any language in specific, I dab into all as I need to. Some how I cant commit to a project idea to see the fruition of the model. Im self-taught in tech and formal training would be cool. Im here to try and connect with someone and actually talk about coding and stuff. Not very good networker so to speack, and I aint shy, lol...so hows it going for u with Nim?
07:50:47*radagast joined #nim
07:51:40FromGitter<matrixbot> `survivorm` It's... interesting, as i can say
07:52:12brainacidI mean we can code in one language and transpile to others. We have come quite a ways
07:52:27*yglukhov quit (Ping timeout: 246 seconds)
07:52:37FromGitter<matrixbot> `petersjt014` I got interested in it because it's low-ish level (most of my preferred languages aren't) while still having the stuff I like--mostly Functional Programming constructs
07:53:06brainacidThe generation now hasnt really seen what it was 1996, 28.8kbps, singel core cpus, gpus were haha, and so on
07:53:25FromGitter<matrixbot> `survivorm` For me - it's familiar syntax in many ways (i came from python), high portability, good language flexibility
07:53:37brainacidWhat other languages, that are high-ish, you work with?
07:54:06FromGitter<matrixbot> `survivorm` @brainacid - Why not? I've started with ZX Spectrum, so i remember it well
07:54:53FromGitter<matrixbot> `survivorm` I've coded in python, perl, mathlab, a little in java
07:55:02brainacidWell I mean the overall attitude is one of 'taken for granted', so much work to get her you know
07:55:05FromGitter<matrixbot> `petersjt014` For one: python for a lot of general stuff. For me This (https://www.xkcd.com/353/) strip could not be more accurate
07:55:23brainacidOh nice lets see it
07:55:45FromGitter<matrixbot> `petersjt014` does the link not work?
07:56:22FromGitter<matrixbot> `survivorm` in gitter and matrix it does
07:56:34brainacidlol
07:56:44FromGitter<matrixbot> `petersjt014` yup
07:56:45brainacidyes it sure does
07:57:18brainacidSee im on plain ol' irssi IRC on lxterminal...u know...yank & paste... ;)
07:57:24FromGitter<matrixbot> `petersjt014` For another: Scala. I don't think it makes a good intro to FP like some people say, but I do think it beats haskell in that dept
07:57:34FromGitter<matrixbot> `petersjt014` ah
07:57:45brainacidI liked Haskell
07:57:51brainacidI like C
07:58:03brainacidLisp is Python!
07:58:22brainacidBut how am I breathing underwater? Lisp! Come join me!
07:58:24FromGitter<matrixbot> `survivorm` @brainacid - for me, nim is elegant and simple, as python, but more strict and fast as low-level
07:58:27brainacidhahah
07:58:38FromGitter<matrixbot> `survivorm` And it's marvellous
07:58:50FromGitter<matrixbot> `survivorm` and lisp is not python
07:58:56brainacidI would like to make a terminal text editor that has very basic features
07:58:58FromGitter<matrixbot> `survivorm` nonsense!
07:59:10FromGitter<matrixbot> `survivorm` look at qnim
07:59:11brainacidLike the strip
07:59:33FromGitter<matrixbot> `petersjt014` I mean, except when it is (http://docs.hylang.org/en/stable/)...
07:59:39brainacidThanks. Gonna download the source and look at the code
07:59:40FromGitter<matrixbot> `survivorm` it is terminal, it is very basic, it's written in 2 weeks
08:00:14brainacidThats something I do more than type and model problems with code, I read and reverse-understand
08:00:30FromGitter<matrixbot> `survivorm` Same
08:01:01FromGitter<matrixbot> `survivorm` One of the best ways to get to know the language or the project in particular
08:01:13FromGitter<matrixbot> `petersjt014` You know what another good way is?
08:01:30FromGitter<matrixbot> `survivorm` Write something yourself, of cause
08:01:57FromGitter<matrixbot> `petersjt014` But there is one specific way
08:02:23brainacidHey so...whats qnim? a typo?
08:03:06brainacidI dont know tell us
08:03:52FromGitter<matrixbot> `survivorm` That's a little complicated, but i'll try to dig the link
08:04:09FromGitter<matrixbot> `survivorm` Author is a frequent user of this channel
08:04:40FromGitter<matrixbot> `survivorm` and he was going to upload in on github, but not sure he done it yet
08:04:58FromGitter<matrixbot> `survivorm` so, best way is to browse the history
08:06:29brainacidsounds good
08:07:15brainacidAnyone have an idea if I can help with NimEdit?
08:07:40FromGitter<matrixbot> `survivorm` I think you do
08:07:43brainacidIt be a good way for me to learn. I cant see it on the site when its going to be available
08:08:16FromGitter<matrixbot> `survivorm` it's the @Araq's project AFAIR
08:08:24FromGitter<matrixbot> `petersjt014` I can't help with lang-specific features, but I will say not to forget to memoize if possible
08:08:59FromGitter<matrixbot> `survivorm` @shashlick You're here?
08:09:07FromGitter<matrixbot> `survivorm` He's qnim author
08:09:14FromGitter<matrixbot> `petersjt014` It is a semi-functional language after all
08:09:46Araqbrainacid: nimedit uses github's issue tracker
08:10:51FromGitter<matrixbot> `survivorm` dropbox link to qnim is dead, unfortunately
08:11:08FromGitter<matrixbot> `survivorm` i may repost it here, if you wan
08:11:10FromGitter<matrixbot> `survivorm` i may repost it here, if you want
08:11:11*couven92 joined #nim
08:11:45FromGitter<matrixbot> `survivorm` but all copyrights are to shashlick, of cause
08:13:17FromGitter<matrixbot> `petersjt014` One quick thing from the conversation earlier that I didn't get to mention and wanted to before I forget: ⏎ ⏎ what I like to do sometimes is find a unique or exotic data structure that has not been written in the language yet and make an implementation. You can then test to see if it conforms to expected time complexities, and learning why it does/doesn't reveals a lot about the guts of language
08:13:17FromGitter... itself.
08:13:50FromGitter<matrixbot> `petersjt014` there are some really neat (https://en.wikipedia.org/wiki/Ctrie) ones for challenges
08:14:00brainacidJust helping here as advice, in English its 'of course'
08:14:12brainacidThanks Araq
08:15:27FromGitter<matrixbot> `petersjt014` Though a bloom filter might be a bit better for this purpose as a mid~high level challenge
08:17:04brainacidAraq: I cant see it anywhere on github
08:18:04FromGitter<nitely> @jamesalbert here https://github.com/niv/websocket.nim/pull/28 I fixed it for you
08:18:31FromGitter<nitely> (I don't even use websockets btw)
08:23:04brainacidOops
08:23:18*solitudesf quit (Ping timeout: 240 seconds)
08:27:11*solitudesf joined #nim
08:27:13*PMunch joined #nim
08:49:40brainacidAraq: Cant compile on my i386
08:50:30brainacidAraq: Debian and I get : nimedit.nim(9, 8) Error: cannot open 'sdl2'
08:50:49brainacidWhen I do nim c nimedit.nim
08:54:23PMunchbrainacid, seems like you're missing sdl2
08:54:28PMunchHave you tried nimble install sdl2?
08:55:29*brainacid quit (Ping timeout: 248 seconds)
09:02:57*gmpreussner quit (Ping timeout: 240 seconds)
09:05:40*gmpreussner joined #nim
09:10:14*Vladar joined #nim
09:14:58*yglukhov joined #nim
09:20:12*MJCaley joined #nim
09:24:47*MJCaley quit (Ping timeout: 248 seconds)
09:41:13*Arrrr joined #nim
09:41:13*Arrrr quit (Changing host)
09:41:13*Arrrr joined #nim
09:43:48*gangstacat quit (Ping timeout: 240 seconds)
09:45:24*gangstacat joined #nim
10:18:02*Vladar quit (Quit: Leaving)
10:46:43FromGitter<jamesalbert> @nitely showing that it's all in the details 👏 I thought it was a missing header somewhere, but turns out to be a bad key. Thanks a lot for the commit! But right after I decided to write that piece in c and compile it in :)
10:52:36*vlad1777d joined #nim
11:02:39FromGitter<nitely> lol, I guess that may be fairly common theme until libraries mature
11:03:09Araqcan't use Nim's syntax to write the C?
11:03:20Araqyou need to learn more Nim then. ;-)
11:05:22FromGitter<jamesalbert> I’m still nim padawan status 👶🏼
11:10:45GitDisc<ZarsBranchkin> Several libraries are just wrappers for the C libraries, so you're pretty much already writing C in Nim syntax
11:11:16*GaveUp quit (Ping timeout: 276 seconds)
11:11:17*d10n_ quit (Ping timeout: 276 seconds)
11:12:11*GaveUp joined #nim
11:12:46*d10n joined #nim
11:12:46*d10n quit (Changing host)
11:12:46*d10n joined #nim
11:16:29*Arrrr quit (Ping timeout: 265 seconds)
11:18:55*Arrrr joined #nim
11:18:55*Arrrr quit (Changing host)
11:18:55*Arrrr joined #nim
11:20:43*MJCaley joined #nim
11:20:50*tinAndi joined #nim
11:23:33*PMunch_ joined #nim
11:23:45*PMunch quit (Ping timeout: 248 seconds)
11:25:28*MJCaley quit (Ping timeout: 268 seconds)
11:25:56FromGitter<nitely> @Araq probably used a websocket lib in C that did the job, can't blame him
11:26:25*tinAndi quit (Ping timeout: 248 seconds)
11:27:41Araqlol that never occured to me
11:27:55Araqeven though I have problems with websockets myself
11:27:58FromGitter<nitely> @ZarsBranchkin everything in Python stdlib is C. We are all writting C no matter what
11:28:23Araqnot true, plenty of Python's lib is in Python
11:28:34FromGitter<nitely> almost nothing
11:28:42Araqcome on
11:28:58FromGitter<nitely> you only read the asyncio lib
11:29:22FromGitter<nitely> well, at least half of it must be C
11:30:37FromGitter<nitely> asyncio is pretty much the only thing that it's purely python, for some reason
11:31:40FromGitter<nitely> and probably some other API that no one uses cause it's to slow cause of python :P
11:32:39*PMunch_ is now known as PMunch
11:34:22*Yardanico joined #nim
11:34:32FromGitter<ChristianWitts> https://github.com/python/cpython it is a fairly large portion of python code used
11:36:37FromGitter<nitely> yeah, I exaggerated
11:37:54FromGitter<ChristianWitts> sloc says 572567 for Python and 422832 for C, C++, C/C++ headers
11:38:53FromGitter<nitely> there is plenty of dummy Python glue there, though
11:40:25PMunchTo be fair though, Python isn't the right language to write an efficient runtime in
11:40:36PMunchSo it makes sense to write the Python runtime in something else
11:41:01PMunchBut Nim touts itself as being efficient, so it would be bad if the compiler wasn't also written in Nim :)
11:41:07*dddddd joined #nim
11:43:57FromGitter<nitely> also all the tooling is likely python
11:47:14*Arrrr quit (Ping timeout: 276 seconds)
11:52:21*arnetheduck joined #nim
12:06:26*nsf quit (Quit: WeeChat 2.0.1)
12:10:01*Arrrr joined #nim
12:10:01*Arrrr quit (Changing host)
12:10:01*Arrrr joined #nim
12:12:15*vlad1777d quit (Ping timeout: 248 seconds)
12:19:06*Vladar joined #nim
12:21:41*floppydh joined #nim
12:50:54*defecator joined #nim
12:58:57*NimBot joined #nim
13:06:12*Arrrr quit (Quit: Leaving.)
13:21:26*MJCaley joined #nim
13:26:41*MJCaley quit (Ping timeout: 276 seconds)
13:31:53FromGitter<mratsim> Mandatory xkcd: https://xkcd.com/353/
13:41:37*Snircle_ joined #nim
13:41:48*Snircle quit (Ping timeout: 240 seconds)
13:49:54Yardanicopython 2 though :)
13:50:00Yardanico(I mean they can update it xD)
13:50:51PMunchPython is a pretty neat language though. When it came I can see why people were hyped for it
13:51:16livcdI am unhappy that Python fared better than Ruby
13:51:35PMunchRuby has some very strange syntactic things though..
13:51:56PMunchBut yeah, Ruby is nice as well
13:51:57livcdPython does as well
13:52:08PMunchWell all languages have some strange things
13:52:24PMunchBut I'd say Python is closer in syntax to C/Java than Ruby is
14:12:55*macsek1911[m] quit (Ping timeout: 248 seconds)
14:14:09*dddddd quit (Ping timeout: 264 seconds)
14:15:14*macsek1911[m] joined #nim
14:15:18*dddddd joined #nim
14:17:49*dddddd quit (Excess Flood)
14:18:17*dddddd joined #nim
14:21:47FromGitter<survivorm> btw, @PMunch, any comments on the article?
14:22:49PMunchOh yeah, I tried to reach you the other day
14:23:03PMunchI don't have it in front of me right now though..
14:23:17PMunchBut it looks good
14:24:08PMunchIt's legible in English as well, some things could be changed to make it flow a bit better. And there are some things I don't quite understand but other than that it looks good
14:28:25*fvs left #nim ("ERC (IRC client for Emacs 25.3.1)")
14:29:52*sz0 joined #nim
14:30:16*endragor quit (Remote host closed the connection)
14:30:23FromGitter<survivorm> the part there you don't understand something is not good at all
14:31:26FromGitter<survivorm> It has to be as clear as an open sky, so if i haven't clarified something enough, just point me and i'll try to
14:32:45livcdwhat article ? :)
14:37:14PMunchDo you have the link again survivorm? I only have it open on my home-machine
14:37:21FromGitter<survivorm> interested in parsers?
14:37:43FromGitter<survivorm> moment
14:41:56FromGitter<survivorm> translated https://docs.google.com/document/d/109ITPXUi1ywUHkEb7K_FMv6sMjBAXZgcrE2CuFPnWGA/edit?usp=sharing
14:42:30PMunchDid you translate it by the way or is Google Translate getting this good?
14:42:46FromGitter<survivorm> originalhttps://docs.google.com/document/d/1o20XXXBzR4_R81ihENVyAfACF7Vp599Kb90hR3JdewI/edit#heading=h.wkscvyygl2td
14:43:43FromGitter<survivorm> google translate patched by hands
14:44:10FromGitter<survivorm> got me couple of hours
14:44:20PMunchOh wow
14:44:42PMunchI remember when Google translate would only give you a vague idea of what you were trying to convey
14:45:00PMunchI mean this is still not perfect, but it's gotten far since it's early days
14:46:14FromGitter<survivorm> yeah
14:51:18FromGitter<mratsim> Not sure if Ruby is the same but I really don't like the `end` statement in Crystal and Julia, it's worse than C/C++/Rust bracket. Please stop the arrow pattern
14:52:04FromGitter<survivorm> At least now Google
14:53:51*couven92 quit (Quit: Client disconnecting)
14:54:26FromGitter<survivorm> it's not clean, but at last it's understandable
14:58:22floppydhgiven a subdirectory where I git-clone various nim libraries, what can I set in nim.cfg in my project root that it can find those?
14:58:28floppydhI'm aware of nimble
14:58:29FromGitter<survivorm> btw, above links are shared to all. If You've got any comments, i'm eager to hear 'em
14:58:54PMunch--lib:PATH
14:59:02PMunchfloppydh ^
14:59:11PMunchAccording to this: https://nim-lang.org/docs/nimc.html
14:59:13floppydhPMunch: thanks
14:59:48*solitudesf quit (Ping timeout: 240 seconds)
15:00:59floppydhPMunch: whats the "current" lib path tho?, it overrides it, not extend
15:01:48floppydhalso this is just for system libraries?
15:01:58*solitudesf joined #nim
15:02:19PMunchOooh
15:02:38PMunchHmm, maybe --import:PATH or --NimblePath:PATH are more correct?
15:02:49floppydhPMunch: yeah thanks
15:05:28dom96what you want is --path
15:05:35dom96for each library
15:05:50dom96--nimblePath has some expectations
15:07:48floppydhdom96: ty
15:08:02floppydhflyx: I think yaml is broken again :/ - created an issue
15:09:39*Arrrr joined #nim
15:09:39*Arrrr quit (Changing host)
15:09:39*Arrrr joined #nim
15:09:46flyxfloppydh: probably related by this broken attempt to fix it: https://github.com/flyx/NimYAML/pull/52
15:11:05floppydhfeelsbadman
15:21:46*MJCaley joined #nim
15:24:48FromGitter<zetashift> I kinda like the `end` statements now after working with Elixir
15:24:50flyxI suspect it's a compiler bug since this error seems to be based on line 1060 of serialization.nim; however, internalError() is called in several other places in that file which do not run into that error
15:25:30flyxand I suspect this happens because the call in line 1060 is inside a macro
15:25:53flyxbut I don't really have an idea how to fix it
15:26:56*MJCaley quit (Ping timeout: 276 seconds)
15:27:41shashlick@survivorm: sorry was fast asleep, was 2am 🙂 qnim is now called snip, terminal text editor https://github.com/genotrance/snip - @brainacid, @petersjt014
15:28:35*endragor joined #nim
15:29:45*arnetheduck quit (Ping timeout: 265 seconds)
15:30:31shashlick@survivorm, @petersjt014 - why not use matrix directly on IRC? else your messages come through matrixbot: https://riot.im/app/#/room/#nim:matrix.org
15:33:40FromGitter<survivorm> @shashlick - it's more the matter of what to call root channel? irc or gitter
15:35:46shashlicktrue but even on gitter it shows up as matrixbot
15:35:59flyxI am still waiting for a matrix client usable for a high-traffic channel like this one so that I can switch away from IRC. sadly, Riot is far too bloaty.
15:36:49shashlickflyx: i've been quite happy with riot in the browser
15:37:23shashlickof course, it does use a lot of ram
15:37:57flyxyeah and I miss the clean UI design Textual has
15:38:40shashlickxchat for me, but ya cannot connect from work then
15:39:41flyxat some point in time, when all other projects are finished, I will write a usable chat client.
15:41:46shashlickDoes matrix allow an irc client to connect?
15:45:41FromGitter<survivorm> i doubt it
15:46:09FromGitter<survivorm> does irc support login/pass?
15:47:23shashlickhttps://matrix.org/docs/projects/try-matrix-now.html
15:47:34shashlickVariety of clients
15:48:01shashlickI'll be happy to start a CLI client in nim if anyone is interested in working together
15:48:08FromGitter<survivorm> i tried Quaternion
15:48:09*BitPuffin joined #nim
15:48:25FromGitter<survivorm> it's good, but features are lacking
15:48:28*endragor quit (Remote host closed the connection)
15:48:47FromGitter<survivorm> even reply-to autocomplete
15:48:59FromGitter<survivorm> even SETTINGS
15:49:08FromGitter<survivorm> very basic
15:49:24FromGitter<survivorm> but fast, as far as i've seen
15:52:04*defecato` joined #nim
15:53:03*dddddd quit (Ping timeout: 248 seconds)
15:53:35*PMunch quit (Ping timeout: 276 seconds)
15:54:08*Vladar quit (Quit: Leaving)
15:54:21*skelett joined #nim
15:55:34shashlickI'll check it out
15:55:45*defecator quit (Ping timeout: 248 seconds)
15:55:47shashlickHope it has basic proxy support
16:14:20*xkapastel joined #nim
16:20:30GitDisc<treeform> wrapping C++ code in nim is hard, probably because C++ code is confusing.
16:25:04*miran joined #nim
16:31:51*chemist69 quit (Ping timeout: 246 seconds)
16:35:13*chemist69 joined #nim
16:37:49*floppydh quit (Quit: WeeChat 2.0.1)
16:39:05*skelett quit (Ping timeout: 276 seconds)
16:39:31GitDisc<treeform> i wish more people just made C apis they always seem to just work...
16:41:28FromGitter<survivorm> I think you probably mistake the reason and the result
16:42:10FromGitter<survivorm> That probably means that people making C apis are just more capable :)
16:42:41GitDisc<treeform> I think trying every possible combination is working
16:43:09GitDisc<treeform> I should automate this, like some sort of cpp wrapper safe cracker
16:43:43FromGitter<survivorm> What should it do
16:43:52FromGitter<survivorm> ?
16:44:00GitDisc<treeform> I am trying to wrap the steamworks sdk.
16:44:31FromGitter<survivorm> means nothing to me :P
16:44:59GitDisc<treeform> https://developer.valvesoftware.com/wiki/Steamworks
16:45:00FromGitter<survivorm> is this a toolset for integrating with valve's steam?
16:45:17GitDisc<treeform> yeah
16:50:07GitDisc<treeform> c2nim seems to have issue with it because its all virutal interfaces all the way down...
16:50:49FromGitter<survivorm> meaning the complexity
16:51:32FromGitter<survivorm> rarely used things? All-in-all I mean, not across the framework
16:53:46GitDisc<treeform> I think I just dont understand C++ well enough
17:03:20*yglukhov quit (Remote host closed the connection)
17:04:20*yglukhov joined #nim
17:08:20*tinAndi joined #nim
17:09:10*yglukhov quit (Ping timeout: 260 seconds)
17:11:09*yglukhov joined #nim
17:12:44miranhttps://news.ycombinator.com/item?id=16272012
17:12:53mirannim is mentioned in one comment
17:13:46dom96lol, really? Java as the first comment?
17:14:18mirannr of java upvoters >> nr of nim upvoters :P
17:14:30*tinAndi quit (Ping timeout: 268 seconds)
17:15:30dom96"But, I've also come to the conclusion that the few libraries I've used that were written in nim are of poor quality."
17:15:33dom96I agree with that :/
17:15:44*yglukhov quit (Ping timeout: 268 seconds)
17:15:59*sz0 quit (Quit: Connection closed for inactivity)
17:16:13FromGitter<survivorm> little community, i suppose
17:16:54FromGitter<survivorm> most libraries are developed by single person :(
17:17:58FromGitter<survivorm> AND the language is young and "best practices" are not here yet
17:18:18FromGitter<survivorm> at least not in all language domain
17:18:30federico3yep
17:19:39*Snircle_ quit (Quit: Textual IRC Client: www.textualapp.com)
17:22:17*MJCaley joined #nim
17:22:42*icebattle joined #nim
17:25:54*jxv joined #nim
17:27:00FromGitter<data-man> Young? This year is the 10th anniversary. ⏎ The party will be? :)
17:27:11*MJCaley quit (Ping timeout: 276 seconds)
17:28:40dom96Soooo, who's coming to FOSDEM? :D
17:32:10FromGitter<data-man> I will have enough video and photos from FOSDEM. :)
17:53:42*stephen234 joined #nim
17:54:24*yglukhov joined #nim
17:54:41*stephen234 quit (Client Quit)
17:55:36*tinAndi joined #nim
17:56:43*jxv quit (Quit: zzz…)
17:57:25*jxv joined #nim
17:59:20*yglukhov quit (Ping timeout: 260 seconds)
18:00:21*yglukhov joined #nim
18:01:09*tinAndi quit (Ping timeout: 256 seconds)
18:01:51Yardanicodata-man: I've asked dom96 and they won't do any special video recordings at FOSDEM
18:01:58Yardanicoor you'll come by yourself? :)
18:04:37*yglukhov quit (Remote host closed the connection)
18:04:41FromGitter<data-man> As mentioned in a famous movie, "no, better you to us". :D
18:04:49*yglukhov joined #nim
18:08:13FromGitter<zetashift> Quite nice to see Nim mentioned twice!
18:09:27*Vladar joined #nim
18:09:41*yglukhov quit (Read error: Connection reset by peer)
18:10:20*yglukhov joined #nim
18:10:46FromGitter<zetashift> @dom96 maybe something like this for Nim: https://rust-lang-nursery.github.io/api-guidelines/ could help people new to Nim get around Nim's features and thus lower the overhead of 'language complexity'
18:11:16dom96Definitely. Sounds like a great idea
18:11:20dom96But someone has to write it :)
18:12:01FromGitter<mratsim> Coming to FOSDEM !
18:12:22FromGitter<zetashift> Yes I'm wondering what the best way to go about it is, doing a seperate gitbook about it or just adding notes to the WIP Nim cookbook
18:14:50dom96mratsim: awesome :D
18:15:04dom96zetashift: separate gitbook seems like the way to go
18:17:25FromGitter<mratsim> And from today onwards I will be a full-time Nim dev. When I say full-time it will be work (on blockchain) and Hobby (Deep learning/data science) ;)
18:24:38miranmratsim - write (a lot) about the experience, might be interesting to read to lots of people
18:26:27dom96+1 ^
18:26:31*Snircle joined #nim
18:27:54shashlick@treeform check out nimgen
18:28:35shashlickIf you need I can check out that API and see if nimgen can help wrap it quickly
18:28:50*BitPuffin quit (Remote host closed the connection)
18:28:53*stisa quit (Remote host closed the connection)
18:32:48*yglukhov quit (Remote host closed the connection)
18:34:12FromGitter<alehander42> I already managed to get dizzy on brussels beer. are there any pre-fosdem events?
18:35:53shashlickmeh, need to sign up for the steamworks SDK zip
18:37:58federico3alehander42 https://fosdem.org/2018/beerevent/
18:40:08FromGitter<alehander42> if it continues after midnight, maybe we'll be able to hit it :D
18:49:18*yglukhov joined #nim
18:51:10*kunev quit (Ping timeout: 240 seconds)
18:55:28GitDisc<treeform> shashlick, yeah its a kind of private code base. But its pretty public.
18:57:29GitDisc<treeform> shashlick, if you are willing to work with me I can try it out. I have made some progress handrolling things.
18:59:42*kunev joined #nim
19:00:52dom96alehander42: Are you in BRU already?
19:02:59shashlickSure, can you send me the zip privately?
19:04:41*kunev quit (Ping timeout: 276 seconds)
19:05:13*kunev joined #nim
19:15:11FromGitter<tim-st> Is `strutils.split` only defined for returning a string and not for working in place (assuming it's possible to change the start and end index inside `string` )?
19:15:22FromGitter<tim-st> sry, I meant `strip`
19:18:41GitDisc<treeform> shashlick, email me at starplant at gmail.com
19:22:44*MJCaley joined #nim
19:27:10*MJCaley quit (Ping timeout: 240 seconds)
19:29:03*dada78641 joined #nim
19:35:52*couven92 joined #nim
19:39:04FromGitter<data-man> @tim-st: See https://github.com/nim-lang/Nim/pull/6473#discussion_r144104885 :)
19:40:10*chemist69 quit (Ping timeout: 240 seconds)
19:40:33*chemist69 joined #nim
19:46:35*mcc joined #nim
19:50:15FromGitter<tim-st> Perfect, thanks! I would call it rstrip and lstrip like in Python or make both versions an alias
19:50:40*jxv quit (Quit: zzz…)
19:51:32FromGitter<tim-st> there is also rsplit in nim, so the name would be intuitive
19:51:49*kunev quit (Quit: е те!)
19:55:21FromGitter<tim-st> For now I used `result.title.removeSuffix(Whitespace)`
19:57:21*kunev joined #nim
20:06:53skrylar@earlier i didn't realy think nim was "complex" although i might be used to dealing with c already
20:17:50Yardanicoehm... http://c2lang.org/
20:18:10Yardanicohttp://c2lang.org/site/
20:22:51Araqyay, more better C languages
20:23:41skrylarjoy.
20:24:06skrylari'm just going to go be in the corner with my nubile smalltalk compiler
20:24:21YardanicoAraq, apparently it was created in 2015 :D
20:25:02skrylarthe issue with better-than-c is that it's hard to make platforms off of "we aren't that guy," and also C is wrong thinking anyway
20:25:43Yardanicoskrylar, also this language uses LLVM :P
20:25:49skrylarllvms not so bad
20:25:59Yardanicoyeah, I just mean that C is far more portable than LLVM
20:26:04skrylarapparently VisualWorks is now using llvm
20:26:49shashlickdo we have a list of all platforms and devices that nim has successfully compiled down to?
20:27:16shashlickthat would be a very interesting list and use case to document
20:27:25skrylarisn't it just "anywhere gcc is"?
20:29:25Yardanicoalmost
20:30:17Yardanicohttps://github.com/nim-lang/Nim/blob/c39e2029762387d05f7b3d81490c6129703c1b60/lib/system/platforms.nim
20:30:26Yardanicoyou can add new platforms pretty easily here though
20:31:17skrylarsqueak is kind of like that
20:31:24*nsf joined #nim
20:31:24skrylarthey have a DSL-to-C converter
20:31:44shashlickbut do we have documentation on how to set nim up to work with a custom compiler?
20:31:53skrylar"no"
20:32:04shashlicklike say I want to target a motorola chip or rasp pi or something
20:32:19skrylarwell raspi is just ARM, so you use the existing gcc chains
20:32:41skrylari suspect freescale is similar
20:32:51Araqskrylar, fyi, the Nim compiler heavily uses the GC, nimsuggest runs as a server relying on the GC and even if I throw away the GC tomorrow (and I won't), the GC is safe for at least 5 years
20:33:10skrylarAraq, yeah they're useful things
20:33:19Araqnot sure why my talks scare you.
20:33:34AraqI don't recall butchering the language before.
20:34:08skrylari think more or less all of my code broke in the case sensitivity debacle
20:34:20Araqoh sorry about that one.
20:35:24skrylarnever really ran in to GC issues per se, although i didn't write "big data" apps. from when i poked around with C#/Java, it looked more like their GC was missing the knobs people needed more than GCs were bad
20:35:48skrylarlike the constant complaint "oh noes it stops to collect" "so tell the fucking user a collection is nearby so they can flip a heartbeat flag"
20:37:55shashlickaraq: I'm looking at your post here: https://nim-lang.org/araq/destructors.html
20:37:59shashlicknot completely convinced the GC is such a big obstacle
20:38:12skrylarthis is my uneducated opinion, but it seems to me that if finalizers are guaranteed (people seem not to want to make that a thing) then you can use shared memory for "big stuff" and then copying collectors just fine.
20:38:15shashlickinterop with C is fantastic, and nim's super fast
20:38:42shashlickalthough this is completely layman conclusion
20:38:42skrylarin c# i remember having a caniption because strings and such had to be pinned and copied
20:39:13shashlickif nim language + stdlib was 100% gc independent, user could decide to use gc or not
20:39:35shashlicklib writers could also decide to support both approches
20:39:41shodan45dom96: you know anything about manning's account creation? I'm starting to wonder if I typed my email wrong...
20:39:58shashlicki'm not sure I see the limitations today, since nim is soo capable, but maybe i've not hit that wall yet
20:40:05skrylarshashlick, it's just a hard thing to decide over, because the prevailing solutions are basically ARC or GC
20:40:11dom96shodan45: sadly no
20:40:23dom96contact their support though, they're pretty responsive
20:41:04shodan45dom96: ok, I'll give it a few more minutes & try that
20:41:23shashlick=> I have spent far more time now in fixing GC related bugs or optimizing the GC than I ever spent in hunting down memory leaks or corruptions. Memory safety is not negotiable but we should attempt to get it without a runtime that grows ever more complex - araq from blog
20:41:43shashlickthat obviously stands out as a pain but your efforts have made nim super productive for the rest of us
20:41:50Araqyes, I stand by my words. :-)
20:42:10shashlicktrying to understand your motivations, that's all
20:42:27Araqwell I want to replace the GC with something better.
20:42:30skrylaroh, i used to be anti-gc :P
20:42:41Araqnot go back to malloc+free.
20:43:05AraqNim is also about pushing stuff from runtime to compile-time
20:43:26Araqand in this sense making the GC a "compile-time" one fits Nim perfectly.
20:43:59skrylarfrom what i have read so far, ARC tends to run a thinner memory profile but clogs up codegen. GC runs more memory and lets coegen be more aggressive, but the piper ends up paid at *some point*
20:44:08shashlickwell, even though that sounds like a big effort/change, it doesn't seem like it will affect users of the language at all right?
20:44:29skrylarsadly i don't have the OCAML paper comparing boost pointer performance to the ocaml GC. They found that the payments for constant atomic inc/dec were higher than the GC time
20:44:47Araqit's not clear, shashlick. what is clear is that strings and seqs can easily be done without the GC
20:45:13Araqleaving only refs and closures. they can use an optimized variant of atomic RC
20:45:15skrylarexceptions and closures seem to get weird with arc
20:45:17shodan45Araq: you give talks?
20:45:23shashlickwe don't care right now with gc, we won't care tomorrow if it is mostly done at compile time
20:45:28Araqleaving us with the dreaded cycle problems
20:45:35shashlickthat sounds like a non-breaking improvement to me - make strings and seqs non GC
20:45:51skrylarhow many strong cycles actually need to exist though
20:46:02Araqskrylar, I know this "paper"
20:46:06shashlickmy point is making all of nim stdlib non GC is the way to go, however it is accomplished
20:46:15shashlickthen as a user, I can use a flag to turn off the gc altogether and be disciplined in my usage
20:46:27*Arrrr quit (Ping timeout: 240 seconds)
20:46:54skrylarit seems like most cycles are from 1) things not having properly functioning weak ref mechanics and 2) people not knowing they're there
20:47:10*dddddd joined #nim
20:47:38skrylarthough i may be wrong and there's probably a use case somewhere that a guy actually needed two strong refs on one item
20:48:06Araqskrylar, for Nim 'async' introduces cycles everywhere, but these can be dealt with manual deallocs. well not "manual" but done in the poll loop
20:48:52Araqunfortunately there are no good typing rules for preventing cycles at compile-time
20:49:08*yglukhov quit (Remote host closed the connection)
20:49:40skrylarI never even used async :>
20:49:54Araqshodan45, sure. why?
20:50:32*defecato` quit (Remote host closed the connection)
20:51:12shashlickdom96: is it possible to use httpclient without all the async stuff getting pulled in?
20:51:31*yglukhov joined #nim
20:53:17*MJCaley joined #nim
20:53:25Araqshashlick, it's probably optimized away?
20:53:29Yardanicoshashlick, yes
20:53:45Yardanicojust don't use async procs and it will be fine
20:53:56skrylarTo be honest my curiosity with async code was more in line with Promises/Futures like Io tinkered with, and having the runtime based around fibers. But that's more of an actor model or Self program than anything else, and i never got around to trying it :<
20:54:20shashlickI don't use any async but it all gets compiled and takes a while to go through
20:54:47Yardanicoehm, actually.. no
20:54:58Yardanicowell maybe
20:55:03Yardanicobecause of multisync pragma?
20:56:44FromGitter<Bennyelg> https://github.com/Bennyelg/nimPresto/blob/refactoring/ver2/db_presto.nim ⏎ Any Review / suggestion and refactoring will be gladly welcome!
20:57:37*Trustable joined #nim
20:58:29*Vladar quit (Quit: Leaving)
21:02:08shodan45Araq: are they online somewhere?
21:02:21shodan45dom96: took like 30 minutes, but I got the email
21:03:32shashlickdom96: https://gist.github.com/anonymous/49ea7a43e85464d2e5d9444ba6c3f663
21:03:41*stisa joined #nim
21:06:33*Yardanico quit (Remote host closed the connection)
21:06:42dom96shashlick: ?
21:18:28FromGitter<mratsim> To avoid the GC stigma we need to get inspired by marketing people and find a new buzzword to replace GC
21:18:56FromGitter<mratsim> I propose “NBR” —> “nim-based reclamation"
21:19:18*couven92 quit (Ping timeout: 252 seconds)
21:27:31FromGitter<Quelklef> "NAG": "Not a Garbage Collector"
21:30:26FromGitter<data-man> GCC - Garbage Collectors Contestant
21:32:39*nsf quit (Quit: WeeChat 2.0.1)
21:35:59Araqmratsim: "scope based memory management"
21:41:37*yglukhov quit (Remote host closed the connection)
21:42:56FromGitter<mratsim> Well trademark that —> blog post —> Hacker news / Reddit #1 —> Get invited to speak to conference and write a book for $$$$ —> Get bounties to fix pesky Nim bugs :P
21:48:34*miran quit (Quit: Konversation terminated!)
21:59:05*jxv joined #nim
22:03:23*oom joined #nim
22:03:46oomHi !
22:04:10oomI'm trying to register to the forum but never recevied the email...
22:04:49oomi have trying a renew a password too.. no email.. i'm watting for ><
22:11:07shashlickdom96: was just wanting to show how httpclient is pulling in many modules like asyncdispatch, slowing down compile time
22:12:00dom96oom: what's your profile?
22:12:05dom96(profile name)
22:13:01oomdom96: oom
22:13:13oom;)
22:13:26dom96oom: heh, I should have guessed that
22:13:32dom96Do you remember your password?
22:13:38dom96I can just activate the account for you
22:13:39skrylarmratsim: is there actually a gc stigma going on right now?
22:13:41oomyes
22:13:48dom96okay, activated
22:13:50skrylari feel like i've artificially started some kind of gc v. non gc argument
22:14:16oomdom96: nice, thx :)
22:15:40FromGitter<mratsim> na there was a Quora thread about “Why D isn’t more mainstream” that reach first page on HN yesterday. Everyone on Quora was just saying “GC, GC, GC, low performance due to GC"
22:17:54skrylarD isn't more mainstream because they shot themselves in the feet.
22:18:49skrylarWhen they were gaining traction, they started making invite-only groups for the tangerine (i think that was it) runtime where only "some" people got in, and then at the same time the developers fractured the language
22:19:13dom96huh, what was their reasoning for doing that?
22:19:34skrylarthe D1 -> D2 reason was "oh no the stdlib uses too much GC guess we better take out the option to go GC-less"
22:20:16skrylarSo instead of being able to just delete a thing, you now had to use malloc, "emplace", "destroy", free, so of course all the D1 code is now broken (-> all supporting materials ruined)
22:20:40skrylarD1 was built on the idea that you just did what you need and the GC was one such way to do it. D2 started imposing opinions on development
22:21:49skrylarI don't know what happened to the alt runtime. the community imploded.
22:25:44shashlickugh, I had built nim without -d:release, so was taking double the time to compile
22:25:48shashlick15.6 secs vs 8.8 secs
22:25:58skrylarouch
22:26:26skrylari noticed head was taking more and more time to build for a while; i had a local jenkins doing cross testing on stable/head
22:27:37shashlickya, am looking into making my code backwards compatible - testing with 0.16.0, 0.17.0, 0.17.2 and head
22:27:53shashlickhow do you do version specific code?
22:30:16skrylaryou mean "if this version, do this thing"?
22:30:24shashlickyep
22:30:24*oom quit (Ping timeout: 260 seconds)
22:30:50skrylarthe dumpy way is to use a define for each version and use when to check it
22:31:04*xet7 quit (Quit: Leaving)
22:31:09skrylarthe smarter way that probably exists that i don't know the exact names for is the same but there's probably a version tag you can access with 'when'
22:31:32shashlickaraq mentioned earlier that there's a way to make a template to do this
22:31:52skrylaralthough if you are on nimble you are possibly boned, because barring dom96 having something super clever i think nimble doesn't support range bands like that
22:32:35shashlickjust choosenim 0.16.0 and it doesn't work
22:32:41skrylarhttps://nim-lang.org/docs/system.html#NimVersion
22:32:42shashlickError: cannot open 'C:\Users\sh.nimble\lib\system.nim'
22:32:51shashlickwhy is it looking there for the nim library
22:33:02skrylarNim{Major,Minor,Patch} are consts you can check
22:33:17*MJCaley quit (Quit: MJCaley)
22:33:35dom96shashlick: is this Nim failing?
22:33:47shashlickneat!
22:33:54shashlickdom96: nimble
22:34:35skrylari found it nifty to use a jenkins instance to do the testing, because you can either 1) use the multi-config plugin to handle the stable/head/whatever x win/mac/linux matrix testing, or 2) use pipelines to do it with pretty outputs
22:34:36shashlicknimble 0.8.6 per the version
22:34:42dom96I guess because you've chosen 0.16.0 you got an old Nimble version
22:34:58skrylardebian stable uses that version
22:35:03*xet7 joined #nim
22:36:28dom96You can run C:\Users\<user>\.choosenim\toolchains\nim-0.17.2\bin\nimble as a workaround
22:36:30shashlickshouldn't 0.16.0 just work as is? even if it were old, it should work as it would have back then
22:36:42shashlickis it because i installed via choosenim?
22:36:49dom96yes, it doesn't support choosenim
22:37:24skrylari didn't use choosenim either :<
22:37:47skrylarnim is unpicky as it turns out, you can just make .. well i would say /opt/version dirs but eys on windows
22:37:52shashlickchoosenim is super easy
22:38:09shashlick0.17.0 worked fine, even though nimble version is still 0.8.6
22:38:52*solitudesf quit (Ping timeout: 268 seconds)
22:39:05shashlickalthough my code doesn't so need to fix it up to work correctly
22:39:23dom96why are you adding support for those old versions?
22:40:04shashlickwell, i've posted this editor online, not that there's many takers, if it is just code, i need to check what versions it actually works on
22:40:08skrylar<(o_o)>~
22:40:15shashlickkind of a test bed of that whole stability discussion we had
22:40:40shashlickif I put in nimble that it needs v0.17.2 and run on head all the time, it may not compile for most folks
22:41:21skrylara sane way to go is to support the oldest version native to the platforms you support
22:41:37skrylarAssuming you want to be like, a deb package. Otherwise just stable.
22:41:50skrylartesting against head is mostly an early warning if araq decides to bomb the language again lol
22:42:45shashlickya that's why i'm doing this, it's in reverse, i built on head and now thinking of a sustainable method of support
22:43:05skrylaranyway if you really must do weird things, you can always install different versions to different folders and shimmy environment vars around in your CI framework
22:43:27shashlickif you release a tool or package (especially a package), it should build on the stable versions - at least the last year of stable releases
22:43:33shashlickskrylar: choosenim makes this very easy
22:43:43skrylaryes but as dom just said, choosenim doesn't work on the version you were trying to use
22:43:49shashlickchoosenim 0.17.0; nimble test; choosenim 0.17.2; nimble test
22:44:54shashlickthat's true, but now that it does work, I can say the tool is supported from 0.17.0 onwards and test those versions
22:45:13shashlickcould always install 0.16.0 separately or hack it to work, but can draw the line somewhere
22:45:35*Senketsu quit (Ping timeout: 240 seconds)
22:45:42skrylarreminds me that i still need to bother with vagrant at some point
22:45:59shashlickdo we post older versions of nim docs?
22:46:14skrylar"no" but they are part of git, so you can go mint them
22:46:43skrylari have previously suggested a dual-stage wiki setup, where one is an officially blessed set of pages and the other is the usual free for all, but people keep laughing at me for it
22:47:26skrylaralthough we don't use a wiki so meh
22:47:39shashlickugh, trySend() in channels isn't in 0.17.0
22:48:30shashlicklinks in older docs still point to master, so they don't work anymore
22:49:04*Senketsu joined #nim
22:51:04skrylarthe joys of release management?
22:51:07shashlicklooks like trySend() was added in head, not in 0.17.2 either - so I'm happily using a feature that's not in stable
22:51:08skrylarweird to think that's actually a job
22:51:34shashlickis a royal pain but it pays the bills really well
22:52:04skrylarit's funny when you find jobs where managers are actually useful and not just middling meeting causers
22:52:41skrylaranyway doc version management isn't important until 1.0 is actually a thing
22:53:23dom96shashlick: we do have older versions of Nim docs, just s/docs/0.13.0/ or whatever version you want
22:53:51dom96for example: https://nim-lang.org/0.13.0/net.html
22:54:26shashlickdom96: excellent, but like i said, the github links are broken
22:54:47*jxv quit (Quit: zzz…)
22:56:20skrylaris that a problem
22:57:14shashlickwell, the convenience of having links to source is great
22:57:25skrylaronly tag releases would have a "correct" place to point to, anything else would just point to master because the docs aren't archived in lockstep
22:59:34dom96You can probably just s/master/v0.13.0/ in those links
22:59:42shashlickwell, docs are generated, so the ones posted online should point to the right place
23:00:39shashlickdom96: you need to check NimVersion and find the correct hash for that tag if it is present
23:00:48shashlickelse point to master since it's basically head
23:01:54shashlickactually this works: https://github.com/nim-lang/Nim/tree/v0.17.2/
23:02:18skrylartag releases get special names ;)
23:02:33shashlickhttps://github.com/nim-lang/Nim/blob/v0.17.2/lib/system/channels.nim
23:02:38skrylarthis feels like the kind of thing there is probably a book about ~hmm~
23:03:18shashlickyep
23:04:36shashlicki think I need to stop working on my tools and spend some time adding value to nim
23:04:55shashlickdom96: is there any motivation to close on the forum replacement topic?
23:05:01skrylarwell that's the curse of developers over a certain level of knowledge :P
23:05:14skrylar"sharpening the saw" is useful but then you get in to "where do you stop and do something else"
23:06:48*jxv joined #nim
23:06:56dom96it should be linking to the tag instead of 'master'
23:07:10dom96we'd have to grep replace the older docs
23:07:22dom96I'm curious what Araq thinks about replacing the forum
23:07:28dom96I bet he is opposed though :)
23:07:40shashlickdom96: I can look into setting up and maintaining discourse or anything else if that's what we want to do
23:08:42shashlickdom96: where is nim-lang.org hosted? I could help with some of these things
23:08:56dom96on two DO VPS'
23:09:04dom96Digital Ocean I should write
23:09:38skrylari happen to know of a firebird finding if you write a new forum =p
23:09:39dom96I'm happy to let the community use the second VPS
23:09:58skrylar*binding
23:11:08shashlickokay, so how do you typically decide direction and stuff? cause I can ask all sorts of questions but there needs to be some mechanism to take decisions
23:11:35shashlickif it is put to a vote, etc. or if our BDFL waves the flag or whatever
23:12:22skrylarwell. you tell dom96 or Araq and if they feel like it then it happens. lol
23:12:33skrylarisn't that how it always works
23:12:43shashlickwhere are such things tracked - nim wiki somewhere?
23:12:58dom96Not much hurry with getting rid of the forum
23:13:09dom96and right now my focus is on FOSDEM :)
23:15:06shashlickright but if a decision is made, the community can start aligning and chip in accordingly
23:15:53dom96Unfortunately I cannot easily delegate switching from the NimForum to Discourse
23:16:08dom96I'd have to do it
23:16:24skrylardiscourse/nodebb are a little.. biggish
23:16:28skrylaris nimforum broken?
23:17:25dom96Not at all
23:17:32dom96been working fine for years :)
23:17:38dom96just needs a little redesign
23:17:58shashlickskrylar: no, just feedback from people that it's limited comparatively
23:18:40shashlickdom96: obviously you might want to control production, but if there's a place to stage, I can help with that
23:19:36skrylarlimited in comparison to what
23:19:42*Snircle quit (Quit: Textual IRC Client: www.textualapp.com)
23:19:47skrylar8chan has virtually zero features and it works
23:20:18dom96There is a lot of features that would be nice
23:20:28dom96but I keep coming back to Hacker News which has none of those features
23:21:13skrylari would perhaps advocate not using captchas, for they are hopelessly broken (https://arstechnica.com/science/2017/10/inspired-by-brains-visual-cortex-new-ai-utterly-wrecks-captcha-security/) and hashcashes instead, but eh
23:22:49skrylarin my limited experience the users often don't need so many features, although moderators are often flooded in a need of them
23:23:26FromGitter<data-man> Why not use other engines for the forum? Simple Machines Forum is cool, FluxBB is small & fast. (PHP engines)
23:23:49skrylarits a point of pride to use your own thing for your community forums
23:23:59skrylarpharo uses seaside running on pharo, etc
23:25:10FromGitter<data-man> Your own things are not always the most convenient :)
23:25:42skrylarIf you do the work correctly, they become implicit proof of capability. And if you do it very well, they become part of your ecosystem
23:25:52shashlickhere's some more hard feedback - https://www.reddit.com/r/nim/comments/7smw81/nim_future/dt7xmab/
23:26:56dom96'night
23:27:02shashlicki'm not quite so frustrated with the forum, mobile view would be great
23:27:07skrylarex. they extracted Pillar from Pier, and now use Pillar to write their doc books, so they have dogfooding (to find bugs and get practical feedback) and also a utility so now theres a markup processor. Go does kind of the same, although Google doesn't. Hugo and such make use of Blackfriday, so the markup handler just becomes a thing for the community to use, but you needed it for the forum, etc
23:27:17skrylarnight dom96
23:27:30shashlickl8r
23:27:54skrylarWhen i poked nodebb and i think discourse, i was not imprssed
23:28:06shashlickmy only thought is that at this point, there's no bandwidth to maintain and improve the forum, so better to use some standard product
23:28:07skrylarthey have that 'web 2.0' flair but don't actually make my life easier as an admin
23:29:11shashlickif there's commitment to improve it, sure but do we have the time to focus on that at this point
23:29:36skrylarare people actually refusing to use the product because the forum doesn't have ajax badges
23:29:47shashlickor just backlog the feedback and come back to it at some point
23:30:29shashlickya, talking first impressions and stuff - I'm not quite on board with that logic
23:31:15skrylarreading the thread
23:31:16shashlicki don't have very strong opinions on stuff, but am keen on deciding and proceeding
23:31:24skrylarit looks like the usual case of the CSS is bad so therefore the code must be bad
23:32:12*Trustable quit (Remote host closed the connection)
23:32:45shashlickit would be nice to have a community voting mechanism to collect feedback and decide but I'm fine with the BDFL format too
23:32:59skrylarMmm. Democracy is hard
23:33:40shashlickaraq's very active and accessible here so that's fun but need to decide in some consistent way
23:33:44shashlicki'm new here so trying to figure out the model in place for the last decade
23:34:42shashlickwell, if nim wants to mature, it needs to get these things in place - nothing to do with technical merit, just how to deal with day to day stuff
23:36:25skrylarWalter's forum software for D had a network news protocol adapter :D
23:40:13skrylarok. finished reading the link
23:48:05*chemist69 quit (Ping timeout: 276 seconds)
23:52:51*chemist69 joined #nim