--- Log opened Mon Sep 08 00:00:22 2008 |
00:00 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
00:06 | | Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code |
00:06 | | mode/#code [+o Reiver] by ChanServ |
00:09 | | DiceBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has joined #Code |
00:14 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has quit [Quit: Z?] |
01:14 | | Attilla [~The.Attil@92.22.195.ns-12776] has quit [Quit: <Insert Humorous and/or serious exit message here>] |
01:50 | | Bob_work [~c6b3e33b@Nightstar-23098.shawnetworks.com] has joined #Code |
01:50 | < Bob_work> | Help? |
01:51 | < Bob_work> | Wrote a payroll program in C, and need test data. I remember my last programming teacher used a certain set of numbers, because they showed whether the program really worked or not |
01:51 | < Bob_work> | Anyone know the best hour/rate input to test a payroll program? |
01:51 | < Finerty> | Dunno. |
01:52 | < Finerty> | I'd use things where you can do the math by hand. |
01:52 | < Finerty> | $10, $100, for instance |
01:52 | < Bob_work> | Ok |
01:53 | < Bob_work> | I just don't wanna hand this in and get "Oooh, sorry, you're an idiot" from the teacher. |
01:55 | | Bob_work [~c6b3e33b@Nightstar-23098.shawnetworks.com] has quit [Quit: CGI:IRC] |
01:57 | <@Consul> | I woiuld have to question the value of any teacher that responds with "sorry, you're an idiot." |
01:58 | <@Consul> | But I'm guessing he was just trying to get the point across very briefly. |
02:03 | | Thaqui [~Thaqui@121.98.137.ns-13370] has joined #code |
02:03 | | mode/#code [+o Thaqui] by ChanServ |
02:08 | | androsch [~androsch@Nightstar-4653.pools.arcor-ip.net] has quit [Quit: ] |
02:20 | | Finerty is now known as Vornicus |
02:26 | | Bob_work [~c6b3e33a@Nightstar-23098.shawnetworks.com] has joined #Code |
02:31 | < Bob_work> | "But using system("PAUSE") is like burning your furniture for heat when you have a perfectly good thermostat on the wall." |
02:32 | <@ToxicFrog> | Which is true, but in most languages it's also mucn, much easier than replicating pause's functionality |
02:33 | <@ToxicFrog> | Although "press enter to continue" is generally pretty easy, and more portable |
02:33 | <@ToxicFrog> | It's "press any key to continue" that's a cast iron bitch. |
02:33 | < Bob_work> | Unfortunately, when I put getchar(), it seems to ignore it. |
02:34 | <@ToxicFrog> | Terminal is line buffered. |
02:35 | <@ToxicFrog> | Characters aren't actually available to the program until the user presses enter. |
02:35 | <@ToxicFrog> | This is why "press any key to continue" is hard; you need to disable line buffering, so that characters become available as soon as they are typed, and this isn't portable across terminals, let alone operating systems. |
02:35 | < Bob_work> | ah |
02:36 | <@ToxicFrog> | "press enter to continue" is easy; user presses enter, program reads empty line, everyone is happy |
02:37 | | Thaqui [~Thaqui@121.98.137.ns-13370] has left #code [He was a wise man who invented beer - Plato] |
02:37 | < Bob_work> | Silly question: For my payroll program, I've got all variables set as float. I can't think of any way to streamline them. Is there a way, or am I spinning my wheels? |
02:38 | <@ToxicFrog> | What do you mean by "streamline"? Convert to integer math? |
02:38 | < Bob_work> | take up less memory than 4 bytes a variable. |
02:38 | <@ToxicFrog> | Oh. |
02:39 | <@ToxicFrog> | First of all, this isn't something you should be worrying about unless you know memory usage is an issue, IMO, and if anything 32 bits is too small. |
02:40 | < Vornicus> | Don't use float for currency, ever |
02:40 | < Bob_work> | ... |
02:40 | < Vornicus> | Ever ever ever. |
02:40 | < Bob_work> | um, ok. Can I ask why? |
02:40 | <@ToxicFrog> | The traditional way of doing this sort of thing without floating point is to use integers which track cents (or tenths, or hundredths, down to whatever resolution you need) |
02:40 | < Vornicus> | Work in cents or tenths of cents. |
02:40 | <@ToxicFrog> | Since unlike floats that will be precise. |
02:40 | <@ToxicFrog> | Floats are not guaranteed to be precise for non-integer values. |
02:41 | <@ToxicFrog> | 0.1 may actually be 0.1000000000000000000000000000000000125 |
02:41 | < Vornicus> | (indeed, it actually is) |
02:42 | < Bob_work> | Ok, so if float is out, then I'd want to use... int? |
02:42 | < Vornicus> | Yep. |
02:42 | <@ToxicFrog> | Probably int32_t or int64_t |
02:42 | <@ToxicFrog> | (signed 32 or 64 bit integers) |
02:42 | < Bob_work> | We haven't covered those yet, apparently. |
02:42 | <@ToxicFrog> | Or just "long int" |
02:42 | < Vornicus> | The former if you expect to never handle anything more than $20M |
02:42 | < Bob_work> | But I do understand the point of being precise with money. |
02:43 | <@ToxicFrog> | What data types *have* you covered? |
02:43 | < Bob_work> | Just so I understand this: Long Int will round, whereas float will simply truncate? |
02:43 | <@ToxicFrog> | The converse. |
02:43 | <@ToxicFrog> | ints truncate. floats round to the nearest value which can be precisely expressed as a base 2 fraction. |
02:44 | < Bob_work> | Ok, not to go around in circles, but wouldn't you WANT money to round? |
02:44 | <@ToxicFrog> | Yes, but it's not rounding to the nearest cent value |
02:44 | <@ToxicFrog> | It's rounding to the nearest float value |
02:45 | <@ToxicFrog> | In practice, if you use doubles and truncate to 2 decimal places, you're probably ok |
02:45 | <@ToxicFrog> | But using ints will be perfectly precise for anything other than division |
02:45 | < Vornicus> | And with division you get perfect precision too by using mod as well. |
02:45 | <@ToxicFrog> | And for division, it's easy to do the math so that "truncate" turns into "round" anyways. |
02:47 | <@ToxicFrog> | All this said, using ints does make things marginally more complicated, and for learning purposes it's probably simpler to use floats/doubles |
02:47 | <@ToxicFrog> | It's just important to understand the limitations of each, and when they are and are not appropriate |
02:48 | <@ToxicFrog> | It's very easy to get caught up in thinking that floats can represent any rational, especially since a lot of profs don't discuss it, and 99% of the time that's fine, but that 1% of the time it's not you get weird, hard to pin down math-related bugs. |
02:48 | < Bob_work> | Well, I'd rather knock out any bad habits before they take hold, so I question you only as a student trying to learn. |
02:49 | <@ToxicFrog> | (in practice, I suspect the easiest way is to use doubles and truncate to however many sig figs you need on output. However, this is much harder to verify as correct than simply using ints.) |
02:50 | <@ToxicFrog> | What data types have you covered, incidentally? |
02:52 | < Bob_work> | int, float, double and char |
02:53 | < Bob_work> | and VERY briefly, signed and unsigned. |
02:53 | <@ToxicFrog> | Ok |
02:53 | <@ToxicFrog> | "long" and "short" are modifiers to int like "signed" and "unsigned" |
02:53 | | * Bob_work nods |
02:54 | <@ToxicFrog> | *typical* values are "short int" is 16 bits, "int" and "long int" are 32 and "long long int" is 64 - this applies whether it's signed or unsigned. |
02:54 | <@ToxicFrog> | This varies depending on processor and whatnot, though, so don't take these sizes as gospel. |
02:55 | < Bob_work> | As I understand them: Int is for whole numbers that aren't very big, float is for anything with a decimal point, Double is for anything that needs super precision, and Char is for characters, of course. |
02:55 | <@ToxicFrog> | If you need exact bit widths, you can #include <stdint.h> (at least on linux, I *think* windows also has this) and use (u)int(number of bits)_t |
02:55 | <@ToxicFrog> | Eg, int32_t for a 32-bit signed int, uint64_t for an unsigned 64 bit one. |
02:55 | <@McMartin> | stdint is C99 |
02:55 | <@ToxicFrog> | But you shouldn't need to worry about that yet. |
02:55 | <@ToxicFrog> | Thank you. |
02:55 | <@McMartin> | SO compliance...varies |
02:56 | | * Bob_work nods. |
02:56 | <@McMartin> | (The C++ equivalent on Linux, for instance, requires boost) |
02:56 | < Bob_work> | Ok, so very far out of what I know...and currently need to know, to write this program. |
02:56 | < Bob_work> | BUT!!! I've learned quite a bit from all this, thank you. |
02:56 | <@ToxicFrog> | Bob_work: "not very big" depends on the int size. The range is 2^bit_width, so a short (16 bits) is 0-65,535, or +/- around 32k for the signed version |
02:56 | <@ToxicFrog> | A long will have a range of 4 billion |
02:57 | <@ToxicFrog> | And a 64-bit long long will have a range of a fucktonne, I'm not even going to try to remember the proper name for that |
02:57 | <@ToxicFrog> | 4 billion squared, anyways. |
02:58 | <@Reiver> | 16000000000000000000. |
02:58 | <@ToxicFrog> | floats and doubles can go larger (or smaller) but lose precision - a double, for example, can store much, much larger values than even a long long int, but will only store 52 (binary) significant figures. |
02:59 | <@ToxicFrog> | So above a certain point the numbers become approximations, and the bigger you go the more approximate they get. |
02:59 | <@ToxicFrog> | And yeah, we are getting slightly heavy for a small payroll program ?? |
02:59 | <@ToxicFrog> | What can I say, we like pontificating |
03:01 | <@Consul> | Bob_work: I always get help in this channel, despite the fact that I act like a real jerk at times. These guys are pretty cool. :-) |
03:01 | <@ToxicFrog> | Also, floats are much on my mind, having recently written code to manually take apart and reassemble them bit by bit. |
03:01 | < Bob_work> | Woah. |
03:02 | < Bob_work> | thinking about ripping them apart hurts my head...I'd hate to have to put them back together. |
03:02 | <@ToxicFrog> | Doing so precisely when the only numeric type you have is double is not the happy fun time. |
03:02 | < Bob_work> | Plus...I always wind up with leftover pieces of things. ;P |
03:02 | <@Consul> | Bob_work: Leftover parts are proof you built it better. :-D |
03:03 | <@ToxicFrog> | I do recommend studying the internal format of IEEE floats at some point, just because it's pretty cool |
03:03 | <@ToxicFrog> | ...much later. |
03:03 | < Bob_work> | heh |
03:03 | <@ToxicFrog> | But yeah, if any part of this library is begging to be rewritten in C it's the IEEE float handling code |
03:03 | <@ToxicFrog> | Which has its own module |
03:04 | <@ToxicFrog> | As in, all the read code except floats is one module, all the write code except floats is another, and then floating point support is in its own file as large as either of those. |
03:04 | <@ToxicFrog> | But much of this is because I insisted on not dropping into C to write it. |
03:07 | <@Consul> | McMartin: Sorry to bug you again, but I was thinking about components that have more than one out... The only way I can think of to handle those is to pass in a reference to a variable to grab that output as an argument to the component. |
03:08 | <@ToxicFrog> | That is typically how you do multiple returns in C/++ |
03:08 | <@Consul> | Right... |
03:08 | <@Consul> | But for consistency, I want to do that with the one-output components as well. |
03:09 | <@Consul> | Like: object.process(input1, output1); object2.process(input1,output1,output2); and so on... |
03:09 | <@ToxicFrog> | At this point I really don't know enough about your design to help there, but on the face of it it sounds reasonable |
03:10 | < Bob_work> | Ok, to display a long int, it's %ld....no? |
03:10 | <@Consul> | Well, one issue comes in when a particular input or output is optional. |
03:11 | | * Bob_work hates his book and whoever wrote it |
03:13 | <@ToxicFrog> | Bob_work: yep, it is |
03:13 | <@ToxicFrog> | If you're on *nix, you can $ man 3 printf |
03:13 | <@ToxicFrog> | For all the gory details |
03:13 | <@ToxicFrog> | cplusplus.com also has a reference for the C standard library |
03:16 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
03:21 | | * Bob_work has yet to fully understand libraries. |
03:21 | < Bob_work> | I'm sure we'll be getting to them soon, at the pace that this teacher is moving. |
03:22 | <@ToxicFrog> | In this context, "the C standard library" is the stuff you get with <stdio.h>, <string.h>, <math.h>, and whatnot |
03:23 | <@ToxicFrog> | Available to all C programs unless you explicitly say otherwise or are building for a very weird environment. |
03:23 | | Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code |
03:23 | | mode/#code [+o Reiver] by ChanServ |
03:23 | <@ToxicFrog> | (actually, <math.h> is libm, isn't it? Disregard that part.) |
03:23 | <@ToxicFrog> | As for using other libraries, and writing your own - yeah, they'll get to that. It's not hard. |
03:23 | | * Bob_work face palms again. |
03:24 | < Bob_work> | Ok, apparently putting a non-whole number in my first scanf field skips over the next scanf field |
03:25 | < Bob_work> | nm, was screwing around with it. Fixed now. |
03:30 | | C_tiger [~c_wyz@Nightstar-4230.hsd1.ca.comcast.net] has quit [Connection reset by peer] |
03:45 | | Thaqui [~Thaqui@121.98.137.ns-13370] has joined #code |
03:45 | | mode/#code [+o Thaqui] by ChanServ |
03:45 | | RBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has joined #Code |
03:48 | | DiceBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has quit [Ping Timeout] |
03:48 | | RBot is now known as DiceBot |
04:02 | <@McMartin> | There we go. |
04:02 | <@McMartin> | Xubuntu on OS X: Success. |
04:02 | <@McMartin> | Now to turn it into an appliance so I can actually use it at work too >_> |
04:05 | < Bob_work> | You're loading it on a toaster, aren't you? |
04:06 | <@McMartin> | I could make it think it was on one. |
04:06 | <@McMartin> | But no; I'm actually going to be running it in a virtual machine on a fairly powerful system. |
04:07 | < Bob_work> | cool |
04:08 | <@McMartin> | The idea being if I have to test out some POSIX stuff on a windows dev box, instead of rebooting or hunting up another machine, I just go to the Xubuntu window and try it out directly. |
04:09 | < Bob_work> | POSIX....that sounds familiar |
04:09 | <@McMartin> | "Any version of UNIX ever" |
04:09 | < Bob_work> | AH! Gotcha |
04:09 | <@McMartin> | POSIX is the standard to which they all adhere. |
04:10 | < Bob_work> | Knew that sounded familiar. |
04:10 | <@McMartin> | (Windows supports some of the substandards - you pretty much *have* to if you want C to work on your OS - but not all of them.) |
04:12 | | * Bob_work is chasing links for his Programmer Minds vs Analysts Minds |
04:12 | < Bob_work> | research paper for Systems Analysis and Design |
04:13 | < Bob_work> | an interesting group: ppig.org |
04:15 | | RBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has joined #Code |
04:17 | | DiceBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has quit [Ping Timeout] |
04:17 | | Reivles [~reaverta@Admin.Nightstar.Net] has joined #Code |
04:17 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
04:17 | | RBot is now known as DiceBot |
04:26 | | Reivles is now known as Reiver |
04:59 | | RBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has joined #Code |
05:00 | | DiceBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has quit [Ping Timeout] |
05:01 | | RBot is now known as DiceBot |
05:31 | | Vornotron [~vorn@64.252.140.ns-11665] has joined #code |
05:31 | | Vornicus [~vorn@ServicesOp.Nightstar.Net] has quit [Ping Timeout] |
06:28 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
06:35 | | Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code |
06:35 | | mode/#code [+o Reiver] by ChanServ |
06:39 | | DiceBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has quit [Ping Timeout] |
06:40 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
06:43 | | Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code |
06:43 | | mode/#code [+o Reiver] by ChanServ |
06:49 | | DiceBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has joined #Code |
06:49 | | crem [~moo@Nightstar-28703.adsl.mgts.by] has quit [Connection reset by peer] |
06:49 | | crem [~moo@Nightstar-28703.adsl.mgts.by] has joined #code |
06:56 | | Vornucopia [~vorn@64.252.130.ns-21961] has joined #code |
06:56 | | Vornotron [~vorn@64.252.140.ns-11665] has quit [Ping Timeout] |
06:58 | | Vornucopia is now known as Vornicus |
07:04 | | AnnoDomini [AnnoDomini@Nightstar-7126.neoplus.adsl.tpnet.pl] has joined #Code |
07:04 | | mode/#code [+o AnnoDomini] by ChanServ |
07:29 | | DiceBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has quit [Ping Timeout] |
07:30 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
07:36 | | Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code |
07:36 | | mode/#code [+o Reiver] by ChanServ |
07:38 | | DiceBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has joined #Code |
07:58 | | RBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has joined #Code |
07:59 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
07:59 | | DiceBot [~Reiver@Nightstar-9734.xdsl.xnet.co.nz] has quit [Ping Timeout] |
08:00 | | RBot is now known as DiceBot |
08:05 | | Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code |
08:05 | | mode/#code [+o Reiver] by ChanServ |
08:05 | | Bob_work [~c6b3e33a@Nightstar-23098.shawnetworks.com] has quit [Quit: CGI:IRC (Session timeout)] |
08:11 | | C_tiger [~c_wyz@Nightstar-4230.hsd1.ca.comcast.net] has joined #code |
08:16 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
08:22 | | Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code |
08:22 | | mode/#code [+o Reiver] by ChanServ |
08:48 | | You're now known as TheWatcher |
08:51 | | Vornicus is now known as Vornicus-Latens |
09:01 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout] |
09:01 | | Reivles [~reaverta@Admin.Nightstar.Net] has joined #Code |
09:29 | | Attilla [~The.Attil@92.22.195.ns-12776] has joined #code |
09:29 | | mode/#code [+o Attilla] by ChanServ |
11:30 | | Thaqui [~Thaqui@121.98.137.ns-13370] has left #code [He was a wise man who invented beer - Plato] |
11:34 | < Reivles> | A question of technical and legal conundrums: Is it possible, technically and/or legally, to have a peice of software that is OGL, but data files (aka content) that is closed-source, paid-for, and secured from piracy? |
11:35 | | * Reivles was fiddling with the GURPS character generator. The paid for one is a peice of ass, the open-source one is decently usable but lacks half the data. |
11:37 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has joined #Code |
11:37 | | mode/#code [+o gnolam] by ChanServ |
11:55 | < jerith> | *GPL? |
11:55 | < jerith> | Yes. |
11:55 | < jerith> | Data is input, not code. |
11:55 | < jerith> | It's not linked in, it's read at runtime. |
11:56 | < jerith> | It's tricky to DRM, though. |
12:01 | < Reivles> | Hm. Do public keys work if the code behind them is open source? |
12:01 | < jerith> | Sure. |
12:01 | < jerith> | You need to keep the key secure. |
12:01 | < jerith> | The problem is that the key needs to be present to decrypt the data and thus it can be intercepted. |
12:01 | < Reivles> | Hm. That'd be the hard part, aye. |
12:01 | < jerith> | Especially since the code is available. |
12:02 | < Reivles> | Has this been worked around at all? |
12:02 | < jerith> | This is the reason DRM is doomed. |
12:02 | < jerith> | Only by obfuscation and closed hardware platforms. |
12:02 | | * Reivles is mostly pondering 'just enough DRM to make it nontrivial without changing the source code, but illegal enough to do so that official versions of the software Behave Themselves. |
12:03 | < Reivles> | You cannot fundamentally prevent someone from cracking your software, afterall. |
12:04 | < jerith> | Indeed. |
12:04 | < jerith> | If you can view something, you can copy it. |
12:04 | < jerith> | DRM is just there to make it harder. |
12:25 | <@TheWatcher> | And, speaking as someone who, once upon a time, used to crack such things - DRM is really just seen as a challenge by the crackers, and the more time and expense you shovel into the black hole that is trying to come up with it, the more interest you'll get from crackers |
12:26 | < Reivles> | TW: This is why I'm pretty much after "Joe Average cannot download the official (open source) character generator, and then download the data files, and expect them to work first time." |
12:26 | < Reivles> | Even if it's all of ten minutes work to crack it, this means you are still using a cracked version. *shrug* |
12:26 | <@TheWatcher> | Or you just download the already cracked version |
12:26 | < Reivles> | That's what I mean, though. |
12:27 | <@TheWatcher> | so? |
12:28 | | * Reivles shrugs. Is strying to think of a way a publisher can release the content of their stuff with a modicum of security present, while leaving the actual application open-source, because close-source character generators are frankly irritating. |
12:28 | <@TheWatcher> | Simple answer: you can't. |
12:28 | < Reivles> | ("Oh, yeah, there's a known bug in how it adds up costs. We'll try fix that next version." <= fail.) |
12:28 | < Reivles> | I did say a /modicum/ of security. :p |
12:28 | <@TheWatcher> | See also: my previous response. |
12:29 | <@TheWatcher> | see also: 6600 seeds of cracked Spore, despite insanely expensive DRM attempts by EA. |
12:29 | <@TheWatcher> | It really, really, will not get you anywhere. It's a complete and utter waste of time. |
12:30 | < Reivles> | At which point we're left with the current solution: Don't release it online. Ach, vell. |
12:30 | < Reivles> | (I was mostly pondering things like watermarking, really.) |
12:31 | <@TheWatcher> | (elucidate) |
12:31 | < Reivles> | A lot of game rule PDFs are released with digital watermarking attached as a form of !DRM. |
12:31 | <@TheWatcher> | Mmhmmm... |
12:32 | < Reivles> | Not that they cannot be removed, insomuch as it's hoped to be enough of a fiddle that the average user won't bother - but having it signed under their name is enough of a concern to encourage them to not instantly share it on the interwebs. |
12:33 | | * TheWatcher ponders |
12:34 | <@TheWatcher> | So you're thinking something like watermarking the datafiles, and the program will only read watermarked ones? |
12:36 | <@TheWatcher> | (which, even if anyone has any quarms about distributing watermarked files, can be trivially circumvented by just removing the check from the program, and distributing that with the datafiles with the watermark removed, which should be pretty trivial...) |
12:37 | <@TheWatcher> | (hell, you can even pull tricks like that without the source code) |
12:40 | <@TheWatcher> | (rule of thumb with any kind of DRM/copy protection: all it takes is one person to crack it, and from that point anyone who is going to pirate your stuff is going to be using the already cracked version, not yours. So your protection is only any good for as long as it takes one person to crack it, not anyone) |
12:41 | <@TheWatcher> | (corrollary: the more restrictive and invasive you make your DRM, the more likely honest people are to just use the pirated version) |
12:47 | < Reivles> | The corrollary is precisely why I'd be attempting to ensure the program was very gentle with its DRM. |
12:48 | < Reivles> | If people are going to crack it, they're going to crack it. It is counterproductive to attempt to prevent this from happening. |
12:48 | < drnick> | just remove DRM entireley |
12:49 | < Reivles> | OTOH, if you make it so that legit copies can use non-legit datafiles with absolutely no effort on the users part, that becomes as-good-as-freeware. |
12:49 | < Reivles> | You don't want that either, generally. |
12:50 | <@TheWatcher> | If they have non-legit datafiles, they'll have a program that can read them too |
12:50 | < drnick> | so make it hard for legitimate users to use |
12:52 | <@TheWatcher> | Reiv: if the program contains checks that will prevent it using non-legit datafiles, then anyone distributing non-legit ones will be distributing a program that can read them, too. So if a user can get the non-legit datafiles, they'll probably get the program in the same archive. |
12:52 | < drnick> | You know what the best copy-protection scheme is? |
12:52 | < drnick> | Guilt. |
12:53 | < drnick> | that and making a superior product worthy of purchase |
12:53 | < drnick> | Much, much more effective than any other copy-prevention scheme. |
12:53 | <@TheWatcher> | Indeed. |
12:54 | <@TheWatcher> | I've said it before, and I'll no doubt say it again: the only people that DRM inconveniences are legitimate users, because non-legit ones never even see it. |
12:54 | < drnick> | Can someone please give me voice so I can paste a URL? |
12:59 | | mode/#code [+v drnick] by Reivles |
13:00 | <+drnick> | Mark Shuttleworth wrote an excellent essay on why DRM doesn't work: http://www.markshuttleworth.com/archives/96 |
13:00 | < Reivles> | TW: So your solution to protecting IP is to release it as outright freeware? |
13:01 | <+drnick> | It's not freeware, you still have copyright on it. People who choose to infringe on your copyright will do so no matter what DRM scheme you choose to encumber your product with. |
13:02 | <@TheWatcher> | Reiv: No. It's to admit that if people are going to copy it, they are going to do so anyway. So let legitimate users, who actually want to use your stuff, do so with the minimum of hassle and restriction. As drnick says, releasing something sans-DRM != freeware |
13:50 | <@ToxicFrog> | What TW and drnick said. |
13:50 | < Reivles> | Ah, well. |
13:51 | | * Reivles shall put up with GURPS being unavalable in any useful format, then~ |
13:53 | <@TheWatcher> | make your own, open RP system? ;P |
13:54 | <@ToxicFrog> | I note that "release the engine for free and the data for pay" has been done |
13:54 | <@ToxicFrog> | That's how Quake 1 and 2 are currently licensed, for example |
13:55 | <@ToxicFrog> | Chrome did something similar - the game comes with complete engine source and you can redistribute modified copies of the engine, but you can't redistribute the game data |
13:55 | <@ToxicFrog> | But none of this is backed up with DRM, because DRM doesn't fucking work. |
13:57 | < Reivles> | ... speaking of Chrome: Opinions on the GBrowser?~ |
13:57 | <@ToxicFrog> | Different Chrome~ |
13:57 | < Reivles> | Yes, I'm curious anyway~ |
13:58 | <@ToxicFrog> | But, short form: very cool concepts, but their website is insultingly bad and the browser itself needs a lot of work on the interface-and-configurability front |
13:58 | < Reivles> | In other words, "Give it six months and Firefox might be in trouble"? |
13:58 | <@ToxicFrog> | No clue |
13:59 | <@ToxicFrog> | FF has loads of marketing behind it and as a result is rather successful despite not actually being very good in the first place |
13:59 | <@AnnoDomini> | IMO, it came out too late. |
13:59 | <@AnnoDomini> | There's already several very good browsers. |
13:59 | <@ToxicFrog> | It is almost certain to come down to propaganda rather than quality, and FF has the advantage there |
13:59 | <@ToxicFrog> | AnnoDomini: none that do what Chrome is doing, but yes |
13:59 | < Reivles> | Google is propaganda, though... |
13:59 | <@ToxicFrog> | Reivles: yeah, that's the OTOH: everyone uses Google |
13:59 | <@AnnoDomini> | ToxicFrog: What IS Chrome doing? |
14:00 | <@ToxicFrog> | OTGH, the fact that the dev team apparently hate everyone who visits their website or wants to download their software could be a problem |
14:00 | | * Reivles will be sticking to Opera until he sees a conclusive reason to change. Chrome might, miiiiight be enough to do it, but it'd need to get decent mouse gestures and powerful tab support before he'd even look twice at it. |
14:01 | <@ToxicFrog> | AnnoDomini: each tab is a seperate process. Higher overhead, but total memory reclamation when you close a tab, much more robustness (eg, when flash crashes it takes only a single tab with it rather than the entire browser), and better security since each one is wholly sandboxed. |
14:01 | <@ToxicFrog> | Also lets you do some cool things with translating between tabs and windows, etc |
14:02 | <@AnnoDomini> | Interesting, but it doesn't really have anything an average user wants, I think. |
14:02 | <@MyCatVerbs> | Also, "higher overhead" is basically irrelevant these days. Srsly, IPC is so cheap we just don't care anymore. |
14:02 | <@ToxicFrog> | The average user doesn't want a browser that won't slow down horribly or crash outright whenever a flash advert comes up? |
14:02 | <@MyCatVerbs> | Even on Windows, you'd have to be forking up *hundreds* and even *thousands* of new processes every second in order to actually make a dent. |
14:02 | <@ToxicFrog> | The average user doesn't want a browser that won't slow their machine to a crawl because they're constantly hitting swap after a few hours of using it? |
14:03 | < Reivles> | MCV: You've never suffered browser slowdown when using FF or IE? |
14:03 | < Reivles> | Really? |
14:03 | <@ToxicFrog> | Anyways, it's all moot at the moment, because the UI Just Isn't There yet. |
14:03 | <@MyCatVerbs> | AnnoDomini: er. The average user *really* likes it when the software is twice as fast as it was yesterday. Speed alone is a feature, though admittedly Chrome is close to devoid of any *other* features. |
14:03 | <@MyCatVerbs> | Reivles: that's not what I'm saying at all. |
14:04 | <@ToxicFrog> | It does lots of cool stuff under the hood, but until the UI is actually pleasant to use I can't see it getting a foothold. |
14:04 | <@AnnoDomini> | MyCatVerbs: I thought ToxicFrog said it had HIGHER overhead. |
14:04 | <@MyCatVerbs> | Reivles: I'm talking about fork/exec + IPC overhead, which is what Chrome incurs. |
14:04 | <@AnnoDomini> | Meaning slower. |
14:04 | <@ToxicFrog> | So we'll see what it's like once it's out of beta. |
14:04 | <@ToxicFrog> | AnnoDomini: no, actually |
14:04 | <@ToxicFrog> | More memory usage per tab |
14:04 | <@MyCatVerbs> | AnnoDomini: it does. fork/exec + IPC incurs - in theory - a lot of overhead. |
14:04 | <@ToxicFrog> | It's faster (or appears to be) because no tab will block any other |
14:05 | | * AnnoDomini looks up. You totally said it had higher overhead, ToxicFrog. |
14:05 | <@ToxicFrog> | Yes |
14:05 | <@MyCatVerbs> | AnnoDomini: but in practice, the gains from doing that outweigh the extra overhead by some arbitrary number of orders of magnitude. |
14:05 | <@ToxicFrog> | I'm sorry, should I have specified "higher memory overhead" rather than "higher CPU overhead"? |
14:05 | <@MyCatVerbs> | ToxicFrog: no, it has a little CPU overhead, too. :) |
14:05 | <@ToxicFrog> | Opening a tab costs more cycles, but not noticeably more. |
14:05 | <@AnnoDomini> | I see. |
14:05 | <@ToxicFrog> | Opening a tab costs more memory, but you get all of the memory back when it's closed, which is not the case with current tabbed browsers. |
14:06 | <@ToxicFrog> | And since tabs do not block each other it's generally more responsive. |
14:06 | <@MyCatVerbs> | Also having multiple processes costs more memory, but not noticably more because browsers don't actually *need* to share very many data structures between tabs. Those that are are as a rule pretty small. |
14:06 | <@ToxicFrog> | Anyways. Class time. BBL. |
14:07 | <@AnnoDomini> | Well, I don't see why I'd want to switch over from Opera, which works at the speed of bandwidth for me. |
14:07 | <@MyCatVerbs> | The extra overhead that Chrome imposes is somewhere on the order of "running the canonical Hello World in Perl". |
14:07 | <@MyCatVerbs> | AnnoDomini: then don't. That's good enough ^_^. |
14:08 | <@AnnoDomini> | Yeah. |
14:09 | <@MyCatVerbs> | AnnoDomini: but moar competition is always good. Not to mention that a) the Google name on it might be enough to get it into companies who won't trust anyone without a huge brand name and b) moar competition!!! Which probably won't hurt significantly in practice since they're publishing under open-source licences. |
14:09 | < Reivles> | TF: Opera doesn't reclaim your memory properly? |
14:09 | <@MyCatVerbs> | AnnoDomini: oh and the javascript vm in it is rouuuuughly ten times quicker than Opera's. |
14:10 | <@MyCatVerbs> | AnnoDomini: conservatively. IMO, that shouldn't matter, because what sites ever use Javascript that actually have interesting contents? Google Maps and, uh...? |
14:11 | < Reivles> | Google apps. |
14:12 | <@MyCatVerbs> | I don't really care much about them. Gmail is nice, but the only interesting use of javascript there is to make it a bit more responsive. The chat client is nice, but I'd be just as happy to run Psi or Pidgin or something anyway. |
14:13 | <@MyCatVerbs> | To be fair, Google have one Hell of a vested interest in making everybody use faster Javascript interpreters, heh. :) |
14:13 | <@AnnoDomini> | Word. |
14:14 | <@MyCatVerbs> | What'd be interesting to see would be Google selling V8 to Opera under a closed-source-friendly licence, so that *everyone* (with half a clue) can have a super-fast javascript VM. |
14:14 | <@MyCatVerbs> | IE* lusers don't count, naturally. ;P |
14:15 | < Reivles> | Everyone? What about FF? |
14:15 | <@AnnoDomini> | FF is written in JS. :P |
14:15 | < Reivles> | My point stands~ |
14:15 | <@MyCatVerbs> | V8's open-source. So's FF. They can work something out. |
14:16 | <@MyCatVerbs> | Oh wait, it's BSD-licenced. |
14:16 | <@MyCatVerbs> | 3BSD. Heh. So -everyone- can take it, no worries. |
14:17 | <@MyCatVerbs> | Hell, it'd be entirely fair game for this to end up in IE9. :) |
14:17 | <@MyCatVerbs> | And it's sake to upcast 3BSD to both MPL and GPL*, so that's fine too. |
14:18 | <@MyCatVerbs> | Reivles: I presume FF probably wouldn't anyway, though, they've been working on their own fast javascript VM for some time now. It should be getting properly spiffy soon enough. |
14:35 | | Reivles is now known as Reiver |
14:55 | <+drnick> | MyCatVerbs: its still ludicrous that they want us to accept a EULA to use a free software browser |
14:57 | <+drnick> | Reiver: i notice that tons of GURPS source books are up on pirate bay |
14:58 | < Reiver> | Nick: Yes. And? |
14:58 | <+drnick> | So, it is availible in a useful format, just not legally. |
14:58 | <@MyCatVerbs> | drnick: yeah, that's insane. |
14:59 | <+drnick> | MyCatVerbs: no, that's 20th century thinking about media in the 21st century |
14:59 | <@MyCatVerbs> | I don't seem to remember the 20th century being quite that crazy. |
15:00 | <@gnolam> | MyCatVerbs: ... the JavaScript in Gmail making it /more/ responsive? Hah. |
15:00 | <@MyCatVerbs> | And applying the wrong century's thought modes usually *is* considered insane, at least if that involves spanning more than one. |
15:00 | <@gnolam> | I have to use the "old version" just to have it usable at all, and even then it's slow as all fuck. |
15:01 | <@gnolam> | Unfortunately, there are no good alternatives. :P |
15:01 | <@MyCatVerbs> | gnolam: sure, if you're limited entirely by network latency and not by CPU speed. |
15:01 | <@MyCatVerbs> | gnolam: unfortunately, Javascript interpreters are slow and shit and generally buggy, so if your CPU isn't ridiculously fast, it's a huge sack of fail. |
15:01 | | * MyCatVerbs listens to emo music while Perl 5 installs. :/ |
15:02 | <@gnolam> | And last I checked, Chrome was a privacy /nightmare/. |
15:02 | <+drnick> | google is a privacy nightmare |
15:03 | <@MyCatVerbs> | gnolam: doesn't it send every single URL you browse to to Google, except in incognito mode (and I'm not even sure about then)? |
15:03 | < Reiver> | Naw. Only 1 in 50. |
15:04 | <+drnick> | MyCatVerbs: are you talking about the anti-phishing protection? |
15:04 | <@gnolam> | Not just that. |
15:04 | <@MyCatVerbs> | I find myself unable to panic. Even -with- all of this, it's still possible for someone to maintain a fork that merely drops the stupid EULA and spying. |
15:04 | <@MyCatVerbs> | drnick: that's a pretty good excuse. ;P |
15:04 | <@MyCatVerbs> | Ah, whorebiscuits. Who the Hell wants to install GNU gettext now? |
15:05 | <+drnick> | MyCatVerbs: How I think it works is it just downloads the anti-phishing list and compares the urls locally |
15:05 | <+drnick> | I'm not sure though. |
15:06 | < Reiver> | I very much doubt that. An anti-phishing list would be multiple megabytes. |
15:06 | <@MyCatVerbs> | That's a biiiig list. Incremental updates on it wouldn't hit the network too hard though, I guess. |
15:06 | <@gnolam> | There's also http://src.chromium.org/svn/trunk/src/chrome/browser/metrics_service.cc and the insidious Google Update. |
15:06 | <@MyCatVerbs> | Still. If you really don't trust Google - fork! The code is _right there_. |
15:06 | <@MyCatVerbs> | This is, like, one half of what the GPL is even _for_. |
15:07 | <+drnick> | google has usually been pretty upfront when they greviously invade your privacy |
15:07 | <@MyCatVerbs> | Perhaps someone just let the lawyers off their leash by mistake? |
15:07 | <+drnick> | MyCatVerbs: i'm betting thats the case |
15:07 | <+drnick> | the EULA they had at first was the standard one they copy and paste everywhere |
15:07 | <@MyCatVerbs> | "Oh yeah and stick this clause in too." "Won't users object?" "Fuck you, you're not a lawyer, I am." etc. |
15:08 | <@MyCatVerbs> | Or yeah, default EULA. |
15:08 | <+drnick> | I dont think they've actually released any foss software before |
15:09 | <@MyCatVerbs> | I have a vague feeling that they've dropped patches for a lot of projects. |
15:09 | <+drnick> | definitely, I know they're contributors to wine |
15:09 | | crem [~moo@Nightstar-28703.adsl.mgts.by] has quit [Connection reset by peer] |
15:09 | | crem [~moo@Nightstar-28703.adsl.mgts.by] has joined #code |
15:09 | <+drnick> | but I think this is their first standalone FOSS product |
15:11 | <@MyCatVerbs> | No, they've dropped a lot of libraries. For instance, there's a nice one for deliberately dropping core files at arbitrary points in your program's run. |
15:15 | <@MyCatVerbs> | I have a vague feeling they currently employ Larry Wall, though heck knows what for. |
15:16 | <@MyCatVerbs> | Probably Google do too, but I'd rather appeal to heck. It's got more of a personal feel to it. |
15:17 | <+drnick> | MyCatVerbs: they employ guido, not larry |
15:46 | | Vornotron [~vorn@64.252.41.ns-4218] has joined #code |
15:47 | | Vornicus-Latens [~vorn@ServicesOp.Nightstar.Net] has quit [Ping Timeout] |
16:37 | < Shoukanjuu> | That settles it. No more jalepenos within 6 hours of passing out. |
16:39 | <@gnolam> | Sleepwalk much? |
16:40 | <@MyCatVerbs> | drnick: I had a vague feeling they employ Larry too. |
16:46 | < Shoukanjuu> | It's not so much sleepwalking |
16:47 | < Shoukanjuu> | You know when you try to sleep, but you can't seem to sleep, since every time you close your eyes you hallucinate or something? It happens when you're 'too tired to sleep,' too. |
16:47 | < Shoukanjuu> | Tossed and turned, in and out of consciousness, all night. x+x |
17:07 | <@gnolam> | YES! |
17:07 | | * gnolam dances a happy dance. |
17:09 | < Shoukanjuu> | That's cool. Dance at my inconvenience. Joking aside, make a breakthrough? |
17:09 | <@gnolam> | Yes. I got rid of the dyslexic. |
17:10 | <@gnolam> | Now, I realize this sounds sounds heartless and mean, but GOD. Coding with a guy who types at 1 WPM is bloody torture. :P |
17:11 | < Shoukanjuu> | O_O; |
17:11 | < Shoukanjuu> | Okay, there's a fine line between heartless and mean |
17:11 | < Shoukanjuu> | And telling the truth |
17:12 | < Shoukanjuu> | Sometimes |
17:12 | < Shoukanjuu> | Why is he coding, if he types at 1WPM? Shouldn't be like...making words with his blocks, or something? |
17:26 | <@MyCatVerbs> | Carving his code into the side of wooden blocks. |
19:29 | <@gnolam> | Don't get me wrong, I like the guy. I just don't feel that CODING should be his thing. Or something he should ever touch, under any circumstances. |
19:31 | < Shoukanjuu> | XD |
19:32 | <@gnolam> | Nghgmnghghgh. |
19:32 | <@gnolam> | Is there some law that electronics datasheets have to be written as cryptically as possible? |
19:32 | <@gnolam> | Because I' |
19:32 | <@gnolam> | m at the verge of giving up here. |
19:34 | <@gnolam> | All I want to know is if I can use these optocouplers at TTL levels. Sounds simple enough. |
19:34 | <@gnolam> | But nooooooooo. |
19:35 | <@gnolam> | Defining their measurements is apparently beneath electronics manufacturers. :P |
20:24 | < Shoukanjuu> | I'm feeling particularly crazy. |
20:25 | < Shoukanjuu> | I have a very lofty idea, of collecting electronics... |
20:25 | < Shoukanjuu> | And measuring them |
20:25 | < Shoukanjuu> | Then making a...database of them. Mmm... |
20:25 | < Shoukanjuu> | That would take forever XD |
20:48 | <@AnnoDomini> | gnolam: I have an idea how you feel after KM. |
20:48 | <@AnnoDomini> | Attended my first class today. x_X |
21:01 | <@ToxicFrog> | http://algebraicthunk.net/~dburrows/blog/entry/package-management-sudoku/ |
21:01 | <@ToxicFrog> | Solving sudoku with apt-get. |
21:05 | <@AnnoDomini> | How uncanny. |
22:16 | <@gnolam> | AnnoDomini: Krav Maga? |
22:17 | <@AnnoDomini> | Yeah. |
22:18 | <@gnolam> | Ah. Welcome to the world of bruised wrists. ;D |
22:19 | <@gnolam> | (Assuming your class also starts with teaching the 360 outside defense) |
22:19 | <@AnnoDomini> | We started with defense against grabbing and choking. |
22:20 | <@gnolam> | Ah. A classic. :) |
22:20 | <@gnolam> | Especially if someone forgets to wear a cup. Hours of fun for the whole family. |
22:20 | <@gnolam> | Except the forgettee, who won't be making any more family. |
22:20 | <@AnnoDomini> | Well, none of the newbies had protectors, so the instructor told everyone to be careful. |
22:21 | <@AnnoDomini> | Nobody seems to have been injured, except one chick who had an knee injury from before. |
22:23 | <@gnolam> | Well, martial arts are safer than ping pong. |
22:25 | <@AnnoDomini> | Ping Pong, the modern blood-sport. |
22:25 | <@gnolam> | Hmm. Full contact ping pong. There's an idea for a game. |
23:01 | | AnnoDomini [AnnoDomini@Nightstar-7126.neoplus.adsl.tpnet.pl] has quit [Quit: "I just want you to know... I faked all the orgasms." "So? Mine were real." "...asshole."] |
23:38 | | You're now known as TheWatcher[t-2] |
23:44 | | You're now known as TheWatcher[zZzZ] |
--- Log closed Tue Sep 09 00:00:31 2008 |