samth
2017-12-15 16:33:40

@greg I think (by which I mean I’m 100% sure) that @robby is suggesting try-both, not a 3rd server


robby
2017-12-15 16:34:18

I was suggesting try both.


robby
2017-12-15 16:34:30

A third server seems like it might not help with the problem we’re having. :slightly_smiling_face:


robby
2017-12-15 16:34:44

meanwhile, I got a message about some more potential downtime locally.


robby
2017-12-15 16:35:10

It is hard to tell if it will affect http://plt.eecs.northwestern.edu\|plt.eecs.northwestern.edu (it doesn’t seem like it should, but the previous messages also seemed like they shouldn’t and apparently did)


robby
2017-12-15 16:35:57

Also, I’m not suggesting load balancing. I’m suggesting load doubling. :wink:


greg
2017-12-15 17:21:36

I understand how adding another server might sound like adding another potentially-failing turtle.


greg
2017-12-15 17:22:53

But e.g. the server hosting http://www.racket-lang.org\|www.racket-lang.org seems to have greater uptime, and/or, you could imagine hosting a server someplace with more uptime/control than a given university.


greg
2017-12-15 17:23:43

Also, I feel like there should be a URL structure that works to get various downloads — but how it works from time to time is not really something for each/every client to implement?


greg
2017-12-15 17:24:25

Making an even more complicated (for try-both retries) version of this https://github.com/greghendershott/travis-racket/blob/master/install-racket.sh#L6-L37 out at clients, seems not quite right?


greg
2017-12-15 17:25:20

Instead of repeating that logic at clients, define it once at the server.


greg
2017-12-15 17:26:50

So I think we all agree it’s good to try any of the available servers, until one works. I think the question is, who does this retrying and where? :smile:


greg
2017-12-15 17:28:04

Of course the status quo is not horrible and we’re all busy so maybe the smartest thing is to leave it as-is. ¯_(ツ)_/¯


notjack
2017-12-15 17:44:42

shu--hung
2017-12-15 18:17:54

If a module is required as: (require mod (for-syntax mod)), then it will only be compiled once and the same, compiled module expression will be instantiated twice in different phases. Does this sound right?


ryanc
2017-12-15 20:26:39

@shu—hung yes


shu--hung
2017-12-15 20:38:46

thanks


setori88
2017-12-15 20:39:47

@setori88 has joined the channel


lexi.lambda
2017-12-16 00:27:34

@jeapostrophe I want to play with mode-lambda, but I don’t think I really understand how it works


lexi.lambda
2017-12-16 00:37:42

why is a lux “word” called a “word”?


lexi.lambda
2017-12-16 00:39:51

and, for that matter, why is a “chaos” called a “chaos”?


lexi.lambda
2017-12-16 01:49:15

I’m currently having a very strange problem where racket/tcp is taking an enormously long time to resolve hostnames on my machine… but other programs work okay.


notjack
2017-12-16 01:50:33

That sounds super weird


lexi.lambda
2017-12-16 01:51:46

I don’t know how to debug this. I should probably try restarting my computer, but I am in the middle of some things and would sort of rather not…


lexi.lambda
2017-12-16 01:57:16

The weird thing is it happens on both HEAD and a copy of 6.8 I have installed, so it can’t be rktio…


jeapostrophe
2017-12-16 02:04:59

@lexi.lambda First, lux and mode-lambda are totally independent, neither requires the other. Your question is about lux


jeapostrophe
2017-12-16 02:05:31

lux is an elaborate pun on big-bang, so does everything big-bang does, but slightly differently. so naturally, it uses creationist nomenclature


lexi.lambda
2017-12-16 02:05:40

yes, my first comment was about mode-lambda and my following two were about lux. but mode-lambda seems designed to work well with lux?


jeapostrophe
2017-12-16 02:06:01

in the beginning was chaos and God formed the world with a word, in particular the words “Fiat Lux” (let there be light)


jeapostrophe
2017-12-16 02:06:47

lux allows a reactive program (a word) to run inside an environment (a chaos) and there are many different possible environments (unlike big-bang, where there is just one, so the environment doesn’t get a name in big-bang)


jeapostrophe
2017-12-16 02:07:26

mode-lambda’s make-render function returns the thing that lux’s gui chaos expects to receive, yes, but both can and have been used with other things


jeapostrophe
2017-12-16 02:08:24

(specifically, stage-draw/dc ultimately returns a function that takes a width, height, and dc then returns void after drawing on it


lexi.lambda
2017-12-16 02:08:42

I see, yes. I was looking at the one.rkt example in the mode-lambda repo.


jeapostrophe
2017-12-16 02:09:04

while lux’s gui chaos expects to receive the same kind of value on word-output



jeapostrophe
2017-12-16 02:09:54

lexi.lambda
2017-12-16 02:10:54

could you explain to me the difference/purpose of the static/dynamic lists?


jeapostrophe
2017-12-16 02:11:39

the static is drawn first and then the dynamic is drawn, so the static is always a background


jeapostrophe
2017-12-16 02:11:45

other than that there is no functional difference


jeapostrophe
2017-12-16 02:11:50

however there is a performance impact


jeapostrophe
2017-12-16 02:12:26

mode-lambda retains a pointer to the last list given to it and if another frame comes with an eq? object list, then there is no memory transfer to the graphics card for that pass of the renderer


jeapostrophe
2017-12-16 02:12:43

the slowest thing in basically all graphics engines (including mode-lambda) are such memory transfers


jeapostrophe
2017-12-16 02:13:00

so in practice you would use the static for the level layout and the dynamic for the changing sprites and hud


jeapostrophe
2017-12-16 02:13:14

(you would render the ENTIRE level statically and just move the camera)


jeapostrophe
2017-12-16 02:13:29

(i.e. there’s no need to do cpu-side culling with mode-lambda)


lexi.lambda
2017-12-16 02:13:41

gotcha, that makes sense. moving the camera by moving the layers?


jeapostrophe
2017-12-16 02:13:52

correct, by moving the center of the layer


lexi.lambda
2017-12-16 02:14:21

I tinkered with SMW romhacking for a little bit many years ago, so I am not entirely unfamiliar with the SNES’s graphics model :)


