code logs -> 2008 -> Thu, 28 Aug 2008< code.20080827.log - code.20080829.log >
--- Log opened Thu Aug 28 00:00:34 2008
00:04 * Vornicus dunno who crem and androsch are.
00:36 * Consul should consider registering his name.
00:37 You're now known as TheWatcher[T-2]
00:39 You're now known as TheWatcher[zZzZ]
01:10 Bobsentme [Bobsentme@Nightstar-27548.dsl.sfldmi.sbcglobal.net] has joined #code
01:15 gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has quit [Quit: Bleh. And Z?]
01:28 McMartin [~mcmartin@Nightstar-14680.dsl.pltn13.sbcglobal.net] has quit [Operation timed out]
01:30 McMartin [~mcmartin@Nightstar-14680.dsl.pltn13.sbcglobal.net] has joined #code
01:30 mode/#code [+o McMartin] by ChanServ
01:34
< Bobsentme>
Quote from C programming class: "Hey, they copied Unix! Bash scripting looks JUST like this!!!"
01:34
< Bobsentme>
Yes, I facepalmed.
01:36
<@Vornicus>
heh
01:38
< Bobsentme>
Same kid argued with the teacher that he should be allowed to make one character long variable names
01:38
<@Vornicus>
Bite him.
01:39 * Vornicus uses one-character variable names rather often but he's writing scientific software, where everything's already /got/ one-character-long names.
01:40 * Bobsentme can understand one character long variables if you are only doing a math equation
01:40
< Bobsentme>
But anything other than that? Yeah, beatings abound.
01:41
<@ToxicFrog>
They're also acceptable for loop indices.
01:41
< Bobsentme>
Ah.
01:42
< Bobsentme>
Ok, since we're covering good programming practices, and my homework is rewriting C programs to conform to these practices...
01:42 * Vornicus is currently using htl for a hashtable_location. but it's a constructoroid, so.
01:43
< Bobsentme>
I've got to ask: My personal preference in C is to put the \n at the end of the printf line.
01:43
<@ToxicFrog>
i,j,k are traditional for loop counters, although some places use ii, jj, kk for easier searchability.
01:43
<@ToxicFrog>
Likewise.
01:43
< Bobsentme>
IS it more common to have them at the beginning?
01:43
<@Vornicus>
Bobsentme: end end end.
01:43
<@Vornicus>
I've never seen them at the beginning.
01:43 * Bobsentme holds his book up to vorn
01:43
<@ToxicFrog>
I have, but typically when you're moving from \r-state to \n-state
01:43
<@ToxicFrog>
Eg:
01:44
<@ToxicFrog>
while (stuff) { update(); printf("\r%s", status); }
01:44
<@Vornicus>
Seriously, though: placing a \n at the beginning instead of the end makes it so when your program ends, the command line shows up on the same line as your last line of output.
01:44
<@ToxicFrog>
printf("\nDone!\n")
01:44
<@Vornicus>
Which is Ugly Like An Ugly Thing.
01:44
< Bobsentme>
Vorn: Right.
01:44
< Bobsentme>
ty.
01:45
<@ToxicFrog>
I've never seen it as a general "hey lets put all our newlines at the start of the string" thing, because that's flatly insane.
01:45 * Bobsentme wants to start off on the right foot.
01:45
<@Vornicus>
It's also not what any language with a "print a whole line" statement (such as, for instance, Python) does.
01:46
<@Vornicus>
\r-state to \n-state, you mean like wget does?
01:46
<@ToxicFrog>
Yeah.
01:47
< Bobsentme>
Ok, I prefer this: printf("Hello World!") ;
01:47
<@ToxicFrog>
You have a loop printing out stuff using \r, then the first line after that starts and ends with \n
01:47
< Bobsentme>
As in, a space between semi-colon and end of line.
01:47
<@ToxicFrog>
Bobsentme: that has no newline at all, though.
01:47
< Bobsentme>
Is that bad/annoying, etc?
01:47
< Bobsentme>
tf: I know, I'm asking about another habit now.
01:47
<@ToxicFrog>
Aah, ok
01:48
<@ToxicFrog>
Personally, I have a strong preference for without the space
01:48 * Bobsentme goes for best two outta three. Vorn?
01:48
<@ToxicFrog>
But unlike \n positioning it doesn't make an actual behavioural difference, just a stylistic one, and it's not obviously wrong
01:49
<@Vornicus>
I also do no spaces for semicolons
01:49
< Bobsentme>
Alrighty then. Thanks guys.
01:49
<@Vornicus>
commas are no space before, one space after; operators are usually space before space after; parentheses are space outside no space inside, but functin calls and indexing are no space before.
01:50 * Bobsentme writes that down
01:50
<@Vornicus>
Don't ask, however, about brace alignment, people have died over that.
01:50
<@Vornicus>
:P
01:50 * Bobsentme giggles
01:51
<@ToxicFrog>
I have, oddly, found that I don't have much of a preference.
01:52
<@ToxicFrog>
I will happily use either based on what the surrounding code does when working on someone else's codebase.
01:52 * Bobsentme wonders if void main(void) and int main was a holy war for the ages
01:52
<@ToxicFrog>
Is void main even legal?
01:52
<@Vornicus>
void main is C++ main.
01:52
<@Vornicus>
int main is C main.
01:52
<@Vornicus>
Use them appropriatesly.
01:53
<@ToxicFrog>
Aah. C++ expects return code to be handled with exit() always?
01:53 * ToxicFrog goes to test this
01:53
<@Vornicus>
I'm under that impression, yeah
01:53
< Bobsentme>
Ah. It was explained to my class that void main(void) is old world C, and int main() { return 0; } is new world C
01:53
<@ToxicFrog>
g++ will happily compile C++ code using int main.
01:54
<@ToxicFrog>
And the return code gets used as the exit code.
01:54
<@Vornicus>
http://en.wikipedia.org/wiki/Brace_style <--- brace alignment. Lots of them. I personally prefer the one called 'bsd'.
01:54
< Bobsentme>
makes sense.
01:54
<@ToxicFrog>
As for the old/new C distinction - K&R C had a lot of really rough edges, and that's probably what they're referring to as "old world" C.
01:55
<@ToxicFrog>
"new world" is most likely ANSI C89 or C99.
01:56
< Bobsentme>
Here's something annoying:
01:56
< Bobsentme>
In school, they have Turbo C++ as our compiler. No big deal. It's user friendly to us students.
01:56
< Bobsentme>
At home, we're using bloodshed Dev C++.
01:56
< Bobsentme>
If I run a C program at school, I get a nice window of output.
01:57
< Bobsentme>
Same program at home? Well, that required me to spend 30 minutes online to find that I have to put system("PAUSE"); in my code.
01:57
<@ToxicFrog>
Or run it from the command line.
01:57
< Bobsentme>
yeah...couldn't figure that one out.
01:57
<@ToxicFrog>
Or, if you're using devc++, I think it has an option somewhere to keep the window open after the program finishes.
01:57
< Bobsentme>
as I'm saving it as a .c file
01:58
<@ToxicFrog>
No, that's the soruce.
01:58
<@ToxicFrog>
*source.
01:58
<@ToxicFrog>
The generated program will be (windows, right?) a .exe.
01:58
< Bobsentme>
hmmm
01:58 * Bobsentme opens command window
01:58
<@ToxicFrog>
Should just be cd to directory where devc++ puts the emitted program, then "foo.exe"
01:59
<@ToxicFrog>
I don't know where it puts it, though, as I do all my windows development using Cygwin, or a linux hosted cross-compiler.
01:59
< Bobsentme>
Hmm...yeah, I see a .exe now, but didn't last time.
01:59
<@ToxicFrog>
But do also rummage around in the devc++ options for something that lets you keep the program output around after the program exits.
01:59
<@ToxicFrog>
It won't exist until the program is compiled for the first time, of course....
02:00
< Bobsentme>
Right
02:00
< Bobsentme>
And Bob's silly. Thanks for explaining that.
02:00
<@ToxicFrog>
Vornicus: on brace/indent style: looking at that, K&R is my default, I work equally well in BSD and BSD KNF, and Whitesmith and GNU give me the jibblies.
02:01
< Bobsentme>
Although, that brings up a scary idea: How many students do you think are turning in their .exe's right now?
02:01
<@ToxicFrog>
Too many.
02:02
<@ToxicFrog>
Also: if the use of devc++ is not specifically mandated, you may find it worthwhile to check out other IDEs like code::blocks, and non-IDEs like Cygwin and MSYS, just to shop around and see which one you like most.
02:04
<@ToxicFrog>
Although probably not in the middle of working on an assignment
02:05 * Bobsentme nods
02:05
< Bobsentme>
Now, for the newb question: What's the difference between an IDE and a non-IDE compiler?
02:06
<@ToxicFrog>
An IDE is not a compiler; it is an Integrated Development Environment.
02:06
<@ToxicFrog>
Typically, this means it includes at minimum:
02:06
<@ToxicFrog>
- an editor with some language awareness
02:06
<@ToxicFrog>
- a project organizer for calculating dependencies and keeping your files in order
02:06
<@ToxicFrog>
- a build toolchain (for C/++, this means a preprocessor, compiler and linker)
02:06
<@ToxicFrog>
- a debugger
02:07
<@ToxicFrog>
They tend to be easier to use, and more powerful, but less flexible.
02:08
<@ToxicFrog>
The alternative is a set of seperate tools - for example, my usual toolset is nedit (the editor), gcc (the build toolchain), gdb (the debugger), and make or pm (the dependency/autobuild tool).
02:09
<@ToxicFrog>
Oh, and git for version control.
02:09
<@ToxicFrog>
Note that often an IDE builds on some of these tools - DevC++, for example, uses gcc and gdb as its compiler and debugger; it just wraps them in an easy to use interface and automatically keeps track of how and when to call them.
02:10
<@ToxicFrog>
Similarly, version control is typically not provided by the IDE, but by an external program which the IDE provides some means of communicating with easily.
02:10
<@ToxicFrog>
Does that explain everything clearly?
02:12
<@ToxicFrog>
Personally, I dislike IDEs, but they can be useful - especially for a beginner, as they save you from much of the hassle of dealing with the low level tools.
02:19
< Bobsentme>
That's very clear. Thank you.
02:20
<@ToxicFrog>
You're welcome.
02:32 Attilla [~The.Attil@92.16.214.ns-3438] has quit [Ping Timeout]
02:53 * Bobsentme needs voice, has a problem and a pastebin
02:54 mode/#code [+o Bobsentme] by ToxicFrog
02:54
<@ToxicFrog>
Speak, and you will be heard.
02:55
<@Bobsentme>
yay!
02:55
<@Bobsentme>
http://rafb.net/p/nEpg1y46.html
02:55
<@Bobsentme>
I get a superlong # for sales tax, and an even longer # for the total
02:55
<@Bobsentme>
Neither of which contain a decimal point
02:56
<@ToxicFrog>
Wrong printf format.
02:56
<@Bobsentme>
I...dammit.
02:56
<@ToxicFrog>
%d is "decimal", which is misleading, as what it actually means is "base 10 integer"
02:56
<@Bobsentme>
Right.
02:56
<@ToxicFrog>
And it will expect an integer argument.
02:57
<@Bobsentme>
yeah, that was silly of me.
02:57
<@ToxicFrog>
The format you want is probably $%.2f
02:57
<@ToxicFrog>
(floating point, with exactly two decimal places, and stick a $ on the front for good measure)
02:58
<@ToxicFrog>
I don't know if devc++ has these built in, but if you have a *nix machine handy, "man 3 printf" should give you all the gory details on what the various format specifiers do.
02:59
<@ToxicFrog>
And in general, any standard ANSI C function can be found in book 3 of the Manual.
02:59
<@Bobsentme>
ty.
02:59
<@Bobsentme>
Now, if you'll excuse me, there's a Mrs in the shower calling my name.
03:00
<@ToxicFrog>
Enjoy :)
03:00
<@ToxicFrog>
Myself, I'm off to bed. Laters.
03:00
<@Bobsentme>
laters
03:16 organmonkey [~joseph@Nightstar-17775.223.182.77.eo.eaccess.ne.jp] has joined #code
03:54 organmonkey [~joseph@Nightstar-17775.223.182.77.eo.eaccess.ne.jp] has quit [Ping Timeout]
04:09 organmonkey [~joseph@Nightstar-17775.223.182.77.eo.eaccess.ne.jp] has joined #code
04:12 Bobsentme [Bobsentme@Nightstar-27548.dsl.sfldmi.sbcglobal.net] has quit [Quit: Now running PassedOut.bat]
04:43 organmonkey [~joseph@Nightstar-17775.223.182.77.eo.eaccess.ne.jp] has quit [Ping Timeout]
04:54 androsch [~androsch@Nightstar-4591.pools.arcor-ip.net] has quit [Ping Timeout]
06:09 organmonkey [~joseph@Nightstar-17775.223.182.77.eo.eaccess.ne.jp] has joined #code
06:41 gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has joined #Code
06:42 mode/#code [+o gnolam] by ChanServ
07:22
<@Vornicus>
...when did this thing hit 200 lines?
07:22
<@Vornicus>
it doesn't feel like 200 lines.
07:23
<@Vornicus>
...right, right, C.
07:23
<@Shoukanjuu>
Suddenly, explosions.
07:39
<@Vornicus>
Okay.
07:40
<@Shoukanjuu>
That was a rather delayed response for sudden explosions.
07:41
<@Vornicus>
I'm writing documentation.
07:45 organmonkey [~joseph@Nightstar-17775.223.182.77.eo.eaccess.ne.jp] has quit [Quit: Ex-Chat]
07:54 * Vornicus decides /not/ to refactor rotate_left and rotate_right into each other, that would be Bad.
08:01
<@Vornicus>
(it wouldn't actually remove duplication; it'd just give smaller stripes)
09:07 Vornicus is now known as Vornicus-Latens
09:24
<@gnolam>
In other news, German accent + discussion about "forking children" = comedy gold.
09:25
<@Shoukanjuu>
I require a weapon like the infinite power of nanoaugmentation.
09:29
<@AnnoDomini>
I require donuts.
09:31
<@gnolam>
And Pablo Francisco is /evil/.
09:31
<@gnolam>
Trying to keep a straight face when Herr Doktor Professor exclaims "Do it now!" is bloody torture.
09:32
<@Shoukanjuu>
Nobody got it :(
09:33
<@Shoukanjuu>
I did it wrong, I think. Cant' quite remember.
09:36 You're now known as TheWatcher
10:07 Attilla [~The.Attil@92.16.214.ns-3438] has joined #code
10:07 mode/#code [+o Attilla] by ChanServ
10:31 * TheWatcher <3s emacs' "Spell check comments" facility
10:34
<@gnolam>
Meh. I never bother with spell checkers.
10:34
<@gnolam>
Too many false positives.
10:35
<@Shoukanjuu>
Ugh. I just thought of an RPG-themed game of checkers because of that
11:34
< crem>
fyvap
11:35
< crem>
Hm, what does +U mean?
11:37
<@Shoukanjuu>
Um...
11:37
<@Shoukanjuu>
Hmm, what IS +U?
11:42 Thaqui [~Thaqui@Nightstar-13353.jetstream.xtra.co.nz] has left #code [Hello Civ 4 Goodbye sleep]
11:53
<@gnolam>
Nightstar's custom "suppress URL" mode.
11:53
<@Shoukanjuu>
A-haaah. Groovy.
11:57
<@AnnoDomini>
Suppress and deny.
11:58
<@Shoukanjuu>
Works for certain levels and below, yes? Operators could use URLs, but say, anyone below couldn't?
11:59
<@Shoukanjuu>
Or is it universal, and not based on the level of the user?
12:02
<@gnolam>
Only plebs are censored. Opped and voiced users can post whatever they want.
12:03
<@TheWatcher>
(but opped and voiced users are reminded that ops and voice can be removed as well as given)
12:03
<@TheWatcher>
(should they attempt to do anything... ill advised)
12:04
<@Shoukanjuu>
You sure know how to warn people XD;
12:04 * gnolam turns on -O2 and watches in delight as his map generation time is cut in half.
12:05
<@gnolam>
(Well, almost half. From 6.25 s to 3.75 s)
12:35
<@gnolam>
Grah. Why is there no std::circular_list? :P
12:39
<@TheWatcher>
boost::circular_buffer ?
12:40
<@gnolam>
1) It's Boost.
12:41
<@TheWatcher>
(although, I'd give it a really good eyeballing before you use it - don't discount the high probability that you can make it work faster and more efficiently)
12:41
<@gnolam>
2) Circular (linked) list != circular buffer.
12:43
<@TheWatcher>
It was the first that came to mind - depends what you need it for, I guess.
12:44 * gnolam sighs.
12:44
<@gnolam>
Guess I'll have to implement my own linked list structure for approximately the 475th time.
12:44 * TheWatcher patpats
12:44
<@TheWatcher>
At least it's not hard to do...
12:45
<@Shoukanjuu>
And the only thing I can think is that this, somehow, would make a good movie. the epic battle of man and code! Chaos controlling order o:~
12:47 Attilla_ [~The.Attil@92.16.214.ns-3438] has joined #code
12:47 Attilla [~The.Attil@92.16.214.ns-3438] has quit [Ping Timeout]
12:48
<@gnolam>
Or... I simply slap a "NEVER TAKE A LOOK AT THIS CODE" comment on the thing and keep the dirty array hacks.
12:48 Attilla_ is now known as Attilla
12:59
<@gnolam>
// Damn the algorithmic complexity, full speed ahead!
13:03
<@Shoukanjuu>
XD
17:37
<@Reiver>
"First, make it work. Then, make it elegant."
17:38
<@Reiver>
"...But make it work, first."
17:38
<@McMartin>
Work, then elegant, then fast.
17:39
<@Shoukanjuu>
Elegance = efficiency
17:39
<@Reiver>
Not nessisarily.
17:39
<@AnnoDomini>
Make it work, come to a decision that it's enough, hope nobody looks at the code.
17:39
<@Shoukanjuu>
Make it work, then make it work better. >.>
17:39
<@Shoukanjuu>
Worse comes to worst, documentation \o/
17:40
<@AnnoDomini>
"This is a feature, not a bug."
17:43
<@Reiver>
"The feature is that it ensures my job security."
17:43 * Shoukanjuu chuckles
17:44 * TheWatcher nocomments
17:45
<@TheWatcher>
(why do you think I wrote most of the server maintenance scripts in work in a language only two people in the department are proficient in? ¬¬)
17:47
<@Reiver>
(Because you smoke monkeybuttcrack and enjoy perl?)
17:47 * TheWatcher eyes the language he's currently coding in
17:47
<@TheWatcher>
LIES!
17:47
<@TheWatcher>
¬¬
17:48
<@Reiver>
THE TRUTH COMPELS YOU
17:48
<@AnnoDomini>
THE POWER OF RAPTOR JESUS COMPELS YOU!
17:48
<@Shoukanjuu>
Eh.
17:48 * TheWatcher eyes Reiv
17:48 * Shoukanjuu spritzes AD with a water bottle
17:49
<@TheWatcher>
.. you know, that's just given me an idea for an utterly silleh drive system.
17:49 * AnnoDomini throws Shoukanjuu into the Abyss.
17:49
<@TheWatcher>
(THE TRUTH IMPELLS YOU!)
17:49
<@McMartin>
Filesystem or star...?
17:49
<@McMartin>
Oh.
17:49
<@Shoukanjuu>
warglegarble!
17:49 McMartin [~mcmartin@Nightstar-14680.dsl.pltn13.sbcglobal.net] has quit [Quit: Rebooting for kernel update]
17:49 * Shoukanjuu throws the Abyss back into AD.
17:50
<@TheWatcher>
(only with less 'l's)
17:54 McMartin [~mcmartin@Nightstar-14680.dsl.pltn13.sbcglobal.net] has joined #code
17:54 mode/#code [+o McMartin] by ChanServ
19:21
<@gnolam>
Oh, it does work.
19:21
<@gnolam>
It's just... ugly.
19:21
<@gnolam>
Only, the "C++-y" way - is even uglier.
19:30 * gnolam tok tok toks.
19:30
<@Shoukanjuu>
I assumed you were more of a tikitatikita guy.
19:31
<@gnolam>
I'll have to remember to go and slap Stroustrup the next time I visit Denmark.
19:38
<@TheWatcher>
If I give you something, would you mind slapping him with it for me?
19:39
<@Shoukanjuu>
Please be sure to refrigerate your organic material in preparation for slapping. Thank you.
19:40
<@TheWatcher>
I was thinking more along the lines of a stick with nails in it.
19:40
<@gnolam>
I wouldn't mind... only 1) I didn't get hired for 11 days in Denmark this year like last year and 2) apparently the guy lives in the States somewhere nowadays.
19:40
<@gnolam>
TheWatcher: if it didn't have nails, I'd /add some/.
19:42
<@gnolam>
If C++ wasn't so darned useful, I'd spend my life hating it.
19:42
<@Shoukanjuu>
A stick? That's it? >_>
19:42
<@gnolam>
stick == std::two_by_four<pain>.
19:42
<@Shoukanjuu>
two by fours aren't big enough
19:43 * Shoukanjuu gives the infinite power of six by twelves.
19:45 * gnolam buys all his construction material in decent units anyway.
19:46
<@Shoukanjuu>
Touch?.
19:46
<@Shoukanjuu>
Anyway, bed for me. tomorrow I'll go to sleep at a decent time. :D
21:00 Consul [~darren@Nightstar-239.dsl.sfldmi.ameritech.net] has quit [Ping Timeout]
21:00 Consul [~darren@Nightstar-239.dsl.sfldmi.ameritech.net] has joined #code
21:14 Vornicus-Latens is now known as Vornicus
21:43 * Vornicus fiddles with redblack deletion.
21:46
<@Vornicus>
A lot harder than redblack insertion, though that might just be this description of it, which is pretty damn bad.
21:55 You're now known as TheWatcher[T-2]
21:57 You're now known as TheWatcher[zZzZ]
22:42
<@Vornicus>
well, that and the last time I did any actual work with malloc and free was five years ago, so I'm walking a very fine line here.
23:07 crem_ [~moo@Nightstar-28703.adsl.mgts.by] has joined #code
23:08 crem [~moo@Nightstar-28703.adsl.mgts.by] has quit [Connection reset by peer]
23:18
<@MyCatVerbs>
Garbage collection FTW. ^_^
23:18
<@Vornicus>
Yeah. ;_;
23:20
<@MyCatVerbs>
malloc()+free() overhead for such tiny allocations seems like it should chew cycles like a fat daschund with a milkbone. Plus, compaction is nice.
23:22
<@Vornicus>
It probably does, but the alternative is figuring out variable-length string store in this case. Not something I'm prepared to tackle.
23:24
<@MyCatVerbs>
?
23:24
<@Vornicus>
It's a string-string dictionary built on hashcodes and red-black trees.
23:26
<@MyCatVerbs>
What's the awkward bit with variable-length strings?
23:26
<@Vornicus>
That's most of the malloc/free stuff.
23:27
<@MyCatVerbs>
Why're you working in C/++, anyway?
23:27
<@Vornicus>
Because it's for a class.
23:27
<@MyCatVerbs>
Ah, I see.
23:28
<@Vornicus>
(the other awkward bit in compaction is an array of nodes and keeping track of which ones I'm using right now.)
23:29 AnnoDomini [AnnoDomini@Nightstar-29333.neoplus.adsl.tpnet.pl] has quit [Ping Timeout]
23:33
<@Vornicus>
Anyway it's just a demo, which is good, because it means I can cheat a lot.
23:35
<@MyCatVerbs>
Heh.
23:36 AnnoDomini [AnnoDomini@Nightstar-29152.neoplus.adsl.tpnet.pl] has joined #Code
23:36 mode/#code [+o AnnoDomini] by ChanServ
23:39
<@Vornicus>
which means I don't have to worry about compaction, eating cycles, persistence, keeping strings safely alive after removing them from the tree, or any of a dozen other things.
23:40
<@MyCatVerbs>
Oh, man.
23:40
<@MyCatVerbs>
That's just an open invitation to leak memory like a bucket with a hole in the bottom.
23:40
<@Vornicus>
As far as I'm aware I'm not leaking though.
23:41
<@Vornicus>
Fragmenting the everloving shit out of it, but not leaking.
23:42
<@MyCatVerbs>
Ah well.
23:42
<@MyCatVerbs>
Nobody will notice that.
23:46
<@Vornicus>
I didn't until you mentioned it, which tells you exactly how often I work in hand-managed memory environments.
23:50
<@MyCatVerbs>
I mean seriously, nobody will notice. Up until Firefox, memory fragmentation issues weren't ever really high profile at all.
23:52
<@Vornicus>
What made Firefox's memory fragmentation high profile anyway?
23:58
<@MyCatVerbs>
The fact that it was causing them to effectively leak memory. Even in places where they weren't strictly speaking losing memory at all, they still ended up with an expanding memory footprint over time due to fragmentation issues.
23:58
<@MyCatVerbs>
Naturally this shows up in Firefox rather than other apps because it gets used so much more intensively than other apps, as you'd expect.
--- Log closed Fri Aug 29 00:00:44 2008
code logs -> 2008 -> Thu, 28 Aug 2008< code.20080827.log - code.20080829.log >