code logs -> 2006 -> Wed, 29 Nov 2006< code.20061128.log - code.20061130.log >
--- Log opened Wed Nov 29 00:00:29 2006
00:04
<@ToxicFrog>
MCO: yes, but what underlying version is the 2005 release? 6.x? 7.x?
00:04
<@ToxicFrog>
McMartin: or I could use a compiler that doesn't suck~
00:08
< MyCatOwnz>
ToxicFrog: I... don't know.
00:09
< MyCatOwnz>
I could have a looksee.
00:12
<@ToxicFrog>
Of course, this is a nonissue if you plan to use msdev just for the editor and compile in something else.
00:13
< MyCatOwnz>
Nah, I have vim. I might use it the other way around, though.
00:14 ChalcyGone [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code
00:14
<@ToxicFrog>
...why?
00:14
< MyCatOwnz>
Ummm. "Visual Studio 2005 Professional Edition." No more information on it than that. Oh and it comes on two CDs.
00:14 * MyCatOwnz shrugs.
00:14
< MyCatOwnz>
ToxicFrog: might its compiler be better at optimization than gcc?
00:15 ChalcyGone is now known as Chalcedon
00:15 Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout]
00:15
< MyCatOwnz>
And possibly without the dilemma of: cygwin (having to distribute an admittedly small runtime) or mingw (which produces bloody slow programs no matter how you slice it)
00:16
<@ToxicFrog>
...I've never had speed issues with mingw.
00:16
<@ToxicFrog>
And you don't actually have to distribute the runtime with Cygwin.
00:16
<@ToxicFrog>
Use the -mno-cygwin option to GCC.
00:17
<@ToxicFrog>
(although this will of course only work if neither the program you're building, nor any of the libs you're linking it against, require Cygwin)
00:17
< MyCatOwnz>
There's also a couple of border cases where VS6 is preferrable.
00:17
<@ToxicFrog>
As for optimization - ISTR this being tested once, and the answer was "it totally depends on the program in question"
00:18 Chalcedon is now known as ChalcyMusic
00:18
< MyCatOwnz>
e.g. writing mods for games such as HL1, et cetera which *can* be done with other compilers but requires a lot of mucking about to get them to use MSVC++ 6's name decoration scheme.
00:18
< MyCatOwnz>
And, Hell, it was free. Kinda.
00:19
<@ToxicFrog>
So's mingw~
00:19 * ChalcyMusic waves!
00:19
< ChalcyMusic>
I shall return later, and ask a question.
00:19
<@ToxicFrog>
Yaye
00:20
< MyCatOwnz>
ToxicFrog: yes. True. But that just means that I'll install *both*, since I can.
00:21
<@ToxicFrog>
o.O
00:22
< MyCatOwnz>
Well, no, I won't actually bother installing mingw when I already have GCC on Linux. But you do get the point, right?
00:22
<@ToxicFrog>
Yes.
00:22
<@ToxicFrog>
...actually, there's a question. How does the linux->windows cross-compiler stack up?
00:22 AnnoDomini [~fark.off@Nightstar-29274.neoplus.adsl.tpnet.pl] has quit [Quit: Some people find sanity a little confining.]
00:23
< MyCatOwnz>
I don't know. I have a dual boot Arch-Linux (gcc4.1) / Windows 98SE machine. Want me to try it?
00:24
<@ToxicFrog>
Eh, I was just idly curious.
00:24
<@ToxicFrog>
Someday I should try generating my windows builds on Linux rather than using mingw.
00:29 ChalcyMusic is now known as Chalcedon
00:31 * MyCatOwnz starts reading gcc's man page.
00:32
< Chalcedon>
ok...
00:33
< Chalcedon>
I have never installed an OS before, I am about to reformat and reinstall XP (home) on my laptop. Is there anything I need to watch out for?
00:34
< MyCatOwnz>
Bandersnatch.
00:34
< MyCatOwnz>
Um, make sure you have a copy of your network card/modem drivers handy on a CD-R.
00:34
< Chalcedon>
I have a driver recovery CD
00:34
< MyCatOwnz>
Also, as a last resort, most Linux live CDs make half-decent recovery CDs.
00:35 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has quit [Ping Timeout]
00:35
< MyCatOwnz>
(A handful make excellent recovery CDs, on the other hand. ^_^)
00:35
< Chalcedon>
I don't have one of those.
00:35 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has joined #code
00:36
< Chalcedon>
(I am somewhat concerned by the fact that I don't appear to have an actual XP disk - I have an 'Operating System CD for distribution with an HP or Compaq PC')
00:36 Jan[din|tort] is now known as Janus
00:36
< Chalcedon>
(no don't berate my taste in computers I have it because it was my mother-in-laws, it was available and it didn't cost me very much).
00:41
< Chalcedon>
thanks MCO :)
00:42
<@ToxicFrog>
Chalcedon: it may not actually be possible to install XP from that, only repair an existing installation.
00:42
<@ToxicFrog>
So be sure to check that before doing anything permanent.
00:42
<@ToxicFrog>
And as MCO said, make absolutely sure you have a copy of your network card drivers handy.
00:43
<@ToxicFrog>
And be psychologically prepared for many, many, many reboots.
00:43
< Chalcedon>
it says I can reinstall...
00:43
< Chalcedon>
heh :)
00:44
< Chalcedon>
thanks TF :)
00:46
<@ToxicFrog>
(I'm serious, we're talking at least five or six and possible twelve or more)
00:46 * Chalcedon nods
00:48
< MyCatOwnz>
Oh and it might be a good idea to keep a copy of Spybot S&D and Avast! AV handy.
00:48
<@ToxicFrog>
Oh, right.
00:48
<@ToxicFrog>
Have offline copies of Service Pack 2, spybot, ad-aware, and your chosen firewall and antivirus software.
00:48
< MyCatOwnz>
Particularly if you're installing from an OEM CD - some of them are total fuckers (e.g. four letter expletive beginning with 'D') and will package spyware with the OS. :/
00:49
<@ToxicFrog>
You do not want to attach an unpatched, unfirewalled XP machine to the internet, especially not an OEM one.
00:49 * MyCatOwnz nods at TF.
00:49
< MyCatOwnz>
Lights up like a christmas tree with a gigantic bullseye in the middle.
00:50
<@ToxicFrog>
This is somewhat less of an issue if you're behind a seperate firewall machine and update it before doing anything else.
00:51
< MyCatOwnz>
True dat.
00:51
< MyCatOwnz>
ToxicFrog: myself, until I get my hobbybox up and running OpenBSD with a PF firewall, the only firewall I'm trustin' for Windows is a disconnected cat5 cable.
00:53
<@ToxicFrog>
I've had success with both Linux machines running iptables and a WRT54 running HyperWRT.
00:53
<@ToxicFrog>
Although in this case "success" is only really defined as "not failure"
00:54
< MyCatOwnz>
That's a pretty good axiom to work by, in computer security.
00:57
<@ToxicFrog>
Yeah, but it would be nice to have an unambiguous measure of success other than "no-one's owned my box yet"
00:57 ClassyMyst [~SouthernM@74.193.191.ns-11809] has quit [Quit: "There are two major products that come out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence." - Jeremy S. Anderson]
00:58
< MyCatOwnz>
ToxicFrog: that's one of the advantage of OpenBSD machines.
00:58
<@ToxicFrog>
...
00:58
< MyCatOwnz>
ToxicFrog: you occasionally manage to get "somebody looked at my machine, saw that it ran OpenBSD. Skipped bothering to try and went for the NT4 boxen down the hall."
00:59
<@ToxicFrog>
Well, yes, but that's just a special case of "someone looked at my machine and couldn't get in", which I get all the time.
01:00
< MyCatOwnz>
Aye, but it includes the "they saw my configuration, panicked and tried another target instead," clause.
01:00
<@McMartin>
I like the ones who notice I'm running sshd and then try to guess passwords for users with names like harrypotter and hermionegranger.
01:01
<@ToxicFrog>
...
01:02
<@McMartin>
Clearly my inferior DSL connection is launching a timing attack against their hacking utilities!
01:03
< MyCatOwnz>
How about being the only one in a large pool of users who isn't hit by a particular piece of malware?
01:03 * Chalcedon eyeballs the rest of TF and MCOs advice
01:03
<@McMartin>
No credit if you're running a different OS
01:04
< Chalcedon>
reboot number1....
01:04
< MyCatOwnz>
McMartin: yes credit if that OS is the *reason* you weren't hit.
01:04
< Chalcedon>
I can do the rest but I don't have an offline copy of SP2.
01:05
<@McMartin>
MCO: I disagree.
01:05
<@McMartin>
I don't get any security cred for not being pwned by Outlook viruses or Word macros.
01:05
<@McMartin>
Or rather, the fact that I don't is no evidence that I can make your system secure.
01:05
< MyCatOwnz>
McMartin: okay, but surely you have to admit credit +1 if you're running the same OS as everyone else, but on top of a hypervizor with firewalling being provided by the host OS.
01:06
<@McMartin>
Yeah, that counts.
01:06
<@McMartin>
But "Hur hur, Windows viruses can't hit me because my system doesn't provide the function calls it uses" is a dodge.
01:07
< MyCatOwnz>
McMartin: it is the principle underlying hardening and bastion hosts, though. :/
01:07
<@McMartin>
Such a person might end up telnetting out of their wireless connection the next day.
01:07
< MyCatOwnz>
Hahahahha
01:07
< MyCatOwnz>
Just a thought.
01:08
< MyCatOwnz>
Credit -1 if you get 0wnz3d on Linux because you were running Outhouse Express in WINE. =D
01:08
<@McMartin>
In order to get security points you actually have to close holes
01:08
<@McMartin>
And, uh, yes, not open new ones.
01:08
< MyCatOwnz>
McMartin: closing holes includes ripping out unneccesary services and so on, of course?
01:09
<@McMartin>
Absolutely. That's probably the most important bit of Win32 security, actually.
01:09
< MyCatOwnz>
I betcha if you cut WinXP down to almost nothing bar the kernel, it'd make a much better bastion host.
01:09
<@McMartin>
Win2k is better, but yeah, that's pretty standard in most Windows shops, I hear.
01:09
<@ToxicFrog>
The problem is "the kernel" includes all kinds of crap that shouldn't be in the kernel but is.
01:10
< MyCatOwnz>
ToxicFrog: I didn't say it'd stop sucking. It'd just suck less. :/
01:10
<@McMartin>
TF: The bits that don't listen to the network are less critical~
01:11
< MyCatOwnz>
It'd be cool as heck if you could get a custom WinXP build from MS that included only the standard VGA driver in its graphical subsystem. =D
01:11
<@McMartin>
It's called "running in DOS mode"
01:11
<@McMartin>
But seriously, if they could do that, Windows would in fact, suck way less across the board.
01:12
< MyCatOwnz>
McMartin: I thought that option wasn't available in NT derivatives, hence the FreeDOS project.
01:12 * McMartin kills third comma
01:12
<@McMartin>
You can boot to a raw commandline in XP.
01:12
< MyCatOwnz>
McMartin: nah, the third comma is correct. You had one too *few*, not too many.
01:12
<@McMartin>
Well, there should be two or four.
01:12
<@McMartin>
the "in fact" doesn't have to be a separate clause.
01:14
< MyCatOwnz>
When you boot to a raw commandline, do you still have network access?
01:14
< MyCatOwnz>
NIC drivers, and can you start services?
01:15
<@McMartin>
I, uh, haven't checked. I wouldn't be surprised if not, though, since it's supposed to only be for rescue mode.
01:15
< MyCatOwnz>
Pity. That'd be a massive blow to one of most Linux fanboys' major complaints about Windows.
01:16
< MyCatOwnz>
OTOH, it still doesn't get rid of any of the valid complaints. Like the lack of an I/O scheduler which doesn't suck...
01:17
<@McMartin>
Given the age of the various interfaces, "Win32 isn't POSIX, which is what I've used my entire professional life, like my father before me" is really quite enough
01:17 * McMartin can't use that argument, though, because his dad mostly ended up using VMS.
01:17
<@McMartin>
As time has worn on, he's started to have to look at high-reliability UNIX systems, though.
01:17
<@McMartin>
Unfortunately, most of those don't seem to perform the way VAXen did at their prime.
01:18
< MyCatOwnz>
McMartin: in terms of reliability, you mean?
01:19
<@McMartin>
Yeah.
01:19
<@McMartin>
He works in digital cable/satellite systems, so a system crash means someone has to drive out in a truck for two hours.
01:19 * MyCatOwnz does remember reading that VAXen were pretty much legendary.
01:19
<@McMartin>
They were legendary for many reasons, not all of them good.
01:19
<@McMartin>
But they ruled a class that no longer exists
01:20
< MyCatOwnz>
Described as obscure machines sitting in obscure little back offices doing obscure little jobs for years upon end and never failing.
01:20
<@McMartin>
("Nobody can survive the attack of the killer micros!")
01:20
<@McMartin>
Yeah. They tended to also run (well, be) most university's CS labs. One VAX and a bunch of dumb terminals.
01:20
<@McMartin>
This was in the days before workstations.
01:21
<@McMartin>
And, well, as it happens, at this point a VAX will be old enough that it's not going to be as reliable as it should.
01:21
< MyCatOwnz>
Reliable enough that they'd sit in one place long enough for people to forget what they were there for. Except that when somebody attempts to unplug one, the whole worl comes crashing down about their ears and they're pretty bloody soon cured of that little urge. ^_^
01:21
< MyCatOwnz>
McMartin: I dunno. I bet a BSD machine could match that uptime.
01:22
<@McMartin>
At least some BSDs have... issues... with threading, and I don't know if that's an issue of theirs or not.
01:23
<@McMartin>
My interaction with him on these things involves doing things like checking the precise semantics of pclose() or whatnot.
01:23
< MyCatOwnz>
ECC RAM eliminates most of the disadvantages of moving away from magnetic core. The software RAID being implemented in BSDs now includes such handy features as automatic rebuilding and hot-spare drives when in RAID 5 and RAID 6 configurations.
01:24
<@McMartin>
Well, yeah, that kind of thing isn't the problem, I don't think.
01:24
<@McMartin>
It's recoding the software to be POSIX.
01:24
< MyCatOwnz>
And both the OpenBSD and NetBSD teams have the advantage of being pretty anal about their source code. OpenBSD devs treat the documentation as God - any departure from the docs is a bug and will be squished without mercy or regard for workarounds that people might've written. ^_^
01:25
<@McMartin>
I know one of the things they decided not to do was emulating VMS on Alphas running Linux.
01:25
< MyCatOwnz>
And the NetBSD coders have this whole clean/portable thing going on.
01:25
<@McMartin>
I forget which one UQM is giving headaches to.
01:25
<@McMartin>
Or, well, highlighting headaches in.
01:25
< MyCatOwnz>
UQM?
01:25
<@McMartin>
Other than "not the one OS X is based on"
01:25
<@McMartin>
UQM = Ur-Quan Masters, the Star Control 2 port that I'm heavily involved in.
01:25
< MyCatOwnz>
Ahhhh.
01:26
<@McMartin>
One of the *BSD guys was picking my brain about our thread code because it was causing 100% CPU utilization in places where it shouldn't.
01:26
<@McMartin>
We would up tracking it down to the implementations of SDL_Delay in the Simple Direct-media Layer libraries, but after doing that, it became less clear whether it was the kernel's fault or SDL's.
01:26
<@McMartin>
At which point I was no longer useful, and they retreated to their icy fortresses.
01:26 * MyCatOwnz nods.
01:27
<@McMartin>
I suspect, however, that the fact that they're doing threads in userland is a large part of the problem.
01:27
< MyCatOwnz>
Sounds like the difficulty there is that SDL was developed by Loki software purely as a means to make portability between Linux, Macintosh and Windows easy.
01:27
<@McMartin>
SDL's a lot broader than that now. UQM compiles with no source changes on AmigaOS.
01:27
<@McMartin>
And runs.
01:27
< MyCatOwnz>
Sweet!
01:28
< MyCatOwnz>
I'm not sure about that one. You mean the locking or the switching?
01:28
<@McMartin>
(well, runs after we put in the patch)
01:28
<@McMartin>
Both, actually.
01:28
< MyCatOwnz>
Ouch.
01:28
<@McMartin>
But more that the threadcode is spinning away timeslices when it should be idling.
01:28 * MyCatOwnz nods.
01:29
<@McMartin>
Like, the main menu code on Linux with full pthreads support is 0.5% CPU utilization on a standard desktop. Win32 is similar.
01:29
<@McMartin>
But on this particular BSD, it was 100%.
01:29
<@McMartin>
Something's being implemented with a spinlock under the hood.
01:29
<@McMartin>
(There are four threads running on the main menu.)
01:30
<@McMartin>
Also, SDL's threads assume pre-emptive threading (which BSD has) -- so UQM will not compile on MacOS 9.
01:30
< MyCatOwnz>
AFAIK, Linux implements thread switching in the kernel and locking via a system called, uh, "futexes," which're userspace-only.
01:30
<@McMartin>
If you've got kernel threads, you can do locking elsewhere with ease.
01:31
< MyCatOwnz>
Question: SDL games run in Win98.
01:31
<@McMartin>
The problem with userland threads that the kernel doesn't know about is that a thread sleeping will sleep the whole process.
01:31
<@McMartin>
Win98 has pre-emptive threading.
01:31
< MyCatOwnz>
But I thought Win95/98 only had cooperative, userspace switching?
01:31
<@McMartin>
95 may have; 98 has pre-emption.
01:31
<@McMartin>
No, wait
01:31
<@McMartin>
95 has pre-emption too.
01:31
<@McMartin>
3.1 is cooperative.
01:31
<@McMartin>
SDL always works on 98, but only sometimes does on 95.
01:32
<@McMartin>
We've had reports of UQM working on it, but we don't officially support it.
01:32
<@McMartin>
(95. We officially claim It Works on 98.)
01:32
<@McMartin>
(No guarantees for Vista~)
01:33
<@McMartin>
... wait, I know people who had Vista release candidate betas.
01:33
< MyCatOwnz>
Heh. That must be the same situation as open-source hardware support.
01:33
<@McMartin>
Hm?
01:34
< MyCatOwnz>
"We'd love to add support for that. That might even be supported, if only by sheer luck. But as we don't have an example of the [hard|soft]ware in question to test ours against, I'm afraid we'll be unlikely to be able to support you."
01:34
<@McMartin>
Well, we used to have a Win98 developer: me.
01:35
<@McMartin>
But I've upgraded twice since then, and now I'm the 64-bit support developer.
01:35
<@McMartin>
By astonishing coincidence, the next release will be the first to have full AMD64 support~
01:35
< MyCatOwnz>
^_^
01:36
<@McMartin>
(Actually, this is a coincidence; 64-bit systems didn't get common enough that people could file bug reports until after the previous release)
01:36
<@McMartin>
(By the time I got Zinglon there were maybe two or three issues left, and this merely sped testing)
01:42
< MyCatOwnz>
Hmmmmm...
01:42
< MyCatOwnz>
I reckon if you'd had a 64-bit RISC chip to work on, AMD64 support would've taken almost nothing to achieve.
01:42
<@McMartin>
The code we inherited wasn't even 32-bit clean.
01:43
<@McMartin>
Dating as it did from 1992, and optimized as it was for 286 segemented-memory architectures.
01:43
< MyCatOwnz>
Or, Hell, just a 32-bit RISC chip. Anything that forces you to use sizeof() operators instead of hardcoded lengths. ^_^
01:43
< MyCatOwnz>
Oh my, crikey.
01:44
<@McMartin>
Endianness, however, was less of an issue, because the code we got was optimized for 286 segmented memory architectures and then ported to the (big-endian) 32-bit ARM system, and then extended to have a (very primitive) OpenGL-based backend that didn't really work attached.
01:44
< Chalcedon>
I'm not entirely sure I believe that... I installed XP with only two reboots...
01:45
<@McMartin>
Microsoft has honestly been getting much better about installation lately.
01:45
<@McMartin>
Now that there's some honest competition. >_>
01:45 * McMartin huggles, at minimum, Fedora and Ubuntu one-disc installs.
01:45
< MyCatOwnz>
Really? I only remember rebooting twice to install Windows 98SE, plus another one or two to bring all the drivers up.
01:45
< Chalcedon>
I'm hoping to have a play with Ubuntu after I submit my thesis
01:46
<@McMartin>
I hear 6.10 has, uh, issues.
01:46
<@McMartin>
FC6 does have issues, but not on AMD64.
01:46
< MyCatOwnz>
Arch Linux is an issue, but it's fun to use.
01:46
<@McMartin>
And not if you aren't using special drivers, actually.
01:46
<@McMartin>
And even then there are easier workarounds than the one I used.
01:49
<@ToxicFrog>
Chalcedon: including updates and drivers?
01:49
<@ToxicFrog>
The actually from-empty-drive-to-bootable-system is only two reboots. From-bootable-system-to-usable-system accounts for the rest.
01:50
< MyCatOwnz>
ToxicFrog: most OEM disks have the drivers for the particular model preloaded.
01:50
< Chalcedon>
I haven't had to reboot for drivers yet
01:50
< Chalcedon>
it's still going.
01:50
< MyCatOwnz>
It's then usually only one more reboot at most to get those to latest versions.
01:50
<@ToxicFrog>
Since updates alone require several reboots (update IE, then update the updater, then install the updates, then install SP2, then install the other updates, then install directx, then install .NET)
01:50
< Chalcedon>
yeah, half the drivers were on the install disk
01:50
<@ToxicFrog>
And on at least some systems, it's one reboot per driver, because installing them at all once renders the system unbootable.
01:51
<@Vornicus>
the amount of reboots required on many operating systems is downright silly
01:51
<@Vornicus>
quitting time
01:51 Vornicus [~vorn@Nightstar-18307.slkc.qwest.net] has quit [Quit: ]
01:51
<@ToxicFrog>
On Linux, I find, it's consistently two reboots: one for the actual install, one to update to the latest everything.
01:51
< MyCatOwnz>
ToxicFrog: ça depend.
01:52
< Chalcedon>
to be perfectly honest, I don't actually know how to update my drivers. I should probably find out.
01:52
< MyCatOwnz>
ToxicFrog: if "the latest everything" didn't happen to include a kernel update, then it's only one reboot. ^_^
01:53
< MyCatOwnz>
Usually... on competently put together Linux distros, anyway. Proper unixes are supposed to be outright hostile towards even the concept of ever needing to be rebooted.
01:55
<@McMartin>
Uh, except for core kernel upgrades.
01:56
<@McMartin>
But yeah, independently restartable services for the Failure To Lose.
01:57
< MyCatOwnz>
McMartin: this is why I find MINIX intriguing.
01:57
< MyCatOwnz>
Ideally, why should the core kernel ever be upgraded? =D
01:57
<@McMartin>
To fix buffer overrun vulnerabilities in your system calls.
01:58
<@McMartin>
But yes, Linux sparked a lot of controversy in the OS community because it wasn't a microkernel.
01:58
<@McMartin>
It's still questionable whether or not microkernels can actually compete in efficiency, but it got obviated because most of the advantages are kept with a core/module system like modern Linux has.
01:59
<@McMartin>
But not all. You can't just swap out a new syscall implementation, or a new module system.
01:59
< MyCatOwnz>
I'm... not sure.
02:00
< MyCatOwnz>
Does Windows NT count as a microkernel? I know it's supposed to be one in theory, but putting the graphics drivers into ring 0 kinda conflicts with that ideal.
02:00
<@McMartin>
By "sparked a lot of controversy" I mean "I read the academic flamewars in preparation for my qualifying exam, and they were long ovre before our time"
02:00
<@McMartin>
Not by the standards of the Mach guys, to say nothing of the V guys or the Exokernel guys.
02:00
< MyCatOwnz>
McMartin: old unix flamewars are quite alien to me.
02:00
<@McMartin>
Also, UQM runs on Vista.
02:01
< MyCatOwnz>
I read them, I am entertained and possibly even slightly enlightened. I am jealous, that people could be able to have these discussions some day back in the past, without having Viagra and Cialis spam clogging their machines constantly.
02:02
< MyCatOwnz>
I'm not entirely sure whether I understand them fully or not. The culture, I mean. It's something older than I am and, yet, it's still rolling along quite merrily in the minds of geographically scattered hackers.
02:03
<@McMartin>
Yeah. I'm Not One Of Them, I don't think.
02:03
<@McMartin>
I was influenced by them in High School, but I also was influenced as much if not more by the demo scene.
02:07
< MyCatOwnz>
I never saw the demo scene. Hell, I think I missed pretty much every scene going.
02:07 * McMartin is nearly 30.
02:07
<@McMartin>
The "original hackers" are now pushing 60.
02:07
<@McMartin>
Or actually well past it
02:07
< MyCatOwnz>
Original hackers - Tanenbaum's generation?
02:07
< MyCatOwnz>
Or Ken Thompson's?
02:07
<@McMartin>
I'm using Stallman's, here.
02:08
< MyCatOwnz>
Fair nuff.
02:08
<@McMartin>
But yeah, Thompson could work too.
02:08
< MyCatOwnz>
Thing is, the Unix culture still gets to me. Snippets of its archives are preserved.
02:08
<@McMartin>
I learned my trade at the hands of microcomputer enthusiasts in the late 80s and early-to-mid 90s.
02:08
< MyCatOwnz>
And the software legacy really is eleant and beautiful, when appreciated.
02:10
< MyCatOwnz>
It's wierd that Unix feels so much more modern than, say, VMS. It's about a decade older than that, even. oO
02:10
<@McMartin>
It feels more modern because it took over the world and so is ubiquitous in modern times.
02:10
<@McMartin>
Also, well, strictly speaking the latest POSIX standard is only five years old~
02:11
< MyCatOwnz>
Oh. Are the newer ones well-adhered to, I wonder?
02:11
<@McMartin>
Which is an important point. It's not carved in stone.
02:11
< MyCatOwnz>
Yes, true that.
02:11
<@McMartin>
Most of the man pages I've found on Linux 2.6 systems say "Conforming to POSIX (code) 2001"
02:11
< MyCatOwnz>
Thing is about POSIX, is if you write programs to it, you can be reasonably sure they'll still be POSIX compliant in another 30 years.
02:12
<@McMartin>
Yes.
02:12
< MyCatOwnz>
...hah! That does have one downside.
02:12
<@McMartin>
Unless you were deliberately relying on dodgy behavior.
02:12
< MyCatOwnz>
Currently POSIX-compliant programs will be able to last until the year 2038 crisis. =D
02:12
<@McMartin>
Time_ts wrap around in 31 years?
02:12
< MyCatOwnz>
Precisely that, yes. =D
02:13
< MyCatOwnz>
I can't wait to see what happens in 2038.
02:13
<@McMartin>
I suspect POSIX 2020 will mandate 64-bit time_ts or something and most properly-written (ha ha) applications won't require more than source recompilation.
02:13
< MyCatOwnz>
lol u sed properly riten
02:13 * MyCatOwnz bitchslaps himself. Ouch!
02:13
< MyCatOwnz>
Heh. Yes.
02:14
<@McMartin>
More importantly, improperly-written applications will have incompatibility points flagged by a compiler.
02:14
< MyCatOwnz>
Well, even now, for POSIX compliance you're supposed to use time_t and sizeof(time_t) instead of int and 4.
02:14
<@McMartin>
Also, stuff written in languages that Aren't C or Similar will probably handle it fine.
02:14
< MyCatOwnz>
Oh, true true.
02:14
<@McMartin>
Yeah, and that kind of thing is exactly what compilers are Really Good At Enforcing.
02:14
<@McMartin>
'cause it's no different from any other kind of type checking.
02:15
< MyCatOwnz>
This is one of the handy advantages gcc has over other compilers. It's much fussier.
02:15
<@McMartin>
Python or Perl can just have gettime() quietly return a long instead of a normal integer, and Life Is Good
02:15
< MyCatOwnz>
That's a pain in the arse when you're starting out learning (and all the tutorial books happen to be shite) but it does make life easier in the long run.
02:16
< MyCatOwnz>
I have to wonder about peoples' binary file formats.
02:16
< MyCatOwnz>
But that'll be *their* problem.
02:16
< MyCatOwnz>
Speaking of timing problems, I have a 9AM lecture and it's twenty past two.
02:16
<@McMartin>
That'll be a problem, but I suspect most datasets of that longevity will be relational databases.
02:16
<@McMartin>
So you'll have to migrate the databases to make them work.
02:16
< MyCatOwnz>
McMartin: yeah and Oracle already has the "buggy as shit" reputation nailed, so no big issue there.
02:17
<@McMartin>
Yay MySQL, etc~
02:17
< MyCatOwnz>
Oddly enough, the most stimulating conversations I have on IRC are a) in here and b) at funny times in the morning when I have early morning lectures next day.
02:17
< MyCatOwnz>
Dammit. Oh well.
02:17
<@McMartin>
This is because I'm in Silicon Valley, as are many of my compatriots.
02:18
< MyCatOwnz>
Ah, California. Totally beats me why anyone would put a tech revolution in California.
02:18
<@ToxicFrog>
Because they hate all that lives.
02:18
< MyCatOwnz>
Dammit man, servers like cold climates!
02:18
<@McMartin>
It's less than 10 C outside right now.
02:18
<@ToxicFrog>
And are secretly working to delay humanity's technical progression.
02:19
<@McMartin>
California extends pretty far to the north.
02:19
<@McMartin>
Also, there's a wonderful invention called "climate control"
02:19
< MyCatOwnz>
McMartin: and another one called energy bills. :/
02:20
<@McMartin>
Maintaining the humans is cheaper, though.
02:20
< MyCatOwnz>
Nahhhh.
02:20
< MyCatOwnz>
It might take several hundred gallons of oil to keep a human's abode habitable each year in a cold clime, but then, they're more'n capable of staying toasty on less than half that much beer. =)
02:21 MyCatOwnz [~mycatownz@Nightstar-379.dsl.in-addr.zen.co.uk] has quit [Quit: Swim, swim, drowsy!]
02:23
<@McMartin>
The Dopefish Lives, I see.
02:24
<@ToxicFrog>
We are all Dopefish.
02:31
<@McMartin>
woot!
02:32 * McMartin prepares to do the Linux release of PQL 0.2
02:33 BlueTiger [BlueTiger@Nightstar-567.natsoe.res.rr.com] has joined #Code
02:34
<@ToxicFrog>
PQL?
02:34
<@McMartin>
The "bastard child of Java and ML", as you put it
02:34
<@ToxicFrog>
Aah.
02:34
<@McMartin>
This is the one that ties in the thermonuclear static analyses from my research group and uses it to optimize searches.
02:35
<@McMartin>
Or, well, remove instrumentation that it can prove does not contribute to matches.
02:36
<@McMartin>
Ideally (read: this basically never happens) it can prove that all the instrumentation is unnecessary, at which point you conclude that the pattern cannot be matched at all.
02:38 Takyoji [~Takyoji@Nightstar-25280.dhcp.roch.mn.charter.com] has joined #code
02:38 BlueTiger [BlueTiger@Nightstar-567.natsoe.res.rr.com] has quit [Quit: ]
02:39
< Takyoji>
For better or worse? http://aquaeden.com/ Original: http://aquaeden.com/original.jpg
02:47
<@Vornicus-Latens>
I like the green better
02:48
<@Vornicus-Latens>
...below a certain width though it wraps oddly
02:51 Thaqui [~Thaqui@124.197.38.ns-22015] has quit [Ping Timeout]
03:01 Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: Dieu se repose comme elle gaspille. Le jouet avec un Dieu. Le jouet sans un enfant.]
03:06 Vornicus-Latens is now known as Vornicus
03:09 Thaqui [~Thaqui@124.197.38.ns-22015] has joined #code
03:17
< Takyoji>
How can you make a window automatically close without the prompt like phpMyAdmin is?
03:18
< Takyoji>
Or actually..
03:18
< Takyoji>
Would I have to have another window that'd close it in javascript?
03:21
<@McMartin>
Mm. Can you look at phpMyAdmin to see what it does?
03:23
< Takyoji>
or actually I think it was probably a different application, but apparently it was programmed in Smarty templates
03:23
< Takyoji>
brb
03:32
<@ToxicFrog>
Hmm. Having run the numbers, I like 8 of Mazedude's 36 mixes.
03:32
<@ToxicFrog>
Also, die, Winamp ID3 reader. Die in the face.
03:33
<@McMartin>
Which 8?
03:34
<@ToxicFrog>
Slick Rippin' Keen, all four of the Doom mixes but especially Blood Bath, Space Station of the Ancients, Plok Title Jam, and River City Rammstein.
03:43 Thaqui [~Thaqui@124.197.38.ns-22015] has quit [Ping Timeout]
03:50 * McMartin commences massive upload
03:59 Thaqui [~Thaqui@203.100.215.ns-22453] has joined #code
03:59 Thaqui is now known as NSGuest-366
04:00 NSGuest-366 is now known as Thaqui
04:27 Takyoji [~Takyoji@Nightstar-25280.dhcp.roch.mn.charter.com] has quit [Quit: Leaving]
05:03 MahalWork is now known as MahalOut
05:23 McMartin [~mcmartin@Nightstar-9000.dsl.pltn13.pacbell.net] has quit [Quit: FOR JUSTICE]
07:43 Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code
07:43 mode/#code [+o Chalcy] by ChanServ
07:44 Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout]
07:50 timelady [~romana@Nightstar-13567.lns1.adl2.internode.on.net] has joined #Code
07:55 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has quit [Ping Timeout]
07:56 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has joined #code
07:57 Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code
07:57 mode/#code [+o Chalcedon] by ChanServ
07:58 Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout]
08:00 AnnoDomini [~fark.off@Nightstar-29274.neoplus.adsl.tpnet.pl] has joined #Code
08:04 timelady [~romana@Nightstar-13567.lns1.adl2.internode.on.net] has quit [Ping Timeout]
08:09 ReivWork is now known as Reiver
08:18 timelady [~romana@Nightstar-13567.lns1.adl2.internode.on.net] has joined #Code
08:30 MahalOut is now known as Mahal
08:31 Thaqui [~Thaqui@203.100.215.ns-22453] has quit [Ping Timeout]
08:34 Thaqui [~Thaqui@203.100.215.ns-22453] has joined #code
08:34 Thaqui is now known as NSGuest-367
08:35 NSGuest-367 is now known as Thaqui
08:40 Vornicus is now known as Vornicus-Latens
08:46 Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Quit: 'tis time to run system restore before any more data loss occurs...]
08:56 Netsplit DeepThought.NY.US.Nightstar.Net <-> Blargh.CA.US.Nightstar.Net quits: EvilDarkLord
08:56 Raif [~corvusign@Nightstar-7918.hsd1.mn.comcast.net] has quit [Killed (NickServ (GHOST command used by Raif_))]
08:56 Raif_ [~corvusign@Nightstar-7918.hsd1.mn.comcast.net] has joined #Code
08:56 Raif_ is now known as Raif
08:57 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out]
08:57 timelady [~romana@Nightstar-13567.lns1.adl2.internode.on.net] has quit [Ping Timeout]
08:57 Ev3 [~-@87.72.36.ns-26407] has quit [Killed (NickServ (GHOST command used by Shemhazai))]
08:58 Ev3 [~-@87.72.36.ns-26407] has joined #Code
08:58 Thaqui [~Thaqui@203.100.215.ns-22453] has quit [Ping Timeout]
09:00 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code
09:00 mode/#code [+o ToxicFrog] by ChanServ
09:00 Thaqui [~Thaqui@203.100.215.ns-22453] has joined #code
09:01 Thaqui is now known as NSGuest-369
09:01 NSGuest-369 is now known as Thaqui
09:01 timelady [~romana@Nightstar-13567.lns1.adl2.internode.on.net] has joined #Code
09:07 timelady [~romana@Nightstar-13567.lns1.adl2.internode.on.net] has quit [Quit: run away! run away!]
09:10 Reiver is now known as ReivZzz
09:10 Netsplit over, joins: EvilDarkLord
09:22 McMartin [~mcmartin@Nightstar-10284.dsl.pltn13.pacbell.net] has joined #code
09:22 mode/#code [+o McMartin] by ChanServ
10:07 AnnoDomini [~fark.off@Nightstar-29274.neoplus.adsl.tpnet.pl] has quit [Ping Timeout]
10:12 You're now known as TheWatcher[wr0k]
10:29 Thaqui [~Thaqui@203.100.215.ns-22453] has quit [Quit: Leaving]
12:10 MyCatOwnz [~rb6822@Nightstar-18140.cs.bris.ac.uk] has joined #code
13:23 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has quit [Ping Timeout]
13:25 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has joined #code
13:30 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has quit [Ping Timeout]
13:30 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has joined #code
13:42 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has quit [Ping Timeout]
13:52 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has joined #code
15:00
< MyCatOwnz>
"My university has a fast internet connection."
15:01
< MyCatOwnz>
Q: is that a good excuse to download and burn the entire SICP lecture series in Divx, one to each of twenty CD-Rs?
15:02
<@ToxicFrog>
No DVD burner?
15:02
<@ToxicFrog>
...so, I have updated Cygwin to the latest everything and now egrep has stopped working.
15:02
< MyCatOwnz>
ToxicFrog: heheheheh.
15:03
< MyCatOwnz>
No, 'fraid not. CD burners and cheap CDRs, though.
15:03
< MyCatOwnz>
Which reminds me, I'm going to need to buy another pack before I'm done. This thing is like 24 straight hours.
15:03
<@ToxicFrog>
Dude, it's not funny! I need egrep!
15:04
< MyCatOwnz>
Oh, sorry. I was responding to your question about the DVD burner.
15:04
< MyCatOwnz>
Ummmmm... doesn't "grep -e" have the same syntax & semantics?
15:05
< MyCatOwnz>
grep -E, even.
15:06
<@ToxicFrog>
Yes, because egrep is an alias for same.
15:08
<@ToxicFrog>
More accurately, egrep is a symlink to grep, and if argv[0] == "egrep", grep behaves as though -E was used.
15:14
< MyCatOwnz>
Can you recreate the egrep symlink, or do you mean that grep -E is now malfunctioning too? Or is it just failing to assume -E when invoked as egrep?
15:14
<@ToxicFrog>
It is correctly assuming -E, but it doesn't match anything.
15:15
<@ToxicFrog>
Basically, it's behaving as though regexec() never reports matches.
15:15
<@ToxicFrog>
Plain substring-based grep still works.
15:18
< MyCatOwnz>
Ohhhhhh, shtiii. That's bad.
15:19
<@ToxicFrog>
Yeeep.
15:47 Stephenie is now known as Stephenie|Cleaning
16:22 AnnoDomini [~fark.off@Nightstar-29607.neoplus.adsl.tpnet.pl] has joined #Code
16:28 Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code
16:28 mode/#code [+o Chalcedon] by ChanServ
16:55 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has quit [Ping Timeout]
17:06 EvilDarkLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has joined #code
17:21 ReivZzz is now known as Reiver
17:40 Reiver is now known as ReivWork
18:59 Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code
18:59 mode/#code [+o Chalcy] by ChanServ
19:00 Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout]
19:04
< MyCatOwnz>
ToxicFrog: mind if I bug you with a question about SICP?
19:05
< MyCatOwnz>
ToxicFrog: both the book itself and the videos are published online (thank goodness for JANET and CD burners, heheh). Are they complementary, or if I read&watch both will I end up spending most of my time seeing things repeated, please?
19:10
<@ToxicFrog>
Ask McM, I've only watched the first video.
19:11
< MyCatOwnz>
k, thanks.
19:11
< MyCatOwnz>
McMartin: 'loooooo... could I please ask you the same question I just asked TF?
19:17 Chalcy is now known as Chalcedon
19:29 Stephenie|Cleaning is now known as Safyra
19:29 Safyra is now known as Stephenie
19:29
<@Stephenie>
oops force of habit
20:25 MyCatOwnz [~rb6822@Nightstar-18140.cs.bris.ac.uk] has quit [Quit: im in ur ideosphere, propogatin ur memes]
21:09 Chalcedon is now known as ChalcyUni
21:25 Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code
21:25 mode/#code [+o Chalcy] by ChanServ
21:26 ChalcyUni [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout]
21:35 Thaqui [~Thaqui@203.100.215.ns-22453] has joined #code
22:09 You're now known as TheWatcher
22:14
<@McMartin>
MCO: I haven't seen the videos. I believe that the videos are lectures covering the material contained in the book.
22:15
<@McMartin>
Lecture + Textbook being the general way material is covered at the undergrad level.
22:46 You're now known as TheWatcher[T-2]
22:47 You're now known as TheWatcher[zZzZ]
23:00 MyCatOwnz [~mycatownz@Nightstar-379.dsl.in-addr.zen.co.uk] has joined #code
23:25 AnnoDomini [~fark.off@Nightstar-29607.neoplus.adsl.tpnet.pl] has quit [Quit: Some people find sanity a little confining.]
23:37
<@ToxicFrog>
Hmm.
23:37
<@ToxicFrog>
Ok, so, I'm moving towards an event-based system. This works fine for the client: it gets an event, it processes it.
23:38
<@ToxicFrog>
The server, however, actually has different ideas of which events are valid depending on what state it's in, and may handle events differently depending on state.
23:38
<@ToxicFrog>
Is the event handler part of the event? Part of the state? Both?
23:42 Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #Code
23:43
< Janus>
Consoles are the neatest wonder-muffins they ever baked up.
23:44
<@ToxicFrog>
I'm not even sure I'm thinking about this the right way; the Plotkin code isn't even explicitly a state machine, it's just do { getgestures(); buildspelllists(); executeturn(); } while(!whowon);
23:45 * ToxicFrog lightbulbs
23:46
< MyCatOwnz>
ToxicFrog: what if you have two statemachines on different threads. One that does "getgestures();", one that does the rest of the turn.
23:47
<@McMartin>
Ew
23:47
< MyCatOwnz>
Put 'em into a producer/consumer relationship, with the getgesture (ie network) thread providing events to the turn processing.
23:47
<@McMartin>
Much better to treat it as a queue of stuff to consume
23:47
<@McMartin>
The server shouldn't be multithreaded, imo.
23:47
<@McMartin>
It can associate states with each player though, I suppose
23:47
< MyCatOwnz>
Okay, scratch "state machine" from that.
23:48
< MyCatOwnz>
And then have the client tag each player's packet with a turn number, so that the server only needs to make sure that there are sufficient moves available to process the next turn.
23:49
< MyCatOwnz>
Mmmm... *thinks*
23:49
< MyCatOwnz>
Okay, no point really. There's no parallelism or concurrency to take advantage of.
23:50
< MyCatOwnz>
ToxicFrog: have getgestures() block until all players' gestures for the current turn have been recieved? There's only one packet that needs to be sent from each player to inform the server of their move, right?
23:50
< MyCatOwnz>
And then hopefully only one packet that needs to be sent back after executeturn() to tell them the results.
23:51
<@ToxicFrog>
Any threading in the server would be to handle blocking socket IO, not to handle different kinds of events. And it's not threaded anyways.
23:51
<@ToxicFrog>
And, yes, that's how getgestures() worked in Plotkin's code.
23:51
<@ToxicFrog>
(and, ahahahaha no. Waaay more than one packet.)
23:51
< MyCatOwnz>
How many different kinds of events are there anyway? Surely players can only send one type of turn (a gesture) and recieve one kind of response (a result).
23:52
< MyCatOwnz>
ToxicFrog: 1500 byte MTU. You're telling me there's more that 256^1500 possible combinations of hand positions for their gestures to take?
23:52
<@ToxicFrog>
Well. Just discussing client->server events...join game, leave game, talk, select gestures, cancel gestures, select answers, cancel answers.
23:53
< MyCatOwnz>
Er. Select gestures/cancel gestures -> client-side, surely?
23:53
<@McMartin>
No, that's "OK, server, here are my moves" and "NO WAIT I TAKE IT BACK"
23:53
<@ToxicFrog>
No, because the server needs to know when everyone has selected their gestures.
23:53
<@ToxicFrog>
Yes, what McM said.
23:53
<@ToxicFrog>
MCO: no, but after executing a turn - which may involve several exchanges asking the players questions like "who do you want to cast Shield on" -
23:53
<@ToxicFrog>
- it then has to send:
23:53
<@ToxicFrog>
(1) an updated gesture stack for each player
23:54
<@McMartin>
(1a) which don't go at the same speed, thanks to Haste/Invis/Anti-Magic
23:54
<@ToxicFrog>
(2) updated player and monster status information (which may actually be the same as the above)
23:54
<@ToxicFrog>
(3) events (probably represented on the client as text) saying what actually happened
23:55
<@ToxicFrog>
(eg, "Foo stabs (with the left hand) at Bar!")
23:55
< MyCatOwnz>
k. What about restructuring it into a multiple-round event loop, similar to how tabletop games tend to work (e.g. distinct movement, attack and other stuff rounds).
23:55
<@McMartin>
Unless what MCO is saying is that you can jam more than one event into a packet...
23:55
<@McMartin>
But SDL_net should handle all that for you.
23:55
<@ToxicFrog>
McMartin: well, if the TCP stack does buffering, it may actually end up doing that.
23:56
<@ToxicFrog>
But I'm not operating at that level, I'm some distance above it. I don't care how many packets this is *on the wire*.
23:56
<@McMartin>
MCO: That's what it's basically doing.
23:56
<@McMartin>
Gesture select phase; spell select phase; target select phase; resolution phase.
23:56
<@ToxicFrog>
And we've wandered away from my question, anyways.
23:56
<@McMartin>
It's just that "spell select phase" and "target select phase" are a generic "resolve everything" phase.
23:57
<@McMartin>
AIUI, the client doesn't actually know the spell list
23:57
<@ToxicFrog>
Nope.
23:57
< MyCatOwnz>
McMartin: yes, but can't they both be handled without any communication between the client and the server?
23:57
<@ToxicFrog>
...no.
23:57
<@McMartin>
Or rather, "not without replicating the server inside the client"
23:57
< MyCatOwnz>
McMartin: as in, client selects a spell, client selects a target. Sends packet to server containing "(CAST foo AT someone)"
23:58
<@ToxicFrog>
I mean, ok, theoretically yes, if you crammed all the logic about spell determination, target validity determination and selection, and so forth, into the client.
23:58
<@ToxicFrog>
That's not how the game works.
23:58
<@McMartin>
MCO: See, the client doesn't know the spell list.
23:58
<@McMartin>
You can redesign the spells at the server side.
23:58
<@ToxicFrog>
The client selects gestures, two per turn. The server determines if a client has entered gestures that form a valid spell.
23:58
<@McMartin>
Or multiple valid spells.
23:59
<@ToxicFrog>
What you're talking about is basically moving large amounts of server code into the client, which is a bad idea even if you assume that no-one will ever want to cheat.
23:59
< MyCatOwnz>
That sounds like you're tuning your program for a *lot* of network I/O in order to make the cilent thin.
23:59
< MyCatOwnz>
ToxicFrog: not quite. You replicate the validation on both sides. It's a responsiveness trick.
23:59
<@ToxicFrog>
...it's a lot only relative to what it would be if we stuffed the server into the client.
--- Log closed Thu Nov 30 00:00:11 2006
code logs -> 2006 -> Wed, 29 Nov 2006< code.20061128.log - code.20061130.log >