--- 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 |