--- Log opened Fri Oct 06 00:00:51 2006 |
00:06 | | Chalcedon is now known as ChalcyUni |
00:24 | | ThaquiSleep is now known as Thaqui |
00:28 | | ReivZzz is now known as Reiver |
00:54 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #code |
01:18 | | mode/#code [+oo Thaqui ToxicFrog|Lab] by Reiver |
01:18 | | mode/#code [+vvv Ev3 EvilDarkLord himi-heading-home] by Reiver |
01:19 | < Reiver> | Hi Janus |
01:19 | < Reiver> | Who are you? :) |
01:19 | < Janus> | Hi'ya Reiver-- |
01:20 | | * Janus is Janus, or so his that's what his mommy says. |
01:21 | < Reiver> | Uh-huh. |
01:22 | < Reiver> | You a TSCer, or a NS_bar'er that migrated? |
01:23 | < Janus> | I immigrated once I discovered #TSC was full of Tech Support folks that didn't ask for cash up front. |
01:24 | < Reiver> | Pf. |
01:24 | | * Janus suspects his tab is somewhere in the thousands by now. |
01:24 | < Reiver> | Figures. :p |
01:26 | < Janus> | hmm..? |
01:32 | <@ToxicFrog> | Janus: weren't you originally from ns_bar WRT:programming help? |
01:32 | | Reiver is now known as ReivWork |
01:33 | < Janus> | Yep~ I needed help with... RPGmaker 2k3~ |
01:42 | < Janus> | That system compiler was far too hard to learn, so I'm glad I moved down to something more my speed. |
01:42 | <@McMartin> | What were you usin gbefore? |
01:44 | < Janus> | RPGmaker. It's pretty powerful once you master it, but it's not for the weak. |
01:45 | <@ToxicFrog> | Having used it, I would actually have to contend that it sucks pretty hard no matter how well you know how to use it. |
01:45 | < Janus> | The only thing I can think of that could beat it, would be a PowerPoint Presentation. |
01:45 | <@ToxicFrog> | If you want to do anything interesting, you either have to fight it every step of the way, or throw it out and replace it with something that doesn't suck. |
01:46 | <@McMartin> | Wait, then I'm confused. What are you using now then? |
01:46 | < Janus> | C++. |
01:46 | <@McMartin> | Or are RPGmaker and RPGmaker 2003 entirely different things? |
01:46 | <@McMartin> | Ah. |
01:47 | | * McMartin has, incidentally, started looking at TADS 3. |
01:47 | <@McMartin> | I, uh, think I'll stick with Inform 7. |
01:47 | <@McMartin> | TADS 3 is Java to I7's Scheme. |
01:48 | | * Janus notes that nobody can see him wink over the phone, nor the internet. |
01:52 | < Janus> | I never did understand the appeal behind Java, though I've never actually seen what it looked like code-wise. |
01:53 | <@ToxicFrog> | The appeal is mainly that exactly the same Java code will work everywhere (for a value of everywhere that means "everywhere supported by the JVM") with no recompile. |
01:53 | <@ToxicFrog> | In theory. |
01:53 | < Janus> | But Java applications themselves are just so... in your face. |
01:55 | <@McMartin> | The part that I'm referring to here is that 80% of your average major C application is actually already in the Java standard libraries. |
01:56 | <@McMartin> | You can tell when someone's just walked into Java coding from C because they start bitching about how they can't implement their B-Trees without having pointers. |
01:57 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Ping Timeout] |
01:58 | <@ToxicFrog> | But they have references! |
01:59 | <@McMartin> | They, uh, also have a pre-implemented version of red-black trees in java.util.TreeMap. |
01:59 | <@McMartin> | "I learned C first" people also have an unfortunate tendency to not be able to distinguish between arrays and pointers, and think that pointers are necessary to do arrays. |
02:00 | <@McMartin> | I've reached the conclusion that if you're instructing people into the full inner mysteries of programming, one should learn assembler before learning C. |
02:00 | <@ToxicFrog> | While not necessary to do arrays, they are really handy for some things. |
02:00 | <@McMartin> | If you've got direct access to memory, yes. |
02:01 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #code |
02:01 | | Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
02:01 | | mode/#code [+o Chalcy] by ChanServ |
02:01 | | * ToxicFrog went Java, C++, C, ASM with a brief excursion into Turing concurrent with C++ and C. |
02:01 | <@McMartin> | Though within an array or structure you can usually use cursors. |
02:01 | | Chalcy is now known as Chalcedon |
02:01 | <@ToxicFrog> | I am thinking of things like structure deserialization. |
02:01 | | * McMartin went, um, several dialects of BASIC, ASM, Prolog, LISP, C, C++, Scheme, Java, C++, MATLAB, C++. |
02:02 | <@ToxicFrog> | fread(buf, sizeof(foo), 1, fin) |
02:02 | | ChalcyUni [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
02:02 | <@ToxicFrog> | foo * thingy = (foo *)buf; |
02:02 | <@ToxicFrog> | That wasn't a complete summary. |
02:02 | <@McMartin> | I'm pretty sure you can do that without pointers. |
02:02 | | * McMartin mainly wanted to bitch about C++ appearing there three times~ |
02:02 | | * Janus went powerpoint, rpgmaker, python, ruby, and C++. |
02:03 | <@McMartin> | Mmmm. |
02:03 | <@McMartin> | Silly question. |
02:03 | < ReivWork> | C, C++, VBA, Java. |
02:03 | <@McMartin> | Why won't Python + Pygame do for what you're working on? |
02:03 | <@ToxicFrog> | Complete would be more like, LOGO, BASIC, Pascal, Net3d, Java, C++, Turing, C, Python, Lua, with stuff like awk and bash being ongoing background noise. |
02:03 | < ReivWork> | Brief excursions into Python and SQL, but not very far. >.> |
02:03 | <@McMartin> | Yeah. I've got a lot of background noise in mine, too |
02:03 | <@ToxicFrog> | Oh, and postscript. |
02:03 | <@McMartin> | But I can't remember when I learned ML, for instance. |
02:03 | <@McMartin> | ...Or Perl |
02:03 | <@ToxicFrog> | ...and perl. |
02:04 | <@ToxicFrog> | Is it just me, or have we both passed the point where we can no longer easily remember all the languages we're familiar with? |
02:04 | <@McMartin> | Not just you |
02:04 | <@McMartin> | My attitude these days is mainly "I can dig it." |
02:05 | | * ToxicFrog nods. |
02:05 | <@ToxicFrog> | I should finish LuaSDL someday. |
02:06 | < Janus> | What's the best language to learn..? |
02:06 | <@ToxicFrog> | Wrong question. |
02:07 | < Janus> | --or if there is such a thing. |
02:08 | <@McMartin> | What's your goal? |
02:09 | <@McMartin> | If it's "I'd like to get the computer to do what I want", Python or Ruby is good to have for that |
02:09 | <@McMartin> | Because it lets you demand 2+2 and get 4 instantly, and is flexible enough to let that be much more complicated things. |
02:09 | <@McMartin> | (example: A game I was playing required me to crack a cipher at one point, so I fired up a Python instance to do the cracking for me) |
02:10 | < Janus> | My goal..? I suppose it would be to make a game. I'm guessing C++ is pretty versitile to that end, if only for it's popularity. |
02:10 | <@McMartin> | If you want to deal as close to the metal as you can get, C or C++ will manage this while still letting it work on more than one kind of machine. |
02:11 | <@McMartin> | If you want to expand your mind, then looking at a LISP dialect and an ML dialect will grant you esoteric wisdom. |
02:11 | <@McMartin> | Python has some libraries called "Pygame" that let you make windows and draw sprites and rectangles and stuff |
02:11 | <@McMartin> | And dealing with memory and the like is much easier in Python than it is in C++. |
02:12 | <@ToxicFrog> | Yes. |
02:12 | <@McMartin> | I'd suggest -- especially if you're a novice programmer -- to try to do this in Python, linking in pygame and friends as needed. |
02:12 | <@ToxicFrog> | I seem to recall having this conversation once before. |
02:12 | <@McMartin> | I believe for final distribution, Windows has a utility called FREEZE that will let you turn a set of scripts into a bundled .exe. |
02:12 | < Janus> | I've tried Python and Pygame once; can't say I cared for it though... |
02:13 | <@McMartin> | Pygame wraps SDL, which is probably what you'll end up needing to use to do graphics and sound anyway. |
02:13 | <@McMartin> | ... oh yeah. I should have asked this earlier. 2D or 3D? |
02:14 | < Janus> | 2D. The resources are easier to come by that way. |
02:14 | <@McMartin> | (Java, incidentally, resembles C++ inside its methods, but goes about defining classes and methods in a very different way) |
02:14 | | * McMartin nods. |
02:14 | <@ToxicFrog> | Enough I7 for one night, I must work on LuaSDL. |
02:14 | <@McMartin> | SDL is definitely the way to go, then. |
02:15 | <@McMartin> | Either directly, in C++, or through other libraries, like Pygame. |
02:15 | <@McMartin> | I wonder if the old SDL tutorials I learned from are still online. |
02:15 | <@McMartin> | One moment |
02:15 | <@ToxicFrog> | ...although I can no longer remember what I needed luaSDL for. |
02:15 | <@McMartin> | http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/gfxsdl/index |
02:16 | <@ToxicFrog> | It wasn't spellcast, I've been planning to write the next version using Glade. |
02:16 | <@ToxicFrog> | If I can get the goddamn thing to play nice with network events. |
02:16 | <@McMartin> | Heh |
02:16 | <@ToxicFrog> | Maybe it was just for the general purpose of being awesome. |
02:16 | < Janus> | SDL is indeed awesome. However, the only sections I know in and out are the imaging and input components of it. I'll get into the whole Thread and Sound thing when those come around. |
02:16 | | * McMartin nods |
02:16 | <@McMartin> | Try to avoid threads if at all possible. |
02:16 | <@McMartin> | I say this as a man who has spent months doing bitter battle against them. |
02:16 | <@McMartin> | (for UQM) |
02:17 | <@ToxicFrog> | (my main problem is that once I call the main GTK loop, it goes in there forever and never comes back. This is a problem when I need to react stuff coming in over the network. The alternative is to pump one event at a time and poll the network in the meantime, which is ugly.) |
02:17 | <@McMartin> | Also, if you've got imaging and input under control, those tutorials probably won't help much. |
02:17 | <@McMartin> | Unless you still need usable Sprite classes and such. |
02:17 | <@ToxicFrog> | (what I want is some SDL-style event loop where I can get all my events in one queue, dispatch GUI events to GTK and network events to the world model and GTK as needed.) |
02:17 | <@McMartin> | (Indeed) |
02:18 | <@McMartin> | (My GTK fu is insufficient there) |
02:18 | <@ToxicFrog> | And I like threads! UQM is more abuse of threads than any inherent problem with them, from what I've heard. |
02:18 | <@McMartin> | Well, it's more "the 3DO doesn't use the SDL thread model, and while you could model it with pthreads, maybe, we need it to run on more than just that" |
02:19 | <@McMartin> | Also, using threads means no MacOS 9 support, if you care about such things. |
02:19 | <@ToxicFrog> | My opinions on OS9 are well known at this point~! |
02:19 | <@McMartin> | Janus: What's your C++ skill level? |
02:20 | <@ToxicFrog> | And isn't the SDL thread model basically the same as pthreads'? |
02:20 | <@McMartin> | It's a subset of it. |
02:20 | <@ToxicFrog> | Right. |
02:20 | <@McMartin> | In particular, no fire-and-forget threads, which were the only kind the 3DO had. |
02:20 | <@ToxicFrog> | There are no fundamental conceptual differences, is what I mean. |
02:20 | <@ToxicFrog> | Aah. |
02:20 | < Janus> | Uh... I have no idea how to rate them... |
02:20 | <@McMartin> | Also, the 3DO only had asynchronous thread kills, which are, uh, deprecated in this day and age. |
02:21 | <@ToxicFrog> | ...what is an asynchronous thread kill? |
02:21 | <@McMartin> | Janus: Well, like, do you use the OO bits? Can you deal with STL? |
02:21 | <@ToxicFrog> | I've never heard the term and am unsure how to interpret it. |
02:21 | <@ToxicFrog> | Like pthread_cancel, only it happens now? |
02:21 | <@McMartin> | TF: Yes. With no resource cleanup or mutex unlocking. |
02:21 | <@McMartin> | It is a Bad Thing Indeed. |
02:21 | <@ToxicFrog> | ... |
02:22 | <@McMartin> | Java used to have them as primitives, but then decided "You know what? Nobody should get to do this." |
02:22 | <@McMartin> | I'm sure pthreads has it in its depths somewhere. |
02:22 | <@McMartin> | The Java API docs have a whole page dedicated solely to "No, seriously. Never ever ever use Thread.stop()." |
02:23 | <@ToxicFrog> | I'm not sure it does, actually. |
02:23 | < Janus> | Object Oriented, yes, and STL... is a very savage native that doesn't want to remember my many ramblings. Though, I've made a linked list to get around that. Beyond the vector aspect of STL, there's not much I could get from it. |
02:23 | <@ToxicFrog> | There's pthread_cancel, which kills the thread at its next valid cancellation point. |
02:23 | <@ToxicFrog> | There's pthread_kill, but that's the same as kill, it just ensures that the thread that enters the signal handler is the one you aimed it at. |
02:24 | <@McMartin> | Mmm. That sounds suspiciously like pthread_cancel is an asynchronous kill too unless pthreads cleans up open files and locks and such held by a thread. |
02:25 | <@McMartin> | locks I could see, but files is tricky. |
02:25 | <@ToxicFrog> | This is kind of in the hands of the programmer. |
02:25 | <@ToxicFrog> | If you pthread_cancel a thread, it: |
02:25 | <@ToxicFrog> | - blocks until the thread becomes cancellable; |
02:26 | <@ToxicFrog> | - calls any registered cancellation cleanup handlers in the context of that thread; |
02:26 | <@ToxicFrog> | - terminates the thread. |
02:26 | <@ToxicFrog> | So if the programmer set up their cleanup functions properly, it's a clean kill. |
02:27 | <@ToxicFrog> | If they didn't, yes, you end up with open files lying around unless they use pthread_setcancelstate such that it's only cancellable when it's safe to do so. |
02:28 | <@ToxicFrog> | Also I really need to finish the new version of libsurtr. |
02:29 | <@ToxicFrog> | This is hampered slightly by still not really being sure how signals should work. |
02:29 | <@ToxicFrog> | To that end, McM, I wish to pick your brains~ |
02:35 | <@McMartin> | Mmm? |
02:35 | <@ToxicFrog> | So. ITC. |
02:35 | <@ToxicFrog> | We have synchronous message passing (send-recieve-reply) and asynchronous (signal). |
02:35 | <@McMartin> | (Does libsurtr get pwnt by libvalk?) |
02:37 | <@ToxicFrog> | (I believe it actually burns the nine worlds with fire at the end of the final battle) |
02:38 | <@McMartin> | (Only eight worlds now) |
02:38 | <@McMartin> | In any event. |
02:38 | <@McMartin> | What is the problem with Signals? |
02:39 | <@ToxicFrog> | Mainly, I'm running into a conflict between the way my inspiration works (signals can send uint32s only; Receive(), if any signals have been sent since last time, returns the bitwise and of all such signals) and the fact that I can do much more with Lua. |
02:40 | <@ToxicFrog> | I'm just not sure how /much/ more. |
02:40 | <@ToxicFrog> | The top end of the scale would be "anything you pass to Send() you can pass to Signal(), and it will be pulled into Cspace and held there until recieved" |
02:40 | <@ToxicFrog> | This is, however, vastly more complicated than SRR, since it can't use the sender's stack as a buffer. |
02:41 | <@McMartin> | Yeah. |
02:41 | <@ToxicFrog> | ...although it could give each thread a second stack that it can shuffle between using lua_xmove(). |
02:41 | <@ToxicFrog> | Hmm. |
02:41 | <@ToxicFrog> | I wonder if that could work. |
02:42 | <@ToxicFrog> | It would slightly increase the memory footprint of each thread but make things much, much simpler. And possibly faster, although I'm not sure on that point. |
02:43 | <@McMartin> | Test and see, if it's not too hard to implement? |
02:44 | <@ToxicFrog> | No, it's not. |
02:44 | <@ToxicFrog> | I have to finish the rest of the framework first, though. |
02:44 | <@ToxicFrog> | Since I'm rewriting most of it from line zero to incorporate various epiphanae I've had since writing the first version. |
02:59 | | himi-heading-home is now known as himi |
03:00 | <+himi> | um |
03:01 | <+himi> | Why not give threads seperate signal stacks? |
03:01 | <@ToxicFrog> | That's what I just decided to try, Himi. |
03:02 | <+himi> | . . . . yeah, I just thinkoed what you'd said |
03:02 | <+himi> | It shouldn't be a large overhead, as long as you don't instantiate much until signals are actually used |
03:03 | <@ToxicFrog> | I won't be. |
03:03 | <@ToxicFrog> | If I can swing it, it won't even be a seperate VM, just a seperate stack in the same VM. |
03:04 | <@McMartin> | Dinner time; back later |
03:06 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: ~] |
03:24 | | GeoTube [~Someone@Nightstar-2676.cable.ubr01.dund.blueyonder.co.uk] has quit [Killed (NickServ (GHOST command used by COL_GeoTube))] |
03:24 | | COL_GeoTube [~Someone@Nightstar-2676.cable.ubr01.dund.blueyonder.co.uk] has joined #Code |
03:31 | <@Chalcedon> | TF, can an op de-op another op? |
03:31 | <@Chalcedon> | (ordinary channel op this is) |
03:31 | <@ToxicFrog> | Yes. |
03:32 | <@Chalcedon> | ok, so... why would chanserv keep re-opping them? |
03:32 | <@Chalcedon> | I'm not requesting anything, I just don't understand something I've observed. |
03:33 | <@Chalcedon> | and Mahal and Reiver are at work. |
03:33 | <+himi> | Possibly another op has a sick sense of humour |
03:34 | <@Chalcedon> | I don't think so. |
03:34 | <+himi> | . . . . . . . . . . . you don't think another op in a channel you're in has a sick sense of humour? |
03:34 | <@Chalcedon> | not in this case |
03:35 | | * Chalcedon is currently trying to comprehend ramifications |
03:35 | <+himi> | I think it's possible to tell chanserv to forcibly op anyone on the aop list, but I've never seen it used |
03:38 | <@Chalcedon> | that could be it. |
04:08 | | You're now known as TheWatcher |
05:11 | | Syloq [Syloq@Admin.Nightstar.Net] has joined #code |
05:33 | | ReivWork is now known as Reiver |
05:36 | | You're now known as TheWatcher[zZzZ] |
05:49 | | Syloq [Syloq@Admin.Nightstar.Net] has quit [Connection reset by peer] |
06:56 | | MahalEarning is now known as Mahal |
08:13 | | Chalcedon is now known as ChalcyCookies |
08:47 | | ChalcyCookies is now known as Chalcedon |
09:21 | | Mahal is now known as MahalZzz |
09:32 | | Chalcedon is now known as ChalcyZzz |
09:46 | | You're now known as TheWatcher[wr0k] |
10:07 | | himi is now known as himi-heading-home |
10:47 | | Thaqui [~Thaqui@Nightstar-8486.adsl.xtra.co.nz] has quit [Ping Timeout] |
11:06 | | Thaqui [~Thaqui@Nightstar-8486.adsl.xtra.co.nz] has joined #code |
11:22 | | COL_GeoTube is now known as GeoTube |
11:47 | | ChalcyZzz [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
12:11 | | EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has quit [Ping Timeout] |
12:25 | | EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has joined #code |
12:50 | | Reiver is now known as ReivZzz |
16:20 | | You're now known as TheWatcher |
16:36 | | Syloq [Syloq@Admin.Nightstar.Net] has joined #code |
17:18 | | You're now known as TheWatcher[afk] |
18:40 | | mangor [~jack@Nightstar-10581.dip.t-dialin.net] has joined #Code |
18:51 | | mangor [~jack@Nightstar-10581.dip.t-dialin.net] has left #Code [Konversation terminated!] |
19:04 | | You're now known as TheWatcher |
19:14 | | Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
19:15 | | mode/#code [+o Chalcy] by ChanServ |
19:15 | | Chalcy is now known as Chalcedon |
19:59 | | Syloq [Syloq@Admin.Nightstar.Net] has quit [Connection reset by peer] |
20:22 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #code |
20:38 | <@ToxicFrog> | augh |
20:38 | <@ToxicFrog> | die, scintilla, die |
20:39 | <@TheWatcher> | What's up? |
20:40 | | MahalZzz is now known as Mahal |
20:40 | <@ToxicFrog> | My increasingly frustrating quest to give Scintilla a lexing mechanism that does not suck ass continues. |
20:42 | <@ToxicFrog> | I am currently trying to figure out how to distinguish between different languages in the same lexer. |
20:42 | <@ToxicFrog> | Specifically, if this works, I'll have lots of different languages all using lexer.regex as their lexer. |
20:42 | <@ToxicFrog> | And it looks in, say, regex.lua.* for the Lua patterns, and regex.c.* for the C patterns, etc. |
20:43 | <@ToxicFrog> | The problem is that I cannot seem to determine any way for it to determine what language it's actually looking at at runtime. |
20:43 | <@Mahal> | Ah. |
20:44 | <@ToxicFrog> | For added whatthefuckery, the version I build myself does not answer to keyboard input, only mouse. |
20:44 | <@TheWatcher> | ... |
20:44 | <@TheWatcher> | O.o |
20:45 | <@ToxicFrog> | I mean, clearly there's some way of distinguishing, because Java and C++ both use lexer.cpp, but recognize only the appropriate keywords for each language. |
20:45 | <@ToxicFrog> | I just can't determine /how/. |
20:45 | <@TheWatcher> | I think I'll stick to emacs ¬¬ |
20:45 | <@ToxicFrog> | I am perpetually one very short step away from saying screw it and going back to NEdit, myself. |
20:46 | <@ToxicFrog> | The problem is that /apart/ from the criminally braindead lexing architecture, SciTE kicks a whole lot of ass. |
20:46 | <@TheWatcher> | Yes, and it's a Challenge. |
20:46 | <@ToxicFrog> | Frankly, this is one challenge I'd rather just skip. |
20:46 | <@ToxicFrog> | I have many more that are far more interesting. |
20:47 | <@ToxicFrog> | SDL bindings for Lua, preemptive threads in Lua, a new version of Spellcast and Spellcast-Server... |
20:47 | <@ToxicFrog> | However, I want to be able to use SciTE with new languages. |
20:49 | <@ToxicFrog> | Hmm. Ok, it seems to use keywords.(filepattern). |
20:50 | <@ToxicFrog> | so what I need to do is, I think, something like this... |
20:50 | <@ToxicFrog> | file.patterns.lua=*.lua |
20:50 | <@ToxicFrog> | lexer.$(file.patterns.lua)=regex |
20:51 | <@ToxicFrog> | keywords.$(file.patterns.lua)=lua |
20:51 | <@ToxicFrog> | regex.lua.0.name=comment |
20:51 | <@ToxicFrog> | regex.lua.0.regex=--.* |
20:51 | <@ToxicFrog> | regex.lua.0.style=$(style.comment) |
20:51 | <@ToxicFrog> | regex.lua.1.name=keyword |
20:51 | <@ToxicFrog> | [...] |
20:52 | <@ToxicFrog> | And then the lexer looks at keywords[0][0] to determine what language it's operating on. |
20:52 | | * ToxicFrog makes a noise like several baby rabbits being choked to death. |
20:54 | | * ToxicFrog also curses C for not having hash tables, and curses Scintilla - again - for not exposing the lexer API to Lua |
21:05 | <@ToxicFrog> | ...however, Lua does have hashtables, and Scintilla is already linked to Lua. So I can store the processed data structures in a lua_State and recall them at will. |
21:05 | <@ToxicFrog> | Go me. |
21:15 | | Chalcedon is now known as ChalcyTidying |
21:59 | <@McMartin> | ....ahahahahahaaaaaaa |
21:59 | <@McMartin> | Ways to find code invariants: |
22:00 | <@McMartin> | It's traditional to search for things like "always" and "never" |
22:00 | <@McMartin> | It turns out that searching your codebase for "the guy who wrote this" and "in case some idiot" are highly effective, too! |
22:03 | <@ToxicFrog> | "code invariants"? |
22:05 | <@McMartin> | "argument 2 to function foo is always > 0", etc. |
22:05 | <@McMartin> | Statements about code that are universally true, or must be universally true for the code to be correct. |
22:06 | <@McMartin> | The new searches are, for instance: |
22:06 | <@McMartin> | /* The guy who wrote this has never heard of endianness */ |
22:06 | <@McMartin> | /* In case some idiot tries to write -1 blocks to disk */ |
22:07 | <@McMartin> | etc. |
22:07 | <@McMartin> | More traditional versions are, like, /* never returns NULL. */ |
22:08 | | Mahal is now known as MahalTidying |
22:09 | <@ToxicFrog> | Aah. |
22:10 | <@McMartin> | Searching for swear words also works. |
22:10 | <@ToxicFrog> | Hee. |
22:16 | | ReivZzz is now known as Reiver |
22:29 | | You're now known as TheWatcher[afk] |
22:49 | | EvilDarkLord is now known as EvilSLEPLord |
22:59 | | You're now known as TheWatcher |
23:12 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: 6%] |
23:13 | | You're now known as TheWatcher[T-2] |
23:19 | | You're now known as TheWatcher[zZzZ] |
23:26 | | Reiver is now known as ReivSTUFF |
23:45 | | ChalcyTidying [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Quit: departing for Mahal's] |
23:53 | | MahalTidying is now known as Mahal |
--- Log closed Sat Oct 07 00:00:51 2006 |