code logs -> 2017 -> Fri, 03 Mar 2017< code.20170302.log - code.20170304.log >
--- 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
code logs -> 2017 -> Fri, 03 Mar 2017< code.20170302.log - code.20170304.log >

[ Latest log file ]