Automatic commit of irc logs
authorC R Onjob <matches@ucc.asn.au>
Sat, 4 Oct 2014 17:00:02 +0000 (01:00 +0800)
committerSam Moore <matches@ucc.asn.au>
Sat, 4 Oct 2014 17:00:02 +0000 (01:00 +0800)
Delay not, Caesar.  Read it instantly.
-- Shakespeare, "Julius Caesar" 3,1

Here is a letter, read it at your leisure.
-- Shakespeare, "Merchant of Venice" 5,1

[Quoted in "VMS Internals and Data Structures", V4.4, when
 referring to I/O system services.]

irc/#ipdf.log

index ba3bd79..88b0308 100644 (file)
 17:04 <@matches> Right now it's hard to tell whether I am getting precision issues or I just accidentally moved the mouse a bit
 21:02 < sulix> That's about the most terrifying email it's possible to get, I think.
 21:59 < sulix> Very simple scripts for automating actions now exist.
+--- Day changed Thu Sep 25 2014
+08:27 < sulix> matches: Thoughts on a meeting time?
+10:58 <@matches> Ah
+10:58 <@matches> I sort of slept in
+10:59 <@matches> Well actually I didn't sleep in I just started practicing the piano and then it was 2 hours later...
+10:59 <@matches> Yeah that's a pretty terrifying email
+11:05 <@matches> I am excited by the script
+11:06 < sulix> Cool. I just added support for toggling some things to it.
+11:06 < sulix> When's best for you meeting-wise?
+11:06 <@matches> I can't make 11:15
+11:06 <@matches> Was there any other time that wasn't 5:45pm?
+11:07 <@matches> It'll be a struggle to make 9am
+11:07 <@matches> In fact apparently it's 7pm now
+11:07 <@matches> I must have really overslept
+11:07 <@matches> I'm sure I made progress this week
+11:07 <@matches> I just can't remember what it was
+11:07 < sulix> Well, I can make any time after ~12:00, now.
+11:08 < sulix> You did the whole cumulative transforms thing.
+11:08 <@matches> Yes, I'm not sure whether that was good or not
+11:08 <@matches> It sort of invalidates a whole bunch of earlier things
+11:09 <@matches> It is probably the only way that arbitrary precision bounds will ever be practical though
+11:09 <@matches> I also fixed ParanoidNumbers a bit I guess
+11:09 <@matches> But they are still terrible
+11:09 <@matches> I doubt it will get to the point where they ever aren't terrible
+11:12 <@matches> Do I do my GENG4402 assignment that's due on Friday or do I sacrifice it for the glory of IPDF?
+11:13 < sulix> I was going to say "IPDF is not a cult", but I'm not so sure.
+11:16 <@matches> On the one hand I feel sorry for you because you have the entire trip to Sydney as a meeting time
+11:16 <@matches> On the other hand I feel sorry for me because I haven't actually achieved anything
+11:17 <@matches> I have an abstract that says what I'm going to achieve...
+11:17 <@matches> It hasn't been achieved
+11:17 <@matches> Achievements are locked
+11:18  * sulix hasn't achieved anything but the scripting stuff in the last week. :/
+11:19 <@matches> You have a quad tree!
+11:19 <@matches> Did I tell you, GMPrat takes 5 seconds to pass tests/addsub and doubles take 5ms
+11:20 <@matches> Wait GMPrat was only 500ms
+11:20 <@matches> PN was 6 seconds
+11:20 <@matches> When restricted to size 1
+11:20 <@matches> There's a bug somewhere
+11:22 <@matches> They seem to grow a lot bigger than the size limit
+11:22 <@matches> Ah, probably because I don't check "m_size + b->m_size"
+11:27 <@matches> -_-
+11:27 <@matches> You need to stop adding Debug messages that assume Real is a double
+11:27 <@matches> :P
+11:28 <@matches> Some of us are trying to compile with other number representations here
+11:29 <@matches> I guess it does seem to actually work even though it's horrendously slow
+11:29 <@matches> That's an achievement of some sort
+11:30 <@matches> GMPrat also works and is horrendously slow but less horrendously slow, but I didn't actually invent that representation
+13:45 <@matches> The script has loadsvg now
+13:45 <@matches> It's tempting to make it turing complete... like some kind of... Post... Script
+13:45 <@matches> But that would be silly
+13:50 <@matches> I am loving this script thing
+13:50 <@matches> Think of all the calories I can save
+13:51 <@matches> My goodness I can even eat food whilst watching it zoom
+13:51 <@matches> My hand is freed
+13:51 <@matches> Freed from the tyranny of endless zooming
+13:56 < sulix> Cool: I was going to add loadsvg, but it still has some quadtree problems.
+13:58 <@matches> I think I will add "label" and "goto" so that I can zoom into the rabbit's eye *forever*
+13:58 <@matches> Well
+13:58 <@matches> Hmm that's actually work
+13:58 <@matches> But I still think it's necessary
+13:59 <@matches> You need to see at which point the Quad tree breaks
+13:59 <@matches> Note that we don't need it for anything I've done because everything I've done breaks before single precision floats
+13:59 <@matches> :(
+14:10 <@matches> I have just implemented goto
+14:10 <@matches> However there is still time to rename it to "goat"
+14:11 <@matches> Once you have a goto you really need a branch...
+14:15 <@matches> Go GMPrat
+14:15 <@matches> A mighty 3 FPS
+14:16 <@matches> The downside of my hands being free is I can type more things into IRC
+14:17 <@matches> You can do it GMPRat
+14:17 <@matches> Noo
+14:17 <@matches> 2.5FPS
+14:17 <@matches> We're still going strong
+14:18 <@matches> Oh that's the total accumulated average
+14:18 <@matches> It's actually at 0.8 FPS now
+14:18 <@matches> And falling rather dramatically
+14:20 <@matches> The fundamental flaw with these arbitrary precision types is the representation never gets smaller
+14:21 <@matches> GMP rationals would calculate the GCD which could get smaller (when you zoom back out for example)
+14:21 <@matches> But the GMP integer representation will still only ever increase in size
+14:21 <@matches> I think they just always use the largest precision
+14:22 <@matches> I was hoping that ParanoidNumber would do better since it actually has the ability to shrink
+14:22 <@matches> But it's not amazing
+14:22 <@matches> Hmm, I seem to have lost the rabbit
+14:22 <@matches> That's not meant to happen
+14:22 <@matches> GMPrat is supposed to be exact
+14:22 <@matches> Where did he go!
+14:34 <@matches> Every frame is agonising
+14:39 <@matches> Maybe it's time to switch to motsugo for CPU rendering tests
+14:40 < sulix> At least we now have a good way of burning up time in meetings?
+14:44 <@matches> I'm somewhat confused
+14:44 <@matches> With the cumulative transforms, the GPU renderer should work
+14:44 <@matches> (It is equivelant to using CPU for transformations)
+14:44 <@matches> But it seems to still break around 1e-6
+14:44 < sulix> Yes...
+14:45 <@matches> Oh
+14:45 <@matches> Right I commented out the TRANSFORM_OBJECTS_NOT_VIEW line
+14:45  * matches tries again...
+14:45  * sulix is really regretting the 4-switch statement, 16-case recursive function in the quadtree at the moment.
+14:46 <@matches> I'll make a deal, I won't look at quadtree.cpp if you don't look in paranoidnumber.cpp
+14:47 < sulix> Fair enough.
+14:49 <@matches> I'm not seeing anything in the GPU renderer past 1e-7
+14:49 <@matches> With GMPrat
+14:50 <@matches> I think I'm going to have to go through and fix the more obviously terribly designed parts of things
+14:50 <@matches> For GMPrat to have any chance
+14:53 <@matches> I'm wishing I had a quad tree so I didn't have to transform the bounds of things that would end up outside the screen space :P
+14:53 <@matches> Maybe there's hope for an unholy union of Quadtree and GMP rationals yet
+14:56 < sulix> "And the fifth angel sounded, and I saw a star fallen from heaven to earth: and to him was given the key to a bottomless abyss."
+15:00 <@matches> I think the GMP rational -> float conversion is fith?
+15:00 <@matches> It doesn't make any sense :S
+15:00 <@matches> An object that is visible should always have bounds somewhere in {0,0,1,1}
+15:00 <@matches> Which should be totally fine
+15:01 <@matches> Oh
+15:01 <@matches> Is this the bit where I made GMPrat::ToDouble return 0 if it was too big...
+15:02 <@matches> No it returns mpq_get_d
+15:02 <@matches> Blergh
+15:03 < sulix> An object which is visible should have bounds that _intersect_ {0,0,1,1}
+15:03 < sulix> Perhaps not contained within {0,0,1,1}
+15:03 <@matches> Yeah that
+15:04 <@matches> Maths
+15:04 <@matches> 0 <= x <= 1
+15:04 <@matches> No not that
+15:04 <@matches> Thing
+15:04 < sulix> Unless you're using the Quadtree, which does clip everything to {0,0,1,1}
+15:04 <@matches> Anyway
+15:04 <@matches> It should work
+15:05 <@matches> Wait
+15:05 <@matches> There is this blen thing in the shader
+15:05 <@matches> Is that passed via the view width or something
+15:05 <@matches> Hmm
+15:05 < sulix> That's kinda FITH.
+15:07 <@matches> Anyway, somehow there is a multiplication by width/height and then probably a division afterwards somewhere else
+15:07 <@matches> I'm rather confused
+15:09  * matches struggles to navigate the treacherous waters of view.cpp
+15:10 <@matches> That's right, RenderRange does the actual things
+15:10 <@matches> We've got PrepareRender -> Render -> RenderRange/QuadtreeNode
+15:11 < sulix> RenderQuadtreeNode just calls RenderRange a bunch of times and then breaks the document.
+15:13 <@matches> It's alright, we can save to bitmap, we don't need the document structure to not break
+15:13 <@matches> So how the hell is the shader getting rounding errors
+15:13 <@matches> It should always get glbounds of {0,0,1,1}
+15:13 <@matches> (With cumulative transforms)
+15:15 <@matches> Then RenderRange -> ObjectRenderer::RenderUsingGPU...
+15:17 <@matches> This does not make sense
+15:17 <@matches> Things cannot be broken in this way such that they work
+15:18 <@matches> Hello
+15:18 <@matches> GraphicsBuffer::BufferUsageStaticDraw
+15:18 <@matches> Does that do a thing?
+15:19 <@matches> Also
+15:19 <@matches> Should //m_objbounds_vbo.Invalidate(); be commented out
+15:19 <@matches> I'm still confused as to how it works at all
+15:20 < sulix> BufferUsageStaticDraw tells the driver that we're not planning to modify this buffer frequently.
+15:21 < sulix> The Invalidate() stuff should be commented out, IIRC.
+15:23 <@matches> Hmm when in doubt make clean
+15:30 <@matches> Anyway
+15:30 <@matches> I hope you get the quadtree working with adding stuff
+15:30 <@matches> Because the only point at which doubles fail is when they get a sigfpe
+15:31 <@matches> Floats do start to do strange things before that
+15:32 <@matches> Actually no, doubles would screw up it's just the script is not testing in that range
+15:33 < sulix> I'm still trying to get panning working with the quadtree at the moment.
+15:33 < sulix> I was scratching my head for quite a while before I realised TRANSFORM_OBJECTS_NOT_VIEW was on.
+15:34 <@matches> Sorry
+15:34 <@matches> It really helps the non quad tree rendering
+15:34 < sulix> (You'd be surprised how totally it breaks the quadtree)
+15:34 <@matches> Oh I'm not that surprised
+15:34 <@matches> The quad tree is basically doing cumulative transforms after all
+15:34 <@matches> In a very loose sense
+15:35 < sulix> The quadtree does both.
+15:35 < sulix> It's an equal-opportunity data structure.
+15:37 <@matches> The more I think about this, the more I am convinced the quadtree is the only sensible solution
+15:37 <@matches> Which is unfortunate
+15:37 <@matches> I had hoped to actually have something to present
+15:37 <@matches> Other than "And you should all attend my partner's presentation next week!"
+15:38 <@matches> I guess I should produce some performance graphs or something
+15:38 <@matches> What I did was a terrible idea and this is why
+15:39 <@matches> Sort of thing
+15:40 <@matches> I wonder where the bottleneck is though
+15:40 <@matches> GMPrats get very slow even with the GPU renderer
+15:40 < sulix> Converting to doubles?
+15:40 < sulix> Doing gcd() all day?
+15:40 <@matches> Maybe
+15:40 <@matches> gcd is 50% of execution time according to perf
+15:41 <@matches> perf is pretty cool but it is not as easy to use as valgrind
+15:41 <@matches> Unfortunately valgrind doesn't fully emulate the FPU
+15:41 <@matches> So ParanoidNumbers don't work at all using it
+15:42 <@matches> Which is very frustrating because there have to be things I can speed up in them
+15:42 <@matches> I have a git stash where I tried to implement Copy-On-Write but it was a bit of a disaster
+15:42 <@matches> It was so much of a disaster that even with COW disabled they still broke (despite working fine in the previous commit...)
+15:43 <@matches> They do spend an excessive amount of time copy constructing each other though
+15:50 <@matches> If I can express bezier bounds relative to the containing path it might speed things up slightly
+15:51 < sulix> Ideally we'd ditch the "BEZIER" object and just have paths.
+15:51 < sulix> But that sounds like a lot of work.
+15:53 <@matches> I'd be less inclined to want to do it if things weren't so amazingly slow
+16:00 <@matches> It looks like Bezier::GetType is slowing the CPU rendering down at least
+16:01 <@matches> Clearing pixels is also slow
+16:01 <@matches> Although that doesn't depend on the zooming
+16:02 <@matches> GPU rendering isn't much better though, hmm
+16:46 <@matches> The Arena sort of helps things
+16:47 <@matches> Until it gets to allocating 40 million x 180 Bytes ...
+17:25 <@matches> Protip, #define and spelling mistakes and #ifdef do not work together well...
+--- Day changed Fri Sep 26 2014
+01:40 <@matches> I came up with a compromise between not doing GENG4402 to work on IPDF and doing GENG4402
+01:40 <@matches> The only casualty was sleep
+01:41 <@matches> And no one likes him anyway
+01:41 <@matches> All sides were pleased by the deal
+16:21  * matches regrets upgrading debian jessie after the shellshock thing
+16:21 <@matches> fglrx is gone again
+--- Day changed Sat Sep 27 2014
+12:28 <@matches> 5 minutes to go in ACM...
+12:29 <@matches> You can do it Dijkstras on Bijkstras
+12:30 <@matches> Oh 5 minutes until they freeze the score board
+12:30 < Pommers> 5mins? Timer says an hour
+12:30 <@matches> Apparently they freeze the score board
+12:30 <@matches> I don't know how these work
+12:30 <@matches> I only just started watching
+12:31 <@matches> An hour is plenty of time
+12:31 < Pommers> So teams can't see each others scores change?
+12:31 <@matches> Yeah
+12:31 <@matches> Mickelback just got C wrong
+12:31 < Pommers> They secretlyu have them all solved and are just waiting to waste time
+12:31 <@matches> Yes
+12:31 <@matches> Nice camera work...
+12:31 < Pommers> Getting it right won't get them into first though
+12:32 <@matches> I can't see them
+12:33 < Pommers> UWA needs labs like that
+12:33 <@matches> It's still anyone's game!
+12:33 <@matches> They said it
+12:33 <@matches> You can do it Dijkstras on Bijkstras
+12:33 < Pommers> Cmon Dijksras in Kijkstras
+12:34  * Pommers fails
+12:34 <@matches> Go for G
+12:35 < Pommers> Yeah. Be the winner and Get G right now
+12:35 <@matches> Also D
+12:35 <@matches> and E
+12:35 < Pommers> B D E G
+12:35 <@matches> All you need to do is get all the hard ones right without anyone else getting them right...
+12:35 < Pommers> Nah
+12:36 < Pommers> You want to get all the easy ones as soon as possible
+12:36 < Pommers> Then work out the harder ones
+12:36 <@matches> It's a bit late now..
+12:36 <@matches> Sink everything into the hard ones!
+12:37 < Pommers> The teams still get feedback in the last hour right?
+12:37 <@matches> I assume so
+12:37 <@matches> This camera is totally biased
+12:37 <@matches> I haven't seen sulix yet
+12:37 <@matches> Just shots of people eating sandwiches
+12:38 < Pommers> Sandwich eating stream
+12:38 < Pommers> Best Stream
+12:39 < Pommers> I saw Rowan before
+12:39 <@matches> ANU is doing well
+12:39 <@matches> I think this calls for some sabotage
+12:40 < Pommers> Where's axtens when we need him
+12:40 <@matches> In Canberra
+12:40 <@matches> Also he'd probably be supporting ANU
+12:41 < Pommers> Probably
+12:42 <@matches> I'm waiting for it to all come together
+12:42 <@matches> And all the boxes to turn blue
+12:42 <@matches> Commentator is a bit behind
+12:42 < Pommers> So they've submitted but no public feedback
+12:42 <@matches> Or the stream is a bit behind I guess
+12:42 < Pommers> 45 seconds
+12:42 <@matches> ANU made that submission 3 minutes ago
+12:43 <@matches> Singing!
+12:43 <@matches> This stream has it all
+12:43 < Pommers> I have the stream muted
+12:43 <@matches> Ooh a shot of the other room
+12:44 <@matches> sulix: Stand up!
+12:44 < Pommers> Move out the way so we can see into the room
+12:44 < Pommers> up and down the bolevard
+12:44 <@matches> Hahaha
+12:45 <@matches> That *could* be sulix in the background
+12:47 <@matches> I guess it would be intrusive to have the camera in the room with the contestants
+12:47 <@matches> Also for 14 viewers
+12:48 <@matches> I love the sign off
+12:51 <@matches> Gozz!
+12:51 <@matches> Gozz what are you doing!
+12:51 <@matches> Get back to the desk!
+12:54 <@matches> These coaches(?) look rather worried
+12:55 <@matches> Oh well, I guess I should actually work on IPDF
+12:55 <@matches> Not all of us get free trips to Sydney :P
+13:00 < Pommers> So yeah. They get there own score line
+13:01 < Pommers> I missed Gozz!
+13:03 <@matches> They must be doing well if they have time for sandwich breaks
+13:03 <@matches> Have all the solutions ready to submit in the last 5 minutes
+13:03 <@matches> Shock victory
+13:03 < Pommers> Or they have given up
+13:03 <@matches> No!
+13:03 <@matches> How do you read the scores anyway?
+13:03 <@matches> The first column is number of problems solved
+13:03 <@matches> What's the second
+13:04 < Pommers> I explained in #ucc before
+13:04 <@matches> Ah damn
+13:04 < Pommers> 12:09 <@Pommers> Ranking is number of challanges sorted: More is better
+13:04 < Pommers> 12:09 <@Pommers> Numeric number: Less is better
+13:04 < Pommers> 12:09 <@Pommers> Cause the number is minute challenmge was solved + 10 * number of failed attempts
+13:04 < Pommers> 12:10 <@Pommers> 20, not 10
+13:04 <@matches> I thought they were doing well because they had a high number
+13:04 < Pommers> 12:10 < bob> so those teams who haven't finished anything and have a score of zero are winning?
+13:04 < Pommers> 12:11 < bob> oh I get you now
+13:04 < Pommers> 12:11 <@Pommers> Nope. Because number of challenges sorted is more important
+13:04 < Pommers> 12:11 < bob> really shittily labeling on that table
+13:04 < Pommers> 12:11 < bob> so mickelback is coming second
+13:04 <@matches> Yes yes I can change windows
+13:04 < Pommers> 12:11 <@Pommers> The numbers on the left show their current position
+13:04 < Pommers> 12:11 <@Pommers> Yep
+13:04 < Pommers> 12:12 <@Pommers> The scoring system is pretty much the same for all coding competitions
+13:04 < Pommers> 12:12 <@Pommers> GCJ is different though
+13:04 < Pommers> 12:16 <@Pommers> Numbers down the bottom are attempts/correct/time was first solved
+13:04 < Pommers> Nope
+13:05 < Pommers> But now it's in your logs too!
+13:05 <@matches> Meh anything that skews the statistics away from me talking to myself is fine by me
+13:05 <@matches> Just copy paste all of #ucc in here please
+13:06 <@matches> Mikelback could still win
+13:06 < Pommers> 13:05 <@matches> Just copy paste all of #ucc in here please
+13:06 < Pommers> If you say so
+13:06 <@matches> Nonononono
+13:07 <@matches> I'
+13:07 <@matches> ll just delete the git repository when this is over
+13:08 < Pommers> Sounds like a good idea
+13:13 <@matches> So you can go back to earlier parts of the stream
+13:13 <@matches> "I tell you, in this life there are only two things to die for: Your country, and these sandwiches"
+13:15 < Pommers> Yep
+13:15 <@matches> Back to live action, and there is a close up of someone eating a sandwich
+13:27 <@matches> There's still time!
+13:28 <@matches> Why are things not turning blue
+13:29 <@matches> Mickelback appears to be struggling on B
+13:29 <@matches> Haha
+13:29 <@matches> "It could be anyone... anyone... well probably not Auckland Queensland or Adelaide"
+13:29 <@matches> Anyone of the top five
+13:31 <@matches> I'm still waiting for the 5 simultaneous submissions from Dijkstras on Bijkstras
+13:32 <@matches> More sandwiches
+13:34 < Pommers> Now we wait
+13:36 <@matches> Reading these logs back it sounds a lot wierder when you don't notice the timestamps
+23:23 <@matches> So, after much spaghetti bolognaise
+23:24 <@matches> I managed to perform the arbitrary precision transformations only on the bounds of paths as opposed to the bounds of every single object.
+23:24 <@matches> It helps a lot but at the end of the day it's still fantastically useless.
+23:24 <@matches> Project complete I guess.
+23:24 <@matches> Just Use Quad Trees
+23:25 <@matches> If I had some way to clip the objects to the view so I only had to transform things that would be shown...
+23:25 <@matches> I would have a quad tree
+23:25 <@matches> If I don't do that, then you still have the exponentially growing Gmprat
+23:26 <@matches> Oh
+23:26 <@matches> Oooh
+23:26 <@matches> Actually
+23:26 <@matches> I had the CPU renderer on
+23:27 <@matches> The GPU renderer loves this
+23:27 <@matches> The CPU renderer seems to generally just suck
+23:27 <@matches> I suspect there is actually a bug in it
+23:27 <@matches> It shouldn't be so slow
+23:28  * matches is getting really excited
+23:28 <@matches> I actually zoomed in to 1e-9 using floats for everything except the Path bounds
+23:29 <@matches> It would be nice the CPU renderer didn't suck, but I guess "Transform the bounds with arbitrary precision on the CPU and do rendering with floats on the GPU" is actually the better approach
+23:32 <@matches> Also... I think somehow I got an updated fglrx that is less shit at rounding floats
+23:32 <@matches> Because eye_of_the_rabbit doesn't go all funny anymore...
+23:32 <@matches> Unless you make it zoom a little bit more
+23:36 <@matches> I still think the quad tree will beat this in terms of performances
+23:36 <@matches> But at least it's like, in the game
+23:36 <@matches> As in it doesn't take so long to do the performance test that it's not worth bothering actually doing a comparison
+23:36 <@matches> Now we can have a graph at least
+23:46 < Pommers> Very nice
+23:51 <@matches> The CPU renderer is stalling in DeCasteljau
+--- Day changed Sun Sep 28 2014
+00:18 <@matches> sulix: You need to get eye_of_the_rabbit working under the quadtree so I can compare it with my horrible hacks to View,Path,BezierRenderer,PathRenderer...
+00:18 <@matches> Document...
+00:18 <@matches> Not a single class escaped the wrath of the #ifdef
+00:18 <@matches> No pressure, glhfdd
+00:19 <@matches> Unfortunately I still get a bunch of SIGFPEs but I think those are in places that don't affect the rendering, so I can probably fix them
+00:19 <@matches> Or set the program to ignore them
+00:20 <@matches> I never really worked out how you turned them on in the first place :S
+00:20 <@matches> Also well done at ACM and all that
+00:21 <@matches> The #define's you'll want to turn off to get the quadtree working again are both the ones in view.h and path.h
+00:21 <@matches> Oh wait I put in a check just for you
+00:45 -!- sulix [sulix@motsugo.ucc.gu.uwa.edu.au] has quit [Ping timeout: 121 seconds]
+00:47 -!- sulix [sulix@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf
+01:09 -!- sulix [sulix@motsugo.ucc.gu.uwa.edu.au] has quit [Quit: Lost terminal]
+01:15 -!- Pommers [bobgeorge33@motsugo.ucc.gu.uwa.edu.au] has quit [Quit: Lost terminal]
+--- Log opened Sun Sep 28 09:58:47 2014
+09:58 -!- matches [matches@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf
+09:58 -!- Irssi: #ipdf: Total of 1 nicks [1 ops, 0 halfops, 0 voices, 0 normal]
+09:58 -!- Irssi: Join to #ipdf was synced in 0 secs
+10:04 -!- matches changed the topic of #ipdf to: Motsugo OOMed, this would be a great excuse to extend the project if we were actually using Motsugo
+--- Log closed Sun Sep 28 10:08:08 2014
+--- Log opened Sun Sep 28 10:08:20 2014
+10:08 -!- matches [matches@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf
+10:08 -!- Irssi: #ipdf: Total of 1 nicks [1 ops, 0 halfops, 0 voices, 0 normal]
+10:08 -!- Irssi: Join to #ipdf was synced in 2 secs
+11:46 -!- unmercifulfish [unmercifulf@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf
+23:19 -!- sulix [sulix@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf
+--- Day changed Wed Oct 01 2014
+15:13 <@matches> Urgh the code is disgusting
+15:13 <@matches> I can't look at it
+15:16 <@matches> The quadtree does some... interesting things
+15:17 < sulix> I think by "interesting," you mean "horrible."
+15:18 < sulix> ... or possibly "wrong"
+15:22 <@matches> Well, you appear to be able to add things to the document
+15:22 <@matches> They are just in the wrong spot
+15:22 <@matches> Also things seem to disappear as well
+15:28 <@matches> Also I can't seem to compile without the quadtree anymore
+15:29 <@matches> You're going to have to deal with the Makefile because I'
+15:29 <@matches> m moving quadtree.o out of the defaults
+15:29 <@matches> It expects things in IPDF::Document that won't exist if the quadtree is disabled
+15:35 < sulix> Oops...
+15:35 < sulix> I have started using the makefile, though, so that's good.
+15:39 <@matches> I'm somewhat regretting the use of Real in the Bezier
+15:39 <@matches> I need another Real
+15:39 <@matches> Real2 ?
+15:39 <@matches> Or I can do terrible hacks with #undef
+15:39 <@matches> Hmmm
+15:39 <@matches> Terrible hacks with #undef it is!
+15:40 <@matches> Possibly we need a seperate header for all these defines
+15:40 <@matches> I have #defines in path.h that only work if there is also a #define in view.h ...
+15:41 <@matches> But the #define in view.h will still work without the one in path.h
+15:43 <@matches> Possibly using different branches would have been cleaner
+15:43 <@matches> Possibly I should really stop writing code and start writing a report anyway
+15:43 <@matches> So many regrets
+15:44 <@matches> I explained the project to some Engineers today!
+15:44 <@matches> They understood it!
+15:44 <@matches> They questioned the point of it all...
+15:44 <@matches> I said "The point is that you can zoom into this point here..."
+15:44 <@matches> "And it turns into a rabbit!"
+15:44 <@matches> :S
+15:46 <@matches> Also "Why isn't there any shading"
+19:24 <@matches> I'm having a little trouble with the performance metrics
+19:24 <@matches> How do I pick something that is a legitimate performance metric
+19:24 <@matches> "We decided to render this Fox and this Rabbit"
+19:25 <@matches> Also I really wish ipdf were good enough to do the report in it, because then it could demonstrate itself
+19:25 <@matches> Now I have to link to a video?
+19:26 <@matches> I mean
+19:26 <@matches> "Figure 1 is the rabbit and Figure 2 is the rabbit that looks exactly the same when you zoom in!"
+19:26 <@matches> Is not really impressive
+19:26 <@matches> "Figure 1 is the rabbit and Figure 2 is the rabbit that looks terrible when you use floats and you'll just have to trust us when we say we fixed this"
+19:26 <@matches> :S
+19:28 <@matches> Also causing difficulty...
+19:28 <@matches> The zoom level I am at is not representable as a double
+19:28 <@matches> Which means it cannot be plotted in gnuplot unless I scale it to the range of doubles first...
+19:28 <@matches> Which sort of defeats the point...
+19:29 <@matches> I guess I could plot "Exponent"
+19:29 <@matches> If you clear the document after every 3 rabbits, eye_of_the_rabbit appears to go for a very long time
+19:30 <@matches> So that's the performance vs zoom I guess
+19:30 <@matches> But only take a data point after every 3 rabbits otherwise you are also altering number of primitives
+19:30 <@matches> Panning is pretty much the same
+19:33 <@matches> I'm just going to sit and watch it zoom for a while I guess
+19:33 <@matches> Mesmerising
+19:34 <@matches> Should I help fix the quad tree?
+19:34 <@matches> I'd like to be able to compare it to the "actually we'll only use arbitrary precision for *some* things" approach
+--- Log opened Thu Oct 02 13:55:13 2014
+13:55 -!- matches [matches@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf
+13:55 -!- Irssi: #ipdf: Total of 1 nicks [1 ops, 0 halfops, 0 voices, 0 normal]
+13:55 -!- Irssi: Join to #ipdf was synced in 3 secs
+14:34 -!- sulix [sulix@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf
+14:44 <@matches> Hello
+14:44 <@matches> Are we having a meeting today?
+14:45 < sulix> Rowan is still in Sydney.
+14:45 <@matches> Oh
+14:45 <@matches> That would make it difficult
+14:45 <@matches> Well, I'
+14:45 < sulix> (Also every time I touch the quadtree it ends up more broken)
+14:45 <@matches> m in UCC trying to actually get some sort of performance graphs
+14:45 <@matches> :(
+14:46 <@matches> Yeah, it turns out Gmprat may beat floats considerably but it isn't that great compared to doubles
+14:46 <@matches> It's interesting actually
+14:46 <@matches> It only really starts to slow down right at the limit of double precision
+14:46 <@matches> Then again, doubles will screw up before that (I hope)
+14:47 <@matches> You can represent 1e-38 with a float but it still screws up at 1e-6 after all
+14:47 <@matches> Also no one understands the eye_of_the_rabbit demo
+14:48 <@matches> I don't know why
+14:48 <@matches> It's pretty obvious it's *zooming to infinity*
+14:48 <@matches> (TM)
+14:48 <@matches> Righht?
+14:48 <@matches> :(
+14:48 < sulix> Their puny minds cannot contain the majesty that is eye_of_the_rabbit.script
+14:50 <@matches> A demo that actually added text where the text was the scale might be cool
+14:50 <@matches> Except debugscript is not that advanced
+14:50 < sulix> If you want to add string formatting to debugscript, I will not be involved. :P
+14:51 <@matches> I would probably just hack on a command
+14:51 <@matches> "Do this one particular demo"
+14:51 <@matches> Instead of making the scripting language turing complete...
+14:53 <@matches> In other news, Gozz taught me the difference between %d and %i :P
+14:53 < sulix> My greatest shame...
+14:54 <@matches> I normally use %d but I never actually realised they were differenc
+14:54 <@matches> Well they aren't when printf'ing
+14:55 < sulix> Four hours (+ an 80 minute penalty) because of random octal...
+14:55 <@matches> Well, if you'd won you wouldn't be able to finish IPDF
+14:57 < sulix> (Yeah, but maybe I'd've been good enough to not make the QuadTree horribly buggy...)
+14:58 <@matches> I should look at it
+14:58 <@matches> When I tried it, it was adding objects but they were appearing in totally whack places
+14:58 <@matches> Also different places depending on what renderer was used
+14:59 <@matches> I'm pretty much in favour of just focussing on the GPU renderer now though
+14:59 < sulix> At the moment it should only add things to the root node.
+14:59 <@matches> I have encountered the issues you mentioned where the CPU renderer suddenly decides to crash X
+15:00 < sulix> It seems to just suddenly start eating all of the ram in the world.
+15:00 <@matches> I don't know why though
+15:00 <@matches> It does it with regular floats as well
+15:01 <@matches> Unless it's allocating the pixel buffer every frame but why the hell would I have done that
+15:06 <@matches> Also! Really annoying! GMP can only print rationals as num/den
+15:06 < sulix> I guess that's because not all rationals have a finite decimal expansion.
+15:06 <@matches> It has Rational -> Double but not Rational -> Arbitrary Precision Double
+15:07 <@matches> Yeah, but I wish you could go "Print in scientific notation to 4 sig fig"
+15:08 <@matches> I resorted to log(a/b) = log(a) - log(b)
+15:08 <@matches> Except it doesn't actually have logarithm either
+15:08 <@matches> It has "Number of digits needed in base X"
+15:08 <@matches> Close enough...
+15:09 <@matches> Actually no it's awful
+17:32 <@matches> I'm going to have to do some disgusting template-yness things to Rect and Bezier I think
+17:47 <@matches> Blergh
+17:47 <@matches> Having a universal Real type is really damn annoying now that I don't want a universal Real type
+17:48 <@matches> I can do: template <struct T = IPDF::Real> struct Rect {...};
+17:48 <@matches> But then you have to replace Rect with Rect<> everywhere
+17:49 <@matches> I could make very single class a template class with Real as the template
+17:49 <@matches> Because that isn't horrifying
+17:52  * matches sobs and makes Rect a typedef for "TRect"
+18:22 <@matches> A is for ambiguous
+18:31  * matches curses templates
+18:31 <@matches> They attempt to solve the flaws in preprocessor macros by not actually solving anything
+18:32 <@matches> So that you will give up and just not write the program
+18:32 <@matches> The purpose of templates is to stop people from programming
+18:42 <@matches> Maybe don't pull the latest commit if you want anything to work at all
+--- Day changed Fri Oct 03 2014
+14:53 <@matches> The GMP attitude to logarithms seems to be "You can just write your own" which is nice, except that writing your own is not actually that easy to do well
+15:39 <@matches> This is rather annoying
+15:39 <@matches> When running the "Performance vs View Bounds" test, the bottleneck is in printing the View bounds
+15:40 <@matches> Because it requires a log of logs
+15:40 <@matches> *log of lots
+15:40 <@matches> *lot of logs
+15:40 <@matches> *lots of lumberjacks
+15:40 <@matches> *whatever
+15:41 <@matches> At least I seem to have made it O(1) where 1 is depressingly large constant
+15:55 <@matches> And so, after a day and a half, I can hopefully actually print bounds that are outside the range of representable doubles
+15:56 <@matches> Then I guess I'll have to do some kind of hack to get the "e-XXX" part so I can actually import them in numpy/gnuplot
+--- Day changed Sat Oct 04 2014
+12:05 -!- Pommers [bobgeorge33@motsugo.ucc.gu.uwa.edu.au] has joined #ipdf
+13:55 <@matches> So, time investment
+13:55 <@matches> Do I make graphs
+13:55 <@matches> Or do I draw a turtle.svg
+13:55 <@matches> So that we can make the "Turtles all the way down" reference
+13:55 <@matches> Tough decision
+13:56 < Pommers> Turtles
+14:19 <@matches> I think fglrx must have a memory leak
+14:20 <@matches> Even after the program quits everything dies
+14:20 <@matches> And stays dead
+14:21 <@matches> Apparently I only have 80MB of memory left, yet the most anything in top is using is 100MB
+14:21 <@matches> ...
+14:21 <@matches> It's still decreasing
+14:21 <@matches> I have 10 MB left ?
+14:22 <@matches> Farewell
+14:26 < Pommers> glhfdd
+15:23 <@matches> http://szmoore.net/ipdf/code/src/svg-tests/turtle.svg
+15:23 <@matches> Can't be bothered colouring it in
+15:23 <@matches> It occurs to me that if we had recursive SVG support we would be Winning (TM)
+15:24 <@matches> I wonder how hard it would be to hack that on...
+15:24 <@matches> Need to map SVG "id" attributes to a Path
+15:24 <@matches> Need to allow Path to include Path
+15:24 <@matches> Hmm...
+15:24 <@matches> It's probably going to be as hard as shading
+15:25 <@matches> ie: Significantly harder than it should be due to the somewhat flawed design of our Object representations
+15:25 <@matches> We really only need Path and none of these other shaders
+15:26 <@matches> Maybe one Path shader per path too
+15:26 <@matches> As opposed to one Bezier shader for every single Bezier
+15:26 <@matches> Well, same shader but with different VBOs
+15:26 <@matches> Or IBOs
+15:26 <@matches> whatever
+15:28 <@matches> The problem is I can't implement Turtles all the Way Down in such a way that it shows all the turtles without either a) Making the DebugScript turing complete, or b) Implementing recursive SVGs
+15:29 <@matches> And option b) has the advantage of the document still being interactive whilst option a) restricts the view to what the script is doing
+15:30 <@matches> Also if the quad tree was working, turtles all the way down would be a good test of it, because the Arbitrary Precision bounds gets really slow since it has to always transform every path even those that are off screen
+15:31 <@matches> I should probably start writing a thesis but I really want to actually have something impressive to write about
+15:31 <@matches> I mean I still have to write about all the other stuff as well
+15:31 < Pommers> Yay off by one errors!
+15:32 <@matches> What, with the Log10 ?
+15:32 <@matches> It shouldn't be off by that much
+15:32 <@matches> Wait how are you running this
+15:32 <@matches> Wait you're talking about something else -_-
+15:32 < Pommers> Yes
+15:32 < Pommers> I've spent the past day looking for this error
+15:34 <@matches> Good job?
+15:34 < Pommers> Nope. So annoying. THought I just had it. Nope.
+15:35 <@matches> Sounds like we could make you an honarary IPDF developer
+15:35 < Pommers> I thought I already was :P
+15:38 < Pommers> Nope. Now my numbers are more off :/
+16:07 <@matches> Try ParanoidNumber
+16:07 <@matches> Guaranteed to give semi-accurate segfaults
+16:10 <@matches> Trying to look up some paper to justify my Logarithm approximation (because doing maths myself is hard)
+16:10 <@matches> "Computing discrete logarithms with the parallelized kangaroo method"
+16:10 <@matches> I... don't... even...
+16:11 <@matches> Why isn't there a paper on this
+16:11 <@matches> It shouldn't be hard, ergo, someone should have written a paper
+16:14  * matches really regrets only getting 60% in applied maths
+16:14 <@matches> I'm fairly sure this sort of thing was in it
+16:14 <@matches> Series approximations and stuff
+16:45 <@matches> Argahsdgf
+16:45 <@matches> It's actually hard to define what we *want* from our arbitrary precision document
+16:46 <@matches> Hmm
+16:46 <@matches> You have a view port, and you want primitives that are scaled to the view port to appear identical, regardless of where the view port is
+16:46 <@matches> Does that work
+16:46 <@matches> sulix are you alive
+16:46 <@matches> Is the quad tree going to be ok
+16:48 < sulix> Alive might be overstating it slightly. The quadtree is still kind-of functional.
+16:48 < sulix> (None of your commits have broken anything obvious, which is nice)
+16:49  * Pommers stabs floating point ints
+16:49 < Pommers> 0.0000000001 off
+16:50 <@matches> Most of my commits affect stuff that's wrapped in a bunch of #ifdef QUADTREE_DISABLED
+16:50 <@matches> I added some typedef's but they are all just equivelant to Real if QUADTREE_DISABLED
+16:51 <@matches> Pommers: Are you using floats or doubles? And if so, change to long doubles
+16:51 < sulix> That was very kind of you. I'm not sure how many drastic changes the quadtree can take at this point.
+16:52 < sulix> Was is SPARC that supported "quads"?
+16:52 <@matches> I'm kind of curious as to whether anything actually supports Base 10 floats
+16:52 < Pommers> Doubles
+16:52 < Pommers> I could try long doubles
+16:52 <@matches> Because it's in the standard
+16:53 <@matches> long doubles will probably  help
+16:53 <@matches> I haven't run out software with long doubles yet because I'm really expecting it to do amazingly better than Gmp rationals
+16:54 <@matches> In theory, with enough memory, GMP rationals will win
+16:56  * matches suddenly realises just how much stuff there is that needs to be done
+16:57  * matches cries
+16:57 < Pommers> My great commit log... https://github.com/mpomery/CITS3402/commits/master
+16:57  * sulix sobs sympathetically
+16:58 <@matches> That has nothing on the IPDF commit logs I'm sorry
+16:59 <@matches> I should really stop deliberately making the commit messages over dramatic
+16:59 < Pommers> Probably not
+16:59 < Pommers> Definately
+17:01 < sulix> The more I think about the quadtree, the more certain I am that it should just be crashing all the time.
+17:10  * sulix quietly wonders if he can steal some code from that xkcd comic.
+17:18 <@matches> So, it only works if you give it a starting SVG because it loads the whole thing into the root node and then builds the other nodes as you zoom
+17:18 <@matches> And inserting things at some arbitrary point is hard
+17:18 <@matches> Could you... brute force... recreate the entire thing from the root node
+17:19 < sulix> The plan (after the great minus-sign move of '14) is to simply create a new document from wherever you add something, and "overlay" it.
+17:20 <@matches> Ah
+17:20 <@matches> sounds clever
+17:20 <@matches> Hmm
+17:20 <@matches> There's a whole bunch of definitions and obvious assumptions that I need to state
+17:20 <@matches> How do I even explain this
+17:21 <@matches> So, bresenham lets you draw a line exactly given the end points => You only care about rounding the end points
+17:21 <@matches> Bezier = decompose into Bresenham => You care about rounding in the Bezier decomposition 
+17:21 < sulix> Well, bresenham doesn't let you draw a line exactly at all.
+17:21 <@matches> Pfft
+17:21 <@matches> Exactly shchmexactly
+17:22 <@matches> To pixel accuracy I guess
+17:22 <@matches> If the Bezier is in screen space and the buffer is small enough, then the bezier decomposition is accurate-enough to within the nearest pixel
+17:22 <@matches> So you care about transforming the bezier control points
+17:22 <@matches> They can be written relative to the bounds so you care about transforming the bounds
+17:23 <@matches> The bounds can be written relative to the path ergo you only need to transform the path bounds
+17:23 <@matches> Ergasdfadfg
+17:23 <@matches> It's all relative
+17:24 <@matches> There's no point being able to render something in bounds 1e-100000 if you don't also want to store something up at width 1
+17:24 <@matches> Otherwise you may as well just use bounds with width 1 and then do a multiplication before you printf them
+17:24 <@matches> Problem solved!
+17:29 <@matches> What I am trying to do makes perfect sense in my head and absolutely no sense translated to english
+17:29 <@matches> And translating it to maths is just asking for trouble
+17:29 < Pommers> #pragma omp single means that I'll start up a single thread to do something right?
+17:30 <@matches> Well, it won't create a new thread, it means a single thread out of the current pool will do it
+17:30 < Pommers> Okay. How can I get OpenMP to create a thread to do one of several for loops?
+17:31 <@matches> #pragma omp parallel for
+17:31 <@matches> Divides the loops up evenly amongst the threads
+17:31 <@matches> Is that what you want?
+17:31 < Pommers> Nah, multiple for loops, not the one
+17:32 <@matches> Is the loop inside a parallel secion already?
+17:32 < Pommers> Unless I am misunderstanding what parallel for does
+17:32 < Pommers> Nope, not inside a loop yet
+17:32 <@matches> Unless you explictly use a #pragma omp parallel, the code will be executed by the main thread
+17:33 < Pommers> So if I go:
+17:33 < Pommers> #pragma omp parallel
+17:33 < Pommers> #progma omp single
+17:33 < Pommers> for loop
+17:33 < Pommers> #progma omp single
+17:33 < Pommers> for loop
+17:34 < Pommers> #pragma omp barrier
+17:34 < Pommers> The for loops with get executed by potentially different threads?
+17:34 <@matches> Yes
+17:34 <@matches> And they only get executed once
+17:34 <@matches> But you can't predict the order
+17:34 < Pommers> Cool
+17:34 <@matches> Anything outside the "single" gets done by all threads
+17:35 <@matches> I don't think you need the barrier
+17:35 <@matches> There are implicit barriers at the end of each parallel section
+17:35 <@matches> Oh, also make sure the scope is correct
+17:35 <@matches> Put {} around things
+17:35 < Pommers> Okay
+17:35 < Pommers> Imma come back to it in a moment
+17:35 < Pommers> Forgot to go pick up my housemate :/
+17:36 < Pommers> ty matches 
+17:36 <@matches> (You don't need the {} if you have a loop immediately after the parallel directive though)
+17:37 <@matches> Using OMP with certain text editors is a nightmare because they want to automatically put preprocessor directives in the first column
+17:37 <@matches> Which totally screws up indentation
+17:37 <@matches> Certain uses of OMP don't actually use indentation in the first place though, which I can't understand at all
+17:37 <@matches> They indent the for loop but not the parallel directive that applies to it
+17:38  * matches shudders
+17:38 <@matches> These are the same lecturers that discouraged us from using functions because function calls slow the program down
+17:38 <@matches> Whole program should be in main()
+17:38 <@matches> Goto if necessary
+17:42 <@matches> (I compiled something with and without a function call and saw that it was the exact same assembly and then proceeded to totally ignore any programming advice they gave us from then on)
+17:43 <@matches> I guess it would be true if you had an ancient compiler
+17:46 < sulix> (Secret: function calls _are_ slow. So is goto, though, so the point is moot.)
+18:07 <@matches> Baha
+18:08 <@matches> There is some kind of deep maths behind why transforming things relative to Path bounds works
+18:08 <@matches> I guess
+18:08 <@matches> It is both obvious and not obvious
+18:08 <@matches> It is very frustrating
+18:09 <@matches> I think this project is somewhat more appropriate for a maths major than mechatronics engineers...
+18:09 <@matches> I guess I don't have to go into the maths, but if I don't then I'm basically just saying "I tried this because it seemed like it would work, and it did!"
+18:10 <@matches> Even the Logarithm I implemented has nice maths in it
+18:11 <@matches> Which is just slightly beyond my ability to explain satisfactorily
+18:14 < sulix> I don't think maths-majoring has helped me much. It gives me snarky things to say about floats vs rationals, but doesn't stop the fact that I've now spent over a week trying to work out where the -ve signs need to go in the quadtree.
+18:16 <@matches> :(
+18:18 < sulix> On the bright side, by the power of trial, error, cribbing from the xkcd comic, and forcibly recreating all of the GPU buffers 4 times a frame, panning around the quadtree now seems to work.
+18:18 <@matches> Yay!
+18:18 <@matches> Can you zoom yet
+18:19 < sulix> Almost*
+18:19 <@matches> Zooming is just panning but with different numbers
+18:19 <@matches> Or is panning just zooming but with different numbers
+18:19 <@matches> Something
+18:19 <@matches> Some of the numbers are zero
+18:19 <@matches> Or possibly 1
+18:20 <@matches> Let me know when eye_of_the_rabbit works and we will have a performance show down!
+18:20 < sulix> Zooming in works about as well as it did before. Zooming out works as long as you don't try to zoom out beyond the original view.
+18:20 < sulix> Panning around the document works, though might have some problems if you try to pan outside (0,0)-(1,1) from the original view.
+18:20 <@matches> Who needs to zoom out anyway
+18:22 <@matches> I'm going to make the debug font more dramatic to answer some criticism
+18:22 <@matches> Apparently I need to indicate the width of the view in SI units
+18:22 <@matches> (And in really big text)
+18:25 < sulix> But there are no units for the view!
+18:25 <@matches> On my monitor the view is 22mm
+18:25 <@matches> window rather
+18:25 <@matches> So just multiply the view width by that
+18:25 < sulix> Just short of an attoparsec...
+18:33 < sulix> Okay, fixed the "you have to zoom in on non-binary-fraction boundaries for infinite precision issue that's plagued the quadtree for months.
+18:33 < sulix> Now we can see: discontinuities at quadtree node boundaries!
+18:33 < sulix> Fortunately, I have an excuse for leaving them there!
+18:34 < sulix> "The object wasn't added at that resolution."
+18:34 <@matches> Heh
+18:34 < sulix> (Also: we totally don't solve cubics analytically, so they're worse than they need to be)
+18:35  * sulix smells a "further work" section.
+18:35 <@matches> You have a "current work" section? Jealous
+18:36  * sulix didn't say that.
+18:36 <@matches> Apparently as long as I make something pretty people will be impressed
+18:36 <@matches> I wonder if it's too late to implement shading (again)...
+18:36 < sulix> Maybe different-coloured outlines?
+18:36 <@matches> Haha
+18:36 < sulix> More demo svgs?
+18:36 <@matches> I quite like the turtles demo
+18:37 <@matches> Unfortunately for reasons mentioned earlier it can't actually add turtles forever
+18:37 <@matches> Well it could
+18:37 <@matches> But you couldn't stop it and go look at them
+18:37 <@matches> You'll only ever see the bottom one
+18:37 <@matches> The demo that draws 20 and then zooms back out and then in again is probably good enough
+18:38 < sulix> Hmm... eye_of_the_rabbit is segfaulting the quadtree.
+18:38 <@matches> It clears the document every so often
+18:38 <@matches> Try commenting that out first?
+18:38 < sulix> That'd probably do it.
+18:38 <@matches> I thought we probably wanted to test zooming without altering the number of primitives, and that was the only way I could think of doing it
+18:38 < sulix> It also made the quadtree slow down, though that's a side effect of something I like to call "shitty coding".
+18:39 < sulix> The quadtree is full of it.
+18:45  * sulix is merging now. I love the #pragma message that happens for every file!
+18:48 < sulix> Code is up for your enjoyment/horror.
+18:48  * sulix breaks for dinner.
+21:01 <@matches> Yeah the #pragma message probably wasn't that good an idea
+21:02 <@matches> The problem was there are 3 different "Reals" now :S
+21:02 <@matches> So I wanted to make sure I knew which ones it was using
+21:08 < sulix> Fair enough.
+21:11 < sulix> Oh dear god, what have you done to the debug text?
+21:13  * sulix shudders.
+21:14 <@matches> It's readable!
+21:14 <@matches> Through the automerge seems to have forgotten the #ifdef 0
+21:15 <@matches> Oh that stuff is printed somewhere else...
+21:16 <@matches> Anyway, adding stuff seems to work!
+21:16 <@matches> But not from the script for some reason
+21:16 <@matches> Oh right, the clearing
+21:17 < sulix> It shouldn't work totally in the quadtree, I've just made it break more quickly.
+21:17 < sulix> Basically, you can (a) only add to the root node and (b) nodes are not yet updated with new objects if they already exist.
+21:17 <@matches> It doesn't work when things overlap nodes?
+21:17 <@matches> Right
+21:17 <@matches> I was getting excited for a minute
+21:18 < sulix> On the bright side, it no longer creates an entirely new quadtree for every individual object and it actually adds new things to new child nodes.
+21:20 <@matches> Running eye of the rabbit I see a LOT of "Recreate buffers" messages but no actual rabbits
+21:21 < sulix> It now recreates the buffers every frame because that was easier than getting it to recreate the buffer in arcane parts of quadtree code.
+21:29 <@matches> Well, it does work when you add something to the root node I guess
+21:30 < sulix> Almost.
+21:31 < sulix> If you zoom in, zoom out, add something to the root node and then zoom in again it isn't there.
+21:31 < sulix> But that will (fingers crossed) soon be resolved through the power of recursive functions.
+21:31 <@matches> Hmm, that's almost what happens when you use IEEE singles!
+21:34 < sulix> I'm still trying to work out how I can delay the generation of new child overlays until after all new objects have been added.
+21:34 < sulix> If I do things the obvious way, it'll generate thousands of overlays and totally kill performance.
+21:35 <@matches> Damn
+21:35 <@matches> I think I just need to write lots of stuff and fast
+21:35 <@matches> Well
+21:35 <@matches> Some form of result would be nice
+21:35 <@matches> A graph
+21:41 < sulix> I think I've managed to make the quadtree even slower than ParanoidNumber<GmpRat> would be.
+21:42 <@matches> How though? It seemed like it would be efficient
+21:43 <@matches> It doesn't have to render the whole document
+21:43 <@matches> s/render/transform
+21:44 < sulix> Well, it has to regenerate the entire quadtree everytime there is a new bezier, and there are lots of O(n) linked lists and recursive functions there.
+21:44 < sulix> And doing this the naïve way generates a pathalogically-worst case situation.
+21:45 < sulix> (I'm still waiting for my first "add something test" to complete.
+21:45 < sulix> )
+21:45 <@matches> Hmm
+21:46 <@matches> I guess once you already have a document with lots of detail in it, a quadtree is good
+21:46 <@matches> But actualy making the document with lots of detail in it...
+21:46  * sulix suspects it might just be infinite looping.
+21:46 <@matches> Why does it have to rebuild the entire quadtree? Can't it just modify the current node + nearest neighbours?
+21:47 <@matches> Or go up to the parent and add all the objects in the parent, then split them up for the children
+21:47 <@matches> Hmm
+21:48 <@matches> You need to be able to add objects to the ancestors as you zoom out I guess
+21:48 <@matches> But you should be able to do it lazily?
+21:48 <@matches> In theory
+21:48 < sulix> In theory.
+21:48  * matches is glad he is not writing the quadtree after all
+21:48 < sulix> The big problem is that adding things to the quadtree needs to be done in bulk to be efficient.
+21:49 < sulix> i.e. If you add a whole bunch of things to one node, and then a whole bunch of things to another, it's okay.
+21:49 < sulix> But if you alternate (add something to one), (add something to the other) repeatedly, you fragment the quadtree and it treats each bézier as it's own overlay from then on.
+21:49 < sulix> The easy way to do things is the latter way.
+21:50 < sulix> Because it's hard to get all of the info you need about what things have changed in bulk at the end of an entire operation.
+21:51 < sulix> But clearly doing things curve by curve is not going to cut it if even the simplest examples take over 5min/frame to render.
+21:52 <@matches> Well if it's any condolance, ParanoidNumbers are still worse than that
+21:53  * sulix should say "5min and counting"/frame.
+21:53 < sulix> I've not yet had a frame render.
+21:53 <@matches> Hey, at least you can still type into a terminal
+21:54 <@matches> When I run ParanoidNumbers I can't even kill the process for 5 minutes...
+21:54 < sulix> I am thankful for these small mercies.
+21:55 <@matches> I'd hoped they'd be a bit better with the more efficient transformation model but apparently not enough
+21:55 <@matches> In fact they are segfaulting again
+21:56 <@matches> I thought I stopped that
+21:56 <@matches> The plot thickens!
+21:57 <@matches> They segfault when std=c++0x
+21:57 <@matches> But not when std=c++11
+21:57 < sulix> Oh dear god.
+21:57 <@matches> I suspect it is related to the use of "auto"
+21:57 <@matches> And it is probably why google told you not to use it
+22:00 <@matches> Actually it's more likely because I forgot to make clean
+22:01 <@matches> Well I guess I will come back to them once I actually have something resembling a thesis draft
+22:01 <@matches> Hahaha
+22:02 <@matches> The turtles script is way cooler than the rabbit one by the way, if you haven't run it yet
+22:02 <@matches> (But it breaks the quad tree even more)
+22:04 <@matches> And PN do work if you restrict the size to like, 3
+22:05 <@matches> News in 5 minutes: Is it actually better than just using doubles
+22:06 <@matches> It seems to speed up every so often and then slow down again
+22:06 <@matches> Aaamd
+22:06 <@matches> Yeah that turtle rounded to the wrong spot
+22:07 <@matches> I should see how well our custom Rational implementation does too
+22:12 <@matches> I am confused by PN
+22:12 <@matches> A size limit of >= 5 causes apocalyptic memory usage
+22:12 <@matches> A size limit of 4 is totally fine and actually not much slower than Gmprat
+22:13 <@matches> Also I have a sudden urge to compile this with MinGW so that the Engineers who mark it can actually run it
+22:13 <@matches> I mean, they probably won't run it
+22:13 <@matches> But the last thing I want is for them to try and not be able to
+22:13 <@matches> And then just assume I fudged the results
+22:14 <@matches> I mean, a rabbit scaled to 1e-6 and then viewed under 1e6 magnification looks the same as the original rabbit...
+22:14 <@matches> It's not really even worth including both images
+23:56 <@matches> One does not simply cross compile for MinGW
+23:57 <@matches> Although I must say I was bracing for it to be worse
+23:58  * matches stares in shocked amazement at NO ERROR MESSAGES
+23:58 <@matches> COULD IT BE
+23:58 <@matches> COULD I HAVE SUCCEEDED?
+23:59 < Pommers> Nope.
+23:59 <@matches> -_-
+23:59 <@matches> If we didn't need spectators I'd totally /kick you
+23:59 < Pommers> 99 commits in my assignments repo >.>
+23:59 <@matches> Pfft
+23:59 <@matches> Commit them all to IPDF
+--- Day changed Sun Oct 05 2014
+00:00 < Pommers> I can kill your percentage of lines here. That's what you asked me to do
+00:00 < Pommers> Also
+00:00 < Pommers> First
+00:00 <@matches> err:module:import_dll Library SDL2.dll (which is needed by L"Z:\\home\\sam\\Documents\\University\\2014\\ipdf\\code\\src\\ipdf") not found
+00:00 <@matches> Hmm
+00:03 <@matches> If I try link with static SDL2 everything goes to hell though :(
+00:04 <@matches> I guess I can just add SDL2.dll
+00:05 <@matches> It runs in Wine
+00:05 <@matches> Does that make it more or less likely to run under windows
+00:05 <@matches> Ah crap the Qt stuff isn't compiled in though
+00:05 <@matches> Qt is annoying
+00:05 <@matches> They appear to ask you for money if you try download their source
+00:06 <@matches> Also they don't like you using Qt4 and I really can't remember why I picked Qt4 instead of Qt5 now
+00:07 <@matches> I guess I assumed it would be better, after experiences with GNOME 2 -> GNOME 3
+00:07 <@matches> New = terrible
+00:08 <@matches> Oh dur this is what apt-get source is for
+00:10 <@matches> I will just feel a lot safer if I know that the marker can actually run the software without needing to know linux
+00:10 <@matches> Call me a Paranoid Number...
+00:10 <@matches> (Ho ho ho)
+00:11 <@matches> (This is probably a sign that it is bed time)
+00:13 < Pommers> Yeah, you should probably go to bed matches 
+00:17 <@matches> What about you?
+00:18 < Pommers> I'm already in bed
+00:18 <@matches> SULIX
+00:18 <@matches> THERE IS A GOTO
+00:18  * Pommers grabs out his pitchfork
+00:20 <@matches> I only saw it because it is also outside an #ifdef and raises an "unused label" warning
+00:20 <@matches> How many others are there...
+00:24 <@matches> There is also a goto in stb_truetype.h but I'll let that one slide since sulix didn't write it

UCC git Repository :: git.ucc.asn.au