code logs -> 2006 -> Sat, 21 Oct 2006< code.20061020.log - code.20061022.log >
--- Log opened Sat Oct 21 00:00:03 2006
00:01
<@Vornicus>
Now, the CI machine uses the Sims "water accident" sound for unit test failure.
00:04
<@Vornicus>
(but first I had to remover the clicky noise, because it was annoying and happening every 5 seconds!)
00:05 aoanla is now known as caps[t-2]
00:05
<@ToxicFrog>
Am I the only one who thinks it should use the Defcon "nuclear launch detected" soun
00:06
<@ToxicFrog>
d?
00:08
<@Vornicus>
If you send me that sound, I will evaluate it.
00:08
<@ToxicFrog>
...I thought you had Defcon.
00:08
<@Vornicus>
I do not.
00:09
<@Vornicus>
I only have a WIndows machine at work, and I have not yet had an opportunity to try it out.
00:09
<@ToxicFrog>
It's an unpretentious, yet omninous klaxon.
00:09 caps[t-2] [~sam@Nightstar-17202.range81-156.btcentralplus.com] has quit [Quit: Leaving]
00:09
<@McMartin>
Well, you could use the C&C one.
00:09
<@McMartin>
EVA saying "Nuclear warhead approaching"
00:19 * Vornicus considers having a folder full of blarg sounds and picking one at random.
00:25 * Vornicus hunts around for a Ghostbusters soundbite.
00:31 ReivZzz is now known as Reiver
00:54 Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout]
01:00
< Janus>
Um... if I could ask a small question... when, in game development, would you say the best time to work on the A.I. is..?
01:00
<@Reiver>
Until it beats you at poker.
01:01
<@Vornicus>
THe best time to work on the AI is when you have the engine put together enough that you can play against it.
01:01 Thaqui [~Thaqui@Nightstar-8486.adsl.xtra.co.nz] has quit [Quit: Leaving]
01:01
< Janus>
Well... other than putting more areas in, and putting more attacks in, the engine is roughly ... ready~
01:02
<@Reiver>
Sounds like a good time to start then.
01:02
< Janus>
Right now, it simply has all the characters using the same A.I, which is linked with the player's input.
01:03
<@Vornicus>
But the /interface/ to the AI should be in at about the time you start working on the player interface.
01:03 * Reiver starts to implement TF's timer code thing.
01:04 * Reiver hopes he can get it working in a hurry, because a hurry is all he has left. ¬¬
01:05
< Janus>
The interface to the AI..? I'm not sure I follow...
01:05
<@Vornicus>
WHat things can the AI learn about the world?
01:06
<@Vornicus>
What things can the AI do to the world?
01:06
<@Vornicus>
That's the interface.
01:06
<@Vornicus>
THen when you write your AI, you have it follow the interface.
01:06
<@Vornicus>
And a good way to do that is to make your player disconnected from the world except through an interface, and use that interface for your AI as well.
01:12
< Janus>
I believe I understand except for the disconnected part... Does that mean the player would simply give his commands to the same interface as the AI would?
01:13
<@Vornicus>
Yeah
01:17
< Janus>
Alright. I'm guessing it would be best if I put an extra layer of abstaction (or something) between the world and the A.I., but right now, the player's commands are issued straight to the A.I object so long as it's designated as player controlled. If it's not, there's an empty branch where it's meant to update it's movement and actions. I suppose this isn't a very effective system though, right?
01:23
<@Vornicus>
Technically it works - but there's a lot of situations where a player and an AI should be indistinguishable - you don't want the player - or a networked player with a hacked client - or an AI - to be able to cheat.
01:26
< Janus>
Alright. (It probably deserves mention, the player input is also an object. It's address is assigned to an A.I. object, and its contents are updated in the main loop. There could be more than one of these if there needed to be.)
01:31
<@Vornicus>
in the method I'm talking about, the player input object acts a lot like an AI object
01:32
<@Reiver>
whoops
01:32
<@Reiver>
Yes.
01:32
<@Reiver>
I added a whole new class in.
01:32
<@Reiver>
Curiously enough, my serialised save files are no longer usable~
01:34
< Janus>
... I'm going to have use a class template to do this, aren't I..?
01:34
<@Vornicus>
an Interface
01:34
<@Vornicus>
which is like a class only its methods are all unimplemented
01:35 ReivSLEP [~reaverta@IRCop.Nightstar.Net] has joined #Code
01:35
<@McMartin>
Also, you can implement multiple interfaces, while you can only derive from one class.
01:35
<@Vornicus>
That's Java
01:35
<@Vornicus>
I think Janus is working in C++
01:35
<@McMartin>
This ducks some of the astonishingly ugly bits of C++... Oh.
01:35 Reiver [~reaverta@IRCop.Nightstar.Net] has quit [Ping Timeout]
01:35
< ReivSLEP>
Sat[13:32] <Reiver> whoops
01:35
< ReivSLEP>
Sat[13:32] <Reiver> Yes.
01:35
< ReivSLEP>
Sat[13:32] <Reiver> I added a whole new class in.
01:35
<@Vornicus>
Yeah, we got that
01:35 * McMartin takes this moment to quietly set diamond inheritance on fire.
01:35
< ReivSLEP>
Sat[13:32] <Reiver> Curiously enough, my serialised save files are no longer usable~
01:35
< ReivSLEP>
Sat[13:33] <Reiver> ...It's crashing on file /write/?
01:35
< ReivSLEP>
Sat[13:33] * Reiver pokes at it.
01:35 ReivSLEP is now known as Reiver
01:36
< Ev3>
I may have your support tomorrow morning in approximately 10 hours.
01:36
< Ev3>
Will you be up, then?
01:37 * Janus ponders why everyone be hatin' on C++
01:37
< Reiver>
OH
01:37
<@McMartin>
Janus: In my case, because my one C++ job involved rewriting a largish app to not use the STL, because it was implemented wrong in VC++5...
01:37
<@McMartin>
And because C++ has changed incompatibly twice over my span
01:37
< Reiver>
Appointment is serialisable, and is linking to the ApptAlarm, so it's trying to write the ApptAlarms to disk and they're not serialisable.
01:37
< Reiver>
Duh.
01:38
<@ToxicFrog>
Janus: because it's a language for writing kernels and device drivers that everyone writes apps in~
01:38
<@McMartin>
And because a lot of bits of the language are incredibly ugly, such as diamond inheritance, the fact that nonvirtual overrides are the default, and various other bits of heinousness.
01:38 * Reiver briefly wonders if the ApptAlarms should be transient or not.
01:38
<@McMartin>
My personal favorite bit is how type-checking a C++ program is not, strictly speaking, a decidable problem.
01:39
<@McMartin>
Template expansion being Turing-complete and all
01:39
<@Vornicus>
C++ is a pain, but it's like the only OO language that outputs usable machine code.
01:39
<@McMartin>
That's about right, yes.
01:40
<@McMartin>
I'm not sure how it stacks up against Raw C + Lua trickery, though.
01:40
< Reiver>
Oh right. Don't schedule an appointment with a null start time~
01:40 * Reiver throws an if at it for wont of a better idea.
01:41
< Reiver>
...or not
01:41 * Reiver frowns.
01:44
< Janus>
I simply liked C++ because it was the fastest and had objects. Of course, I've never tried to do any of that fancy-schmancy programming stuff yet.
01:44
<@McMartin>
It has its place.
01:44
<@McMartin>
But far too much of it is made of pain because of the way it was standardized.
01:45
<@ToxicFrog>
McMartin: well, I'm finding Lua with C/++ extensions much more fun and just as portable (modulo hideous build problems as I attempt to generate DLLs on windows)
01:45
<@ToxicFrog>
However, much smaller library set.
01:45
<@McMartin>
Yeah
01:45
< Janus>
Plus, it's the preferred language for scripting games with, so I'd eventually have to learn it one way or the other.
01:45
<@McMartin>
I still need to turn Sable from a Messy C++ Program into a Couple of Nice C Libraries Called By A C++ Framework.
01:45
<@ToxicFrog>
Although tolua++ (reads cleaned header files, generates C/++ <-> Lua link code) helps a lot.
01:46
< Reiver>
...
01:46
< Reiver>
Task already scheduled or cancelled!
01:46
< Reiver>
This was meant to fix that.
01:46
<@ToxicFrog>
Show me your code?
01:46
<@Vornicus>
Personally I find Java to be a pain too - it takes away many of the toys I used a lot in C++, in particular operator overloads.
01:47
<@ToxicFrog>
(the "outputs usable machine code" bit would be a problem, but, blcgen yaye)
01:48 Thaqui [~Thaqui@Nightstar-8027.adsl.xtra.co.nz] has joined #code
01:48
< Janus>
That reminds me, I need to learn how to use bitwise operators soon... and perhaps it would be nice to be able to add two vector objects painlessly for a change.
01:48
< Reiver>
Hrm. OK.
01:49
<@McMartin>
TF: At me or Reiver?
01:49
<@ToxicFrog>
Reiv.
01:49
< Reiver>
The problem is in the setAlarmTime method, because I haven't got it .schedule()-only the first time, and then .cancel() running /before/ .schedule() every time after that. Hm.
01:53 Vornicus [~vorn@Nightstar-18307.slkc.qwest.net] has quit [Quit: ]
02:17
< Reiver>
I have my Java program closing on EXIT_ON_CLOSE
02:17
< Reiver>
This is all good.
02:17
< Reiver>
Is there any way to try to run code when a program is going to shut down?
02:18 * Reiver wants the thing to save the appointments on shutdown. But, err, only on actual shutdown, not on program-death-through-errors.
02:18
<@ToxicFrog>
I know many ways to do this, but none of them apply to JAva.
02:18 * Reiver nods.
02:18 * Reiver just writes a Save button instead~
02:24
< Janus>
How is it shut down? By closing it with the '[X]'?
02:25 * Janus then ponders if Java gives control over how that is handled...
02:26
<@ToxicFrog>
It /should/.
02:26
<@ToxicFrog>
However, it's Java.
02:26
<@ToxicFrog>
You can assume nothing.
02:41 Vornicus-Latens is now known as Vornicus
02:43
< Reiver>
Hrm.
02:44
< Reiver>
Other puzzle is, er, how one is meant to redraw a JFrame.
02:44
<@Vornicus>
JFrame.repaint(), I believe
02:44
<@Vornicus>
or, rather
02:44
<@Vornicus>
my_frame.repaint()
02:46
< Reiver>
Aha.
02:46
< Reiver>
...Now to make sure the lists are actually, y'know, reloading the data.
02:47
< Reiver>
Aha.
02:47
< Reiver>
repaint redraws stuff, but doesn't reload it. Hm.
02:52
< Janus>
Oh smack, I see now... 'interface' is a key word. Just as well, there's very little documentation about how to actually use it.
02:53
<@Vornicus>
You only use method declarations in interfaces, no definitions.
02:55
<@ToxicFrog>
Janus: an interface declares, but does not define, a set of method signatures.
02:55
<@ToxicFrog>
You can then, when defining a class, state that it "implements (interface name)" and provide definitions of the methods declared in the interface.
02:59
< Janus>
Hmm... so... you first declare a interface with some method declarations... then give a class a member saying it's using that interface. From there, you simply define the members of an object's interface member... right?
03:00
<@Vornicus>
Essentially
03:01
< Janus>
Alright, I can wrap my head around that. Now it's just a matter of figuring out the syntax, and implementing it.
03:04
<@ToxicFrog>
...erm.
03:04
<@ToxicFrog>
No, not quite.
03:04
<@ToxicFrog>
You give the /class/ the interface.
03:04
<@ToxicFrog>
You don't give a class's /member/ the interface.
03:04
<@ToxicFrog>
The interface specifies what additional members you can give that class.
03:05
<@ToxicFrog>
Just out of morbid curiosity, why have you changed from C++ to Java in mid-program?
03:06
< Janus>
Java?
03:06
<@ToxicFrog>
You are using interfaces, yes?
03:07
< Janus>
It seems C++ has the ability to use them.
03:07
<@ToxicFrog>
Oh.
03:07
<@ToxicFrog>
I did not know that.
03:07 * Janus churkles.
03:08
<@McMartin>
A C++ "interface" is a class with all pure virtual methods, IIRC.
03:08
<@ToxicFrog>
Aah. So you can't inherit from a class -and- implement an interface at the same time a la Java?
03:08
<@ToxicFrog>
Or does C++ actually support multiple inheritance?
03:08
<@Vornicus>
C++ supports multiple inheritance.
03:08
<@McMartin>
C++ supports several mutually incompatible forms of multiple inheritance!
03:09
<@ToxicFrog>
Sweet.
03:09
<@Vornicus>
Interface in C++ usually maps straight to "class"
03:09
<@ToxicFrog>
And by sweet I mean "foam in my brain get it out"
03:09
<@Vornicus>
well, sort of.
03:09
<@Vornicus>
I believe most compilers treat it slightly differently, but not by much
03:09 * McMartin hasn't tried trying to use both at once. He assumes non-diamond inheritance takes precedence.
03:15 * ToxicFrog ponders perhaps actually documenting and releasing either of his Lua OO libraries someday.
03:18 Janus is now known as Jan[bubble]
03:55 Jan[bubble] is now known as Janus
03:57 * Janus finds it reassuring that the world stops at bath time.
03:59 Raif [~corvusign@Nightstar-7918.hsd1.mn.comcast.net] has quit [Killed (NickServ (GHOST command used by Raif_))]
03:59 Raif_ [~corvusign@Nightstar-7918.hsd1.mn.comcast.net] has joined #Code
03:59 Raif_ is now known as Raif
04:28
< Janus>
Alright... I cannot find hardly any information about interfaces on the internet, thus I've absolutely no clue to the syntax for making/using one...
04:28
<@McMartin>
Look for "pure virtual functions"
04:29
< Janus>
And the ones I did find, were either Microsoft Visual exclusive, or so convulted that I couldn't read it. I'll try that out then.
04:29
<@McMartin>
An interface in C++ is a class where every method is pure virtual.
04:31 * McMartin likes how, if you take the old standard definition of post-increment, "C++" translates to "Increment C and throw the value away"
04:33
<@McMartin>
That said. Learning on C++ is rather like learning on Perl. On the one hand, the language is a shambling horror (the creator of the language has openly said that he doesn't believe one mind can contain the whole language)
04:33
<@McMartin>
On the other, any trick you learn can probably be rendered in some manner in C++.
04:34
<@McMartin>
So you'll end up being able to pick up OO, several inheritance tricks, pointers, and quite a bit more without having to change languages.
04:35 * Janus couldn't imagine programming without having OO support and pointers to toss around. It looks like inheritance might be joining the pub soon as well.
04:35
<@McMartin>
Inheritance and pointers are both dangerous toys.
04:36
<@ToxicFrog>
Janus: programming without pointers is actually surprisingly easy for most tasks.
04:36
<@McMartin>
Pointers as actual pointers are actually almost never necessary -- languages without them use references, which are almost identical except you can't point them at random chunks of memory.
04:36
<@ToxicFrog>
Provided that the language offers some kind of indirect reference construct.
04:36
<@McMartin>
But you can do that in C++ too!
04:36
<@McMartin>
Just use int& instead of int *.
04:37
<@ToxicFrog>
Pointers are, in fact, C's indirect reference construct, and are basically "like references only insanely dangerous when misused and slightly more powerful"
04:37
< Janus>
Inheritance I can't speak for, and pointers are indeed dangerous, but they can also be very powerful as well.
04:37
<@ToxicFrog>
(indeed, C++ has explicit references, Lua and Java have implicit ones, I have no idea what Python and Ruby have...)
04:38
<@McMartin>
Python has implicit references.
04:38
<@Vornicus>
Python and Ruby throw everything - well, everything but one-word numbers, nil, false, and true, for the case of ruby - around as implicit references
04:38
<@McMartin>
And a very unusual object model.
04:39 * ToxicFrog nods.
04:39
< Janus>
I dunno, I kinda liked the "everything is an object!(tm)" concept.
04:40
<@ToxicFrog>
Lua is similar. Numbers, booleans and nil are passed by value, strings, tables, threads, and functions are passed by reference, full userdata is passed by reference and light userdata is passed by value but is, itself, a reference.
04:40
<@ToxicFrog>
For "passed" read also "copied".
04:43
<@McMartin>
I mostly dislike inheritance because I consider it the GOTO of the modern age.
04:44
<@McMartin>
This is a somewhat crochety position.
04:44
<@ToxicFrog>
Heh.
04:44
<@McMartin>
If your inheritance tree is more than about three deep, you need to take a long, hard look at what you're doing and why.
04:45 * McMartin takes this opportunity to cringe at the TADS 3 library again, which has over 30 classes devoted to the concept of "room"
04:47
<@ToxicFrog>
...
04:47
<@ToxicFrog>
See, this is a problem, but it's not a problem with inheritance, it's a problem with TADS3's writers~
04:47
<@McMartin>
Like, where Inform would attach two flags to a room to mark properties of it, TADS subclasses it three times.
04:48
<@McMartin>
Yeah, but then you can say that the problem isn't with GOTO, it's with the people writing spaghetti code.
04:48
<@McMartin>
I mean, you can implement local exceptions with GOTO! It's good to have in a language!
04:48
<@McMartin>
(And it is; C code can actually be cleaned up with judicious GOTOs quite often.)
04:48
<@ToxicFrog>
(yes. I have done this myself while working on SGOS.)
04:48
< Janus>
Speaking of inheritance, polymorphic functions seem like more and more appealing than interfaces, though I suspect them of being the same thing almost.
04:49
<@McMartin>
They're not the same thing, but I do like polymorphics.
04:49
<@McMartin>
They can bite you when you mix them with inheritance, though, so be careful.
04:49
<@McMartin>
C++ and Java polymorphics are decent, but that's as good as you'll usually get.
04:49
<@McMartin>
SML's polymorphics are ridiculously awesome but this makes a lot of assumptions that C and C++ don't make.
04:50
<@McMartin>
(Like, it works out the polymorphism for you, and as a result will occasionally deduce that your code has an infinite loop in it.)
04:52
<@ToxicFrog>
Since you seem fairly conversant with SML, perhaps you can answer for me.
04:52 * McMartin is pretty mediocre, but will give it a shot.
04:52
<@ToxicFrog>
Does SML have the same wackiness as OCaml where basic operators have different names depending on what types they operate on?
04:52
<@McMartin>
No.
04:52
<@ToxicFrog>
Eg, '+' for integers but '+.' for floats?
04:52
<@ToxicFrog>
Ok.
04:52
<@ToxicFrog>
Good.
04:52
<@ToxicFrog>
That really scared me in OCalm.
04:52
<@McMartin>
However, as a result of this, the type inference engine will sometimes fail and you'll have to hand-mark the arguments as int or real.
04:53
<@ToxicFrog>
I can live with this as long as it fails obviously.
04:53
<@McMartin>
Yeah, it hands you an error message.
04:53
<@McMartin>
Don't ask me the syntax for how you mark them; I don't have my text handy
04:53
<@McMartin>
But I think it's f(x:int) = (* etc. *)
04:56
<@McMartin>
SML also loses the obnoxious "match x with" syntax.
05:19 Thaqui [~Thaqui@Nightstar-8027.adsl.xtra.co.nz] has quit [Ping Timeout]
05:32
<@ToxicFrog>
Is there an SML compiler?
05:32
<@McMartin>
I'm pretty sure there is, because I've read papers on the subject
05:33
<@McMartin>
Damned if I know where you find one, though.
05:34
<@ToxicFrog>
mlton.org apparently.
05:34
<@McMartin>
smlnj.org as well.
05:34
<@McMartin>
SML/NJ's executable format is not entirely what I'd call a "compiler", though...
05:35 Thaqui [~Thaqui@Nightstar-8027.adsl.xtra.co.nz] has joined #code
05:37
<@ToxicFrog>
MLTon appears to be a clear win, then.
05:37
<@ToxicFrog>
...also, it supports automatic generation of SML to C bindings.
05:37
<@ToxicFrog>
And with those I can bind SML to Lua.
05:38
<@McMartin>
And it's apparently in the Fedora repositories?
05:38
<@ToxicFrog>
If its libraries are sufficiently advanced I can do away with C extensions to Lua almost entirely!
05:39
<@ToxicFrog>
Is it?
05:40
<@McMartin>
I dunno. The MLton page seemed to imply it was.
05:40 * Reiver emails his code into his lecturer. Incomplete, in the wrong format, and late. >.>
05:40
< Reiver>
For some reason Eclipse stopped letting me export .JAR. So I just .zipped my workspace instead. *cough*
05:40 * McMartin checks
05:41
< Reiver>
Incomplete due to %$#@! bugs in the GUI code somewhere, and late because I found out the hard way that the University file scanning software isn't fooled by simply renaming a .zip file to something else, and registers it as 'potentially unsafe'. I only hope he can unzip a .rar~
05:41
<@ToxicFrog>
Hmm. The libraries appear not to be sufficiently advanced ;.;
05:41
<@McMartin>
Minor language libraries tend not to be.
05:42 Clairvoire [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #Code
05:42
< Reiver>
What is Lua for? It's an ease-of-plugging-into-other-languages, isn't it?
05:42
<@McMartin>
OK, I don't see MLton in yum.
05:42
<@ToxicFrog>
Aah well. SML-Lua bindings are something to keep in mind, but probably not something I'll be using soon.
05:42
<@McMartin>
Ease of plugging into C specifically.
05:42
<@ToxicFrog>
Reiver: Primarily, it's designed for ease of plugging into C and C++.
05:42
<@McMartin>
And generally Being A Nice Scripting Language.
05:42 Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Killed (NickServ (GHOST command used by Clairvoire))]
05:42 Clairvoire is now known as Janus
05:43
<@McMartin>
But being Small and Embeddable came first.
05:43
< Reiver>
Is it used much/at all?
05:43
<@ToxicFrog>
However, it is also generally useful, due to being fast, compact (very), cross-platform (also very) and surprisingly versatile.
05:43
<@McMartin>
Quite a bit, though usually in modified forms.
05:43 * Reiver sees most 'scripting' languages these days being Python, for whatever reason.
05:43
<@ToxicFrog>
Lots of games use it for scripting and configuration.
05:43
<@McMartin>
The old LucasArts games used a modified version of Lua for the main logic.
05:43
<@ToxicFrog>
SGOS has a Lua terp in the kernel, although it's not exposed to the user yet.
05:43
< Reiver>
Ah? 'kay.
05:43
<@McMartin>
I know Grim Fandango did, and I think the others of its era did too
05:43
<@ToxicFrog>
And there's a very long list of projects it's used in on the Lua homepage.
05:44
<@ToxicFrog>
Generally, Lua is used to add scripting capability to some larger program rather than to create a large program out of Lua.
05:44
<@ToxicFrog>
McMartin: it's in Fedora-Extras.
05:45
<@McMartin>
Huh. yum list mlton found nothing for me. What's the package name?
05:45
<@ToxicFrog>
mlton.
05:45
<@ToxicFrog>
mlton.i386 29951292-8.fc5 extras
05:45
<@McMartin>
Ah, yes.
05:45
<@McMartin>
x86_64 ftl
05:45
<@ToxicFrog>
Aah.
05:47
<@ToxicFrog>
Reiver: oh, and WoW has a rather extensive customization and scripting interface written in Lua.
05:47
<@ToxicFrog>
Once you start looking for it, It's Everywhere.
05:48
<@ToxicFrog>
(including, for that matter, in Aleph-One, making that phrase rather appropriate~)
05:48
<@Vornicus>
Frog blast the vent core!
05:48
<@ToxicFrog>
http://www.lua.org/about.html http://www.lua.org/uses.html have most of the information you seek.
05:50
<@ToxicFrog>
Also, while this isn't what it was originally designed for, it works great as a library for parsing data files, especially config files, and providing hash tables.
05:50
<@ToxicFrog>
Why?
05:51
<@Vornicus>
Because we love you
05:52
<@ToxicFrog>
No, I meant, why was Reiv asking?
05:52
<@Vornicus>
(M O U S E)
05:52
< Reiver>
Just nosy.
05:53
<@ToxicFrog>
'kthen.
05:54
<@ToxicFrog>
Have a metatable.
05:54
<@ToxicFrog>
OMG SLWWP
05:55
< Reiver>
Nini, TF!
05:55
< Reiver>
Thank you for the help, dude.
05:56
< Janus>
Thanks for the polymorphathingy and interfacion help as well Mr. Frog~
05:58 Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code
05:58 mode/#code [+o Chalcedon] by ChanServ
05:58 * Janus has finished inplementing two little children classes for the A.I., "PC" and "NPC" with their flaky virtual reality funtions.
06:00 Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: 12%]
06:16 Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code
06:16 mode/#code [+o Chalcy] by ChanServ
06:17 Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout]
06:17 Chalcy is now known as Chalcedon
06:30
< Reiver>
Is there a button in Eclipse to let you change colours/font/etc?
06:30 * Reiver is clearly blind.
06:31
<@Vornicus>
yeah
06:31
<@Vornicus>
uh
06:32
< Reiver>
Ah!
06:32
< Reiver>
Found it.
06:32
< Reiver>
"Window".
06:33
<@Vornicus>
Prefs -> General -> Colors and Fonts
06:41 * Reiver fails to find a "Background of the text editor" panel. o.o
06:50
<@Vornicus>
one moment
06:52
<@Vornicus>
General -> Editors -> Text Editors -> Appearance Color Options -> Background
06:53
<@Vornicus>
turn off the "use system default"
06:53
<@Vornicus>
Mh. Eclipse's preferences are v. convoluted
06:53
< Reiver>
Thankye.
06:55 You're now known as TheWatcher
06:57 Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code
06:57 mode/#code [+o Chalcy] by ChanServ
06:58 Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout]
07:06
< Reiver>
Mh.
07:06
< Reiver>
I appear incapable of actually /changing/ the java text font.
07:07
< Reiver>
By which I mean I choose silver, hit ok, and it remains steadfastly black in the settings.
07:10
< Reiver>
It appears to be stuck on 'black'. Hm.
07:10 * Reiver changes the background to a light grey, at least, then.
07:24
<@Vornicus>
Individual languages use specific font colorings.
07:24
<@Vornicus>
Why they're not all in the same place is far beyond me.
07:25
<@Vornicus>
Java -> Editor -> Syntax Coloring
07:26 * Vornicus still wonders why CSS-enabled editors aren't floating around.
07:26 Chalcy is now known as Chalcedon
07:28
< Reiver>
Wah.
07:28 * Reiver seconds Vorn, he wants CSS or something, because this is a pain.
07:28
< Reiver>
Can you find the whatsit to make the Console/Problems/etc pane text background grey?
07:28 * Reiver is thwarted.
07:37
<@Vornicus>
hm
07:37
<@Vornicus>
I'm not sure
07:38 * Reiver gives up, changes back to defaults. Half-and-half is worse than all white, he finds.
07:41 * TheWatcher could tell you how to do it in emacs! ¬¬ *flrrd*
07:45
< Reiver>
TW, it's emacs.
07:47
< Reiver>
You can change the colour settings in it with approximately the same number of keystrokes as it takes to render a geometrically precise pentagram and summon a minor elder horror into the world whilst sacrificing a chicken via macro.
07:53
<@TheWatcher>
Actually, just use the customisation browser :p
07:54
< Reiver>
Oh.
07:54
< Reiver>
You get to choose the kind of imp now?
07:54
< Reiver>
:p
07:55
<@Vornicus>
I got summoned by emacs once.
07:55
<@Vornicus>
I decided to eat the summoner's drive.
07:58 * TheWatcher eyes you all, bahs
07:58
<@TheWatcher>
Bah! I say!
07:58
<@TheWatcher>
Bah!
07:59 * TheWatcher ponders the fact that half the stuff he uses is reputed to be the work of elder horrors, wondrs if he'd be able ot persuade work to run off some new business cards, replacing "Learning technologist" with "Technomancer"
08:00
< Reiver>
...
08:03
<@TheWatcher>
whaat?
08:04 * Reiver has visions of TW in a flowing robe, and lightning shooters.
08:13 Thaqui [~Thaqui@Nightstar-8027.adsl.xtra.co.nz] has quit [Quit: Leaving]
08:18 You're now known as TheWatcher[swim]
08:43 Thaqui [~Thaqui@Nightstar-8486.adsl.xtra.co.nz] has joined #code
08:55 Vornicus is now known as Vornicus-Latens
08:59 Ev3 [~Shemhazai@Nightstar-8502.ds1-ba.adsl.cybercity.dk] has quit [Ping Timeout]
09:02 NSGuest-527 [~Shemhazai@Nightstar-8502.ds1-ba.adsl.cybercity.dk] has joined #Code
09:14 Syloqs-AFH [Syloq@NetAdmin.Nightstar.Net] has quit [Connection reset by peer]
09:15 Syloq [Syloq@NetAdmin.Nightstar.Net] has joined #code
09:16 Syloq is now known as Syloqs-AFH
09:32
<@jerith>
Morning all.
10:34 NSGuest-527 is now known as Ev3
10:55 You're now known as TheWatcher
11:17 * jerith prods python some more.
11:32
<@jerith>
Why is it that "if foo in dict:" seems to infinite loop while "if foo in dict.keys():" doesn't?
11:39 You're now known as TheWatcher[afk]
13:24 Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout]
14:22 Thaqui is now known as ThaquiSleep
15:00
<@ToxicFrog>
jerith: no idea, sorry.
15:00 * ToxicFrog eyes the backscroll, idly pimps NEdit at Reiver~
15:01
< Reiver>
TF: My Eclipse is still broken, too. :(
15:01
<@jerith>
ToxicFrog: That would be because it's not actually a dict. It's a wrapper around an ini file that's supposed to look like a dict.
15:01
<@ToxicFrog>
Hence the nedit-pimping.
15:02 * jerith pimps some emacs to get in on the pimp action.
15:04
< Reiver>
I'd really rather just get Eclipse working properly, given it's what half the Java experts around here tend to use~
15:04
<@jerith>
I find Eclipse immensely helpful and immensely frustrating in equal measures.
15:05
< Reiver>
You'd be about right. >.>
15:05
<@jerith>
In emacs there's a little less helpfulness, but the frustration can be cut short with a quick google and a few minutes of tinkering with elisp.
15:08 * ToxicFrog eyes the SML Basis Library.
15:09
<@ToxicFrog>
There's a function called String.implode()
15:09
<@ToxicFrog>
Sweet.
15:09
< Reiver>
...
15:09 * Reiver snerrrk
15:20
<@jerith>
'''I'm sorry, but comfortable is the last thing I want in my server room. I want it unbearably cold, and noisy. I want items scattered dangerously around the floor. I want random floor tiles to be missing. I want a very old sandwich of undetermined origin sitting half-eaten in the corner. I want the first thought of any person that enters my server room to be "Dear $DEITY, I must get out of this place IMMEDIATELY!"''' <-- http://home.xnet.com/~raven/Sysad
15:24
<@ToxicFrog>
There are no useful GUI libraries for SML. This makes me sad.
15:35 You're now known as TheWatcher
15:47 Reiver is now known as ReivZzz
16:13 You're now known as TW[w00dwr0k]
16:57 You're now known as TheWatcher
17:35 You're now known as TheWatcher[afk]
18:41 You're now known as TheWatcher
18:56 * EvilDarkLord tries Scheme. Wheeeee.
18:57
<@jerith>
That reminds me. I need to read my SICP.
19:00 * TheWatcher eyes TF
19:00
<@TheWatcher>
... you want to write something that requires a gui in SML? O.o
19:01
<@ToxicFrog>
...yes?
19:01
<@TheWatcher>
And people call me insane...
19:02
<@ToxicFrog>
Well, "I want to write something that requires a GUI". If SML had better GUI libraries than Lua, I would have considered using SML instead.
19:02
<@ToxicFrog>
But it doesn't.
19:04
<@TheWatcher>
We are talking Standard ML here, functional programming language?
19:04
<@ToxicFrog>
Yes.
19:04
<@ToxicFrog>
(it has a GUI library, it just sucks)
19:04
<@TheWatcher>
you mean people use SML as anything other than an academic toy? O.o
19:04
<@ToxicFrog>
...yes
19:04
<@ToxicFrog>
?
19:05
<@ToxicFrog>
There's even an SML compiler.
19:05
<@ToxicFrog>
As in, one that generates native machine code.
19:05
<@TheWatcher>
... bugger me with a rusty pitchfork.
19:06 * jerith obediently buggers TheWatcher with a rusty pitchfork.
19:06
<@TheWatcher>
(Is there a GUI lib for Alice?)
19:07
<@ToxicFrog>
(no idea, never heard of Alice)
19:07
<@TheWatcher>
Alice is the notional successor to SML. Adds concurrency, lazy evalutaiton, constraints and some other stuff.
19:07
<@ToxicFrog>
Aah.
19:08
<@ToxicFrog>
I think that would make it the successor of CML.
19:08
<@TheWatcher>
http://www.ps.uni-sb.de/alice/
19:08
<@TheWatcher>
Ah, yes, you can talk to GTK+ from it
19:08
<@ToxicFrog>
Does it do Glade?
19:10
<@TheWatcher>
hm
19:10
<@TheWatcher>
There's links to what looks like support, but they 404
19:10
<@ToxicFrog>
And does it have a compiler?
19:10
<@TheWatcher>
http://www.ps.uni-sb.de/alice/manual/library/index.html#gtk
19:11
<@TheWatcher>
apparently, yes
19:11
<@TheWatcher>
Ah, compiles to bitecodes, not native assembler
19:11
<@ToxicFrog>
Oh.
19:12
<@TheWatcher>
s/assembler/machine code/
19:13
<@ToxicFrog>
My main problem at the moment is that GTK is full of spiders.
19:13
<@TheWatcher>
I suppose it is, yes
19:15
<@ToxicFrog>
(event loop spiders!)
20:09 aoanla [~sam@Nightstar-16097.range81-151.btcentralplus.com] has joined #code
20:22 Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code
20:22 mode/#code [+o Chalcedon] by ChanServ
20:22
<@McMartin>
TW: SML and... Erlang, I think it is, actually see a lot of use in high-reliability environments.
20:23
<@McMartin>
I know one city switched its telephone switching software over to an Erlang-based system after a misplaced break; statement disabled 911~
20:39
<@ToxicFrog>
I believe most of the Canadian telephone switching system is written in Erlang, too.
20:45
<@McMartin>
... oy.
20:45
<@McMartin>
One of the "Inform 7 sux lol" people has accidentally defined Perl as the clearest of all computer languages.
20:46 * TheWatcher laughs
20:47
<@McMartin>
"With Inform 7 you can't tell the type of a variable from the syntax. In C++ I can see foo.bar() and know foo is an object and bar is a method name!"
20:47 * jerith grins.
20:47
<@McMartin>
Of course, in C++ you can also see foo << bar.
20:48
<@McMartin>
foo and bar might be integers!
20:48
<@McMartin>
Or, foo might be an ostream.
20:48
<@McMartin>
CONVENIENCE
20:49
<@Vornicus-Latens>
hee
20:50
<@McMartin>
(This is, in fact, why languages that forbid operator overloading don't offend me.)
20:52
<@jerith>
Languages that forbid operator overloading don't offend me either. But they do annoy me on the few occasions I need it.
20:53
<@jerith>
For example, I want to be able to compare two objects.
20:53
<@McMartin>
Heh. Actually, my SML book describes Certain Things that you can do with operator overloading and precedence and the like.
20:53
<@McMartin>
Certain capabilities are explicitly marked as "leading only to madness"
20:53
<@jerith>
String.equals() is just *wro.ng*
20:53
<@jerith>
Umm, move the period over to the end.
20:53
<@ToxicFrog>
...what book is this?
20:53
<@McMartin>
Well, eq? and equal? are different operations.
20:53
<@McMartin>
TF: "ML for the Working Programmer"
20:54
<@McMartin>
IIRC, it was using the "set precedence of operator" command on things like + and *.
20:54
<@ToxicFrog>
Aah.
20:54
<@McMartin>
Since + and * are just ordinary functions, etc.
20:55
<@McMartin>
And SML will let you define anything as infix.
20:55
<@ToxicFrog>
I suspected as much from the basislib docs.
22:27 * Vornicus-Latens floons
22:27 * Vornicus-Latens should get around to remembering how to do OpenGL.
22:30
<@TheWatcher>
Vornicus: nehe?
22:31
<@Vornicus-Latens>
I actually found the nehe tutorials to be absolutely useless.
22:32
<@Vornicus-Latens>
In the sense of "I... can't actually understand this code"
22:32
<@Vornicus-Latens>
s/understand/read/
22:33
<@Vornicus-Latens>
s/read/compile/ > new line
22:34 ThaquiSleep is now known as Thaqui
22:39 * Vornicus-Latens should also figure out his texture generation algorithm for his sphere texturing idea.
22:41 * aoanla finds NeHe to be passable.
22:41
< aoanla>
But, it's not nice code, no.
22:58 Chalcedon is now known as ChalcyCooking
23:50 Thaqui is now known as ThaquiWork
--- Log closed Sun Oct 22 00:00:03 2006
code logs -> 2006 -> Sat, 21 Oct 2006< code.20061020.log - code.20061022.log >