code logs -> 2018 -> Mon, 05 Mar 2018< code.20180304.log - code.20180306.log >
--- Log opened Mon Mar 05 00:00:32 2018
01:10 Degi [Degi@Nightstar-i3ch00.dyn.telefonica.de] has quit [Connection closed]
01:19 himi [sjjf@Nightstar-1drtbs.anu.edu.au] has joined #code
01:19 mode/#code [+o himi] by ChanServ
01:29 McMartin [mcmartin@Nightstar-rpcdbf.sntcca.sbcglobal.net] has quit [[NS] Quit: system update]
01:31 McMartin [mcmartin@Nightstar-rpcdbf.sntcca.sbcglobal.net] has joined #code
01:31 mode/#code [+ao McMartin McMartin] by ChanServ
01:54 gnolam_ [lenin@Nightstar-ghphrt.cust.bahnhof.se] has joined #code
01:57 gnolam [lenin@Nightstar-ego6cb.cust.bahnhof.se] has quit [Ping timeout: 121 seconds]
01:59 gnolam_ [lenin@Nightstar-ghphrt.cust.bahnhof.se] has quit [Ping timeout: 121 seconds]
02:00 gnolam [lenin@Nightstar-ego6cb.cust.bahnhof.se] has joined #code
02:00 mode/#code [+o gnolam] by ChanServ
02:09 macdjord|slep is now known as macdjord
02:24 Reiv [NSkiwiirc@Nightstar-ih0uis.global-gateway.net.nz] has quit [[NS] Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
02:26 Reiv [NSkiwiirc@Nightstar-ih0uis.global-gateway.net.nz] has joined #code
02:26 mode/#code [+o Reiv] by ChanServ
02:26 Reiv [NSkiwiirc@Nightstar-ih0uis.global-gateway.net.nz] has quit [[NS] Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
02:28 Reiv [NSkiwiirc@Nightstar-ih0uis.global-gateway.net.nz] has joined #code
02:28 mode/#code [+o Reiv] by ChanServ
02:32 Pinkhair [user1@Nightstar-g7hdo5.dyn.optonline.net] has quit [Ping timeout: 121 seconds]
02:33 Reiv [NSkiwiirc@Nightstar-ih0uis.global-gateway.net.nz] has quit [[NS] Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
02:34 Reiv [NSkiwiirc@Nightstar-ih0uis.global-gateway.net.nz] has joined #code
02:34 mode/#code [+o Reiv] by ChanServ
02:34 Pink [user1@Nightstar-g7hdo5.dyn.optonline.net] has joined #code
03:12 * McMartin does the unthinkable
03:12 * McMartin creates a set of asm routines that actually are compatible with the chip's dominant ABI
03:12
<&McMartin>
shock, horror.
03:15
<@Reiv>
I would be more impressed, but you are at this point a Silicon Wizard
03:15
<&McMartin>
Oh, I'm being sarcastic here
03:15
<@Reiv>
I can never tell
03:15
<&McMartin>
Sorry, let me rephrase that
03:15 * McMartin manages to not be gratuitously incompatible with all software in the entire universe
03:16
<@Reiv>
But if you managed to make a Tesla levitate by hacking the vibrational frequency of its cooling software, at this point, I'd be "Huh, cool, McMartin is at it again"~
03:17
<&McMartin>
Basically, one of the things one does as a Responsible Chip Manufacturer is come up with a set of rules that mean that people who write compilers can all call into each other's libraries without excruciating pain and agony.
03:17
<&McMartin>
Intel notably didn't really do this which is why there are like twelve different ways to do this, but AMD mostly did and I think there are only two there.
03:18
<&McMartin>
Motorola and ARM actually expounded standards that are universally adhered to, and here I am writing Motorola code, and deciding to Not Be An Asshole About It.
03:18
<&McMartin>
(Not that it does me any *good* in this case because none of the tools I might want to use to talk to this code can do so unless I get more clever with obscure Unix tools I don't think anyone actually understands.)
03:19
<&McMartin>
And computing as a whole has gotten to a point where linking, in general, is Deep Magic
03:19
<&McMartin>
I've learned that it always was, but you usually knew it was part of what was happening.
03:25
< Mahal>
Honestly, 99.99999% of what you do is Deep Magic to me
03:25
< Mahal>
I'm a sysadmin, not a coder. I ain't got no clue what y'all are doing
03:25
<@Reiv>
I am marginally closer
03:26
<@Reiv>
but only a tiny bit
03:33
<&McMartin>
Mahal: Right, so, I mean, some of this is actually closer to your world, in terms of Making Shit Work
03:33
<&McMartin>
In that you've had to contend with worlds where DLLs are a thing that exist
03:33
< Mahal>
well, yes
03:33
< Mahal>
but I have to know a) that they exist b) they do things
03:33
<&McMartin>
And in, say, Java, or Python, or JavaScript, they really don't
03:33
< Mahal>
I don't usually need to care *how*
03:34
<&McMartin>
Yeah, and neither did the people writing in earlier languages.
03:34
<&McMartin>
It just worked
03:34
<&McMartin>
So it they didn't look at it except when it didn't
03:34
<&McMartin>
And it's an endless vortex of darkness, it turns out, but some people have gotten good results out~
03:35
<&McMartin>
But it also ends up being a lot of why these things are called "compilers" in the first place
03:35
<&McMartin>
Because you were taking a bunch of separate files and producing one file that actually does the thing you wanted.
04:13 Kindamoody is now known as Kindamoody[zZz]
05:05 Vorntastic [Vorn@Nightstar-lv1bnu.sub-97-46-131.myvzw.com] has joined #code
05:07 Pandevornium [Vorn@Nightstar-l5us1b.sub-174-211-9.myvzw.com] has joined #code
05:08 Vornlicious [Vorn@Nightstar-3o301e.sub-174-210-3.myvzw.com] has quit [Ping timeout: 121 seconds]
05:09 Vorntastic [Vorn@Nightstar-lv1bnu.sub-97-46-131.myvzw.com] has quit [Ping timeout: 121 seconds]
05:11 Derakon is now known as Derakon[AFK]
05:12 Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds]
05:25 Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code
05:25 mode/#code [+qo Vornicus Vornicus] by ChanServ
06:18 * McMartin gets controller reads working.
06:23
<&McMartin>
It's kind of galling that the only system I've ever programmed where polling d-pad/joystick status actually completely works the way you'd expect is the Atari 2600.
06:23
<&McMartin>
The C64 almost gets there, but there's the complication where Joystick Port 1 shares space with the keyboard scanner and no software at any level can distinguish joystick actions in Port 1 from keyboard inputs.
06:24
<&McMartin>
(All the other ones that are digital-input use a bunch of weird strobing protocols and send data out through a smaller number of pins.)
06:27
<&McMartin>
Although I guess that's not too much of a surprise. There aren't actually enough pins to do full-parallel on a Genesis controller.
06:27
<&McMartin>
(four directions, three buttons, start button is 8; the standard D-sub-9 ports of the day needed a Vcc and GND input so there's only 7 pins left.)
06:31 himi [sjjf@Nightstar-1drtbs.anu.edu.au] has quit [Ping timeout: 121 seconds]
07:03 macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [[NS] Quit: Live Long and Prosper.]
07:20 celticminstrel [celticminst@Nightstar-gil1m1.dsl.bell.ca] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!]
07:20 gnolam [lenin@Nightstar-ego6cb.cust.bahnhof.se] has quit [[NS] Quit: Gone]
07:43 macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
07:43 mode/#code [+o macdjord] by ChanServ
09:00 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
09:00 mode/#code [+o mac] by ChanServ
09:03 macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
09:09 Kindamoody[zZz] is now known as Kindamoody
09:35 Degi [Degi@Nightstar-i3ch00.dyn.telefonica.de] has joined #code
09:50 gnolam [quassel@Nightstar-f22.ckv.119.62.IP] has joined #code
09:50 mode/#code [+o gnolam] by ChanServ
09:53 Kindamoody is now known as Kindamoody|afk
10:17 Degi [Degi@Nightstar-i3ch00.dyn.telefonica.de] has quit [Connection closed]
11:25 gnolam [quassel@Nightstar-f22.ckv.119.62.IP] has quit [[NS] Quit: Gotemburgo]
11:33 macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
11:33 mode/#code [+o macdjord] by ChanServ
11:35 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
12:01 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
12:01 mode/#code [+o mac] by ChanServ
12:03 macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
12:27 * TheWatcher O.Os
12:28
<@TheWatcher>
Egads, one of the students just told another than their commit message wasn't good enough, and pointed them at https://chris.beams.io/posts/git-commit/
12:28
<@TheWatcher>
What is this strange world I'm in?!
12:33
< Pandevornium>
Isn't that yours
12:34
< Pandevornium>
And if not why did I think it was yours
12:35
<@TheWatcher>
It is not mine, no.
12:36
<@TheWatcher>
Although I have referred to it several times.
12:37
< Pandevornium>
I need like a course in git
12:40
<&ToxicFrog>
git \o/
12:41 * [R] tries to follow that
12:41
<&[R]>
ATM only does summaries for the commits
12:41
<&[R]>
Don't really want to write an essay for every commit :/
12:50
< Pandevornium>
Like I maybe sort of kind of get the very basics but I keep running into trouble in ways I didn't think I should
12:52
<&[R]>
Such as?
12:56
< Pandevornium>
Like my only attempt to file a PR failed with a message about needing approval to even do that, which I told the maintainer and they were quite surprised by and couldn't figure out how to fix. Also whatever the fuck the fast forward thing means. Also submodule problems.
12:57
<&[R]>
RE: fast forward, are you pushing to a non-bare repository?
12:57
<&[R]>
IE one not made with 'git init --bare'
13:02
< Pandevornium>
Probably, but from a place I pulled from in the first place.
13:03
< Pandevornium>
And which I know no changes have been made otherwise
13:03
<&[R]>
Right, but it's still not a bare repository
13:03
< Pandevornium>
Sure
13:03
<&[R]>
Which means it's not going to update the working files
13:04
<&[R]>
Which is what it's warning you about
13:04
< Pandevornium>
But then...
13:04
< Pandevornium>
Huh?
13:04
<&[R]>
Which can lead to some weird behavior
13:07
< Pandevornium>
I am more confused than when I started I think
13:08
<&[R]>
Okay, so a git repo that you can actually code in has all of the files available for editing and viewing right?
13:08
<&[R]>
AFAIK that's called the "working set"
13:09
< Pandevornium>
Right okay
13:09
<&[R]>
When you do 'git add' 'git rm' 'git mv' and a few other commands, it stages those changes against HEAD.
13:10
<&[R]>
Now, when an external repository pushes new changes to that repo, HEAD changes, and thus the staged changes are no longer properly synced.
13:10
< Pandevornium>
Uh huh
13:10
<&[R]>
So basically you're changing a database that's not expecting to be changed that way
13:11
<&[R]>
Now a bare repo has no working set, and thus no staging, so it's perfectly fine to push to it.
13:12
< Pandevornium>
Aha.
13:13
<&[R]>
The PR thing is a github thing, not git.
13:13
<&[R]>
As for submodules, I've never really played with that, so can't help you there.
14:20 VirusJTG [VirusJTG@Nightstar-42s.jso.104.208.IP] has quit [[NS] Quit: Leaving]
14:27
<&ToxicFrog>
I have! They are occasionally useful.
14:29
<&ToxicFrog>
Pandevornium: also, "fast forward" means "no merge necessary" -- like, if you start with commit A and make commits B and C, and someone else makes and pushes commits D and E, you can't push B and C until you resolve that, either by creating a merge commit (that combines the changes from both lines of development) or by rebasing (changing the history of your commits so that it looks like they were
14:29
<&ToxicFrog>
always based on E)
14:29
<&ToxicFrog>
If no-one else has made changes, though, you can "fast forward" the branch to point at C; no merge commit needs to be created because there's no divergent line of development that needs to be incorporated.
14:35 Jessikat [Jessikat@Nightstar-sg7.equ.132.82.IP] has joined #code
14:37
<@Pi>
Git: Making simple things complicated since 2005.
14:38 * Pi ducks.
14:38
<&ToxicFrog>
Pi: you're not wrong, but also, p4 and svn do the same thing while being slow as balls and sometimes randomly throwing away your work, sooooo
14:39
<@Pi>
ToxicFrog: I'm just a bitter that Mercurial didn't win the DVCS wars. :)
14:39
<&ToxicFrog>
Fair. :) I've liked what I've used of hg, with one massive caveat (no index).
14:39
<@TheWatcher>
TF: slow as balls, randomly throwing away your work, and made entirely of madness spiders
14:41
<@Pi>
ToxicFrog: I find the check-in interface of e.g. thg more useful than Git's index for selective work.
14:41
<@Pi>
And then hg has mq, which is basically a much better and more powerful multi-revision Git index.
14:48
<&ToxicFrog>
I'm not familiar with mq, I've just been using hg commit --interactive
14:49
<&ToxicFrog>
Which is great for "reviewing the changes before I commit them" and ok for "staging a subset of changes" but unuseful for "picking out a subset of changes and then testing them and committing them if tests pass"
14:51
<@Pi>
Ah, thg basically gives you a better hg commit --interactive
14:52
<@Pi>
And its interactive shelving gives you a good interface for the latter (temporarily moving stuff out of the actual working copy).
14:52
<@Pi>
The interactive shelving also integrates with mq, which is really convenient for movig hunks between changesets-in-progress.
14:52
<&ToxicFrog>
Like, my usual workflow in git is to open up git-cola, review and stage changes, and if they're trivial just commit them; if they're not, I stage them, stash what's left, test that, then commit and unstash and keep going.
14:53
<&ToxicFrog>
I know nothing of mq.
14:53
<&ToxicFrog>
(all of my hg usage is at work)
14:53
<@Pi>
Yeap. That's my git workflow too. Poor person's thg, though. :)
14:54
<@Pi>
(Really; I wish git had a UI with thg's utility.)
14:54
<@Pi>
mq is basically editable changesets you can switch between.
14:55
<@Pi>
Ever want the git staging area, but for a series of more than one in-progress changesets at once? That's basically mq.
14:56
<@Pi>
I use thg a lot more than the command line, and features like mq really shine there.
14:57 * TheWatcher eyes git cola
14:57
<@TheWatcher>
I'll have to give that a go
15:00
<@Pi>
git cola is the least worst git commit tool I've found so far.
15:00
<@Pi>
Can recommend.
15:00
<@TheWatcher>
I usually just use the command line, but then I'm insane
15:00 VirusJTG [VirusJTG@Nightstar-42s.jso.104.208.IP] has joined #code
15:00 mode/#code [+ao VirusJTG VirusJTG] by ChanServ
15:01
<&ToxicFrog>
Pi: I'll have to check out thg, that sounds handy
15:01
<@Pi>
Can highly recommend.
15:03
<&ToxicFrog>
Ok, what should I be searching for? All I can find is tetrahydrogestrinone and TortoiseHg
15:04
<@Pi>
TortoiseHg, yeah.
15:05
<@Pi>
Give me a shout if you want to chat about using mq with it. :)
15:05
<&ToxicFrog>
Isn't Tortoise Windows-specific?
15:05
<@Pi>
TortoiseHg is cross-platform.
15:06
<&ToxicFrog>
Huh. Ok, website says it supports windows and...Nautilus, which I don't use.
15:06
<@Pi>
You don't need that shell extensions.
15:06
<@Pi>
(I never use it.)
15:16
< Jessikat>
I've not used anything other thackeray svn and cvs, briefly
15:16
< Jessikat>
Other than *
15:17
<&ToxicFrog>
I used perforce a lot at work and svn a lot at school and quickly grew to despise both.
15:17
<&ToxicFrog>
I've been quite happy with git and I think I could become as happy with hg if I used it as much.
15:17
< Jessikat>
SVN took me a while to learn how to branch without scratching my own face off
15:18
< Jessikat>
using p4merge helps
15:26
<@Pi>
Jessikat: I can recommend Mercurial, for sanity.
15:29 * TheWatcher hates all over html and css
15:33 * Vornicus helps, then offers help
15:35 Jessikat` [Jessikat@Nightstar-l5nrdb.dab.02.net] has joined #code
15:38 Vorntastic [Vorn@Nightstar-q8lg79.sub-97-33-192.myvzw.com] has joined #code
15:38 Vorntastic [Vorn@Nightstar-q8lg79.sub-97-33-192.myvzw.com] has quit [[NS] Quit: Bye]
15:38 Vorntastic [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code
15:39 Jessikat [Jessikat@Nightstar-sg7.equ.132.82.IP] has quit [Ping timeout: 121 seconds]
15:40 Pandevornium [Vorn@Nightstar-l5us1b.sub-174-211-9.myvzw.com] has quit [Ping timeout: 121 seconds]
15:50
<&ToxicFrog>
I thnink svn branches would be a lot less awful if they were fully reified rather than being a bunch of gruesome UI hacks on top of "just copy the entire thing to another directory".
15:53
< Jessikat`>
Maybe I already went insane
15:54
<~Vornicus>
Is there a common term for when you don't fully update your main canvas while rendering - like Windows Solitaire's victory screen or FF7's battle transition
15:57 macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
15:57 mode/#code [+o macdjord] by ChanServ
15:59 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
16:00
<@Pi>
Overdraw, maybe?
16:02 * Vornicus gets lips, archery, banking...
16:02
<~Vornicus>
...the other direction entirely, where parts of the canvas get rendered onto multiple times before final presentation...
16:08 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
16:08 mode/#code [+o mac] by ChanServ
16:10 macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
16:16 macdjord|slep [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
16:16 mode/#code [+o macdjord|slep] by ChanServ
16:18
<&[R]>
ToxicFrog: Given that SVN is supposed CVS hacked to be less worse...
16:19
<&[R]>
Vornicus: dirty rectangles
16:19 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
16:49
<&McMartin>
https://github.com/sferik/active_emoji
16:50
<&McMartin>
Vornicus: Almost nothing is actually single-buffered these days so that trick has to be carefully faked with full redraws. :(
16:50
<~Vornicus>
I remember seeing something try it with double buffered stuff and it was seizure-inducing
16:51
<~Vornicus>
Also: wat
16:55
< Jessikat`>
Vornicus: dirty rectangles
16:55
< Jessikat`>
Perhaps?
16:55
<&McMartin>
Dirty rectangles is when you're using it as an optimization
16:56
<&McMartin>
Vorn is asking about an animation technique where you deliberately "fail" to update previous frames to produce contrails as objects move
16:56
< Jessikat`>
Ah
16:56
< Jessikat`>
Hall of mirrors style
16:56 Jessikat` is now known as Jessikat
16:56
< Jessikat>
?
16:57
<~Vornicus>
cf Windows Solitaire and FF7
16:57
<&McMartin>
https://www.youtube.com/watch?v=_hNwHdzRKXE
17:03
<&McMartin>
(the solitaire anim)
17:42 Reiv [NSkiwiirc@Nightstar-ih0uis.global-gateway.net.nz] has quit [[NS] Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
17:45 Reiv [NSkiwiirc@Nightstar-ih0uis.global-gateway.net.nz] has joined #code
17:45 mode/#code [+o Reiv] by ChanServ
17:59 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code
18:14
<&jeroud>
So, I've been bouncing between Elixir and Go for various things recently.
18:16
<&jeroud>
Both are renowned for their concurrency support.
18:17
<&jeroud>
I find one of them very welcoming and the other extremely hostile.
18:17
<&McMartin>
I can't find the quote any more, but I remember Clojure (also renowned for its concurrency support) putting Erlang and Elixir on a level above mere concurrency.
18:18
<&jeroud>
Erlang and Elixir consider concurrency more or less a solved problem.
18:20
<&jeroud>
Because they do away with (local) mutable state entirely and have built-in implementations of high level generic abstractions that satisfy most common use cases and can trivially be composed into large and complex systems.
18:21
<&McMartin>
Yep. Sounds right.
18:22
<&McMartin>
Aha, found the quote, now that I'm being more systematic about hunting for it
18:22
<&McMartin>
https://clojure.org/about/state#actors
18:23
<&McMartin>
It sounds like you're in a position where you can actually evaluate this aspect of Clojure's rationale.
18:25
<&jeroud>
My answer is "look at GenServer" (or the Erlang equivalent "gen_server", but Elixir has better docs).
18:27
<&jeroud>
GenServer.call(message)is easy to treat as if it were a method call, and easy to implement as if it were a method.
18:29
<&jeroud>
Where message is usually a tuple of the form {:some_kind_of_name, arg, arg2}.
18:30
<&jeroud>
The GenServer machinery handles the receive loop and dispatch and all that.
18:31
<&jeroud>
The callback you implement is def handle_call({:thing, arg}, from, state) and you must return a tuple of {:reply, response, new_state}.
18:32 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
18:32 mode/#code [+o mac] by ChanServ
18:32
<&jeroud>
So no, you don't need to muck about in the low-level blocking receive loop or whatever.
18:33
<&McMartin>
I am actually genuinely unsure which of these I would find an easier abstraction to work with.
18:35 macdjord|slep [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
18:36
<&jeroud>
If you have an afternoon, run through the Elixir getting started guide (for syntax and general language stuff), then the otp/application/whatever guide that runs through Babby's First KV Store with a couple of the concurrency abstractions.
18:36
<&McMartin>
The next afternoon like that I have is actually reserved for doing that with Vulkan >_>
18:37
<&jeroud>
FWIW, I completely agree with Clojure's rationale *given the JVM*.
18:38
<&jeroud>
Erlang/Elixir can make it work because the whole runtime system is designed from the ground up around cheap processes and immutable state.
18:39
<&jeroud>
The JVM with expensive OS threads and mutable shared memory everywhere is a really poor fit for this.
18:40
<&jeroud>
You can do it, but you're fighting the runtime the whole way and you lose clean interop with other JVM stuff.
18:42
<&jeroud>
Anyway, it's worth noting that Erlang got superb concurrency as a happy consequence of designing a language for fault tolerance.
18:43
<&McMartin>
The legend I was told was that Erlang was designed after an entire phone network went down because some programmer thought break; let you leave if statments.
18:43
<&jeroud>
Or rather, this sort of concurrency model is the best way they found to achieve the kind of failure isolation they needed.
18:43
<&jeroud>
I can believe the general thrust of that.
18:44
<&jeroud>
Which is "a failure here should not, by default, affect a working part of the system over there".
18:46 * McMartin also looks at the history of the language, adds another item to the list of suddenly relevant technologies introduced in the mid-1980s
18:46
<&jeroud>
The processes are there so you can have independent things crash and be restarted by supervisors and not touch unrelated execution flows.
18:47
<&jeroud>
Ericsson's nine nines SLA is Not A Joke.
18:47
<&jeroud>
I think Erlang would have been significantly more mainstream if not for the syntax.
18:48
<&jeroud>
The fact that it looks a lot like Prolog is due to the first implementation being essentially a Prolog DSL.
18:49 * McMartin looks at some sample implementations of low-level processes
18:49
<&McMartin>
... a lot of that Go code I wrote looks a lot like this, actually.
18:49
<&McMartin>
I have a whole bunch of coroutines that are nothing but switches on channel receives or selects.
18:51
<&jeroud>
The major difference is that in Go all your code looks like that. In Erlang/Elixir you abstract all that away into GenServers and Supervisors and such.
18:52
<&jeroud>
I think the Elixir codebase I've spent the past month or so building has maybe two or three receive calls in it.
18:53
<&McMartin>
"Most of the metrics reaffirm things we have learned in prior years. Go programmers still overwhelmingly prefer Go. As more time passes Go users are deepening their experience in Go. While Go has increased its lead among Go developers, the order of language rankings remains quite consistent with last year."
18:54
<&McMartin>
Buildin' a bubble
18:54
<&jeroud>
And those are only necessary because I want to block things that are usually non-blocking so that I can avoid annoying asynchrony in tests.
18:56
<&jeroud>
The really frustrating thing about Go is that with a couple of fairly minor conceptual changes it could be orders of magnitude better.
18:56
<&jeroud>
Proper generics and some kind of hygienic macro system would get rid of vast swathes of buggy boilerplate.
18:57
<&jeroud>
You can even keep the mutable state if you want!
18:59
<&jeroud>
I watched a conference talk about "advanced concurrency" linked from the Go blog this morning.
19:01
<&jeroud>
The whole thing was basically "here's the naïve implementation, now let's find and handle all the subtle bugs in it".
19:01
<&ToxicFrog>
jeroud: belatedly, there is (and has been for a while now) a clojure library for "Erlang-style" actors-and-messages concurrency, core.async, which I quite like.
19:01
<&ToxicFrog>
(there is even some support for distributed actors using it, e.g. there's a library that lets you run a core.async channel over a websocket)
19:02
<&ToxicFrog>
(when I finally get around to working on wspellcast again it's probably going to use that)
19:02
<&jeroud>
The de facto concurrency mechanism in Scala is Akka, which is also an actor system.
19:03
<&jeroud>
I found Akka *way* too heavyweight, but Erlang was my baseline.
19:03
<&ToxicFrog>
I've used Akka but remember nothing about it.
19:04
<&jeroud>
Akka is very... Javaland.
19:05
<&jeroud>
I have no doubt that it needs to be that way because JVM, but it makes me feel like I'm building cathedrals everywhere.
19:06
<&ToxicFrog>
(clojure also has Agents, which I have never used and know almost nothing about)
19:06
<&jeroud>
Whereas Elixir makes me feel like I'm building little lightweight components that when I put them all together have magically turned into an aircraft carrier.
19:06
<&McMartin>
(My vague understanding is that they aren't related to the stuff we describe here)
19:08
<&jeroud>
Anyway, I was originally comparing Elixir and Go. My conclusion is that the fundamental productivity-limiting difference between them is the ability to build abstractions.
19:09
<&jeroud>
Elixir makes that easy, and whole classes of problems go away as a result.
19:09
<&McMartin>
That comports in broad strokes with my critique of Go, albeit from a different direction
19:10
<&jeroud>
Go makes it difficult (and sometimes impossible), so all your meaningful code is buried under boilerplate and repetitive patterns.
19:11
<&jeroud>
Which direction do you come from? :-)
19:13
<&McMartin>
Program Analysis/Language design
19:14
<@Pi>
Go: For when you want your intermediate language to be your source language too.
19:14 * Pi ducks.
19:14
<&McMartin>
Pi: I do that all the time~
19:14
<&McMartin>
So my critique comes in as "this is Rob Pike throwing away all the bits of language design innovation of the past 40 years and then realizing that some of them actually bought something"
19:14
<&McMartin>
"And then reinventing them poorly"
19:15
<&jeroud>
I have very little experience with program analysis, but my language design critique comes to basically the same conclusion.
19:16 * McMartin also thinks to check the TIOBE index for language buzz, snickers
19:16
<&jeroud>
My philosophical objections remains relevant, and have been reinforced with experience.
19:16
<&McMartin>
Assembly language outranks Go, Swift, and ObjC -_-
19:19
<&jeroud>
(Don't talk about how important docs are and then put most of the useful documentation in blog posts.)
19:31 Degi [Degi@Nightstar-i3ch00.dyn.telefonica.de] has joined #code
19:34
<@iospace>
same
19:34
<@iospace>
oops
19:57 Kindamoody|afk is now known as Kindamoody
20:22
<~Vornicus>
http://www.emojicode.org/ furthermore
20:36 macdjord|slep [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
20:36 mode/#code [+o macdjord|slep] by ChanServ
20:38 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
21:20
<&[R]>
"Like ZeroMQ, RAET is based on the concept of queues, which it calls stacks."
21:20
<&McMartin>
haet
21:27
<&jeroud>
When I search for that, I get cloud HR software and Scandinavian geography before the thing you're referring to.
21:27
<&[R]>
Heh
21:29 Vash [Vash@Nightstar-1l3nul.res.rr.com] has joined #code
21:31 himi [sjjf@Nightstar-v37cpe.internode.on.net] has joined #code
21:31 mode/#code [+o himi] by ChanServ
21:32 mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code
21:32 mode/#code [+o mac] by ChanServ
21:33
<&[R]>
What's interesting, is a cursory glance at the RAET documentation shows they do NOT use "stack" for that terminology, instead they use "roads, estates and yards"
21:33
<&[R]>
So whoever originally wrote that has zero clue about what they're talking about
21:34
<&jerith>
It is a saltstack thing.
21:34
<&[R]>
Joeseph Hall
21:35 macdjord|slep [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
22:00 Vash [Vash@Nightstar-1l3nul.res.rr.com] has quit [[NS] Quit: Quit]
22:05 Jessikat` [Jessikat@Nightstar-ec6m6j.dab.02.net] has joined #code
22:08 Jessikat [Jessikat@Nightstar-l5nrdb.dab.02.net] has quit [Ping timeout: 121 seconds]
22:10 Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds]
22:28 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Connection closed]
22:58 Degi [Degi@Nightstar-i3ch00.dyn.telefonica.de] has quit [Connection closed]
--- Log closed Tue Mar 06 00:00:33 2018
code logs -> 2018 -> Mon, 05 Mar 2018< code.20180304.log - code.20180306.log >

[ Latest log file ]