--- Log opened Tue Mar 16 00:00:35 2010 |
00:25 | | Attilla [Attilla@FBC920.480E8C.93028B.0DE757] has quit [Ping timeout: 121 seconds] |
00:26 | | Attilla [Attilla@FBC920.0EA685.2404F0.127022] has joined #code |
00:26 | | mode/#code [+o Attilla] by Reiver |
00:30 | | You're now known as TheWatcher[T-2] |
00:31 | <@ToxicFrog> | Holy shit |
00:31 | <@ToxicFrog> | Mint actually works with my internal wireless card |
00:31 | <@ToxicFrog> | this is unprecedented |
00:34 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code |
00:41 | | You're now known as TheWatcher[zZzZ] |
01:06 | | Attilla [Attilla@FBC920.0EA685.2404F0.127022] has quit [[NS] Quit: ] |
02:13 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: *hums* Can't stay now!] |
02:39 | | Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has quit [Ping timeout: 121 seconds] |
03:09 | | Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code |
03:18 | | Orthia [orthianz@Nightstar-f7b2ee07.xnet.co.nz] has joined #code |
03:22 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?] |
03:43 | | Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Connection reset by peer] |
03:49 | | Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
03:50 | | Syloqs_AFH is now known as Syloqs-AFH |
05:21 | | * Vornicus reads up on LZW, determines it to be pretty damn cool. |
05:25 | <@Vornicus> | I really don't see how using a trie helps though! |
05:30 | <@Vornicus> | Oh, there it is. You use it in the encoding process: the trie stores the available dictionary indices. |
05:34 | <@Vornicus> | decoding on the other hand is a different problem; I suspect the most efficient would be to maintain a... shit, how would I do that. you've got a vector-oid, but you don't want to make your memory sizes weird... ah! |
05:38 | <@Vornicus> | Your vector contains an (index, next_character) pair, possibly with a length member too so you can do this trick without a second pass. |
05:39 | <~Reiver> Yeah, the tries are the bit that scares me |
05:39 | <~Reiver> I think even the decompression is less troubling. |
05:42 | <@Vornicus> | Okay, I have the entire algorithm designed in my head. Now, to write it down. |
05:49 | <@Vornicus> | The short form is this: your binary tree thing has a key and a value. You seek based on the key; the value contains 1. the current index number, and 2. the root node of the binary tree that is the appropriate child node of the trie. |
05:51 | <~Reiver> Expand 2 if you could? |
05:51 | <@Vornicus> | Each node in the trie is itself a binary tree, right |
05:52 | | Rhamphoryncus [rhamph@Nightstar-8931f88f.abhsia.telus.net] has quit [Client exited] |
05:53 | <@Vornicus> | And when we talk about a binary tree, we usually throw around just its root node. |
05:55 | <@Vornicus> | So when we need to talk about a node in the trie - say, in the appropriate location in that trie-node's parent - we instead talk about that trie-node tree's root. |
05:59 | <@Vornicus> | Did that make sense? |
06:11 | <~Reiver> I guess so. |
06:11 | <~Reiver> Though... if we make a trinary tree, is that simpler? |
06:12 | <~Reiver> No need for shuffling around inside linked lists in the node, instead we have one Left, one Right, one Next Trie Down The List. |
06:12 | <@Vornicus> | No. |
06:12 | <@Vornicus> | --um |
06:12 | <@Vornicus> | that's what we're already doing. |
06:12 | <@Vornicus> | key and value are the content of a node. |
06:13 | <@Vornicus> | value then includes a link to the child trie. |
06:18 | <~Reiver> Aaah, so it /is/ a trinary tree |
06:18 | <~Reiver> Well, kinda. |
06:18 | <@Vornicus> | Of a sort, yes. |
06:18 | <@Vornicus> | Now, there's a couple of issues here which can be sorted out in a variety of ways. |
06:18 | <~Reiver> But okay, that makse more sense than having one leg for Item, one leg for Next Tree |
06:18 | <~Reiver> We instead have two legs for Trees, one leg for Item. |
06:18 | <~Reiver> OK? |
06:19 | <@Vornicus> | The Big One is that very often you have Next-Trie nodes that are null because there isn't a next trie despite having a value. |
06:21 | <@Vornicus> | There's two ways to deal with this. One is to special case node.value.child == null; the other is to encapsulate a tree into an actual Tree object that is not itself a tree node. |
06:21 | <~Reiver> what |
06:23 | <@Vornicus> | where the Tree object contains a Node object that is the tree's root, and it knows how to deal with an empty tree. |
06:24 | <@Vornicus> | (this also has the advantaget that you can replace the naive, occasionally smacked-down binary tree with the harder-to-break Red-Black, if you want to, and it won't change anything!) |
06:26 | <@Vornicus> | ...you know, a couple of years ago, I would have looked at LZW and said "damn, how did anyone implement that?" |
06:28 | | AnnoDomini [annodomini@Nightstar-5179647d.adsl.tpnet.pl] has joined #code |
06:28 | | mode/#code [+o AnnoDomini] by Reiver |
06:28 | <~Reiver> Now you're "Oh, that's ingenious" and carry on from there? :p |
06:28 | <@Vornicus> | Quite. |
06:28 | | * Reiver is at the "I can see how you do it, as God Playing With Numbers. I cannot see how a stepwise program puzzles it out." stage. |
06:29 | < Namegduf> | Oh, hmm, I thought of throwing this here a while ago, but was too sleepy to really understand. |
06:29 | < Namegduf> | Does anyone here fancy trying to explain precisely what object modelling is, well, good for? |
06:29 | <@Vornicus> | object modelling? |
06:29 | <@Vornicus> | you mean ORM stuff? |
06:30 | < Namegduf> | UML-using stuff. |
06:30 | < jerith> | <Kim> #define sizeof(x) rand() |
06:30 | <@Vornicus> | oh, UML. |
06:30 | < Namegduf> | jerith: I love that. |
06:30 | < jerith> | That's just pure evil. |
06:30 | <@Vornicus> | Kill. |
06:30 | < Namegduf> | Vornicus: That in reference to UML? |
06:30 | < jerith> | It's his quit-in-anger exit strategy. :-) |
06:30 | <@Vornicus> | I have never, ever seen UML used in anything but failure. |
06:31 | < jerith> | I've used bits of UML very successfully. |
06:31 | < jerith> | Sepcifically activity diagrams. |
06:31 | < Namegduf> | So far as I can tell, it looks like picking a bunch of nouns out of the description of what the system is for, creating fake class descriptions, and drawing lines between them. |
06:31 | < Namegduf> | I'm totally at a loss for how it actually assists in design. |
06:32 | < Namegduf> | I'm wondering if I'm "just not getting it". |
06:32 | < jerith> | There are tools that let you annotate the diagrams enough to turn them into code. |
06:32 | < jerith> | At which point you've invented a very inconvenient way to write code. |
06:33 | < jerith> | UML generated from code can be useful to get an overview of the shape of a codebase. |
06:33 | | Netsplit *.net <-> *.split quits: Alek, Orthia, Tarinaky, Thaqui, Taki^, PinkFreud |
06:35 | < Namegduf> | Hmm. |
06:35 | < Namegduf> | I can see using it to represent the real classes of a designed system in a pretty, readable layout. |
06:36 | < jerith> | It isn't useful enough to be worth drawing it by hand. |
06:37 | < jerith> | Athough high-level pseudo-UML on a whiteboard is a useful design tool at times. |
06:37 | < Namegduf> | The parts I've seen of it involved, before code was written or a design finished, writing class diagrams of "things the system may need to model" |
06:37 | < jerith> | Just don't try to turn that into documentation. |
06:37 | < Namegduf> | What kind of UML diagram, and what would you do with it? |
06:38 | < jerith> | A visual aid to a conversation about the design of the system. |
06:38 | | mode/#code [-o ToxicFrog] by ChanServ |
06:39 | < Namegduf> | Hmm. Similiar to generating it out of produced code, you'd use it to draw a design idea's structural model or behaviour? |
06:39 | | PinkFreud [WhyNot@NetworkAdministrator.Nightstar.Net] has joined #code |
06:39 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code |
06:39 | | * Vornicus bonklifies Kak. |
06:40 | | Alek [omegaboot@Nightstar-c531ef76.il.comcast.net] has joined #code |
06:40 | | Taki^ [Meh@Nightstar-39d785ef.consolidated.net] has joined #code |
06:40 | | Orthia [orthianz@Nightstar-f7b2ee07.xnet.co.nz] has joined #code |
06:41 | < jerith> | Namegduf: In an informal and transient way. Design scribblings more than anything else. |
06:41 | < Namegduf> | Okay. |
06:41 | < Namegduf> | I think what I've really missed is perhaps that it isn't good at, or maybe isn't even intended for, assisting in producing that design in the first place. |
06:41 | < Namegduf> | As opposed to representing it. |
06:42 | < Namegduf> | Well, aside in the way that representing it lets you look at it for alteration purposes. |
06:42 | < Namegduf> | Or refining/adding detail purposes. |
06:42 | < jerith> | I can't speak for intentions, but class diagrams really aren't a very good design tool. |
06:44 | < Namegduf> | Okay, thanks. |
06:50 | | Tarinaky [Tarinaky@Nightstar-3e77fc73.adsl.virginmedia.net] has joined #code |
06:50 | | * Vornicus determines that as easy as LZW actually /is/, he needs sleep. |
06:50 | < Namegduf> | Sleep well. |
06:52 | <@Vornicus> | Tomorrow I'll see how quickly I can implement an encoder/decoder. |
06:53 | <@Vornicus> | And then comes the hard part... Reiv, do you know whether he wants the thing to be msb or lsb? |
06:56 | < jerith> | Namegduf: I think UML's appeal is that damagement can look at pretty class diagrams and pretend they understand what's going on. |
06:57 | | Netsplit *.net <-> *.split quits: PinkFreud, Tarinaky, Thaqui |
06:57 | < jerith> | And then they can set unreasonable deadlines for actually writing the code, because that's just turning the UML into text. |
06:58 | | Netsplit over, joins: Thaqui, PinkFreud, Tarinaky |
06:58 | < Namegduf> | Haha. |
06:59 | < Namegduf> | Sounds likely. |
07:01 | | Vornicus is now known as Vornicus-Latens |
07:21 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [[NS] Quit: This computer has gone to sleep] |
07:24 | <~Reiver> So, Vorn |
07:24 | <~Reiver> What do I need to do to my lovely little tree to turn it into the cunning bit of code that will make up my trie? |
08:21 | | Tarinaky [Tarinaky@Nightstar-3e77fc73.adsl.virginmedia.net] has quit [Connection closed] |
08:29 | | You're now known as TheWatcher |
09:04 | | Tarinaky [Tarinaky@Nightstar-3e77fc73.adsl.virginmedia.net] has joined #code |
09:42 | | Attilla [Attilla@FBC920.0EA685.2404F0.127022] has joined #code |
09:42 | | mode/#code [+o Attilla] by Reiver |
09:51 | | Orth [orthianz@Nightstar-a1e9dec7.xnet.co.nz] has joined #code |
09:53 | | Orthia [orthianz@Nightstar-f7b2ee07.xnet.co.nz] has quit [Ping timeout: 121 seconds] |
09:56 | | Orth is now known as Orthia |
10:24 | | AnnoDomini [annodomini@Nightstar-5179647d.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds] |
10:26 | | AnnoDomini [annodomini@Nightstar-ad089503.adsl.tpnet.pl] has joined #code |
10:26 | | mode/#code [+o AnnoDomini] by Reiver |
11:01 | | Tarinaky [Tarinaky@Nightstar-3e77fc73.adsl.virginmedia.net] has quit [Ping timeout: 121 seconds] |
11:04 | < Orthia> | HAPPY BIRTHDAY REIVER!! |
11:13 | | Tarinaky [Tarinaky@Nightstar-84ed18c5.adsl.virginmedia.net] has joined #code |
12:25 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code |
13:00 | | * gnolam ponders C++ object memory layouts. |
13:03 | < Tarinaky> | Is anyone else using Firefox 3.6, and does anyone else have the problem where tool tip/hover text is invisible? |
13:09 | < gnolam> | Sorry. I use SeaMonkey. |
13:09 | < Namegduf> | Tarinaky: It works in other browsers, right? |
13:11 | | Alek [omegaboot@Nightstar-c531ef76.il.comcast.net] has quit [[NS] Quit: ] |
13:13 | | Alek [omegaboot@Nightstar-c531ef76.il.comcast.net] has joined #code |
13:26 | | PinkFreud [WhyNot@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
13:28 | | Alek [omegaboot@Nightstar-c531ef76.il.comcast.net] has quit [Ping timeout: 121 seconds] |
13:29 | | PinkFreud [WhyNot@NetworkAdministrator.Nightstar.Net] has joined #code |
13:31 | | Alek [omegaboot@Nightstar-c531ef76.il.comcast.net] has joined #code |
13:59 | | Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [Ping timeout: 121 seconds] |
15:33 | | Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has joined #code |
15:53 | < ToxicFrog> | Reiver: the thing is, from the point of view of the rest of the program, it does not (and should not) know that it is using a tree. It just has -something- which it can put dictionary entries into and get them back out of. |
15:53 | < ToxicFrog> | If you have a well defined interface to your tree (store, retrieve) it should be fine. |
15:54 | < ToxicFrog> | Argh. I have managed to completely bollocks up my keyboard layout in NX. |
16:00 | | Orthia [orthianz@Nightstar-a1e9dec7.xnet.co.nz] has quit [Ping timeout: 121 seconds] |
16:19 | < Namegduf> | Silverlight developer in front of me |
16:19 | < Namegduf> | Keep smiling. |
16:19 | | Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has quit [Ping timeout: 121 seconds] |
16:19 | | * TheWatcher ARGHs at WWW::Mechanize's taint check |
16:22 | | Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has joined #code |
16:35 | | Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has quit [Ping timeout: 121 seconds] |
16:41 | < Namegduf> | MS dev iterations: three weeks coding away, one week patching it up and fixing bugs ("stablisation") |
16:41 | < Namegduf> | It's... a 'realistic' model. |
16:42 | < Namegduf> | Strictly separate coding and testing, so devs aren't responsible for their bugs. |
17:07 | | Rhamphoryncus [rhamph@Nightstar-8931f88f.abhsia.telus.net] has joined #code |
17:16 | <@Vornicus-Latens> | Reiver: what you do to your tree to make it a trie is the thing I described; you give it a key and a valeu, and the value holds the link to the next tree. |
17:33 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code |
17:34 | < Tarinaky> | Namegduf: In chrome, yes. |
17:34 | < Namegduf> | Tarinaky: Okay, no clue, the. |
17:34 | < Namegduf> | *then |
17:39 | < celticminstrel> | ...what about Chrome? |
17:40 | | RichardB_ [mycatverbs@Nightstar-16573ac5.bb.sky.com] has quit [Ping timeout: 121 seconds] |
17:44 | < ToxicFrog> | Namegduf: aaaaaaargh |
17:44 | < ToxicFrog> | continuous integration: you're doing it wrong |
17:46 | < Namegduf> | ToxicFrog: The guy described the development of http://www.eyeonearth.eu/home.aspx as an example. They pushed bugs off to the last iteration at each iteration to fix because they ran out of time in the week each time. |
17:49 | < ToxicFrog> | ;.; |
17:49 | < Namegduf> | They also got funding from the Silverlight guys for trying to get more Silverlight users, but also funding from another department which required them to make it support Linux, so they added an ASP.net version as well, writing both, and totally ruining the point of the first. |
17:50 | < Namegduf> | I'm actually having trouble believing that the MS developer's description of their structure and process was accurate. |
17:50 | < ToxicFrog> | Where I work, all major branches get autobuilt every night; if the build or the unit tests fail, it mails all QA and developers in the building telling them what broke and who broke it |
17:50 | < Namegduf> | It's that bad, down to the totally disjunct as a rule QA and development, total lack of unit testing, and testing team of five people in India. |
17:52 | < ToxicFrog> | (what did they end up using? I mean, it's working here, so it's proably not silverlight...) |
17:52 | < Namegduf> | Both. |
17:53 | < Namegduf> | There's a Silverlight version AND an ASP.net version. |
17:53 | < ToxicFrog> | Aah. |
17:53 | < Namegduf> | Silverlight version is a little prettier, I guess. |
17:55 | < Namegduf> | Which gives some reason for the duplication. |
17:55 | < Namegduf> | But, mostly, it's that politics, apparantly. |
17:55 | < Namegduf> | I loved the little "Yeah, silly, I know" smile at "But they asked us to support LINUX. But they were giving us a lot of money, so we had to weigh up..." |
19:24 | | Vornicus-Latens is now known as Vornicus |
19:36 | | You're now known as TheWatcher[afk] |
19:40 | | * Vornicus gets LZW encoding working. |
19:42 | | * Vornicus now works on decoding. |
19:43 | <@Vornicus> | (LZW encoding, for the record, takes 17 lines in Python, taking advantage of dictionaries) |
20:07 | | Taki^ [Meh@Nightstar-39d785ef.consolidated.net] has quit [Ping timeout: 121 seconds] |
20:17 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Connection reset by peer] |
20:29 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
20:29 | | mode/#code [+o ToxicFrog] by Reiver |
21:24 | | * ToxicFrog grabs the GNOME developers by the shitty configuration options, and beats them about the head with the Metacity developers |
21:34 | <@Vornicus> | decoding is a bit harder. |
21:34 | <@Vornicus> | A few fiddly cases in there. |
21:36 | | You're now known as TheWatcher |
21:38 | | AnnoDomini [annodomini@Nightstar-ad089503.adsl.tpnet.pl] has quit [[NS] Quit: Away!] |
21:48 | | Orthia [orthianz@Nightstar-3980e5bc.xnet.co.nz] has joined #code |
21:51 | <@Vornicus> | ok wtf did I do. |
21:54 | <@ToxicFrog> | I do not know. |
21:57 | <@Vornicus> | I'm using the sample text from the wikipedia page; the encode is coming out correct, but the decode is not. |
21:59 | <@ToxicFrog> | Unfortunate. |
21:59 | <@Vornicus> | what... |
21:59 | <@Vornicus> | oh, jeez... |
22:02 | <@Vornicus> | Okay, so, something's missing here. If use 256 as the starting index for the reconstruct values from the encoder then those values that don't exist yet come out correct but I accidentally drop in an 0xff; if I used 257, the decoder is off by 1. |
22:06 | | Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has joined #code |
22:38 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code |
23:10 | <@Vornicus> | Bingo. Can't actually insert a reconstruct value until the /second/ time through. |
23:12 | <@Vornicus> | Now to deal with the weird situation. |
23:22 | <@Vornicus> | Got it. Easier than I expected. |
23:23 | <@Vornicus> | 17 lines for encode, 20 lines for decode. |
23:31 | <@Vornicus> | packing and unpacking are just painful. |
23:39 | | You're now known as TheWatcher[T-2] |
23:43 | | You're now known as TheWatcher[zZzZ] |
--- Log closed Wed Mar 17 00:00:36 2010 |