code logs -> 2014 -> Fri, 09 May 2014< code.20140508.log - code.20140510.log >
--- Log opened Fri May 09 00:00:30 2014
00:48 HotShot[ipad] [HotShot@Nightstar-v7se27.try.wideopenwest.com] has joined #code
01:00 celmin|away is now known as celticminstrel
01:28 himi [fow035@Nightstar-q9amk4.ffp.csiro.au] has joined #code
01:28 mode/#code [+o himi] by ChanServ
01:28 Derakon[AFK] is now known as Derakon
02:04 HotShot[ipad] [HotShot@Nightstar-v7se27.try.wideopenwest.com] has quit [Ping timeout: 121 seconds]
02:11 thalass [thalass@Nightstar-1i3669.bigpond.net.au] has quit [Ping timeout: 121 seconds]
02:25 thalass [thalass@Nightstar-1i3669.bigpond.net.au] has joined #code
02:25 mode/#code [+o thalass] by ChanServ
03:10 thalass [thalass@Nightstar-1i3669.bigpond.net.au] has quit [[NS] Quit: brb]
03:19 thalass [thalass@Nightstar-1i3669.bigpond.net.au] has joined #code
03:19 mode/#code [+o thalass] by ChanServ
03:23 thalass is now known as Thalass|ksp
03:27 JackKnife [Z@Nightstar-484uip.cust.comxnet.dk] has quit [Ping timeout: 121 seconds]
03:33 orth [orthianz@Nightstar-tr0.pn8.148.118.IP] has joined #code
04:04 VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has quit [[NS] Quit: Program Shutting down]
04:48 Harlow [harlow@Nightstar-9hnfdm.il.comcast.net] has joined #code
05:10 * McMartin files an I7 bug in which the misbehaving command is EAT KITTEN.
05:10
<@celticminstrel>
Heh.
05:11
<&McMartin>
Although it is not a *minimal* reproducing program, I felt I had to add vengeance for kitten-eating.
05:11
<~Vornicus>
I think I want to see this bug
05:11
<&McMartin>
http://inform7.com/mantis/view.php?id=1259
05:16 orth_ [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
05:19 Thalass|ksp [thalass@Nightstar-1i3669.bigpond.net.au] has quit [Ping timeout: 121 seconds]
05:20 orth [orthianz@Nightstar-tr0.pn8.148.118.IP] has quit [Ping timeout: 121 seconds]
05:30 Harlow [harlow@Nightstar-9hnfdm.il.comcast.net] has quit [[NS] Quit: BED]
06:32 thalass [thalass@Nightstar-1i3669.bigpond.net.au] has joined #code
06:32 mode/#code [+o thalass] by ChanServ
07:03 RchrdB [RichardB@Nightstar-c6u.vd5.170.83.IP] has quit [[NS] Quit: Gone.]
07:08 RchrdB [RichardB@Nightstar-c6u.vd5.170.83.IP] has joined #code
07:22 thalass [thalass@Nightstar-1i3669.bigpond.net.au] has quit [Ping timeout: 121 seconds]
07:36 celticminstrel [celticminst@Nightstar-ha4ihv.dsl.bell.ca] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!]
07:38 HotShot [fake@Nightstar-to4keq.sfldmi.sbcglobal.net] has quit [[NS] Quit: Trespassers will be shot, Survivers will be shot again! [Time wasted on Mirc 3days 2hrs 23mins 37secs]]
07:39 himi [fow035@Nightstar-q9amk4.ffp.csiro.au] has quit [Ping timeout: 121 seconds]
07:55 ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Operation timed out]
07:56 ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code
07:56 mode/#code [+ao ToxicFrog ToxicFrog] by ChanServ
08:14 AverageJoe [evil1@Nightstar-fb1kt4.ph.cox.net] has joined #code
08:27 AverageJoe [evil1@Nightstar-fb1kt4.ph.cox.net] has quit [[NS] Quit: Leaving]
08:27 AverageJoe [evil1@Nightstar-fb1kt4.ph.cox.net] has joined #code
08:39 thalass [thalass@Nightstar-1i3669.bigpond.net.au] has joined #code
08:39 mode/#code [+o thalass] by ChanServ
08:43 orth_ [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Ping timeout: 121 seconds]
08:55 AverageJoe [evil1@Nightstar-fb1kt4.ph.cox.net] has quit [[NS] Quit: Leaving]
09:08 thalass [thalass@Nightstar-1i3669.bigpond.net.au] has quit [[NS] Quit: Leaving]
09:09 orth [orthianz@Nightstar-159.dqn.148.118.IP] has joined #code
09:12 Orthia [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Ping timeout: 121 seconds]
09:17 Orthia [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
09:17 mode/#code [+o Orthia] by ChanServ
09:21 Orthia [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Ping timeout: 121 seconds]
09:21 Orthia [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
09:21 mode/#code [+o Orthia] by ChanServ
09:21 orth_ [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
09:25 orth [orthianz@Nightstar-159.dqn.148.118.IP] has quit [Ping timeout: 121 seconds]
09:29 himi [fow035@Nightstar-v37cpe.internode.on.net] has joined #code
09:29 mode/#code [+o himi] by ChanServ
09:34 himi [fow035@Nightstar-v37cpe.internode.on.net] has quit [Ping timeout: 121 seconds]
09:47 himi [fow035@Nightstar-v37cpe.internode.on.net] has joined #code
09:47 mode/#code [+o himi] by ChanServ
10:12 mode/#code [+o RchrdB] by ChanServ
10:22 Orthia [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Ping timeout: 121 seconds]
10:22 orth_ [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Ping timeout: 121 seconds]
10:25 orth [orthianz@Nightstar-ag8.ekr.148.118.IP] has joined #code
10:27 Orthia [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
10:27 mode/#code [+o Orthia] by ChanServ
10:31 orth_ [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
10:34 orth [orthianz@Nightstar-ag8.ekr.148.118.IP] has quit [Ping timeout: 121 seconds]
10:54 gnolam [lenin@Nightstar-o44c9a.cust.bredbandsbolaget.se] has quit [[NS] Quit: Humppsala]
11:00 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
11:00 orth_ [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Connection closed]
11:08 VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has joined #code
11:11 JackKnife [Z@Nightstar-484uip.cust.comxnet.dk] has joined #code
11:11 mode/#code [+o JackKnife] by ChanServ
11:14 * TheWatcher eyes McMartin
11:14
<@TheWatcher>
I have just noticed the subtitle on your devblog
11:16
<@TheWatcher>
I am conflicted between an emphatic facepalm groan, and being deeply impressed by the pun.
11:17
<@Azash>
Link
11:17
<@TheWatcher>
http://bumbershootsoft.wordpress.com/
11:18
<@Azash>
Went over my head, admittedly
11:18
<@TheWatcher>
(potentially required information: "Bumbershoot" is an american word for umbrellas, usually large ones)
11:18
<@Azash>
Ah
11:18
<@Azash>
Derp
11:27 orth_ [orthianz@Nightstar-ghm.mno.148.118.IP] has joined #code
11:31 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Ping timeout: 121 seconds]
11:32 Orthia [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Ping timeout: 121 seconds]
11:32 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
11:33 Orthia [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
11:33 mode/#code [+o Orthia] by ChanServ
11:34 orth_ [orthianz@Nightstar-ghm.mno.148.118.IP] has quit [Ping timeout: 121 seconds]
12:03 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: Leaving]
12:06 celticminstrel [celticminst@Nightstar-g3ttc7.dsl.bell.ca] has joined #code
12:06 mode/#code [+o celticminstrel] by ChanServ
12:41 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Ping timeout: 121 seconds]
12:49
< [R]>
Math checking time!
12:49
< [R]>
Original: xp > level * 100 + .35 * xp
12:49
< [R]>
1st step: xp * .65 > level * 100
12:50
< [R]>
2nd step: xp > level * 100 / .65
12:50
< [R]>
Final: xp > level * 154
12:50
< [R]>
(I rounded on the final)
12:52
< luke>
[R]: Well, it looks correct, if that's what you're asking.
12:52
< [R]>
Yes
12:59
< [R]>
... this game design is either done by an asshole or an idiot.
13:00
< luke>
There's a fine line between genius and idiocy. Unfortunately, it takes a genius to see the line.
13:01
< [R]>
3/8 chance to enter a limited spawnrate algo. Within that algo there's a 1/42 chance to get +1 STR, 1/42 chance to get a early-mid monster with damage on spawn, 40/42 chance to get a late-mid monster with damage on spawn. This comes before the normal spawn algo and will prevent the normal one from running.
13:02
< [R]>
That EL monster takes 10 hits from a level 1, and needs 5 to kill the level 1.
13:03
<@celticminstrel>
EL?
13:03
< [R]>
Early-Late
13:03
< [R]>
Err
13:03
< [R]>
EarlyMid
13:03
<@RchrdB>
Extra-lethal? :)
13:03
<@celticminstrel>
Heh.
13:03
< [R]>
LateMid monster needs 40 hits to die, 2 hits to kill the player.
13:04
< [R]>
(In both cases, the damage on arrival doesn't alter a fresh L1's chance of survival at all)
13:04
<@RchrdB>
What? So 5/14 of the monsters in the early game will stomp you?
13:05
< [R]>
I'm not including the normal spawn rate stuff
13:05
<@RchrdB>
(3/8 * 40/42 = 5/14)
13:05
< luke>
[R]: What is this game you speak of?
13:05
< [R]>
Ehh, it's more that they gave a 40/42 to the deadlier thing on a spawn-override that doesn't care about level.
13:05
< [R]>
luke: Baldo's Gate
13:06 orth [orthianz@Nightstar-84a.8m5.148.118.IP] has joined #code
13:06
< [R]>
http://baldo.xiennith.com/originals/Baldo1.htm
13:07
< [R]>
The monsters are Flaming Monkey and Radiated Mutant Monkey respectively.
13:07
< [R]>
I can't really do any stat calculation on what a character that isn't L1 would have though.
13:08
< luke>
[R]: That link seems broken
13:08
< [R]>
Mostly due to there being no health-cap, no full-heal on level up, and items can be gotten late/early (significantly so) depending on the RNG's behavior.
13:08
< [R]>
Oh right, one sec.
13:09
< [R]>
Actually, no I'd have to wait for a TTL to die
13:10
< [R]>
http://sakima.elementfx.com/Baldo/Baldo1.htm
13:10 orth [orthianz@Nightstar-84a.8m5.148.118.IP] has quit [Ping timeout: 121 seconds]
13:16
< [R]>
Note on the way he uses Math.random: he has a 1/(2X) chance of getting 0 and the same for X, 1/X chance for everything inbetween.
13:17
<@celticminstrel>
...how does that work?
13:18
< [R]>
Math.random() return something between 0 and 1 (inclusive one side, exclusive the other), he multiplies by X then rounds.
13:18
< [R]>
To have something that's more even he should floor instead.
13:19
<@celticminstrel>
Oh.
13:19
<@celticminstrel>
I think I floor.
13:23
<@ErikMesoy>
It appears that monsters with -4 hit points can still hit me.
13:23
<@TheWatcher>
Damned undead~
13:23
< [R]>
Yeah, it doesn't check for death until you attack again
13:25
< [R]>
The author apparently wasn't a programmer (if he was, he didn't understand that you could have *gasp* helper functions)
13:25
<@ErikMesoy>
Heals seem overpriced.
13:25
< [R]>
Probably
13:25
<@ErikMesoy>
cost/heal ratio seems rather large compared to the loot/damagetaken ratio from fights
13:25
< [R]>
It's 5hp without an amulet right?
13:25
<@celticminstrel>
Helper functions?
13:25
<@ErikMesoy>
And how do I reset this thing?
13:26
< [R]>
Refresh
13:26
<@celticminstrel>
That makes it sound like everything is one giant function, or something similar.
13:26
<@ErikMesoy>
I tried hitting F5 and it's still showing YOU ARE DEAD
13:26
<@celticminstrel>
Ctrl-F5 maybe?
13:26
<@ErikMesoy>
Aha.
13:26
< [R]>
That'd be because it stores everything in a form, so hard-refresh if you need to
13:27
<@ErikMesoy>
For example in fighting a Sea Monkey, I was hit for 20. I looted 50 gold. 50 gold will pay for 10hp of healing.
13:27
< luke>
ErikMesoy: Just like real life, no amount of refreshing can bring a loved one back from the dead.
13:27
< [R]>
celticminstrel: yes, each button is one function. There's only one more function than there are buttons.
13:27
<@celticminstrel>
Why is the inventory list editable.
13:28
< [R]>
Because the entire thing is made of WTFs.
13:28
<@celticminstrel>
And the current enemy name.
13:28
<@ErikMesoy>
Fighting a mutant monkey left me hit for 6. I looted 10 gold. This pays for 2hp of healing.
13:29
< [R]>
Yup.
13:30
<@ErikMesoy>
celticminstrel: oh, hey, your hit points are editable
13:31
<@celticminstrel>
Does it actually work?
13:31
< [R]>
There are 3 amulets (they increase how much you heal when you hit that button): 8hp (75gp), 10hp (100gp) and 50hp (900gp, but you need to be level 10+ and have 1000gp banked)
13:31
< [R]>
Yes
13:31
<@celticminstrel>
So the text fields are in fact the official storage location for that data?
13:31
< [R]>
It avoids using global variables by stuffing everything into a form.
13:31
<@celticminstrel>
. . .
13:31
< [R]>
There's a bunch of hidden fields though
13:31
< [R]>
Yeah
13:31 * ErikMesoy happily writes 999 in his hit point field.
13:31
<@celticminstrel>
Technically, that's still global variables, but whatever.
13:32
< [R]>
:p
13:32
< [R]>
You can't cheat the shop through this method unless you make xitem1 and xitem2 non-hidden.
13:32 orth_ [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
13:33
< [R]>
But you can totally kill the enemy, heal yourself, make yourself rich, level yourself up or down, make you untouchable, or make you have a finger of death.
13:36
< [R]>
You can use the "SEARCH" button to run BTW
13:36
< [R]>
(and yes, there's a Baldo 2)
13:36 * ErikMesoy defeats Baldo. Man, this was shit.
13:39
< [R]>
As in horrible?
13:39
<@ErikMesoy>
This was low quality, badly made, poorly thought out, incompetent, and sucky.
13:40
< [R]>
Heh
13:40
< [R]>
It's either lol-hard, or lol-easy
13:40
< [R]>
Depending on your choices or the RNG
13:41
< [R]>
Also for whatever reason, the shop stocks replicas of the boss's items.
13:42
< [R]>
If you can, buy his amulet last and /repeatedly/ (see the last bits of JS for why)
13:43
<@celticminstrel>
...wait a second. Now I seem to have two addon bars.
13:43
< [R]>
addon bars?
13:43
<@celticminstrel>
Firefox.
13:44
<@celticminstrel>
It removed the addon bar in FF29, so I installed an addon to put it back.
13:45
<@celticminstrel>
I have no idea what's happened now.
13:46
<@celticminstrel>
It almost looks like Firefox put back the original one, but that doesn't make sense because there wasn't an update...
13:48
< luke>
about:config funnies?
13:48
<@TheWatcher>
Firefox is being remotely controlled by the NSA.
13:49
< luke>
Obviously.
13:50
<@celticminstrel>
This happened after the computer was shut down due to brownout.
13:51
<@TheWatcher>
Probably your profile got slightly corrupt by the shutdown
13:52
<@TheWatcher>
That or the utility company is in on it, too~
13:52
<@celticminstrel>
Pfffft.
14:36 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
14:36 orth_ [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Connection closed]
14:44 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Ping timeout: 121 seconds]
15:00 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
15:05 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Ping timeout: 121 seconds]
15:20 iospace [Alexandria@Nightstar-fkokc2.com] has quit [Operation timed out]
15:22 iospace [Alexandria@Nightstar-fkokc2.com] has joined #code
15:22 mode/#code [+o iospace] by ChanServ
15:33 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
15:41
<@Azash>
http://arstechnica.com/tech-policy/2014/05/web-host-gives-fcc-a-28-8kbps-slow-la ne-in-net-neutrality-protest/
16:05 orth_ [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
16:05 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Connection closed]
16:06 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
16:06 orth_ [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Connection reset by peer]
16:09
<@RchrdB>
Azash, heehee. More of a symbolic gesture than anything they were likely to practically notice, but cool. =D
16:21 * TheWatcher raeg at people using two digit years
16:27 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Connection closed]
16:27 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
16:27 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Connection closed]
16:27 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has joined #code
16:29 orth [orthianz@Nightstar-3tp.juj.184.203.IP] has quit [Connection reset by peer]
16:37 * Azash raeg at people who make cyclical DB designs
16:46
<@Tarinaky>
Azash: example?
17:10
<@Azash>
Quoting my rant from elsewhere
17:10
<@Azash>
"Oh what's that you want to do anything with table A?"
17:10
<@Azash>
"Well it depends on tables B and C which both depend on D and then it has a child table E that relies of F upon which D relies"
17:30
< luke>
More fun than a merry-go-round.
18:52 HotShot [HotShot@Nightstar-v7se27.try.wideopenwest.com] has joined #code
19:17 subzero [lol@Nightstar-af2.mju.186.106.IP] has joined #code
19:17
< subzero>
holy shit, check out http://blackhat.enterprises/index.html
19:25 mode/#code [+b *!*@Nightstar-af2.mju.186.106.IP] by ErikMesoy
19:25 subzero was kicked from #code by ErikMesoy [ErikMesoy]
19:25
<@ErikMesoy>
Someone want to check if I got the ban right?
19:26
<@Tamber>
Eh, it'll do until the next one. :)
19:31
<@Syloq>
ugh
19:31
<@Syloq>
ok I'm gonna have to create a filter...Fun.
19:35
<@Azash>
Any ircops here can probably see the real IP and line the range or something
19:35
<@Tamber>
He says, (sorta) replying to one~
19:36
<@Azash>
I can't remember who is and isn't
19:37
<@Tamber>
(:
19:37
<@celticminstrel>
My IRC client shows this in the user list.
19:37
<@Tamber>
It shows IRCOps?
19:37
<@celticminstrel>
Yup.
19:37
<@Tamber>
(...and not just channel ops~)
19:37
<@celticminstrel>
Yup.
19:37
<@Tamber>
Huh.
19:37
<&McMartin>
My thought exactly. Which client?
19:37
<@celticminstrel>
Colloquy.
19:38 * Azash uses a Real Client without such rice
19:39
<@Syloq>
its using different hosts each time.
19:39
<@Tamber>
How annoying.
19:40
<@Syloq>
think I have a filter that should stop it from happening.
19:41
<@Azash>
Aren't there any IRCd modules that vet messages before they get broadcast?
19:41
<@Azash>
Whichever one nightstar uses, that is
19:41
<@Syloq>
heh, effectively, yes.
19:48
<@Tarinaky>
Finally! Someone asked a question on the Comp Sci Facebook group at my Uni on a topic I knew tons about!
19:49
<@Tarinaky>
I was able to give them a quick digest of Knuth's Seminumerical Algorithms on the topic of PRNGs :D
19:49 * Tarinaky feels smart.
19:49
<@Tarinaky>
(don't ruin this for me q.q)
19:51 * ErikMesoy feels Tarinaky is smart too.
19:51 * ErikMesoy has no idea what a Seminumerical Algorithm is.
19:52
<@Tarinaky>
The title of a book, mostly.
19:53
<@Tarinaky>
Pseudorandom number generation, arithmetic...
19:55
<@Tarinaky>
I've got a set in a box somewhere. I never got around to actually reading the whole series - just scanning through bits of it here and there.
19:57 Vornicus [Vorn@Nightstar-8ctg9t.sd.cox.net] has joined #code
19:57 mode/#code [+qo Vornicus Vornicus] by ChanServ
20:02
<~Vornicus>
Okay wording question: A player has 9 capacity available for two different resources; however, he's sitting there with 8 of resource A and 3 of resource B. In this situation, in all cases he ends up with at least 6 A and 1 B; he needs only decide on the last two slots.
20:03
<~Vornicus>
How do I ask this? assume a text-response medium like IRC or inform.
20:03
<~Vornicus>
(and also assume that I have already described how to tell the program for instance "I want 2 A and 3 B")
20:04
<&McMartin>
2 A, 3 B
20:05
<&McMartin>
Oh, you mean, how do we say remaining?
20:05
<@ErikMesoy>
"Discard spare A" "Discard spare B"
20:05
<~Vornicus>
How do I ask
20:05
<~Vornicus>
Not how do I answer
20:05
<&McMartin>
You want question, not answer format
20:05
<&McMartin>
Right
20:05
<&McMartin>
Deployed: 6 A 1 B
20:06
<&McMartin>
Available: 8 A 3 B
20:06
<&McMartin>
>
20:06
<&McMartin>
(But tab aligned)
20:06
<&McMartin>
Maybe a "Total" so that "Available" isn't confused for it
20:07
<~Vornicus>
I'm ...uncertain how that actually ends up working?
20:07
<&McMartin>
Basically, the idea here is that I'm distributing resources, right?
20:07
<&McMartin>
I want, basically, a spreadsheet.
20:07
<&McMartin>
Here's what you have
20:07
<&McMartin>
Here's what's locked in place
20:07
<&McMartin>
Here's what's free
20:08
<&McMartin>
My job is to take some of what's free and lock it in place so that it's in use.
20:08
<~Vornicus>
Yes. You have 9 slots and 11 resources, but I want to minimize the decisions that need to be made. In this case, the decision covers all of two slots.
20:08
<&McMartin>
But I'm using a very non-textual metaphor here and I seem to keep using such even when using character graphics
20:08
<&McMartin>
I'm thinking "assigning character points in an RPG chargen", which has stayed pretty static for at least 25 years.
20:09
<~Vornicus>
(because the other decisions here are not actually decisions at all)
20:10
<&McMartin>
OK, *now* I'm imagining something like the yearly report in Hammurabi
20:10
<&McMartin>
Exalted Galactic Overlord, I beg to report to you,
20:10
<&McMartin>
In this year we began with 8 A and 3 B.
20:11
<&McMartin>
The populace ate 6 A.
20:11
<&McMartin>
Rats were controlled with 1 B.
20:11
<&McMartin>
We have two workers idle.
20:11
<~Vornicus>
hahaha
20:11
<&McMartin>
How many units of A should our workers sow with grain?
20:11
<~Vornicus>
I'm imagining the scale of a rat infestation that would require the attention of the Exalted Galactic Overlord.
20:12
<&McMartin>
It only took *one* B to control them all.
20:12
<&McMartin>
That's centralization efficiency, right there!
20:14
<@celticminstrel>
Heh!
20:15
<~Vornicus>
The question here though is storage in warehouses; I have 11 units of stuff, but can only keep 9, and 7 of those are chosen for me because they're non-decisions.
20:16
<&McMartin>
Surplus: 2 A, 2 B
20:16
<&McMartin>
Space: 2
20:16
<&McMartin>
Select resources to keep
20:19 * AnnoDomini continues to read.
20:20
<@AnnoDomini>
It's a little strange to read an attempt of explaining variable scoping intended for an audience without programming knowledge.
20:20
<~Vornicus>
??
20:21 * AnnoDomini reads LISP 3rd Edition.
20:22
<&McMartin>
Winston and Horn?
20:22
<&McMartin>
WIth the pictures of fences?
20:23
<@AnnoDomini>
Winston and Horn, yes. The cover is some kind of abstract oil painting of no substance.
20:23
<&McMartin>
I thought it was a sunset over a landscape of rolling hills. >_>
20:24
<&McMartin>
But I think I might have the second edition.
20:24
<&McMartin>
Man, I got that book in '95.
20:24
<&McMartin>
Nope, 3rd.
20:24
<&McMartin>
I think it's a sand dune, actually
20:25
<&McMartin>
<-- No longer has only lived in the wastelands of the southwest
20:25
<&McMartin>
http://ecx.images-amazon.com/images/I/51DWHpjYCEL._SX258_BO1,204,203,200_.jpg
20:26
<@AnnoDomini>
It sort of reminds me of a colour-shifted duck.
20:26
<&McMartin>
That's a pretty good book, but if anything it highlights the weaknesses of Common LISP in the modern era. Everything it does that Python can't do is super-clunky and cleaner in Scheme, and everything it can do that Python *can* do Python does more cleanly and more generally.
20:27
<&McMartin>
(Also Python is batteries-included in ways that *matter*, like having subprocess and sophisticated file I/O capability rather than the ability of string formatters to print roman numerals two different ways)
20:28
<&McMartin>
CL *is* wicked fast, though.
20:28
<&McMartin>
Until I got the Gambit version working, my fastest Klotski solver was from a Common LISP implementation.
20:29
<@AnnoDomini>
And this book, in the preface, abolishes the myth that CL is slow.
20:29
<@AnnoDomini>
Funny.
20:29
<&McMartin>
He was writing in '89.
20:29
<&McMartin>
The STL didn't exist yet~
20:29
<&McMartin>
Java had not yet been unleashed upon an unsuspecting world.
20:30
<@AnnoDomini>
Such great days.
20:30
<@AnnoDomini>
Pity I don't remember them, being three at the time.
20:30
<&McMartin>
(That said, it depended a *lot* on which implementation of CL you used. There were three in my repos that I found and only one of them had impressive speed)
20:31
<@AnnoDomini>
What is the fast one?
20:31
<&McMartin>
ecl
20:32
<&McMartin>
clisp was the one that was the least unpleasant to use interactively, but it was also the slowest when compiled.
20:32
<@Tamber>
Is the other sbcl?
20:32
<&McMartin>
https://hkn.eecs.berkeley.edu/~mcmartin/klotski.lisp
20:32
<&McMartin>
Tamber: gcl. sbcl went under my radar.
20:32
<@Tamber>
Ahh
20:33
<@AnnoDomini>
McMartin: I figure that learning CL isn't a wrong move, even though there are newer things available. Amirite?
20:33
<&McMartin>
AnnoDomini: Mmmm.
20:33
<&McMartin>
It won't hurt, of course, because nothing truly does
20:33
<&McMartin>
But what's your goal here?
20:34
<@AnnoDomini>
My boss was throwing away old books, and I took this one among others.
20:34
<&McMartin>
If you're trying to get the brain-bending effects of functional languages, Common LISP is honestly not super-functional.
20:34
<&McMartin>
If it's "yay, a production language of old" then sure
20:34
<&McMartin>
But a lot of the "Lisp tricks" people describe actually aren't safe in CL because CL doesn't guarantee tail recursion
20:35
<&McMartin>
I tend to think of Lisp as something to bind to external libraries, and the choice of external libraries dictates which dialect I recommend.
20:35
<&McMartin>
Clojure if you're binding Java, Gambit if you're binding C.
20:35
<&McMartin>
(Gambit is an extended R5RS Scheme, and is the fastest Lisp dialect compiler I've used)
20:36 * Vornicus wishes it was less of a pain in the ass to have libraries working with many languages.
20:36
<@ErikMesoy>
Lisps are generally super-functional for their age, right?
20:36
<&ToxicFrog>
McMartin: I have actually seen people suggest clojure -> scheme -> gambit -> C as a compilation path for clojure~
20:36
<&McMartin>
TF: That's an interesting thought, if it can be made to work
20:37
<~Vornicus>
It's ToxicFather!
20:37
<&McMartin>
Erik: Kiiinda. Common Lisp doesn't get that honor I don't think because it post-dates Scheme.
20:37
<&McMartin>
Common Lisp wanted to be the Python of its age.
20:38
<&McMartin>
Haskell didn't become a real contender IMO until the 2010s even though it's very old, compared to most languages.
20:39
<&McMartin>
Not Lisp as a family, but I think it was born around the time Common LISP was standardizing.
20:39
<&McMartin>
(If you haven't read R5RS, it's a short language specification that's worth reading but it's very hard to do much useful with 'pure' R5RS.)
20:39
<&McMartin>
(Gambit extends it in various ways and some aspects of it like the syntax-rules macro system aren't on by default for reasons I have never seen properly justified.)
20:47 Vornicus [Vorn@Nightstar-8ctg9t.sd.cox.net] has quit [Connection closed]
21:02
< simon_>
an article from Jane Street on Hacker News today said that O'Caml template programming was moving O'Caml towards Lisp.
21:02
< simon_>
https://blogs.janestreet.com/extension-points-or-how-ocaml-is-becoming-more-like -lisp
21:03
<&McMartin>
Mmm. I suppose in the sense that it produces something that looks more dynamically typed.
21:03
<&McMartin>
But if they're templates in the C++ sense then it's still statically typed at any given point in the binary.
21:12
<&McMartin>
"Ironically, the Monad always has at least one side-effect: it makes me feel like an idiot."
21:17
<@TheWatcher>
Pft
22:05 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code
22:05 mode/#code [+qo Vornicus Vornicus] by ChanServ
22:08 luke [flukiluke@Nightstar-u5v.s2o.246.46.IP] has quit [Ping timeout: 121 seconds]
22:08 luke [flukiluke@Nightstar-u5v.s2o.246.46.IP] has joined #code
22:08 VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has quit [Ping timeout: 121 seconds]
22:09 luke is now known as NSGuest52771
22:10 VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has joined #code
22:45
<~Vornicus>
Randomly.
22:46
<~Vornicus>
Is it just me, or do a lot of older languages have the conceit that the "standard library" is actually a thing you build into the syntax of the language, as opposed to a bunch of modules off to the side?
22:47
<&McMartin>
The notion of "library" doesn't really exist until, like, Modula 3.
22:47
<&McMartin>
"Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary."
22:48
<@Alek>
... are you thinking of a language that can have its syntax changed by inclusion of different libraries?
22:48
<&McMartin>
That's the first sentence of the Scheme specification.
22:48
<&McMartin>
No, he's thinking, like,
22:48
<&McMartin>
well...
22:48
<&McMartin>
Python 2's print statement.
22:48
<&McMartin>
Older languages don't have *libraries*, the core language just comes with a shitload of functions and statements built-in.
22:48
<&McMartin>
Often with idiosyncratic or ad-hoc syntax.
22:49
<&McMartin>
That said
22:49
<&McMartin>
The only language I can think of that did that all the way down was microcomputer BASICs.
22:50
<@TheWatcher>
"Older languages" and PHP~
22:51
<&McMartin>
Inform 6~
22:52
<&McMartin>
There have been several attempts to formally specify Inform 6's syntax and all of them have ended in tears and madness
22:55
<&McMartin>
But yeah, Modula-2 is where most of our modern notions of libraries come from.
22:56
<&McMartin>
And C kind of monkey-patches that in~
23:00
<&McMartin>
And depending on where I look, C and Modula communities appear to credit *the other one* for "yeah, do the real work in libraries, the language is just for expression combination"
23:00
<&McMartin>
With Scheme being the only language to call that out as a primary design goal.
23:02
<@Tarinaky>
I'm sure it probably originated in some dusty academic tome that nobody remembers for inventing what, in hindsight, was obvious.
23:02
<@Tarinaky>
Someone had to come up with it first :P
23:03
<@Tarinaky>
Inser the word only before 'in hindsight'.
23:03
<&McMartin>
It could have been a zeitgeisty kind of thing, where people needed to get a language out the door fast and pushing essential but not core stuff out to libraries is how you do "ehn, we'll fix it in post"
23:03
<@Tarinaky>
Makes sense. Did the internet exist yet?
23:03
<&McMartin>
A super-inflexible, minimal syntax is usually considered a flaw these days, though.
23:04
<&McMartin>
This would be the mid-1970s, so "not really, but the community that mattered was way smaller and extremely tight-knit, so..."
23:05
<@Tarinaky>
Back when if you wanted to run a forum you needed to rent the function room of a shitty hotel? :P
23:05
<&McMartin>
Or, you know, wander down to the break room~
23:07
<@Tarinaky>
A lot of the dynamic syntax stuff is done with operator overloading and sugar though. So I'm not sure how much that counts.
23:07
<@Tarinaky>
+these days
23:07
<&McMartin>
Sure
23:07
<&McMartin>
I don't think hygenic vs. non-hygenic macros is a debate that's been properly resolved yet, or if it's resolvable at all
23:08
<@Tarinaky>
But I guess I don't know enough about The Good Old Days to really have any clue what a minimal syntax looks like compared to a modern one.
23:08
<&McMartin>
Minimal syntax: Lisp.
23:08
<&McMartin>
Maximal syntax: BASIC.
23:08
<@Tarinaky>
I never learned Lisp.
23:08
<@Tarinaky>
Or BASIC for that matter.
23:08
<&McMartin>
OK, here's the lisp syntax:
23:08
<&McMartin>
expression <- ()
23:08
<@Azash>
Good amount of syntax: RoR
23:08
<@Azash>
\o/
23:09
<&McMartin>
expression <- (expression ...)
23:09
<&McMartin>
expression <- atom
23:09
<~Vornicus>
Ruby has actually too flexible a syntax, imo
23:09
<&McMartin>
First expression in a list is the function, the rest are arguments.
23:09
<&McMartin>
Non-lists aren't functions.
23:09
<&McMartin>
To add 2 and 2, that's (+ 2 2)
23:09
<@ErikMesoy>
McMartin: also single-quote character?
23:09
<&McMartin>
No precedence rules
23:09
<@Azash>
Vornicus: Mainly in a web dev context
23:09
<&McMartin>
ErikMesoy: That's a macro put in later
23:09
<@Tarinaky>
Where's C in this hierarchy?
23:10
<@Azash>
I fell in love with Rails over how it smooths over the really obvious things for you
23:10
<&McMartin>
C's in the middle. It's got a bunch of special forms for things like for and while that you don't "need"
23:10
<@froztbyte>
Azash: compared to?
23:10
<&McMartin>
C only "need"s function call, if, and goto
23:10
<@ErikMesoy>
McMartin: Single quote is that late?
23:10
<@Azash>
froztbyte: PHP, for example
23:10
<@ErikMesoy>
I could swear it was in the tutorials I read decades ago
23:10
<&McMartin>
Erik: Do you mean like #\q or like '(do not evaluate this)?
23:10
<@froztbyte>
Azash: that's not a useful example, really
23:10
<@Tarinaky>
I think a lot of people would like to pretend that C didn't have goto.
23:10
<&McMartin>
Because '(do not evaluate this) is in fact (quote (do not evaluate this))
23:10
<@Tarinaky>
Although that's less trendy now.
23:10
<@froztbyte>
Azash: I more meant like other realistic web frameworks or such
23:11
<@Azash>
Ah, right
23:11
<@Azash>
I admit my experience is PHP, a bit of Java and then RoR
23:11
<&McMartin>
RoR is a Domain-Specific Language, which is out of scope here.
23:11
<@Azash>
So perspective may be skewed
23:11
<~Vornicus>
(I also got /properly/ mad at ruby because it failed miserably at what, in every other language he can name that *allows* it, is a lot simpler)
23:11
<@Azash>
Vornicus: What's that?
23:11
<&McMartin>
DSLs can hide a *shitload* of stuff under the hood
23:11
<~Vornicus>
Azash: the goal was number * vector
23:12
<@Azash>
Vector as in an array of numbers?
23:12
<~Vornicus>
As in an array of numbers with various other add-ins, but basically, yeah
23:13
<~Vornicus>
The difficulty is that there isn't a way to specify operators from their second argument.
23:13
<@Azash>
Vornicus: vector.collect! {|foo| foo * scalar}
23:13
<@Azash>
Oh, I guess I misunderstood what you meant
23:14
<~Vornicus>
number / vector isn't allowed; number + vector and vector + number also aren't allowed; but vector * number, number * vector, and vector / number are.
23:15
<@Azash>
Was vector a custom type?
23:15
<~Vornicus>
Yes.
23:15
<@Tarinaky>
Unless you're working with physicists in which case you'll see some strange shit. :P
23:16
<@Azash>
You could overload * and / for that
23:16
<@Azash>
I'm not entirely sure if it's possible to do the right-hand side
23:16
<~Vornicus>
Right, except that you have to do it -- for number * vector -- on the number
23:16
<@Azash>
I mean yes it is possible by writing an extension of whatever class implements number
23:16
<~Vornicus>
Which means you have to overload every numeric type in order to do this
23:16
<@Azash>
But I don't know about another solution
23:17
<&McMartin>
While in C++ you would do this by defining an operator*() override at the global level instead of inside vector.
23:17
<&McMartin>
I'm not sure how you do this in Python.
23:17
<~Vornicus>
in C++ you do operator*(number, vector); in Python you do vector.__rmul__(self, number)
23:17
<~Vornicus>
(though you have to do a little dispatch in there)
23:18 * TheWatcher blinks at this, flails as dark appears to be silently subtracting 0.6 from object velocities
23:18
<~Vornicus>
in Lua you do vector:__mul__(number, vector) (though I forget the exact syntax)
23:21
<@Azash>
Hm, you might actually be hard pressed to do so in Ruby
23:21
<@Azash>
As fixnum is implemented in the lang kernel, so in C
23:21 * Azash should probably try using just the language
23:21
<~Vornicus>
The long and short of it is that there is no coercion that works for all operations, and no way of specifying that you should use vector-scalar multiplication based on the fact that the second operand is a vector. The only way I found -- and this is something I've explained to others -- is to override multiplication on all numeric types.
23:22
<~Vornicus>
Because the numeric types, despite sharing a common base, never /look/ at that base.
23:22
<@Tarinaky>
What language is this?
23:22
<~Vornicus>
Ruby.
23:23
<@TheWatcher>
Surprisingly not javascript~
23:23
<~Vornicus>
Oh, and unlike C++, it will not upcast numbers to doubles, so in C++ I actually do operator*(double, vector)
23:24
<~Vornicus>
or whatever, because really I want my C++ vector to probably be templated so I can use any type I want
23:24
<~Vornicus>
so it'd be operator*(T, vector<T>)
23:24
<~Vornicus>
(not std::vector, I'm being a little loose)
23:58
<@TheWatcher>
Fuck this shit, I think it's just trying to drive me insane
23:59
<&ToxicFrog>
Vornicus: in lua you do setmetatable(vector, { __mul = <implementation> }) and then vec1 * vec2 just works.
--- Log closed Sat May 10 00:00:12 2014
code logs -> 2014 -> Fri, 09 May 2014< code.20140508.log - code.20140510.log >

[ Latest log file ]