code logs -> 2014 -> Mon, 14 Jul 2014< code.20140713.log - code.20140715.log >
--- Log opened Mon Jul 14 00:00:31 2014
01:26 Harlow [harlow@Nightstar-9hnfdm.il.comcast.net] has joined #code
02:38 himi [fow035@Nightstar-v37cpe.internode.on.net] has quit [Ping timeout: 121 seconds]
02:42 himi [fow035@Nightstar-v37cpe.internode.on.net] has joined #code
02:42 mode/#code [+o himi] by ChanServ
03:34 Turaiel[Offline] is now known as Turaiel
04:34 Attilla [uid13723@Nightstar-a0t.9ff.184.192.IP] has quit [[NS] Quit: Connection closed for inactivity]
04:41 Checkmate [Z@Nightstar-g2q2tu.customer.tdc.net] has quit [Ping timeout: 121 seconds]
04:42 Checkmate [Z@Nightstar-g2q2tu.customer.tdc.net] has joined #code
04:42 mode/#code [+o Checkmate] by ChanServ
05:05 Derakon is now known as Derakon[AFK]
05:35 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Connection closed]
05:39 RchrdB [RichardB@Nightstar-c6u.vd5.170.83.IP] has quit [[NS] Quit: Gone.]
05:43 RchrdB [RichardB@Nightstar-c6u.vd5.170.83.IP] has joined #code
05:45 JackKnife [Z@Nightstar-g2q2tu.customer.tdc.net] has joined #code
05:45 mode/#code [+o JackKnife] by ChanServ
05:46 Checkmate [Z@Nightstar-g2q2tu.customer.tdc.net] has quit [Connection closed]
06:23 Turaiel is now known as Turaiel[Offline]
06:26 JackKnife [Z@Nightstar-g2q2tu.customer.tdc.net] has quit [Ping timeout: 121 seconds]
06:38 Turaiel[Offline] [Brandon@Nightstar-5st1eu.mi.comcast.net] has quit [Ping timeout: 121 seconds]
06:45 Turaiel[Offline] [Brandon@Nightstar-5st1eu.mi.comcast.net] has joined #code
07:33 celticminstrel [celticminst@Nightstar-6pf18d.dsl.bell.ca] has quit [[NS] Quit: KABOOM! It seems that I have exploded. Please wait while I reinstall the universe.]
07:56 Kindamoody[zZz] is now known as Kindamoody
08:46 Harlow [harlow@Nightstar-9hnfdm.il.comcast.net] has quit [[NS] Quit: BED]
09:28 himi [fow035@Nightstar-v37cpe.internode.on.net] has quit [Ping timeout: 121 seconds]
09:30 himi [fow035@Nightstar-v37cpe.internode.on.net] has joined #code
09:30 mode/#code [+o himi] by ChanServ
09:54 macdjord is now known as macdjord|slep
10:15 mode/#code [+o RchrdB] by ChanServ
10:33 Attilla [uid13723@Nightstar-a0t.9ff.184.192.IP] has joined #code
12:56 gnolam is now known as gnolam___
12:56 gnolam___ is now known as gnolam
13:12 Turaiel[Offline] is now known as Turaiel
13:33 Turaiel is now known as Turaiel[Offline]
14:12 Checkmate [Z@Nightstar-484uip.cust.comxnet.dk] has joined #code
14:12 mode/#code [+o Checkmate] by ChanServ
14:14 JackKnife [Z@Nightstar-484uip.cust.comxnet.dk] has joined #code
14:14 mode/#code [+o JackKnife] by ChanServ
14:16 Checkmate [Z@Nightstar-484uip.cust.comxnet.dk] has quit [Ping timeout: 121 seconds]
14:36 celticminstrel [celticminst@Nightstar-6pf18d.dsl.bell.ca] has joined #code
14:36 mode/#code [+o celticminstrel] by ChanServ
15:49 * ErikMesoy enjoys a "So that's what that button does" moment as he presses a button whose name is an unlocalized underscored_description and whose tooltip is blank. :D
15:50
< luke>
Was it the "Purge all data" button?
15:51
<@ErikMesoy>
More like a "Drive the refactor tractor over all data" button.
15:51
< luke>
Ah
15:52
<@ErikMesoy>
I was playing a medieval history sim, and the button immediately split every realm, destroyed all high-ranking titles, parceled out all low-ranking titles, and converted every ruler to some pagan religion.
15:52
<@ErikMesoy>
Suddenly, Europe was a thousand petty norse and celtic and hellenic chiefdoms.
15:53
< luke>
And the sim is *meant* to have a button that does that?
15:53
<@RchrdB>
That's the "forgot to pay the danegeld" button?
15:54
<@ErikMesoy>
luke: Evidently, yes. This isn't the sort of thing that happens by accident.
16:21
< abudhabi>
ErikMesoy: Did you activate the shattered_realms decision?
16:24
<@ErikMesoy>
No, this was reign_ancients.
16:25
< abudhabi>
What does shattering the realms do, then?
16:27
<@ErikMesoy>
Probably doesn't convert every ruler to pagan religion.
16:29
< luke>
I would imagine a shattered_realms button would probably rip Europe into several chunks.
19:07 gnolam_ [lenin@Nightstar-rhnl04.cust.bredbandsbolaget.se] has joined #code
19:09 gnolam [lenin@Nightstar-rhnl04.cust.bredbandsbolaget.se] has quit [Ping timeout: 121 seconds]
19:42 gnolam_ is now known as gnolam
19:43 mode/#code [+o gnolam] by ChanServ
20:42 Kindamoody is now known as Kindamoody[zZz]
21:36
<@ErikMesoy>
Ahh, the wonders of compact expressive code. Now I can lose track of what I'm doing in only twenty lines!
21:37
<@Tamber>
:)
21:54
<@gnolam>
... well that was easy
21:54 * gnolam hugs Wikipedia.
21:55
<@gnolam>
From zero to a working EAN-13 label printing system in an evening.
21:55
<@Tamber>
:D
22:10
<&McMartin>
Nicely done
22:29
<@ErikMesoy>
What is the term for when I'm looping over "CurrentObject, RelevantVariables = CurrentObject.GetNextObjectAndNewVariables(RelevantVariables)" in order to traverse without winding up deep in a set of nested NextObject references? Is it tail recursion?
22:34
<@RchrdB>
ErikMesoy, iteration or tail recursion. Are you working in some kind of FPish language?
22:34
<@ErikMesoy>
RchrdB: Python.
22:36
<&McMartin>
Then you want to iterate, yeah.
22:36
<@RchrdB>
You don't get tail call optimisation in Python. You need to iterate.
22:38
< [R]>
The Vasa board has decided they wish to move forward with a Wild Apricot based website, this would mean the current Drupal install isn't required, and you wouldn't need to set any permissions for me. It does mean that the domain would have to be redirected, not immediately, but in the near future. To ease your work in the future, I think it'd be best if the credentials for the domain's control were available to myself and at least one board member.
22:38
< [R]>
^ Trying to a hold of a domain from the ex-founder's (she's dead) husband, who is the ex-IT person for this non-profit (Vasa), but I don't want to come on really strong, is that phrasing good?
22:38
<@ErikMesoy>
RchrdB: What do you mean by "don't get"? Will I end up calling a hidden structure of FirstObject.NextObject.NextObject[...]NextObject.CurrentObject.GetNextObject() that goes really slow?
22:39
<@RchrdB>
ErikMesoy, no. Lemme illustrate.
22:41
<&ToxicFrog>
ErikMesoy: you can't safely "iterate" over a data structure using recursion, because each recursive call consumes another stack frame and eventually you run out of stack.
22:41
<&ToxicFrog>
In languages with tail call optimization there are ways to call without consuming the stack frame and thus you can process arbitrarily-large sequences with recursion as well as (or instead of) explicit looping structures like 'for'.
22:44
<&ToxicFrog>
ErikMesoy: a "tail call" is when you end a function with something of the form [return someOtherFunction(...)] -- this allows it (in languages with TCE, i.e. not Python) to call someOtherFunction() re-using the caller's stack frame.
22:44
<@RchrdB>
ErikMesoy, using http://pastebin.starforge.co.uk/641 as an example:
22:44
<&ToxicFrog>
"tail recursion" is just recursion with all calls done as tail calls.
22:44
<&McMartin>
Tail call is one of the "optimizations" that's not really an optimization and more of a language feature, because it makes the difference not between "runs fast" and "runs slow" but between "runs at all" and "crashes with an overflow error".
22:45
<&McMartin>
So it's really treated as a feature of the language
22:45
<&ToxicFrog>
McMartin: for this reason I generally prefer the term "tail call elimination" rather than "tail call optimization"
22:45
<@RchrdB>
ErikMesoy, iterate_over_things() there will use O(1) space and O(1) stack space, because each call to Thing() and each call to .get_new_thing() returns straight away, and there is only ever one instance of iterate_over_things() on the stack.
22:46
<@RchrdB>
ErikMesoy, and each time that loop goes around again, the GC will get an opportunity to throw away the now-obsolete Thing object from the last iteration, so it's all constant space.
22:46
<&ToxicFrog>
s/instance of/stack frame for/
22:47
<@RchrdB>
ta
22:48
<@RchrdB>
ErikMesoy, whereas, in Python, because it lacks tail call elimination, the function "recurse_on_things()" takes `n` stack frames because it calls itself `n` times, and Python chooses not to eliminate tail calls.
22:49
<@RchrdB>
...
22:49 Orthia [orthianz@Nightstar-s5d.ntf.224.119.IP] has quit [Ping timeout: 121 seconds]
22:49
<@ErikMesoy>
I take it my loop is overflow-safe iteration, then.
22:49
<@RchrdB>
If you're calling "x = x.get_next()" in a while loop in Python, you don't build up any linear chain of memory usage that way, (unless x is itself some kind of thing that builds a chain as it goes).
22:50
<@RchrdB>
ErikMesoy, yep, you should be fine.
22:54 Orthia [orthianz@Nightstar-mvf.9c1.224.119.IP] has joined #code
22:54 mode/#code [+o Orthia] by ChanServ
22:56
<&McMartin>
Yeah.
22:57
<&McMartin>
If you look at machine code generated by an "eliminated" tail call, it is literally a goto
22:57
<&McMartin>
And a reassignment of a bunch of variables
22:57
<&McMartin>
Which is to say, it is totally what a C-style for loop compiles to
23:14 Harlow [harlow@Nightstar-9hnfdm.il.comcast.net] has joined #code
23:15
< Harlow>
A general question, how long did it take for you guys to complete a CS degree?
23:15
<@TheWatcher>
3 years.
23:16
< abudhabi>
Four years for the first, two years for the second.
23:19
<&ToxicFrog>
Seven years, but I interleaved it with leaves of absence to work.
23:34
<&jeroud>
Five years for an EE degree.
23:36
<&jeroud>
I was sufficiently self-taught by the end of high school that I decided CS would be boring.
23:37
<&jeroud>
(I was mostly right. I've picked up the theory stuff I missed in the decade or so since then and it was only a small part of the coursework.)
23:38 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code
23:38 mode/#code [+qo Vornicus Vornicus] by ChanServ
23:42 Turaiel[Offline] is now known as Turaiel
--- Log closed Tue Jul 15 00:00:47 2014
code logs -> 2014 -> Mon, 14 Jul 2014< code.20140713.log - code.20140715.log >

[ Latest log file ]