jeapostrophe
2017-12-16 02:14:22

although i’m pretty sure there’s an error in the layer computation (discovered recently and not fixed yet), so you may find that


lexi.lambda
2017-12-16 02:15:28

an error of what kind?


jeapostrophe
2017-12-16 02:16:10

it doesn’t shift properly relative to other layers, so something like a parallax effect is off


lexi.lambda
2017-12-16 02:18:03

ah, hmm. so you can’t have layers that move relative to each other? or am I misinterpreting?


jeapostrophe
2017-12-16 02:18:17

you should be able to, there’s just a mistake right now


jeapostrophe
2017-12-16 02:19:07

basically, don’t worry about it, but if something looks strange wrt layers, make sure you ask rather than think you did something wrong


jeapostrophe
2017-12-16 02:19:19

any other pressing questions?


lexi.lambda
2017-12-16 02:21:05

I don’t think so, I think that’s enough to get started. though I am a little curious if the contracts on the static-st and dynamic-st arguments to stage-draw/dc should be something other than any/c. I’d expect (listof sprite-data?).


jeapostrophe
2017-12-16 02:21:57

they should be (tree-of sprite-data?) but that’s too expensive to check every frame. it goes out of its way to only look at the tree once


jeapostrophe
2017-12-16 02:23:07

that’s a cons-tree


jeapostrophe
2017-12-16 02:26:08

i’m about to disappear


jeapostrophe
2017-12-16 02:26:08

:heart:


lexi.lambda
2017-12-16 02:37:39

alright, thanks for your help, @jeapostrophe. it might be useful to put the proper contract in the scribble docs and leave it out in the implementation for performance? I’m not sure what your philosophy is about that sort of thing.


lexi.lambda
2017-12-16 03:10:30
$ time nslookup <http://www.google.com\|www.google.com>
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	<http://www.google.com\|www.google.com>
Address: 216.58.216.4

        0.02 real         0.00 user         0.00 sys
$ time racket -e '(require racket/tcp) (tcp-connect "<http://www.google.com\|www.google.com>" 80)'
#&lt;input-port:www.google.com&gt;
#&lt;output-port:www.google.com&gt;
       75.90 real         0.24 user         0.10 sys
$ time racket -e '(require racket/tcp) (tcp-connect "216.58.216.4" 80)'
#&lt;input-port:216.58.216.4&gt;
#&lt;output-port:216.58.216.4&gt;
        0.45 real         0.24 user         0.08 sys

I don’t get it. @mflatt, is there any way I could debug this issue?


mflatt
2017-12-16 03:15:39

Just to be sure, nslookup -query=AAAA <http://www.google.com\|www.google.com> is also fast, right?


lexi.lambda
2017-12-16 03:16:05

yes, it is.


mflatt
2017-12-16 03:17:50

You might try compiling with places and futures disabled, just to make sure it’s not something wrong with the way Racket runs getaddrinfo in a thread.


lexi.lambda
2017-12-16 03:18:56

The weirdest thing is that this hasn’t happened before, but it affects all my installations of Racket as far as I can tell… but I can try that.


mflatt
2017-12-16 03:19:22

You could also try building and runing “hostinfo.c” in http://www.eng.utah.edu/~cs4400/udp+tcp.zip, which uses the same OS APIs that Racket is using


lexi.lambda
2017-12-16 03:19:42

Neat, I’ll try that.


lexi.lambda
2017-12-16 03:21:34
$ time ./hostinfo <http://www.google.com\|www.google.com>
216.58.216.4
        0.00 real         0.00 user         0.00 sys

mflatt
2017-12-16 03:21:42

Maybe PF_UNSPEC instead of AF_INET, though


mflatt
2017-12-16 03:22:07

Since that’s fast, my only guess is still something about threads


lexi.lambda
2017-12-16 03:22:44

Alright, I’ll give that a try.


lexi.lambda
2017-12-16 03:32:25

I think I borked my Racket installation trying to figure out how to properly reconfigure it, so I just cleaned everything and started building from scratch, but is there a better way?


lexi.lambda
2017-12-16 03:47:55

@mflatt With places and futures disabled, I still have the same problem.


mflatt
2017-12-16 03:54:53

Maybe it’s not worth trying harder before a reboot. But looking again at rktio and “hostinfo.c”, another difference is #include &lt;netdb.h&gt; .... hints.ai_protocol = getprotobyname("tcp")-&gt;p_proto; Getaddrinfo....


lexi.lambda
2017-12-16 03:58:12

One observation: not all domains have this problem. raco pkg (and, after testing, racket/tcp) has no trouble at all resolving <http://pkgs.racket-lang.org\|pkgs.racket-lang.org>.


lexi.lambda
2017-12-16 03:59:24

<http://github.com\|github.com> resolves quickly. <http://example.com\|example.com> hangs. Perhaps my computer really is the thing at fault here. :)


lexi.lambda
2017-12-16 04:00:55

And, for what it’s worth, adding hints.ai_protocol = ... did not appear to change anything.