--- Log opened Fri Mar 03 00:00:47 2017 |
00:05 | | gnolam_ [lenin@Nightstar-09nsce.cust.bahnhof.se] has joined #code |
00:07 | | gnolam [lenin@Nightstar-t1tbf0.cust.bahnhof.se] has quit [Ping timeout: 121 seconds] |
01:13 | <&McMartin> | !!! |
01:13 | <&McMartin> | Didn't realize that the American edition of the ZX81 had twice the RAM |
01:13 | <&McMartin> | That's actually super handy |
01:13 | <&McMartin> | That means all I have to find is the power supply |
01:14 | <~Vornicus> | like it starts with 2 instead of 1? |
01:15 | <&McMartin> | Yep |
01:15 | <&McMartin> | My program fits in 1, but program + display memory requires 2 to actually fit. |
01:16 | <&McMartin> | I don't yet have a decent animated gif of it - that's a thing I hope to get done over the weekend at the latest - but the display memory actually starts collapsing as you run out of RAM. |
01:40 | <&McMartin> | I have, as I've mentioned before, been messing around with type-ins a bit for the ZX81, and while basically none of them will run in an unexpanded ZX81, and the book I got them from warns that most of them won't run on the unexpanded US equivalent |
01:40 | <&McMartin> | ... actually it looks like a whole bunch of them *should* |
01:42 | <&McMartin> | Well |
01:42 | <&McMartin> | Nearly half of them won't load, and once they start actually needing to allocate space for, like, state |
01:42 | <&McMartin> | That might get complicated too |
01:43 | <&McMartin> | But the program I'd been working on actually keeps all of its relevant state *in* the screen memory, so once screen memory has been fully expanded you are basically good to go |
01:48 | | Turaiel[Offline] is now known as Turaiel |
02:35 | | LadyOfLight` [catalyst@Nightstar-mrt.jtr.132.82.IP] has joined #code |
02:38 | | LadyOfLight [catalyst@Nightstar-asb.jtr.132.82.IP] has quit [Ping timeout: 121 seconds] |
04:21 | | Alek [Alek@Nightstar-cltq0r.il.comcast.net] has quit [Ping timeout: 121 seconds] |
04:25 | | Alek [Alek@Nightstar-cltq0r.il.comcast.net] has joined #code |
04:25 | | mode/#code [+o Alek] by ChanServ |
04:30 | | ion [Owner@Nightstar-6grqph.vs.shawcable.net] has quit [[NS] Quit: fixing the thing] |
04:30 | | ion [Owner@Nightstar-6grqph.vs.shawcable.net] has joined #code |
04:31 | | mode/#code [+o ion] by ChanServ |
04:59 | <&McMartin> | Signs that your programming language has insufficiently powerful control constructs: https://hkn.eecs.berkeley.edu/~mcmartin/screenshots/zx81wat.png |
05:01 | <~Vornicus> | if 3 match go here, if 2 match go there? |
05:01 | <&McMartin> | Yep. |
05:01 | <&McMartin> | This is logic for deciding how to try to draw to a flush, I think. |
05:02 | <~Vornicus> | surprised actually it's that few commands for the first one. 5 choose 3 = 5 choose 2 = 10 |
05:02 | <&McMartin> | Yeah, it's clearly missing some |
05:02 | <&McMartin> | This book of programs was criminally poorly edited |
05:03 | <~Vornicus> | Oh, sorry, misread |
05:03 | <~Vornicus> | it is if 4 match and if 3 match, and it's fine |
05:05 | | Turaiel is now known as Turaiel[Offline] |
05:08 | <~Vornicus> | Can't quite fit the counts data into a byte, at least, the obvious way, which is all you'd get. Anything better and you'd have to get Clever with the methods and these things can't handle Clever. |
05:11 | <&McMartin> | Also this is part of a larger sequence that's also doing things like evaluating poker hands generally |
05:12 | <&McMartin> | So a hand is a ten-character string alternating value/suit which it's treating as one byte each |
05:14 | | macdjord|wurk is now known as macdjord |
05:17 | <~Vornicus> | right. |
05:18 | <~Vornicus> | I'm trying to think of ways to improve program size at the cost of some memory size. I have to be way less clever. |
05:25 | <&McMartin> | Compute had, hands down, the best type-ins |
05:25 | <&McMartin> | These are fucking amateur hour |
05:26 | <&McMartin> | This is honestly one of the better ones, in that the code will actually run and produce correct answers |
05:26 | <&McMartin> | This thing is being pretty clever when it comes to representing *the deck of cards* |
05:42 | <&McMartin> | The part where it's choosing *which* cards to toss are being a bit more clever by tracking down the target suit/rank and then storing the keep value in a side variable. |
06:23 | | himi [sjjf@Nightstar-dm0.2ni.203.150.IP] has quit [Ping timeout: 121 seconds] |
06:31 | | mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code |
06:31 | | mode/#code [+o mac] by ChanServ |
06:33 | | macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
07:11 | | LadyOfLight` is now known as LadyOfLight |
07:16 | | celticminstrel is now known as celmin|sleep |
07:32 | | LadyOfLight [catalyst@Nightstar-mrt.jtr.132.82.IP] has quit [The TLS connection was non-properly terminated.] |
07:32 | | LadyOfLight [catalyst@Nightstar-mrt.jtr.132.82.IP] has joined #code |
08:15 | | Alek [Alek@Nightstar-cltq0r.il.comcast.net] has quit [Ping timeout: 121 seconds] |
08:18 | | Alek [Alek@Nightstar-cltq0r.il.comcast.net] has joined #code |
08:19 | | mode/#code [+o Alek] by ChanServ |
08:22 | | LadyOfLight [catalyst@Nightstar-mrt.jtr.132.82.IP] has quit [[NS] Quit: Bye] |
08:37 | | * McMartin finishes typing in that Poker game |
08:37 | <&McMartin> | It's... a little weird in terms of protocol, but it's sure a poker game |
08:37 | <&McMartin> | It's also clocking in at 14,258 bytes |
08:37 | <&McMartin> | ... but I think that includes the 793 bytes of the screen memory being saved out. |
08:39 | <~Vornicus> | That's actually bigger than I feel is right but I haven't even tried? |
08:39 | <&McMartin> | Which, 14,258 or 783 |
08:40 | <~Vornicus> | 14258 |
08:40 | <~Vornicus> | Like, I have no idea what would be right for a poker game written for the c64 or whatever. |
08:40 | <&McMartin> | The listing was 12 pages long and was by far the longest program in the book |
08:41 | <&McMartin> | 1KB per page after subtracting the ancillary data is About Right |
08:41 | <&McMartin> | Most programs were About One Or Two Pages and then end up about 2-3KB |
08:41 | <&McMartin> | ancillary data is both fixed and A Bit Under A Kilobyte |
08:41 | <&McMartin> | Since it's a complete system data dump, more or less. |
08:41 | <~Vornicus> | I think you're answering a different question than I'm asking |
08:42 | <&McMartin> | Well, I mean, this is literally The Biggest Program In This Book, so there aren't immediate examples |
08:42 | <&McMartin> | But! |
08:42 | <&McMartin> | Let us go to the Let's Play of the Compute Gazette, and the disk thereof. |
08:42 | <&McMartin> | That whole thread came out to about 160KB |
08:43 | <~Vornicus> | The question I want to ask is "is this outsized for a poker game with" |
08:43 | <~Vornicus> | I wanted to delete the with but I missed |
08:43 | <&McMartin> | I think that's gonna depend on how fancy you make your cards, etc |
08:43 | <~Vornicus> | it's true |
08:44 | <&McMartin> | But 14K is quite large, and I suspect those endless case statements are very inefficient in terms of space. |
08:44 | <&McMartin> | For comparison, the single largest program in the Gazette thread was The Farm Game |
08:45 | <&McMartin> | And that clocked in at about 10.5KB. |
08:45 | <&McMartin> | Most of the BASIC programs were closer to 2.5KB. |
08:46 | <&McMartin> | With the machine code programs mostly being in the 4-6KB range, but that was because those were Basically Cheap Commercial Software |
08:47 | <&McMartin> | And those were typed in byte by manual byte. |
08:47 | | himi [sjjf@Nightstar-v37cpe.internode.on.net] has joined #code |
08:47 | | mode/#code [+o himi] by ChanServ |
08:47 | <&McMartin> | The nicer BASIC programs were more like 6KB. |
08:48 | <&McMartin> | This book I've been working through - that, actually, with this, I am now Done Working Through |
08:49 | <&McMartin> | Was not very nice |
08:49 | <&McMartin> | Most programs were .5KB or less once the metadata was stripped, most were very poorly debugged, missing major claimed features or straight-up not running properly at all |
08:49 | <&McMartin> | The anti-sweet spot was in the 3-4KB range |
08:50 | <&McMartin> | With a handful of small clever programs and a three programs over 5KB that were very nice-looking |
08:50 | <&McMartin> | ... which did not translate to actually being good |
08:51 | <&McMartin> | We had a painfully stupid implementation of Thundersnail, a slot machine that's alright if rigged comically in the player's favor, a blackjack game apparently implemented by someone who never played blackjack, and a poker game slamming into RAM limits and possibly as a result being unable to distinguish which of two hands that are a pair of Kings actually wins. |
08:51 | <~Vornicus> | if I didn't already have game projects falling off the back of the stove I'd go after that one game |
08:51 | <&McMartin> | The only three I can think of are already projects: Realm's Ransom, Vornball, and Vorns Ahoy. |
08:52 | <~Vornicus> | that I can't remember the name of any more but was a sequel to another type in game and was just bonkers crazy action where the framerate loss from handling all the monsters was actually a pretty strong pacing feature |
08:52 | <&McMartin> | ... Crossroads 2? |
08:52 | <~Vornicus> | Yes |
08:52 | <&McMartin> | That's in the Gazette disk. |
08:53 | <~Vornicus> | Somebody needs to fuckin' remake that game. |
08:53 | <&McMartin> | Derakon's description of Nuclear Throne makes it sound like it might have~ |
08:54 | <~Vornicus> | heh |
08:56 | <&McMartin> | (Crossroads 2, incidentally, was the largest machine language program in that thread, weighing in at 6.5KB, and then with an additional 1.5KB for the level editor |
08:59 | <&McMartin> | Now I just need to build a script to collect all these programs and turn them into a single sinclair tape image |
08:59 | <&McMartin> | This will totally not be a dry run for assembling a proper runnable pirated tape of the old ZX81 game that breaks all emulators but 1 and has unjustifiably good hi-res graphics on a chip that can't do hi-res grephics |
09:00 | <~Vornicus> | man |
09:00 | <&McMartin> | In 2016 some other madman replicated then improved upon the technique |
09:01 | <&McMartin> | I still can't figure out how the Hell it works, but I've assembled all the documentation I think I need to make understanding happen |
09:02 | <&McMartin> | (Also amusing; there was a different technique for getting iffy hi-res graphics out of the system that had no hi-res graphics, but that technique seems to work on all emulators these days) |
09:02 | <&McMartin> | (And this must be special-cased somehow because if I understand the technique right, the one that emulates right is *more intrusive* than the one that's failing) |
09:03 | <&McMartin> | (And both are obvious relatives of the 16-colors-in-one-character-cell trick I spent last year making work on the C64.) |
09:31 | | Kindamoody is now known as Kindamoody|afk |
09:56 | | * TheWatcher eyes cygwin |
09:56 | <@TheWatcher> | Why does this hate me so ;.; |
10:01 | <~Vornicus> | it is cygwin, what precisely do you expect |
10:42 | | gnolam_ is now known as gnolam |
10:42 | | mode/#code [+o gnolam] by ChanServ |
11:47 | | LadyOfLight [catalyst@Nightstar-h6c4t3.dab.02.net] has joined #code |
12:06 | <@Attilla> | cygwin, born of hatred |
14:07 | | Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
14:14 | | Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
14:14 | | mode/#code [+o Syloq] by ChanServ |
14:19 | | Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
14:24 | | Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
14:24 | | mode/#code [+o Syloq] by ChanServ |
15:00 | <&ToxicFrog> | This is pretty awesome |
15:00 | <&ToxicFrog> | Doing a routine cleanup, I open a configuration file |
15:00 | <&ToxicFrog> | And the first thing I see is a full-screen ascii-art skull and crossbones |
15:01 | <@TheWatcher> | ... okay |
15:02 | <~Vornicus> | If you touch this, you will die, and it will hurt the whole time you're dying |
15:02 | <&ToxicFrog> | Yes. |
15:04 | <~Vornicus> | that or, instant death, $100 fine. Your pick |
15:35 | | LadyOfLight` [catalyst@Nightstar-th5rb4.dab.02.net] has joined #code |
15:35 | | Alek [Alek@Nightstar-cltq0r.il.comcast.net] has quit [Ping timeout: 121 seconds] |
15:38 | | LadyOfLight [catalyst@Nightstar-h6c4t3.dab.02.net] has quit [Ping timeout: 121 seconds] |
15:39 | | Alek [Alek@Nightstar-cltq0r.il.comcast.net] has joined #code |
15:39 | | mode/#code [+o Alek] by ChanServ |
15:41 | | mac is now known as macdjord|wurk |
16:27 | | LadyOfLight` is now known as LadyOfLight |
17:02 | < LadyOfLight> | I just spent all afternoon trying to make something that's logically broken to work |
17:02 | < LadyOfLight> | And have decided to just Not Do It That Way instead |
17:04 | <&ToxicFrog> | 0100000000000000000000000000000000000000000000000000000000000000 |
17:04 | <&jerith> | I was going to spend some time rewriting my board drawing code again, but there's a new AI War 2 very very alpha build. |
17:04 | <&jerith> | I'm trying to decide if that's cat or child. |
17:04 | | * LadyOfLight stares at ToxicFrog |
17:05 | < LadyOfLight> | It's not child :) |
17:05 | < LadyOfLight> | I'm not certain it's cat |
17:05 | <&ToxicFrog> | It's cat. |
17:05 | < LadyOfLight> | Ahh |
17:05 | < LadyOfLight> | She's very binary today |
17:05 | <&ToxicFrog> | Epsilon has Opinions about my tendency to do things that aren't catering to her every whim. |
17:05 | <&jerith> | Oh, right. Is child still travelling the world? |
17:05 | <&ToxicFrog> | jerith: yes, and will be for another month. |
17:06 | <@celmin|sleep> | It can't be catchild? >_> |
17:20 | < LadyOfLight> | Or catgirl |
17:35 | <@celmin|sleep> | Well, that's a subset of catchild. |
17:35 | | celmin|sleep is now known as celticminstrel |
17:36 | | * Vornicus gives TF and celmin and jerith and LadyOfLight cat ears. |
17:37 | <@celticminstrel> | Gyack. |
17:37 | <@celticminstrel> | Hi Vorn? |
17:38 | | * jerith purrs. |
17:40 | <@Tamber> | :) |
18:40 | | LadyOfLight [catalyst@Nightstar-th5rb4.dab.02.net] has quit [[NS] Quit: Bye] |
19:16 | | Kindamoody|afk is now known as Kindamoody |
20:57 | | * abudhabi is starting on a new project Monday. |
20:58 | <@abudhabi> | They only gave me the job description today. |
20:58 | <@abudhabi> | Time for a crash-course in Spring, Spring Boot, Oracle DB, Maven/Jenkins, JIRA, Confluence and Docker. |
21:01 | <&jerith> | I'm so sorry. |
21:01 | <&jerith> | Java, Oracle, *and* Docker. |
21:02 | <@abudhabi> | Could have been worse. It could have been Mongo. |
21:02 | <&jerith> | Mongo isn't a huge pain to work with. It just loses your data occasionally. |
21:03 | <@abudhabi> | That sounds like a pain! |
21:03 | <&jerith> | Only if you like having your data! :-P |
21:03 | | * jerith goes to bed. |
21:12 | <&McMartin> | Maven, for what it's worth, does seem to be pretty good at what it does, once one gets it to do what it does. |
21:15 | <@abudhabi> | Oh, and Hibernate. |
21:15 | <@abudhabi> | But I sorta remember a little bit of it from university. |
21:24 | <&jeroud> | I've always wondered how Spring was named. |
21:25 | <&jeroud> | Is it a reference to coiled steel? Cherry blossom season? The pounce of a carnivore? |
21:26 | <&McMartin> | I've always figured the former because it's less rigid than Struts. |
21:29 | <@abudhabi> | I'm trying to figure out what Spring is. The tutorial makes it seem it's mostly "let's write Java constructors in XML". |
21:30 | | gnolam_ [lenin@Nightstar-09nsce.cust.bahnhof.se] has joined #code |
21:31 | <&jeroud> | Dependency injection framework? |
21:32 | <@abudhabi> | That's what they're calling it, but to me it's "writing constructors in XML". |
21:32 | | gnolam [lenin@Nightstar-09nsce.cust.bahnhof.se] has quit [Ping timeout: 121 seconds] |
21:34 | <&McMartin> | Yep |
21:34 | <&McMartin> | Because constructors are evaluated at compile time instead |
21:34 | <&McMartin> | Even though they don't have to be |
21:34 | <&McMartin> | This is also why Tomcat modules all use java.lang.reflect where they could be using method calls, because otherwise nothing compiles unless you have everything there. |
21:34 | <@abudhabi> | What's the advantage? |
21:34 | <&McMartin> | This is an issue that could be fixed with a compile flag |
21:35 | <&McMartin> | I can compile modules that refer to modules that don't exist yet and it works until you try to actually run that part. |
21:35 | <&McMartin> | As opposed to an immediate ClassNotFoundException |
21:36 | <&McMartin> | The boring base case is "I use a database. One of my configuration parameters is the name of the class of the database to use." |
21:36 | <&McMartin> | "All I care about in this class is that it has a method with this signature." |
21:36 | <@abudhabi> | Why not use interfaces? |
21:36 | <&McMartin> | Because you need *their* interface, and they need to have known about you when they wrote their driver. |
21:37 | <&McMartin> | In C terms, interfaces, direct method calls, constructors, etc. are the equivalent of having a bunch of DLLs or .so files and linking them in with -l options at your build time. |
21:37 | <&McMartin> | Dependency injection is taking your config files and using them to command dlopen/dlsym calls. |
21:38 | <&McMartin> | In the C case, the only reason to do this is because you want to modify the binary without relinking the program. |
21:38 | <&jeroud> | It's basically a way to make bits of code that were written without knowledge of each other interact without having to write wrappers and translators everywhere. |
21:38 | <&McMartin> | The question here is specifically "but isn't it superior to write wrappers and translators everywhere, especially given that your dependency injection mechanism *is a wrapper and translator*" |
21:39 | <@Azash> | Does anyone have insight as to what ^@ is in a systemd logging context? |
21:39 | <&McMartin> | And even if you grant the latter, which not everyone does, you gain the latest possible binding of symbols. |
21:40 | | gnolam_ is now known as gnolam |
21:40 | | mode/#code [+o gnolam] by ChanServ |
21:41 | <&jeroud> | Which in turn lets you swap out the logging module or authentication backend by editing a config instead of recompiling the program. |
21:41 | <&McMartin> | Now, if you *do* have a predesigned Java interface that everyone knows about and standardized upon |
21:42 | <&McMartin> | Then this task is made much easier |
21:42 | <&McMartin> | You basically only need the name of the implementing class as a string, and you don't even have to touch java.lang.reflect, because java.lang.Class.newInstance() has you covered. |
21:44 | <&jeroud> | As long as you don't mind having uninitialized objects potentially getting loose in your program. |
21:44 | <&McMartin> | Part of having the predesigned interface would have to be "the default constructor does the right thing." |
21:44 | | * jeroud is still, nearly a decade later, bitter about interfaces not having constructors or static methods. |
21:45 | <&McMartin> | I'm thinking specifically interfaces that look like JDBC here. My understanding is that Spring and similar frameworks came to be in large part because the JDBC approach isn't general enough |
21:45 | <&McMartin> | For, well, exactly the reasons you're still bitter about! |
21:45 | <&McMartin> | I have, at this late date, basically decided that OOP needs to be thrust upon me before I'll use it. |
21:45 | <&jeroud> | Yeah. |
21:46 | <&jeroud> | I haven't decided whether I like Rust's traits or not. |
21:46 | <&McMartin> | That are an imperfect implementation of the thing they are going for. |
21:46 | <&McMartin> | (Which is Haskell's typeclasses.) |
21:48 | <&jeroud> | I really would like a way to say "this function is not public, please just infer its type signature instead of making me write it out longhand". |
21:49 | <&McMartin> | I'd also be down with "please re-infer the types of all the functions in this source file and make a new sourcefile appropriately annotated:" |
21:49 | <&McMartin> | Actually I would also be down for this for Haskell |
21:49 | <&jeroud> | OCaml has this. :-) |
21:50 | <&McMartin> | Haskell kind of does, in that you can send the :t directive at the REPL prompt. |
21:50 | <&jeroud> | It's one of the recommended ways of bootstrapping an interface file. |
21:50 | <&McMartin> | Oh right that |
21:50 | <&McMartin> | Isn't that a side effect of compilation? |
21:51 | <&jeroud> | Yes, but you have to pass a flag to tell the compiler to actually write the generated .mli file. |
21:53 | <&jeroud> | You typically only have .mli files for public API modules, and you typically annotate those so you can generate reference docs. |
21:56 | <&jeroud> | Any module without an explicit interface (be it a .mli file or a module type signature) implictly has everything public. |
21:56 | <&jeroud> | But it's bad form to export those. |
21:58 | | * jeroud goes to bed properly now. |
22:07 | <@abudhabi> | Spring Boot seems to be a more verbose Stripes. |
22:17 | <&McMartin> | I'm unfamiliar with stripes |
22:18 | <&McMartin> | It would not surprise me if Java frameworks got less verbose over time |
22:23 | | * abudhabi learns that there are more request methods than GET and POST. o_O |
22:25 | <&[R]> | PUT HEAD DELETE! |
22:25 | <~Vornicus> | yay rest |
22:25 | <&[R]> | Also IIRC LIST if you're doing WebDAV |
22:26 | | * [R] was about to ask if that was still a thing |
22:26 | <&[R]> | Then remembered. |
22:26 | <&[R]> | Cobol is still a thing. |
22:26 | <&McMartin> | Heh |
22:27 | <@abudhabi> | ADD 1 TO COBOL GIVING COBOL. |
22:27 | <&McMartin> | Today at lunch I determined that my old Timex should be able to run off the same power adapter as my Atari. |
22:27 | <&[R]> | Is that "COBOL += 1"? |
22:28 | <&McMartin> | No |
22:29 | <&McMartin> | It's COBOL++ |
22:30 | | Kindamoody is now known as Kindamoody[zZz] |
23:30 | | JustLurk [justbob@ServerAdministrator.Nightstar.Net] has joined #code |
23:30 | | JustBob [justbob@Nightstar.Customer.Dissatisfaction.Administrator] has quit [NickServ (RECOVER command used by JustLurk)] |
23:30 | | JustLurk is now known as JustBob |
23:30 | | mode/#code [+o JustBob] by ChanServ |
23:49 | | * TheWatcher readsup, notes you missed OPTIONS and TRACE |
23:49 | <@TheWatcher> | (although I think I've never actually seen TRACE in the wild) |
--- Log closed Sat Mar 04 00:00:49 2017 |