code logs -> 2008 -> Sat, 09 Aug 2008< code.20080808.log - code.20080810.log >
--- Log opened Sat Aug 09 00:00:30 2008
00:05 Gudjohnsen_girl [~gandzha@213.133.25.ns-21440] has joined #code
00:05
< Gudjohnsen_girl>
hi
00:05
< Gudjohnsen_girl>
has anyone speak english
00:16
< Gudjohnsen_girl>
»koristim [!] MaRiHuAnA mIRC [!] by rammer|MC«
00:17
< Gudjohnsen_girl>
01:17:52
00:17
< Gudjohnsen_girl>
Saturday
00:17
< Gudjohnsen_girl>
09/08/2008
00:18
< Gudjohnsen_girl>
»koristim [!] MaRiHuAnA mIRC [!] by rammer|MC«
00:18
< Gudjohnsen_girl>
»koristim [!] MaRiHuAnA mIRC [!] by rammer|MC«
00:18
< Gudjohnsen_girl>
»koristim [!] MaRiHuAnA mIRC [!] by rammer|MC«
00:18
< Gudjohnsen_girl>
01:19:04
00:18
< Gudjohnsen_girl>
Saturday
00:18
< Gudjohnsen_girl>
09/08/2008
00:18
< Gudjohnsen_girl>
09/08/2008
00:20 * Gudjohnsen_girl slaps McMartin balonom - u're dead !!!
00:21 Gudjohnsen_girl [~gandzha@213.133.25.ns-21440] has left #code []
00:36
<+Consul>
Wow, that was interesting...
00:56 Derakon[AFK] is now known as Derakon
01:40 androsch [~androsch@Nightstar-2639.pools.arcor-ip.net] has quit [Ping Timeout]
02:12
<@McMartin>
Who the fuck was that?
02:15 Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout]
02:16
<+Consul>
I have no clue, but those colors are very Christmas-y in my client.
02:21 Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code
02:21 mode/#code [+o Reiver] by ChanServ
02:29 Thaqui [~Thaqui@Nightstar-13764.jetstream.xtra.co.nz] has joined #code
02:29 mode/#code [+o Thaqui] by ChanServ
02:40 androsch [~androsch@Nightstar-3175.pools.arcor-ip.net] has joined #code
03:06 Netsplit Troika.TX.US.Nightstar.Net <-> Blargh.CA.US.Nightstar.Net quits: crem, @Thaqui, @Kazriko
03:07 Netsplit over, joins: crem
03:07 Netsplit over, joins: Kazriko, Thaqui
03:07 mode/#code [+o Kazriko] by ChanServ
03:07 mode/#code [+o Thaqui] by ChanServ
03:14 Attilla [~The.Attil@92.17.251.ns-11974] has quit [Quit: <Insert Humorous and/or serious exit message here>]
03:37 androsch [~androsch@Nightstar-3175.pools.arcor-ip.net] has quit [Connection reset by peer]
04:10
<+Consul>
Well, I've drawn out my different layers (GUI, scripting, engine) and I've realized something important: the scripts are all reacting only to events.
04:45
<@ToxicFrog>
This is indeed convenient.
04:54
<+Consul>
I've also been looking at embedding Python, but I have a feeling that won't win on the speed front.
04:56
<@ToxicFrog>
Python has more features at the language level and a much more extensive standard library.
04:56
<@ToxicFrog>
However, it's also slower, much harder to interface with C and C++, and about 100 times the size.
04:56
<@ToxicFrog>
It's really more for writing complete programs in than using as a scripting language to a larger app.
04:56
<+Consul>
Plus I already have familiarity with it.
04:57
<+Consul>
I can see Python for scripting in a larger program if features, rather than speed, is the issue.
04:57
<+Consul>
But Lua's syntax and general... language-ness, is not intuitive to me.
04:58
<@ToxicFrog>
Depends on what features - if it's, say, the object system, you can implement that in lua, and if it's closures, Lua Does It Better
04:58
<@ToxicFrog>
OTOH, if it's say list comprehension syntax, python wins hands down without twisty CTMP hacks.
04:58
<@ToxicFrog>
What are you having trouble with?
04:59
<+Consul>
Maybe I just need a better tutorial than the language reference.
04:59
<@ToxicFrog>
The language reference does assume that you are already a moderately experienced programmer and are familiar with stuff like lexically scoped function closures.
04:59
<+Consul>
I went and took a look at a function someone else had written to load and save tables, and it was a hell of a lot larger than your 5 lines.
05:00
<@ToxicFrog>
Like I said, a quick and dirty one is around 5 lines - saving of acyclic tables with simple (number, string, and boolean) keys.
05:01
<+Consul>
Anyway, I'll scan this diagram tomorrow and post it somewhere.
05:01
<@ToxicFrog>
One that is more robust, and can handle things like cyclic tables, function dumping, arbitrary seriaizeable data types, etc will be rather larger.
05:02
<+Consul>
This one (in the code examples section of the wiki) must have been one designed to handle absolutely everything.
05:02
<@ToxicFrog>
Link me?
05:03
<@ToxicFrog>
(my handles-everything one is around 55 lines)
05:03
<+Consul>
http://lua-users.org/wiki/SaveTableToFile
05:05
<@ToxicFrog>
Hmm
05:05
<@ToxicFrog>
Same basic idea as mine
05:06
<@ToxicFrog>
Larger, for several reasons:
05:06
<@ToxicFrog>
- it comments the output file
05:07
<@ToxicFrog>
- it uses a different approach for handling nested tables (iterative rather than recursive) and uses two nested loops rather than tail recursion
05:07
<@ToxicFrog>
- it supports a wider variety of output modes
05:08
<@ToxicFrog>
- it provides a "load" function rather than emitting code which can be directly passed to loadstring()
05:09
<@ToxicFrog>
As far as learning the language goes - if there's anything in specific you're having trouble with, I can probably help.
05:09
<@ToxicFrog>
If not, I'm willing to have a go at teaching it, but the tutorial index on the wiki, or Programming in Lua, is probably a better bet.
05:10
<+Consul>
I'll keep hunting around.
05:10
<+Consul>
It's just that, even with Perl and PHP, I was able to look at code from the beginning and decipher it.
05:10
<+Consul>
Lua is just different enough to keep me from that.
05:10
<@ToxicFrog>
Looking at language examples on the wiki outside of the tutorials is probably not a good place to *start* learning, since most of them are written by, and for, people who already know the language inside out and now want to do tricky, non-obvious, or mind-eating things with it.
05:11
<@ToxicFrog>
Wait
05:11
<@ToxicFrog>
Did you just say Perl is more readable than Lua?
05:11
<@ToxicFrog>
o.O
05:12
<+Consul>
Believe it or not, I had very little trouble picking up Perl.
05:12
<+Consul>
I was even writing regular expressions a few days into learning it.
05:12
<@ToxicFrog>
The basics of perl are easy to learn.
05:12
<@ToxicFrog>
It's reading the stuff that's hard.
05:12
<@ToxicFrog>
Advanced perl looks like line noise.
05:13
<+Consul>
Heh
05:13
<@ToxicFrog>
SaveTableToFile, IMO, is much more readable, and is basically the equivalent - written by an experienced lua programmer with little concern for stuff like whitespace or extensive commenting.
05:15
<@ToxicFrog>
Part of it may be unfamiliarity with the standard library - take, say, the first three functions on this page:
05:15
<@ToxicFrog>
http://lua-users.org/wiki/TableUtils
05:15
<@ToxicFrog>
http://lua-users.org/wiki/TableUtils
05:15
<@ToxicFrog>
http://lua-users.org/wiki/TableUtils
05:16
<@ToxicFrog>
http://lua-users.org/wiki/TableUtils
05:16
<+Consul>
Yeah, I heard you the first time. :-P
05:16
<@ToxicFrog>
Gnar
05:16
<@ToxicFrog>
The server doesn't agree
05:16
<+Consul>
Technical difficulties?
05:16 mode/#code [-o+o ToxicFrog ToxicFrog] by ToxicFrog
05:16
<@ToxicFrog>
http://test.ca/
05:16
<@ToxicFrog>
There we go.
05:16
<@ToxicFrog>
Desync.
05:16
<+Consul>
Ah
05:16
<@ToxicFrog>
Some servers thought I wasn't voiced, others did.
05:16
<+Consul>
Oh, weird.
05:17
<@ToxicFrog>
It happens.
05:17
<@ToxicFrog>
So. Take the first three functions.
05:18
<@ToxicFrog>
They are - or at least, I think they are - fairly simple and straightforward. But they also make heavy use of library functions; if you're unfamiliar with the stdlib, it won't be immediately apparent what they do, beyond the broad outline.
05:18 * ToxicFrog shrugs
05:19
<@ToxicFrog>
Anyways. Like I said, if you have specific questions, go for it.
05:19
<+Consul>
Well, even here, I can start to guess based on names and arguments...
05:20
<+Consul>
string.gsub == global substitution of a substring, likely...
05:20
<+Consul>
The string is the first argument, the second is probably what to replace, and the third is what to replace it with.
05:24
<@ToxicFrog>
Yep
05:25
<+Consul>
Doing the checks as: if "value" == function() is a bit odd, but I guess as long as it returns the right value...
05:27
<@ToxicFrog>
<constant> == value rather than value == <constant> is a common idiom, especially in languages where == is equality and = (as opposed to := or <- or the like) is assignment
05:27
<@ToxicFrog>
Because if you typo it, "foo" = var is a compile time error, but var = "foo" is a silent logic error.
05:28
<+Consul>
I never thought of it that way.
05:28
<@ToxicFrog>
This is less of an issue in Lua than it is in C or C++, because in lua assignments cannot be used as expressions
05:28
<@ToxicFrog>
So something like "if a = b" is an error no matter what a and b are.
05:28
<@ToxicFrog>
I suspect that the writer of that code comes from a C background and just kept with the habit.
05:29
<+Consul>
I was never taught that trick in my C++ class.
05:32
<@ToxicFrog>
Possibly they figured that teaching C++ in the first place was enough of a burden~
05:32
<@ToxicFrog>
But you see, it's not that hard.
05:32
<+Consul>
Heh
05:32
<+Consul>
Does C allow for easy ADTs?
05:33
<+Consul>
Because grasping ADTs is what made me think I could program after all.
05:33
<+Consul>
Which is why I seem to, if not like, at least not abhor C++.
05:35
<@ToxicFrog>
By C, do you mean Lua?
05:35
<+Consul>
No, I mean C.
05:36
<@ToxicFrog>
Also, you will have to clarify what you mean by ADT, because when I think abstract data types I think stuff like Haskell's type classes, which is probably not what you mean.
05:36
<@ToxicFrog>
Ok. I'm not sure where C came from in the discussion, but I'll try to answer.
05:38
<@ToxicFrog>
And then I'm going to bed.
05:38
<+Consul>
Don't let me keep you up. :-)
05:38
<+Consul>
But what I mean is, using C++ classes to essentially create new data types.
05:39
<+Consul>
I've discovered it's possible to do some pretty potent stuff with that idea.
05:41
<+Consul>
All of the classes we've made so far are either abstract base classes or ADTs.
05:42
<@ToxicFrog>
Since pretty much any class is "creating a new data type", and since most of them are concrete, not abstract, I must disagree on your use of ADT here
05:42
<@ToxicFrog>
In C++ the equivalent is creating a struct (or sometimes union, or simple typedef) type and a set of functions which operate on it.
05:42
<+Consul>
Okay, never mind then.
05:43
<@ToxicFrog>
Er
05:43
<@ToxicFrog>
In C
05:47
<+Consul>
Keep in mind that this was C++ for Engineers. That means we got the fast-track only on stuff to help solve repetative problems.
05:49
<@ToxicFrog>
(traditionally, an ADT is just a definition of certain operations and axioms related to a type - for example, a stack permits the operations creation -> stack, deletion -> stack -> nil, push -> stack -> any -> stack, pop -> stack -> (any, stack), size -> stack -> num, for example, with some associated axioms and requirements like size (create) == 0, pop (push stack obj) == obj, and pop only being meaningful when
05:49
<@ToxicFrog>
size > 1)
05:49
<@ToxicFrog>
(in Haskell, this would be a typeclass; in Java, perhaps an interface; in C++, a pure virtual class declaration (with no definition)
05:49
<+Consul>
We implemented a roman numeral type.
05:49
<+Consul>
With operator overloading.
05:50
<+Consul>
Which would've been a lot faster had I known templates.
05:50
<@ToxicFrog>
(you would then create a concrete class that serves as an implementation of the abtract type described by the earlier declaration)
05:50
<+Consul>
Like I said, I have a feeling the book was really fast-tracking us.
05:51
<@ToxicFrog>
It does sound like the focus was a crash course introduction to using C++ in useful ways, not teaching programming theory in general.
05:51
<+Consul>
I'm not really surprised that terms were glazed over or used slightly incorrectly.
05:51
<@ToxicFrog>
I note that you can't do operator overloading in C.
05:52
<@ToxicFrog>
The concrete implementation of an ADT in C is typically entirely based on explicit function calls; eg, your roman numeral type would have:
05:52
<+Consul>
And one point in favor of C is I have the White Book.
05:52
<@ToxicFrog>
RomanNumeral RN_add(RomanNumeral a, RomanNumeral b)
05:52
<@ToxicFrog>
Rather than:
05:53
<@ToxicFrog>
RomanNumeral::operator+(RomanNumeral & a, RomanNumeral & b)
05:53
<@ToxicFrog>
And it would be called explicitly as c = RN_add(a,b), rather than as c = a+b
05:53
<@ToxicFrog>
I still have no idea how C entered the discussion.
05:54
<+Consul>
C entered the discussion because I'm wondering if I'm better off abandoning C++.
05:54
<+Consul>
The issue there is, the other dev on this project has already done a great deal of stuff in C++ that works.
05:54 AnnoDomini [AnnoDomini@Nightstar-29533.neoplus.adsl.tpnet.pl] has joined #Code
05:54 mode/#code [+o AnnoDomini] by ChanServ
05:54
<@ToxicFrog>
Aah.
05:54
<+Consul>
We picked C++ because I took a class in it, basically.
05:55
<+Consul>
Which seems a stupid reason.
05:55
<@ToxicFrog>
C++ has more features and lets you do things you simply cannot do in C. On the other hand, when it goes wrong, it goes really horrifically wrong.
05:55
<+Consul>
But last I checked, Ardour is completely C++, so it can't be all bad.
05:56
<@ToxicFrog>
The relevant saying is, I believe, "C makes it very easy to shoot yourself in the foot. C++ makes it harder, but when you do, it takes off both your legs."
05:57
<@ToxicFrog>
I find that C tends to result in clearer, more portable code, but C++ makes it easier to organize large systems.
05:59
<+Consul>
Heh
05:59
<+Consul>
Well, if anything is a large system, it's this.
06:00
<+Consul>
Anyway, head off to bed if you need to. I will be myself, shortly.
06:00
<@ToxicFrog>
Yeah, I'm out for the night
06:00
<+Consul>
Thanks for the hand.
06:01
<@ToxicFrog>
Laters
07:26 Derakon is now known as Derakon[AFK]
08:08 Chalcedon [~Chalcy@Nightstar-2160.ue.woosh.co.nz] has joined #code
08:09 Chalcedon [~Chalcy@Nightstar-2160.ue.woosh.co.nz] has quit [Quit: Leaving]
08:50
<@McMartin>
For the record: C++ used carefully and with great restraint is probably easier to keep a handle on than C.
08:51
<@McMartin>
C doesn't do stuff behind your back, but it's amazing how quickly you find yourself reimplementing bits of C++ in C when you get down to it.
08:51
<@McMartin>
The big problem with C++ is that its library is Twisted And Wrong due to the fact that they wanted C++ that doesn't use the library to be Exactly The Same As C.
08:52
<@McMartin>
This leads to such horrors as a variable that needs to be cleaned up with delete or delete[] depending on which path you take through a function.
08:52
<@McMartin>
And choosing the wrong one corrupts the heap.
08:53
<@McMartin>
Now that the STL is actually reasonably widely implemented (just in time for the library to be extended by the next version of the standard!), there's really no longer any excuse for every using a C array.
08:53
<@McMartin>
vector is flatly superior to it for any purpose.
08:53
<@McMartin>
(I have to give myself a crash course in What Happened to C++ Since I Left It since my new job requires it. ;.;)
08:54
<@McMartin>
At least the new standard will be easy to implement.
08:54
<@McMartin>
"Download Boost, link it; you're now TR1 compliant."
08:54
<@McMartin>
"And then some."
08:54
<@McMartin>
shared_ptr is Still Wrong, but it's at least *less* wrong than auto_ptr.
09:03 Mojo1978 [~Mojo1978@Nightstar-13370.hsi.ish.de] has joined #code
09:38 You're now known as TheWatcher
12:03 Attilla [~The.Attil@92.17.251.ns-11974] has joined #code
12:03 mode/#code [+o Attilla] by ChanServ
12:04 Thaqui [~Thaqui@Nightstar-13764.jetstream.xtra.co.nz] has left #code [MORE constitution LESS destitution MORE pros...perity.]
12:44 gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has joined #Code
12:44 mode/#code [+o gnolam] by ChanServ
12:52 gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has left #Code []
12:52 gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has joined #Code
12:52 mode/#code [+o gnolam] by ChanServ
13:58
<+Consul>
It's beginning to sound like there is no perfect language. At this point, all I can say is, C++ is as good or bad as any of them.
13:58
<+Consul>
But yes, using vector types for sample frames rather than passing pointers around might be a good idea.
14:15
<@TheWatcher>
The is no perfect language, by definition
14:15
<@TheWatcher>
+re
14:15
<@TheWatcher>
Some languages are better suited to certain situations than others, some are better suited to certain people's styles or mental processes
14:16
<+Consul>
That latter point, I think that's what I'm running into.
14:16
<+Consul>
When we started studying classes in my C++ class, they immediately clicked with me, and I breezed through the entire section. Everyone else in the (college) class had real trouble.
14:17
<@TheWatcher>
But there is no one language that does everything perfectly, and never will be, as there are too may conflicting requirements
14:17 * TheWatcher eyes his typing, ponders the wisdom of attempting to code today...
14:19 * TheWatcher blehs, wnats to get a chunk of the vfs done this weekend, so
14:23
<+Consul>
vfs?
14:24
<@TheWatcher>
http://alexandria.starforge.co.uk/wiki/Virtual_File_System - the startings of the documentation for it
14:25 mode/#code [+o TheWatcher] by ChanServ
14:25
<@TheWatcher>
http://alexandria.starforge.co.uk/wiki/Virtual_File_System - the startings of the documentation for it
14:26
<+Consul>
Pretty low-level stuff, from the looks of it.
14:26
<+Consul>
As in, down at the OS/kernel level.
14:27
<+Consul>
Ah, I see... The diagram is quite helpful.
14:28
<@TheWatcher>
Nope. This sits in userspace, it's part of *gids for something*
14:28
<@TheWatcher>
*digs
14:29
<+Consul>
Gids for Something sounds like an 80s new wave band name. :-)
14:33
<@TheWatcher>
It's part of this: http://fleet.starforge.co.uk/structure.png
14:33
<@TheWatcher>
which is, in turn, part of something Much Larger
14:33
<+Consul>
That you can't tell me about?
14:33
<+Consul>
Wait...
14:34
<+Consul>
I just saw "Texture Loader".
14:34
<+Consul>
Pretty big clue, there.
14:34
<@TheWatcher>
Yeah, it tells you that it loads textures. And objects. And Lua files ;P
14:35
<@ToxicFrog>
Which would most likely make it a game engine of some kind.
14:35
<+Consul>
Gee, I wonder what this could be...
14:35
<+Consul>
Well, I was sarcastically dancing around the obvious conclusion, but yes, I did get there.
14:35
<@TheWatcher>
Seriously though, in the first pass, it'll be used in http://alexandria.starforge.co.uk/wiki/Project_Shinar
14:36
<@TheWatcher>
The primary use though, that's a different matter.
14:36
<@TheWatcher>
(all of that is, obviously, very much In Development)
14:41 crem [~moo@Nightstar-28703.adsl.mgts.by] has quit [Connection reset by peer]
14:49 crem [~moo@Nightstar-28703.adsl.mgts.by] has joined #code
15:01 Mojo1978 [~Mojo1978@Nightstar-13370.hsi.ish.de] has quit [Connection reset by peer]
15:11 * TheWatcher tackles the problem of determining application data directory location on linux, windows, and mac. Eughs.
15:12
<@ToxicFrog>
On linux it's traditionally /usr/share/<application>; on windows, $(pathname $0)
15:12
<@ToxicFrog>
No idea on OSX
15:15
<@TheWatcher>
unfortunately, traditionally doesn't help when people install to /usr/local/share/<app>, /opt/<app>, /opt/share/<app>, /opt/local/share/</app>, or ~/<app>/...
15:16
<@TheWatcher>
I know there's some way to get at prefix from autoconf, I just need to decypher it from the documentation
15:22
<@ToxicFrog>
Augh, autoconf
15:22
<@TheWatcher>
yeah
15:22
<@TheWatcher>
Indeed
15:23
<@TheWatcher>
gives me headache any time i go near it..
15:31
<+Consul>
Tell me about it...
15:32
<+Consul>
My one and only experience with automake has made me hate it.
15:35
<+Consul>
Glad to see I'm not the only one.
15:38
<@TheWatcher>
It's not so bad, if you need to do absolutely nothing fancy
15:40
<@TheWatcher>
Otherwise it is unending pain and incomprehensible documentation
15:47
<@TheWatcher>
And god help you if you need to go near m4.
16:05
<+Consul>
Anders introduced me to Cmake, which looks fairly sane.
16:06
<+Consul>
scons is also quite nice from a user standpoint.
16:10
<@ToxicFrog>
scons is pretty nice, apart from the whole "not installed on anything by default" bit.
16:10
<+Consul>
That's more the distros' fault, isn't it?
16:10
<@ToxicFrog>
pm, a lua-based build system, avoids this by being entirely self-contained but has some portability issues.
16:10
<@ToxicFrog>
(specifically, it assumes every target system has a working C compiler)
16:11
<@TheWatcher>
... link?
16:11
<@ToxicFrog>
ANAICT what it basically comes down to is that there are no good build systems, only bad ones and worse ones
16:11
<@TheWatcher>
Indeed
16:11
<+Consul>
Any opinion on Cmake?
16:11
<@ToxicFrog>
http://primemover.sourceforge.net/index.html
16:11
<@ToxicFrog>
Never used cmake.
16:11
<@TheWatcher>
Thanks, TF.
16:12
<+Consul>
Prime Mover? A reference to Buck Godot, perchance?
16:12
<@ToxicFrog>
TheWatcher: it does some really cool stuff that I like, such as automatic segregation between source tree and generated files
16:12
<@ToxicFrog>
But it's still alpha, and it shows
16:12
<@TheWatcher>
hm
16:12
<@ToxicFrog>
Consul: the term predates BG by a lot
16:12
<+Consul>
Oh, I don't know. I've been reading BG lately.
16:13
<+Consul>
He does reference a lot of other fiction.
16:13
<@ToxicFrog>
Consul: http://en.wikipedia.org/wiki/Prime_mover
16:14
<@TheWatcher>
I'll have a look anyway. If it avoids giving me splitting headache just trying to get the damned thing to work, I may even see if I can contribute, because someone really needs to stick a stake through autoconf's heart, bury it at a crossroads, stuff a lemon in its mouth, and boil its head in vinegar for a week. After hiding its socks.
16:14
<@ToxicFrog>
The term originates with Aristotle.
16:15
<@ToxicFrog>
TheWatcher: I note that it doesn't really do the same sort of thing autoconf does - detection of installed packages and whatnot
16:15
<@ToxicFrog>
It's a *build* program, like make, not a configuration or system-detection one
16:16
<@TheWatcher>
hmm
16:16
<@TheWatcher>
well, I will have a look anyway
16:16
<@ToxicFrog>
Although it is easier to integrate that sort of stuff with pm than it is with make, since you have a fully featured programming language to work with.
16:16 * ToxicFrog AFKs for a while
16:35 * Vornicus used rake to get 1,000 assets out of 40 input files.
16:40
<+Consul>
Oh, that reminds me, I have to mow the lawn this weekend.
16:40
<@TheWatcher>
... I'm not going to ask.
16:40
<+Consul>
Vorn's reference to "rake."
16:41
<@Vornicus>
TW: "rake" is not just a ruby-based makefile system, but a lawn maintenance tool.
16:41 * TheWatcher nods
16:41
<+Consul>
You use them out in the Big Blue Room.
16:41
<@TheWatcher>
was wonderting whether Consul was intending to mow the lawn with small donkeys or something, for a moment then.
16:41
<@Vornicus>
pfff
16:41 * TheWatcher blames the autoconf docs
16:48 * gnolam is reminded of that epic Ken Jennings moment.
16:50
<@Vornicus>
Which one?
16:51
<@gnolam>
This one: http://www.youtube.com/watch?v=KoPFkjF-Bdo
16:52
<+Consul>
Ah yes, of course.
16:52
<@Vornicus>
....heeee
16:53
<+Consul>
I also liked when he finally lost. He clearly threw the match. He probably couldn't keep going any more, life and work and all that.
16:53
<+Consul>
He went out with some style.
17:16
<+Consul>
Ah, feels good to be clean.
17:31
<@gnolam>
That's what you think until the DT's set in.
17:31 * TheWatcher yes prime mover
17:31
<@TheWatcher>
*eyes even
17:33
<@TheWatcher>
for a two year old project, this is kinda in need of work. hrm
17:45 * TheWatcher sighs vaguely, really doesn't want to give in to the temptation to write a replacement system detection and build tool
17:48
<@gnolam>
Arrgh. It /is/ a defined reference!
17:49
<@TheWatcher>
?
17:49
<@gnolam>
It's being compiled and linked properly... it's used in /other/ files... but in this particular one it just plain refuses to work.
17:49 * gnolam facepalms.
17:49
<@gnolam>
... oh. Forgot the extern "C".
17:49
<@TheWatcher>
Ooops
17:49
<@TheWatcher>
yeah, that'd do it
17:50
<@TheWatcher>
(yey, name mangling >.<)
18:00 Derakon[AFK] is now known as Derakon
18:44
<@gnolam>
Blargh. Resource management.
18:49
<@TheWatcher>
?
18:59
<+Consul>
ToxicFrog: My attempt to diagram what's been in my head: http://nuclearproject.googlepages.com/app_layers.png
19:02
<@AnnoDomini>
Consul: Make me a diagram... of the WFRP2e career exits/entries!
19:02
<@AnnoDomini>
:P
19:03
<+Consul>
Was WFRP the rival station in Cincinnati?
19:03
<@AnnoDomini>
Warhammer Fantasy Roleplay.
19:04
<+Consul>
Heh
19:04
<@gnolam>
A quite decent RPG, actually.
19:04
<@AnnoDomini>
Indeed.
19:04
<@AnnoDomini>
I played today.
19:04
<+Consul>
I have yet to find a diagramming tool on Linux that I like.
19:04
<@gnolam>
TheWatcher: I have to start dealing with how to properly load and store my textures and models now.
19:04
<+Consul>
I do better with paper and pencil.
19:05
<@AnnoDomini>
It was a solo session between me and the GM. I was a scribe and travelling 4 days to another town with a merchant and two guards. I was the only survivor.
19:05
<@TheWatcher>
gnolam: see that diagram I linked earlier ;)
19:05
<@AnnoDomini>
Though I am at 0 wounds, have a crippled left arm and am down one fate point.
19:07
<+Consul>
Someone should make an Emanuelle RPG.
19:07
<+Consul>
Erm, think that's spelled "Emmanuelle", actually.
19:09
<@gnolam>
Someone should make an Immanuel Kant RPG.
19:09
<@gnolam>
"I cast 'Critique of Pure Reason' for 10 logic damage!"
19:09
<@gnolam>
Or not.
19:10
<+Consul>
Dresden Codak kinda already went there...
19:10
<+Consul>
An Emmanuelle RPG would go something like:
19:11
<@AnnoDomini>
I rolled up a really tough scribe, too. He was strong, tough, fast and could use weapons absurdly well for someone literate.
19:11
<+Consul>
Actually, I'll keep the channel PG.
19:11
<+Consul>
What I almost hit Enter on would get me kicked out of most channels.
19:18 * Vornicus manages to get insertion working. A lot harder than it looks.
19:21
<@Vornicus>
On the other hand, I can change the width of the tree as a single constant change, so I'm doing pretty good.
19:21
<@AnnoDomini>
Consul: Teeeeeeeell uuuuuuus!
19:21
<@TheWatcher>
oooh, trees
19:22
<@Vornicus>
TW: specifically, B Trees.
19:22
<@McMartin>
TW: BTW, OS X's shared data is in /Library/Application Support/$APPNAME/
19:23
<@McMartin>
With user-specific data in either ~/.appname as per Linux or ~/Library/Application Support/etc.
19:23
<@TheWatcher>
Okies, thanks
19:23
<@McMartin>
Actually, give me a sec to boot up and confirm that.
19:23
<+Consul>
AnnoDomini: Do a Google search on the name, it'll be enough. :-)
19:23
<@McMartin>
I'm sure about the user-specific stuff, less sure about the global.
19:24
<@AnnoDomini>
Consul: I seep.
19:24 * McMartin blinks as a neuron fires
19:25
<@McMartin>
TW, what kind of stuff are you intending to shove into the "/usr/share" equivalent?
19:25
<@McMartin>
Because if it's actual program data, OS X standard is to put that in the Resources subdirectory of the application bundle.
19:26
<@TheWatcher>
files containing textures, objects, xml, that kinda thing
19:27
<@Vornicus>
...holy shit that's cool.
19:27
<@McMartin>
Yeah, those go in the app bundle in OS X.
19:27
<@Vornicus>
TW: if this isn't, like, addon modules, definitely in the app bundle.
19:27
<@McMartin>
Things like user configs go in ~/Library/Application Support/$APP.
19:28
<@Vornicus>
Your goal should be an installer that consists of "tell the user to copy the app bundle to his installation directory of choice"
19:28
<@McMartin>
And an uninstaller that is "drag it to the trash"
19:28 * TheWatcher nods
19:28
<@McMartin>
Global configuration information goes in /Library/Application Support/$APP/.
19:29
<@McMartin>
But that's more akin to /etc/$APP.conf.
19:29
<@McMartin>
Since this is actually also a rather polite thing to do with Windows apps, too, I suggest just vaguely keeping it in mind as a design goal and not worrying about full OS X integration until later.
19:30
<@McMartin>
Because Stock POSIX will work on OS X too.
19:31
<@TheWatcher>
McM: yeah, I kinda guessed it was something like that. The killer for me ATM is linux (which is depressing)
19:32
<@McMartin>
One of the options for Linux should be something like "." or "../resources" anyway, though
19:32
<@McMartin>
Just so that you can run it right out of the SVN tree.
19:33
<@McMartin>
So start with that and worry about installers later.
19:33
<@McMartin>
(And, you know, make it configurable.)
19:33
<@McMartin>
(Early versions of UQM were successfully packaged by people who just patched a hardcoded resource link for their distro's edition.)
19:35
<@TheWatcher>
Yeah, I just find it so fucking annoying that it's trivial on MacOS and /windows for gods' sakes/ and it's an utter pain in the arse in linux
19:36
<@McMartin>
Heh. Windows is actually the easiest of the three, horrifyingly enough.
19:36
<@McMartin>
The only real thing necessary to Truly Do It Right that's weird is registering yourself with Add/Remove Software.
19:37
<@McMartin>
And there are FOSS tools that will take a pile of files and whip up an installer that does exactly that for you.
19:37
<@McMartin>
(Specifically, NIS Edit for the NSIS system. NSIS alone is full of spiders; NIS Edit's automators make it a matter of hitting six buttons.)
19:38
<@McMartin>
The obnoxiousness in OS X is ensuring that your .sos are all reading the .app local versions, or (as Sable did for *years*) the distributed app will only run on your dev box.
19:45 * Vornicus is sorry about that.
19:48 * Vornicus now prepares for his attempt at deletion.
19:52
<@TheWatcher>
McM: at some point I may Pick You Brains on that issue, should it be necessary
19:54
<@TheWatcher>
+r
19:54
<@TheWatcher>
I can type, really I can
20:31 gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has quit [Quit: Vain hope at fixing OpenGL nastiness]
20:33 gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has joined #Code
20:33 mode/#code [+o gnolam] by ChanServ
20:41
<@McMartin>
TW: Sure thing. It's been awhile since I've bent X-Code to my will, but it's got pretty good facilities for it.
20:42
<@McMartin>
Unless you meant NSIS, in which case, yeah, I think I'm the sole local expert.
20:45
<@TheWatcher>
Windows installers I'm fine with (although I've used InnoSetup 4 rather than NSIS), but thanks
20:45
<@Vornicus>
Also, McM: what is declarative description, and why is inform immune to it, and why is this disappointing?
20:46
<@McMartin>
vaporware had been trying to make a grammar for Inform 6.
20:46 AbuDhabi [AnnoDomini@Nightstar-29782.neoplus.adsl.tpnet.pl] has joined #Code
20:46
<@Vornicus>
like a BNF?
20:46
<@McMartin>
And it's so full of horrific ambiguity and special cases and context-sensitivity that he's finding it unfeasible.
20:46
<@Vornicus>
ah, heh
20:46
<@McMartin>
Yeah, but with extra stuff, since it's not *remotely* context-free.
20:46
<@Vornicus>
that is disappointing
20:46
<@McMartin>
The one he was bitching about there was this:
20:46
<@McMartin>
object foo with description 1 has 2;
20:47 AnnoDomini [AnnoDomini@Nightstar-29533.neoplus.adsl.tpnet.pl] has quit [Ping Timeout]
20:47
<@McMartin>
"How do you know here that "1 has 2" isn't an expression? Because it can be. But only inside if statements!
20:47
<@McMartin>
"Not at object scope!"
20:47
<@McMartin>
I think you can do that in CFG anyway by multiplying nonterminals but I'm not sure you can do it without reduce-reduce conflicts.
20:47
<@McMartin>
And I don't care enough to write it up and shove it through to try.
20:50
<@Vornicus>
for k in range:
21:10
<@McMartin>
Blargh
21:11
<@McMartin>
I don't suppose anyone knows of a good string interpolation library for C.
21:11
<@Vornicus>
I figured everybody just used printf and kvetched.
21:12
<@McMartin>
That doesn't let me change argument order.
21:12
<@McMartin>
Which is what I need it for.
21:12
<@McMartin>
(UQM localization support, ultimately)
21:34 * McMartin looks through http://zork.org/safestr/safestr.html
21:35
<@McMartin>
Blargh, you ignorant slut.
21:35 mode/#code [-o+o McMartin McMartin] by Vornicus
21:35
<@Vornicus>
I saw it, anyway
21:35
<@TheWatcher>
Yeah, Blargh's been desynched most of the day
21:37
<@Vornicus>
Blargh's always desynched.
21:38
<@TheWatcher>
True
21:38
<+Consul>
That could be a new IRC insult for someone who's slow or stupid (like me): Wow, you're *so* desynched.
21:39
<@McMartin>
This would be vastly easier with std::strings.
21:59 Shoukanjuu [~Shoukanju@Nightstar-18822.dhcp.embarqhsd.net] has joined #code
22:48 * TheWatcher names the priority queue he's using to kill off vfsFiles from the cache 'number_nine', for the hell of it
22:48
<@Vornicus>
...whut?
22:49
<@TheWatcher>
Grim Fandango. The train that took souls into the ninth underworld.
22:50
<@Vornicus>
ah
22:50
< Shoukanjuu>
Doomtrain is cooler >_>
22:54
<@TheWatcher>
talking of which, If I have 'priority_queue<vfsFile *, vector<vfsFile *>, ptr_greater<vfsFile *>> number_nine;' push a bunch of pointers on, and later do some number_nine.pop()s, will it actually do a delete number_nine.top() for me, or just remove the pointer? I think it'll delete, but..
22:58 * TheWatcher shrugs, writes a test program to be sure
23:02
<@MyCatVerbs>
TheWatcher: if it did delete on pop() then it'd make it impossible to have other pointers to the same object.
23:03
<@MyCatVerbs>
And also you'd get fantastically unfriendly behavoir. Like if you wanted to try something like, a = stack.pop(); b = stack.pop(); a.foo(bar); // it'd explode in your face because a would've just been deleted.
23:03
<@Vornicus>
What MCV said; I would expect it to /not/ delete.
23:04
<@McMartin>
Transfer ownership, though.
23:04
<@MyCatVerbs>
Be aware that I haven't actually -checked- this, and I do commend you for actually testing to make sure, but even I don't have sufficiently little faith in C++ programmers as to think they'd ever write something so incredibly unusable as that.
23:06 * MyCatVerbs understands that that sentence employs a double negative, is missing at least one 'while', and should, overall, be dragged out into the street and shot (as should this one, for abusing commas and parentheses, being too long, and use of Oxford commas), but doesn't care enough to improve it.
23:40 Shoukanjuu [~Shoukanju@Nightstar-18822.dhcp.embarqhsd.net] has quit [Ping Timeout]
23:42 Shoukanjuu [~Shoukanju@Nightstar-18822.dhcp.embarqhsd.net] has joined #code
23:43 AbuDhabi [AnnoDomini@Nightstar-29782.neoplus.adsl.tpnet.pl] has quit [Quit: Don't trust the skull.]
--- Log closed Sun Aug 10 00:00:40 2008
code logs -> 2008 -> Sat, 09 Aug 2008< code.20080808.log - code.20080810.log >