+--- Day changed Sat Sep 20 2014
+21:22 <@matches> Overloading operator new and delete is kind of terrifying...
+21:25 <@matches> Things run blindingly fast
+21:25 <@matches> Until they segfault
+21:26 <@matches> I suspect std::vector does not take kindly to being destructed multiple times
+21:33 <@matches> Hmm
+21:33 <@matches> I need to make std::vector pointers instead?
+21:33 <@matches> That's getting a little convoluted...
+21:35 <@matches> Or what I really need is a delete operator that doesn't actually call the destructor automagically
+21:35 <@matches> (Even when you overload delete it still calls the destructor?)
+21:36 <@matches> I'm noticing a bit of a trend here
+21:36 <@matches> You can overload C++ operators but if you do it totally breaks everything
+21:36 <@matches> eg: You could implement a double() operator for casting to double but you're better off just writing Double() and using it everywhere because otherwise the compiler goes insane trying to use your operator in places
+21:37 <@matches> You can implement your own delete operator but that won't stop the compiler from doing everything it does with the standard delete...
+21:38 <@matches> The only operators you can overload (mostly) are the arithmetic ones
+21:39 <@matches> Also the compiler seems to occasionally just use the standard delete anyway which just makes everything TOTALLY INSANE
+21:39 <@matches> WHY
+21:39 * matches grumbles and prepares to write "Delete" and "New"
+--- Day changed Sun Sep 21 2014
+16:43 <@matches> I think I'm just an idiot
+16:47 <@matches> Arena doesn't help that much
+16:47 <@matches> Which is odd
+16:48 <@matches> If anything it is slower :(
+16:49 <@matches> It's hard to profile something that doesn't work in valgrind
+17:00 <@matches> On the other hand, removing all the "SanityCheck" calls is surprisingly effective...
+17:48 <@matches> Damn
+17:48 <@matches> I guess new and delete isn't as expensive as just doing a craptonne of branches
+22:33 <@matches> So, probably a better idea is to stop the CPU renderer from recalculating the object bounds every single frame
+22:33 <@matches> And update the object bounds when the view is changed instead
+22:34 <@matches> Since we don't really care what the original bounds are
+22:37 <@matches> This is basically what the quad tree does...
+22:37 <@matches> Well it changes coordinate systems as well
+22:37 <@matches> But I can zoom in a lot further now than I could before...
+22:38 <@matches> Until eventually there is a sigfpe
+23:19 <@matches> Ok
+23:19 <@matches> This is slightly worrying
+23:19 <@matches> I can zoom to {0.5,0.5,1e-41,1e-41} and insert things without any problem
+23:21 <@matches> The CPU renderer does tend to sigfpe
+23:27 <@matches> Man I feel really foolish now
+23:27 * matches makes plans to delete the IRC logs again
+23:32 <@matches> So
+23:33 <@matches> The good news is that GMP rationals are pretty effective when you do cumulative transforms on the object bounds as opposed to keeping the bounds static and transforming them to view coordinates
+23:34 <@matches> The bad news is that so are regular floats
+23:34 <@matches> I'm pretty sure it just means we need a better tester
+23:38 <@matches> Or
+23:38 <@matches> We lie
+--- Day changed Wed Sep 24 2014
+12:33 <@matches> Ok, sulix do you want to help design these comparisons that we were going to use
+12:35 <@matches> We've got the "qualitative" comparisons pretty well...
+12:36 <@matches> It's the other 4 things
+12:36 <@matches> Performance vs number of primitives
+12:36 <@matches> Like
+12:36 <@matches> Do we add N primitives randomly?
+12:36 <@matches> Are our "test" documents just going to be Humphrey The Rabbit and Shady the Fox
+12:36 <@matches> Not that I have any objection to using them
+12:36 < sulix> I think so.
+12:36 <@matches> I'll add Emma the Cat and Mitch the Panda
+12:37 < sulix> Number of primitives should just be number of curves/objects.
+12:37 < sulix> I could do with some panda-monium. :P
+12:37 <@matches> Pommers beat you to that one
+12:37 <@matches> That's the name of the club's panda
+12:38 <@matches> I don't think I'll add Sam the Girraffe
+12:38 <@matches> It's embarrassing
+12:38 <@matches> Oh also did you read the wall of text?
+12:39 <@matches> Because I think we need a new way to demonstrate how much better the quad tree is than regular floats other than just zooming forever
+12:39 <@matches> Regular floats do quite well now
+12:39 <@matches> I should probably commit this
+12:39 < sulix> What about adding objects?
+12:39 <@matches> I also tried to get it to run without X for bus purposes
+12:39 <@matches> Well
+12:40 <@matches> Basically I threw out the idea of the view and just applied the transforms directly to all the object bounds
+12:40 <@matches> It will still print the equivelant view coordinates
+12:40 < sulix> Can you zoom out and then back in again?
+12:41 <@matches> I suspect if you go far enough there will be issues
+12:41 <@matches> The problem is going far enough takes a long time
+12:41 <@matches> We need to make ipdf take input so we can automate it?
+12:41 * sulix will do that this afternoon.
+12:41 <@matches> Or implement a "tester" that does it
+12:42 <@matches> HFP has a chapter on reducing error which boils down to rearranging the operands
+12:43 <@matches> Although they don't have anything as insanely dumb as ParanoidNumber
+12:43 < sulix> Isn't that what ParanoidNumber does?
+12:43 <@matches> Yeah
+12:43 <@matches> But ParanoidNumber doesn't assume any knowledge over what you are trying to do
+12:43 <@matches> Hence it is horribly inefficient
+12:44 < sulix> I suspect we need to sit down with Kahan and work out what the exact mathematical properties of floating-point error.
+12:44 <@matches> Their examples are like "If you know you are going to sum all these numbers, you sort them"
+12:44 <@matches> HFP goes through them
+12:45 <@matches> Sometimes you can represent the error as another float but with twice the precision?
+12:45 <@matches> It might be worth looking at whether MPFR includes the "Inexact" exception
+12:45 <@matches> Then you could just double the precision every time it occured?
+12:46 * sulix will be back shortly.
+12:47 <@matches> It's going to be a fun study break :S
+12:54 <@matches> Also PN manages to pass realops but somehow give totally whack behaviour when you actually use it
+12:54 <@matches> ...
+12:54 <@matches> And this is enforcing a size limit of "0" (which means it should just be equivelant to doubles!)
+12:55 <@matches> Also I should probably also write a draft thesis
+12:55 <@matches> Also other units suck, why can't the project count as 4 units
+12:56 <@matches> I'm finally starting to understand this properly, as we are running out of time at an alarming rate
+12:56 <@matches> I guess there probably won't be any experts on floating point arithmetic at my conference so I can probably pretend I know things
+13:02 <@matches> http://szmoore.net/ipdf/i-think-there-might-be-a-slight-maths-error-rabbit.png
+13:03 <@matches> I strongly suspect Copy/Paste errors
+14:07 < Pommers> Yeah. We have a club Panda
+14:10 -!- matches changed the topic of #ipdf to: IPDF: Infinite Panda Document Format
+14:13 <@matches> Um
+14:13 <@matches> cat.svg causes a segfault
+14:23 <@matches> It has an empty path?
+14:23 <@matches> I regret somewhat making the path be from m_start to m_end *inclusive*
+14:37 <@matches> Have a git push
+14:37 <@matches> Possibly with a correct timestamp
+14:47 <@matches> Ok, things still go whack when you apply transforms to objects instead of the view
+14:48 <@matches> But because you can add objects in screen space rather than converting to view space and back, you don't get the precision issues adding a new object
+14:48 <@matches> I suspect
+14:48 <@matches> If you add a new object at say 1e-6
+14:48 <@matches> It looks fine
+14:49 <@matches> Then you zoom back out to 0.5,0.5,1,1 or something
+14:49 <@matches> Then zoom back in
+14:49 <@matches> It *should* look all wierd again
+14:49 <@matches> Then again it might not
+14:49 <@matches> Because floating point errors are crazy
+14:51 <@matches> It does!
+14:51 <@matches> YES
+14:52 <@matches> It looks totally screwed up in a different way
+14:52 <@matches> So, I guess this just makes it more important that you can actually add elements to the quad tree
+14:53 * sulix feels the pressure mounting.
+14:54 <@matches> Is the quad tree kind of equivelant to applying the transformations to the objects but making sure you don't lose the original bounds
+14:54 <@matches> When you zoom back out you get the original bounds back
+14:54 < sulix> Yeah, largely.
+14:54 <@matches> Cool
+14:54 <@matches> I'm sure someone trained in maths can say smart stuff about that
+14:55 <@matches> Applying transformations to the object bounds is probably the best way if you have an arbitrary precision number representation
+14:55 <@matches> You can use a lower precision representation when you work in screen space then
+14:55 <@matches> Although I'm not sure how I would actually implement that...
+14:56 <@matches> With some kind of
+14:56 <@matches> Quad tree...
+14:56 <@matches> maybe
+14:56 <@matches> I guess if two methods end up with the same pixels in the same spot then they are mathematically equivelant
+14:58 <@matches> You could also speed things up
+14:58 <@matches> If you exploited the Path bounds
+14:58 <@matches> Express all the beziers within a path relative to {0,0,1,1} then just apply your transformation to the path
+14:58 < sulix> This is a much better design.
+14:59 <@matches> Well that's sort of a compromise between transforming the view or transforming all the bounds
+14:59 < sulix> But it's sort-of too late to change it all now.
+14:59 <@matches> I think I might have to though
+14:59 <@matches> If I want to make GMPrat performant
+15:00 <@matches> Lets face it, I'm doing a better job at redesigning the document structure to be less terrible than I am at actually implementing arbitrary precision number types :S
+15:01 <@matches> I could probably redesign the CPU renderer, but the GPU renderer would be harder
+15:01 <@matches> PathRenderer already does everything BezierRenderer does, but it adds shading
+15:02 <@matches> I think right now I will try to stop PN from being quite so broken
+15:02 <@matches> I am perplexed
+15:03 <@matches> As there is basically an "assert(equivelant to double)" after every single operation
+15:03 <@matches> None of them fail
+15:03 <@matches> And it gives a totally wrong result
+15:45 <@matches> It is rendering at 666 FPS
+15:46 <@matches> :O
+16:49 <@matches> Ok
+16:49 <@matches> There should be postive paranoid numbers soon
+16:49 <@matches> s/postive/negative
+16:49 <@matches> That thing that happens when you put a '-' sign in front of a number
+16:49 <@matches> Very important
+16:50 < sulix> Negative _and_ paranoid? I'm waiting for the "Number Theropy" classes next... :P
+16:50 <@matches> I've learned some valuable lessons about implementing number classes I guess
+16:50 < sulix> At least it isn't complex?
+16:50 <@matches> Make sure you test every single function against doubles
+16:51 <@matches> (Including constructors)
+16:51 <@matches> I'm really over bug fixing this class
+16:51 <@matches> I just want to make it faster dammit
+16:51 <@matches> I have ideas about how to make it faster
+16:53 <@matches> Admittedly they are mostly not good ideas
+16:53 <@matches> I'm expecting the arena may help more when I don't enforce a size limit of zero though
+16:54 <@matches> YES
+16:54 <@matches> I can render a paranoid rabbit
+16:54 <@matches> Oh wait
+16:54 <@matches> I didn't increase the size limit from zero
+16:54 <@matches> That will be the real test...
+17:02 <@matches> So are you going to implement a magical automated zoomer? :P
+17:03 <@matches> We kind of need to be able to choose what point to zoom in on depending on the particular test svg though :S
+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
+--- Log opened Sun Sep 28 09:58:47 2014
+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 -!- 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
+--- 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 -!- 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: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
+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
+10:01 < sulix> Gah: runs fine, no warnings in valgrind, crashed with memory corruption errors outside of valgrind.
+10:02 < sulix> This is clearly karmic retribution for the goto.
+10:25 <@matches> Ah
+10:25 <@matches> Are you compiling with or without the quadtree?
+10:25 <@matches> Because I set the VReal and PReal typedef to ParanoidNumber
+10:26 <@matches> Running in valgrind ParanoidNumber is equivelant to a double since the FE_INEXACT exception isn't raised
+10:26 <@matches> Running outside of valgrind... anything could happen
+11:31 <@matches> One does not simply compile with MinGW and have things actually work
+11:32 <@matches> Wine likes it
+11:32 <@matches> Actual windows seems to have some difficulty with OpenGL functions
+11:32 <@matches> Also thank goodness for gdb compiled for windows
+11:33 <@matches> Because "ipdf.exe has experienced an error, would you like to send Microsoft a report?"
+11:33 <@matches> Is really not helpful
+11:33 <@matches> Command prompt won't even tell you "Segmentation fault"
+11:39 <@matches> Hmm, needs more "-lopengl32" ?
+11:39 <@matches> But why weren't there "undefined reference" errors
+11:39 <@matches> So confuzled
+11:40 <@matches> I bet even if it runs it won't work due to geometry shaders or something
+11:49 <@matches> Oh dear
+11:49 <@matches> This is to do with the several thousand lines of autogenerated stuff in gl_core44.*
+11:50 <@matches> Isn't this what GLEW was supposed to be for
+11:50 <@matches> Except GLEW is ancient so nobody uses it
+11:50 <@matches> Shouldn't someone reinvent a less shitty GLEW then
+11:50 < sulix> Apparently glew works again.
+11:50 <@matches> Ah
+11:51 < sulix> I did get glew working under mingw32 yesterday, as it happens.
+11:51 <@matches> Commit please?
+11:51 <@matches> Oh right for something else :P
+11:51 <@matches> What magical incantations are required
+11:51 < sulix> Yeah. And by working, I mean compiling, not running.
+11:51 <@matches> Baha
+11:52 < sulix> (Though I think it was another bit of the code that segfaulted)
+11:52 <@matches> Why is getting OpenGL working so horrifying
+11:52 <@matches> It's supposed to be a standard
+11:52 < sulix> So the gl_core44.* file was supposed to be basically glew, but hooked into SDL.
+11:52 <@matches> It's not working on Windows though
+11:53 < sulix> Do you have OpenGL drivers on windows?
+11:53 < sulix> They're not installed by default.
+11:53 <@matches> Yeah on my desktop
+11:53 <@matches> Although I did switch to Maaxen
+11:53 < sulix> Hmmm...
+11:53 <@matches> There were other things wrong
+11:53 <@matches> I wasn't liking with -lopengl32
+11:54 <@matches> Although wine didn't seem to care
+11:54 < sulix> In theory, the glcore44 and SDL stuff should load opengl32 at runtime if needed.
+11:54 < sulix> So you shouldn't, in theory, need to link to them.
+11:54 < sulix> But that's very much "in theory".
+11:55 <@matches> I will investigate the driver situation on Maaxen
+11:55 <@matches> Urgh why can't windows just have `apt-cache search`
+11:55 <@matches> And `lspci | grep vga`
+11:55 <@matches> Lets see... "Device Manager"
+11:55 < sulix> Maaxen will almost certainly not have working GL 3+ drivers.
+11:56 <@matches> Oh it's a VM
+11:56 * matches backs away very quickly
+11:56 <@matches> Well I can't keep rebooting every time I try and fix a segfault
+11:56 <@matches> Bloody scope broke my other laptop
+11:57 <@matches> I used to have Windows XP...
+11:57 <@matches> Oh wait I smashed the hard drive open so I could draw it for an assignment
+11:58 < sulix> You should subscribe to the "if it works under wine, it's good enough" philosophy.
+11:58 * sulix has shipped things that way.
+12:00 < sulix> Anyway, the quadtree is still segfaulting when not run under valgrind by (I think) getting the video card to somehow corrupt unrelated system memory or something.
+12:00 <@matches> :S
+12:01 < sulix> It always crashes when trying to glDeleteBuffers() which is really disturbing.
+12:02 <@matches> I've noticed that when there are a lot of objects, and you kill the program, you never get the memory back ever
+12:02 <@matches> And your system stays slow
+12:02 <@matches> Which is a bit of a problem
+12:02 <@matches> Need to reboot every hour or so of testing...
+12:02 < sulix> Okay, I haven't had that happen.
+12:02 <@matches> I guess that's just fglrx amazingness
+12:03 < sulix> Guess so.
+12:03 <@matches> For example, I can run turtles_all_the_way_down.script without anything crashing but then I am left with like 20MB and when I open Iceweasel everything goes to hell
+12:03 < sulix> On the bright side, the fglrx developers are planning to get rid of the fglrx kernel module and just have their closed-source GL driver talk to the open-source kernel driver.
+12:04 <@matches> Is that... good
+12:04 < sulix> We'll see, but I can't imagine it making fglrx _worse_
+12:04 <@matches> The open source driver doesn't work that well either
+12:05 <@matches> I sense another few days trying to get X working again after an `apt-get upgrade` at some point in the future then :(
+12:08 < sulix> Don't worry, they're still in the "have meetings" phase.
+12:37 <@matches> I think the glDebug stuff is giving windows issues
+12:37 <@matches> At least running in actual windows not a VM
+12:37 <@matches> Running in a VM is not conductive to working
+12:37 <@matches> Sanity tells me to give up
+12:38 <@matches> It can do glCreateProgram though!
+12:38 <@matches> glObjectLabel seems broken
+12:39 < Pommers> http://th01.deviantart.net/fs70/PRE/i/2012/076/1/2/oh_my_glob__by_tsubasaangel-d4t0g68.jpg Oh my glOb
+12:39 <@matches> Yes
+12:40 <@matches> It would be nice if the extension manager (if you could call gl_core44 that?) used stubs instead of NULL
+12:41 <@matches> I mean for debugging
+12:41 <@matches> Then you can have it print "This function doesn't actually exist guys"
+12:41 <@matches> gdb is nicer I supose
+12:41 <@matches> In fact if I weren't trying to cross compile on linux and then reboot and test in windows this would be a lot easier
+12:58 <@matches> Ok screw this
+12:58 <@matches> I need to write a thesis
+12:58 <@matches> :(
+12:58 <@matches> But after lunch
+13:51 <@matches> http://thecodelesscode.com/case/57
+14:12 < Pommers> Lunch sounds good
+14:23 <@matches> I'm currently reading codelesscode using the excuse that the turtles tester takes a very long time to sigfpe
+14:23 <@matches> (But it sigfpe's nonetheless)
+14:24 <@matches> Can we disable sigfpe for overflow/underflow casts from double to float
+14:24 <@matches> That would make things easier
+14:24 <@matches> Well
+14:24 <@matches> Assuming that the float casts to FLT_MAX or FLT_MIN if it would underflow/overflow
+16:09 <@matches> sulix: I can no longer load anything into the document
+16:09 <@matches> Congratulations though, this means it always renders accurately...
+16:20 <@matches> Ok...
+16:20 <@matches> We now have
+16:20 <@matches> #ifdef
+16:20 <@matches> ...
+16:21 <@matches> m_count++;
+16:21 <@matches> return m_count;
+16:21 <@matches> #else
+16:21 <@matches> return m_count++;
+16:21 <@matches> #endif
+16:22 <@matches> Because I don't know if the quadtree *needs* to return an invalid array index (it doesn't even use the same array...) but over in monotree land we like our array indices to be valid
+16:24 <@matches> Now what was I doing
+16:24 <@matches> Ah, seeing if OpenGL really could do Wu lines
+16:25 <@matches> So when I say it is in my report I am not lying
+16:25 <@matches> Report...
+16:25 <@matches> The thing I'm writing
+16:25 <@matches> Write
+16:25 < Pommers> How long is the report going to be matches?
+16:25 < Pommers> And when are you going to finish it?
+16:25 <@matches> It has to be 6000 words
+16:26 <@matches> My LitReview is ~8000 ...
+16:26 <@matches> Although that might be including the SVG and postscript examples
+16:26 <@matches> I think I should take those out?
+16:26 <@matches> You'd think having a huge pre-written document would make it easier but no
+16:27 <@matches> Enabling LINE_SMOOTH leads to, of all things, SIGFPE
+18:25 <@matches> I am making a whole lot of no progress here
+18:25 <@matches> Draft due on Friday...
+18:26 <@matches> I need to produce a Design Process
+18:26 <@matches> The software wasn't so much designed as congealed
+18:27 <@matches> I forgot this is an Engineering Project not CS and therefore needs to be done in such a way that future Engineers can improve upon the work...
+18:27 * matches sobs some more
+18:27 <@matches> Rectangles and Circles don't even work anymore
+18:28 <@matches> I sacrificed them for the glory of the Bezier To Path transformations
+18:29 <@matches> Also, instead of a transformation per path, it would make more sense to use one per SVG
+18:30 <@matches> It's basically the localised coordinate approach but not as fancy as a quadtree
+18:30 <@matches> If you were building up a document one bezier at a time by drawing them, you'd have to do something fancy to make your paths
+18:31 <@matches> (Un)Fortunately we don't have an editor anyway
+18:47 <@matches> Hmm, that really needs reverse parenthesis to indicate that the word is "Unfortunately" but the "Un" is removed
+18:47 <@matches> )Un(Fortunately
+18:47 <@matches> I have invented a new gramatical construct-thing
+18:47 * matches adds it to the list of results
+--- Day changed Mon Oct 06 2014
+18:02 <@matches> So the good news is I worked out the transform, the bad news is it's yet another horrible hack
+18:03 <@matches> Which will undoubtably be extremely slow if I use Gmprat
+19:01 <@matches> It's amazing how useful a "grid.svg" that is just lines which should in theory be one pixel apart is
+19:01 <@matches> If we could draw it in a different colour it would be even more useful
+19:01 <@matches> But the clock of doom is counting down to the epsilon of time
+19:17 <@matches> A quick bit of <commenting out large parts of the shading algorithm and enabling shading anyway> later: http://szmoore.net/ipdf/fox-vector+grid.png
+19:20 <@matches> Wow that took 16 minutes
+19:20 <@matches> ... 19 if you count the last 3...
+19:20 <@matches> I'm running out of epsilons
+19:21 <@matches> If I represent the amount of time I have left on the project as a floating point number, then a single second is below the epsilon for floats, therefore each second will not affect the amount of time I have left, therefore I will never have to finish
+19:21 * matches resists the urge to verify if a single second is actually below epsilon or not
+--- Day changed Tue Oct 07 2014
+13:52 <@matches> http://ieeexplore.ieee.org.ezproxy.library.uwa.edu.au/stamp/stamp.jsp?tp=&arnumber=5577902
+13:52 <@matches> Uh oh
+13:57 < sulix> We did look at that briefly, IIRC, but ignored it because it was only integers, I think.
+16:05 <@matches> Yeah, although a rational is just two integers
+16:05 <@matches> But too late now
+16:05 <@matches> I am not making progress
+16:05 <@matches> I have deleted words
+16:05 <@matches> That is not progress
+16:05 <@matches> (I had 8000 words, I require 6000 words...)
+16:06 <@matches> I should probably get some performance tests done, but every time I try there ends up being something I have to code first
+17:25 <@matches> I have a somewhat less awful explanation of number representations that still manages to carefully not actually define a number
+17:26 <@matches> I wonder if I need a citation though
+17:28 <@matches> Does it classify as "blindingly obvious" or "known since the dawn of time" that you can write numbers as "\sum_{i=-\infty}^{\infty} d_i B^i" where "d_i" and B are also numbers (it's so meta)
+17:28 <@matches> You're the maths guy, surely there is a paper
+17:29 <@matches> If it's blindingly obvious, I probably shouldn't state it, so I guess it's not blindingly obvious...
+17:29 <@matches> But on the other hand it's just a fancy way of talking about what you learn in primary school...
+17:43 <@matches> http://thecodelesscode.com/case/137
+17:50 <@matches> Dear goodness it's hideous
+20:08 < sulix> matches: It's actually kind-of more complicated than that.
+20:08 < sulix> You might find it interesting to look up Cantor's diagonal argument.
+20:09 < sulix> (Which is technically a proof that the size of the set of rationals is different to the size of the set of reals, but it uses the idea of infinite sequences of digits)
+20:09 < sulix> For example \sum_{i=-\infty}^{\infty} d_i B^i actually gives you the reals, not the rationals.
+20:10 < sulix> But you have to be super-careful about what "infinity" is.
+21:11 <@matches> Did I say Rational
+21:11 <@matches> I thought I said real
+21:11 <@matches> No I said "number"
+21:11 <@matches> Wel
+21:12 <@matches> I will look up Cantor's diagonal bishop
+21:12 <@matches> I mean argument
+21:13 <@matches> But basically anything you are going to represent on a computer is either written as that sum or based on components that are
+21:13 <@matches> A float is like changing where the "0" is
+21:13 <@matches> An integer is starting the sum from zero
+21:14 <@matches> An arbitrary integer uses the same sum, but the digits are smaller integers
+21:14 <@matches> (In another base, and then the base of the arbitrary integer is 2^{N})
+21:14 <@matches> I don't know how much I am expected to explain this sort of thing
+21:15 <@matches> And of course a rational is two integers written using the sum
+21:15 <@matches> Infinity is...
+21:16 <@matches> Yeah
+21:17 <@matches> Screw that, if people don't like me writing a number as an infinite sequence of digits I will point out the name of my major (and then hope they don't ask why I am doing a project about numbers considering my major)
+21:17 <@matches> Other things I don't really want to include in my report are the 4 operations for floats
+21:18 <@matches> But I feel like some sort of explanation of why "(x - view.x) / view.w" totally dies
+21:18 <@matches> Is needed
+21:18 <@matches> I'll commit "grid.svg", you might find it useful
+21:18 < sulix> "If view.w is zero, you're in trouble."
+21:18 <@matches> Yeah
+21:19 < sulix> I'm sure grid.svg will lead me to much confusion!
+21:19 <@matches> No it's really cool
+21:19 <@matches> It is a 1px by 1px grid
+21:19 < sulix> But how will I know where I am?
+21:19 <@matches> So, because we add SVGs scaled to the view, whenever you insert it the view should be black
+21:19 <@matches> Ah
+21:20 <@matches> But if you zoom in, you can resolve the lines that are 1px apart in the original view
+21:20 * sulix really needs to get on that "adding SVGs scaled to the view" thing.
+21:21 <@matches> So, if you add it scaled to the view at some point and you *don't* see total blackness, it's showing you the locations in the document that can be represented when scaled to the view
+21:21 <@matches> ... If that makes any sense
+21:22 < sulix> Ah.... that's cool.
+21:22 <@matches> For example using single precision, at {5,5,1e-6,1e-6} you only get 4 lines (and also, the distance between the lines is the amount you need to move the mouse in order to translate)
+21:22 <@matches> Yeah, and hopefully it will be good for my bounds measurement test
+21:23 <@matches> I know it's a shitty measure but it's better than just saying "This picture looks funny!"
+21:23 <@matches> "This graph indicates how funny a picture will look"
+21:23 <@matches> I feel like graphs make things *look* more legitimate even if they aren't actually
+--- Day changed Wed Oct 08 2014
+12:48 <@matches> Writing up these "results" it really doesn't feel like I've achieved much of consequence...
+12:49 <@matches> It feels like I spent 9.5 months not understanding anything and then stumbled accross the blindingly obvious solution that should have taken a week.
+12:50 <@matches> Then again, we were talking about local vs global coordinate systems right at the start...
+12:51 <@matches> Anyway all I've done is introduce a local coordinate system which is expressed with arbitrary precision relative to the global coordinate system.
+12:51 <@matches> The only advantage I can see with the quadtree is that it clips things
+12:51 <@matches> Which is admittedly a really huge advantage
+12:51 <@matches> Since GMP rationals grow exponentially...
+12:51 <@matches> It's a very big time constant thanks to GCD though
+12:52 <@matches> I wish shading worked because these figures would look so much more awesome with colour
+12:57 <@matches> I really hate that I can't just include a pixel perfect copy of the png figures
+12:58 <@matches> There's a massive amount of antialiasing going on
+13:01 <@matches> ...
+13:01 <@matches> I've been writing too much LaTeX when I start using '%' as comment in our debug script
+22:57 <@matches> I must say, the one place where PDF's magical blurring of things makes them look better is the figures from back when shading almost worked
+22:57 < Pommers> LaTeX <3
+22:57 <@matches> It's not even something you can control in LaTeX
+22:58 <@matches> The PDF viewer will do whatever the hell it wants
+22:58 <@matches> Although I've realised that the screenshot tool in debian is also adding antialiasing of its own
+22:59 <@matches> So at some point between the draft thesis and the final thesis I guess I need to go through IPDF's own screenshot function
+22:59 <@matches> szmoore.net/ipdf/sam/presentation/presentation.pdf
+23:00 <@matches> The presentation with a big gap where I in theory explain Rational numbers, arbitrary precision integers, the GMP library, Why we only care about the bounds of beziers, the different ways you can apply bounds transforms to get better results, and all the graphs that I am going to make that don't exist yet
+23:00 < Pommers> Oh yeah, did you see the Github pack that I posted in #UCC last night?
+23:00 <@matches> Well no I was too busy crying myself to sleep
+23:01 <@matches> Thesis' are harder than regular assignments mainly because there isn't a set goal
+23:01 <@matches> You have to set your own goal
+23:01 < Pommers> https://education.github.com/pack
+23:02 <@matches> And it tends to end up as not actually thinking about the goal until the end and then realising that you didn't meet it
+23:02 <@matches> Huh what's that
+23:03 <@matches> I see many "cloud" and "crowdsourcing" references and "$" signs
+23:03 < Pommers> All free stuff for students
+23:04 <@matches> Cool
+23:04 <@matches> Goodnight
+23:04 < Pommers> Night
+23:06 <@matches> Hmm, I should probably have removed the Western Australian Marine Science Institution logo from that presentation template I stole
+23:07 <@matches> Or it will haunt my dreams
+23:07 < Pommers> Probably. Whena re you presenting?
+23:10 < sulix> I'm just disappointed that your presentation isn't "CONFIDENTIAL" like some of th others on the list.
+23:17 < Pommers> Nice presentation
+--- Day changed Thu Oct 09 2014
+09:22 <@matches> I'm kind of worried that my live demo takes about 10 minutes to run
+09:23 <@matches> Also there are so many things that don't work
+09:23 <@matches> Like actually loading an SVG with arbitrary precision
+09:24 <@matches> The bottleneck in the live demo seems to be the shear number of objects in it though
+09:24 <@matches> Maybe I just need fewer turtles
+09:25 <@matches> Also is Rowan in Perth
+09:25 <@matches> I think he might be supposed to mark it
+09:26 <@matches> Although they listed Tim and not Rowan on the supervisors list
+09:26 <@matches> :S(
+10:43 < sulix> Rowan is here.
+10:50 <@matches> Excellent
+10:50 <@matches> "Record yourself presenting as practice" they said "It will make you feel more confident" they said
+10:51 <@matches> They never mentioned that it will make you realise just how stupid your voice sounds, just how boring you are at presenting, and just how many things you don't have time to cover
+10:51 <@matches> Well that last one I guess they did mention
+10:51 <@matches> They didn't mention the crushing despair...
+10:59 * sulix is in desperate need for a suitably punny title for his seminar.
+11:17 <@matches> I didn't use a pun
+11:17 <@matches> I used a very mundane title
+11:17 <@matches> Which is probably why I am on last...
+11:17 <@matches> Whoops I'm not supposed to give Pommers hints as to when it is, or he might show up
+11:22 <@matches> I make such a leap in my presentation
+11:22 <@matches> I go from "Look this PDF viewer has a zoom limit of 800%" to "The standards specify IEEE-754 floats"
+11:22 <@matches> Quietly ignoring that you really should be able to go further than 800% with IEEE-754 floats
+11:22 < sulix> Sounds good!
+11:23 <@matches> I guess if someone calls me out I have the backup "Look, I can zoom further but then X crashes"
+11:23 <@matches> "What a shame, looks like I can't do the rest of the presentation!"
+11:23 <@matches> Also
+11:23 <@matches> Where am I supposed to mention the collaborative aspect
+11:24 < sulix> Just point at me and go: "the bugs are all his fault".
+11:24 <@matches> Currently it is in "References"
+11:24 <@matches> - David did things
+11:24 <@matches> - Go see David talk about Quadtrees
+11:25 < sulix> - He used a goto, get the pitchforks.
+11:27 <@matches> "So I'm going to do some live demos now"
+11:27 <@matches> "And as you can see, if I zoom in
+11:27 <@matches> "Oh fuck SIGFPE"
+11:29 <@matches> Also, if you have any time to set up some of the performance tests that would be kind of awesome
+11:29 <@matches> Since we both need them, but I appear to need them sooner :P
+11:30 <@matches> I guess I can leave them out and just have the spots in the draft where I want them to go, but I'm getting exponentially nervous about them
+11:30 <@matches> We can compile with MPFR C++ mpreal now
+11:30 <@matches> You can set the precision, but it appears to be fixed
+11:30 < sulix> Oooh...
+11:31 < sulix> Is it faster that gmprat?
+11:31 <@matches> I don't know yet
+11:31 <@matches> That's one of the performance tests I want to do
+11:32 <@matches> I think mpreal with a fancy algorithm for how you increase precision *might* beat GMP rat
+11:32 < sulix> So do I.
+11:32 <@matches> The problem is, if you use a fixed precision then you can always choose some view bounds for which things aren't rendered correctly
+11:32 <@matches> Also I do not have time to implement a fancy algorithm for how you increase precision...
+11:33 <@matches> I feel like I have achieved half of the project
+11:33 <@matches> Rather than the whole thing
+11:33 <@matches> :S
+11:34 <@matches> I do suspect that if you just go "I will use a 1000 bits" for mpreal, then for ranges where you don't need that precision you're wasting a lot of time
+11:36 < sulix> You can't do "I'll use n*zoom bits" or something?
+11:37 <@matches> I think I would be better off analysing the implementation that works rather than implementing the implementation that might work better...
+11:37 <@matches> I guess there's still some time *after* the presentation
+11:44 <@matches> sulix: People are getting lunch at the tav because it's Pommer's birthday, you should come
+11:45 <@matches> I went in the tav once and didn't die
+11:45 <@matches> (Not counting the quiz night, at which I'm pretty sure I did die)
+11:45 < sulix> I guess I could eat some lunch.
+18:32 <@matches> I have pushed the horrible python/debugscript combo
+18:32 <@matches> Featuring totally inconsistent naming conventions in the python scripts
+18:36 <@matches> I do recommend you learn how to use python for horrible hacky scripts like this because it is about to save my life
+18:38 <@matches> Maybe you can write one that demonstrates the flaw by zooming in on an intersection :P
+18:39 <@matches> Hmm
+18:39 <@matches> I wonder if the use of "cin" and "stdout" for input to the DebugScript and output from the DebugScript does anything wierd
+18:40 <@matches> Conshmistency
+18:40 * matches goes into super draft mode
+--- Log closed Thu Oct 09 18:40:43 2014
+--- Log opened Thu Oct 09 18:41:03 2014
+18:41 -!- Irssi: #ipdf: Total of 3 nicks [0 ops, 0 halfops, 0 voices, 3 normal]
+18:41 -!- Irssi: Join to #ipdf was synced in 0 secs
+18:41 < matches> (You might say something important that I overlooked I guess?)
+19:47 < sulix> Okay, so the grid is totally breaking the quadtree.
+19:47 < sulix> Because it has lines that coincide _exactly_ with the edge of the quadtree.
+19:48 < sulix> So the quadtree doesn't know what nodes to put them in.
+19:48 < sulix> Will there be two copies of them? Will there be none?
+19:48 < sulix> (Also you broke debugscript reading from a file, but I've fixed it and will push shortly)
+19:49 < sulix> (The power of iostreams!)
+20:00 < sulix> Okay, so not solving both the x and y cubics for vertical/horizontal lines didn't help.
+20:00 < sulix> (On the bright side, it doesn't seem to have broken anything too significant)
+20:19 < sulix> Interesting things from Knuth.
+20:20 < sulix> - "The origins of floating-point notation can be traced back to Babylonian mathematicians ~1800 BC" (who used bas 60, but didn't explicitly state the exponent)
+20:30 < sulix> - Bigints have O(N) addition/subtraction, multiplication/division O(N^2)
+20:32 < sulix> - Knuth writes the idea of "positional number systems" as (...a_3 a_2 a_1 a_0 . a_{-1} a_{-2} ...)_b = ... + a_3 b^3 + a_2 b^2 + a_1 b^1 + a_0 + a_{-1} b^{-1} + a_{-2} b^{-2} +...
+20:32 < sulix> i.e. neatly using "..." to avoid ever writing infinity.
+20:33 < sulix> He also uses the term "radix point" to mean decimal/binary/whatever point.
+20:33 < sulix> (and then gives about four pages of history of ancient civilisations counting)
+20:35 < sulix> There is then some discussion of negative and complex bases and the different ways of representing negatives.
+20:45 < sulix> - The "ulp" is a unit of floating-point error equal to one unit in the last place of the fraction (mantissa) part of a float.
+20:45 < sulix> Floating point operations are correct to within half an ulp.
+20:46 < sulix> The associative law for multiplication is holds within about 2 ulps.
+20:47 < sulix> (Provided no exponent overflow or underflow occurs)
+20:47 < matches> Cool
+20:47 < matches> Well, I've got a graph showing that mpfr reals with 6 bits of precision are (somewhat unsurprisingly) worse than either doubles or singles
+20:47 < matches> Also FPS
+20:47 < matches> FPS goes all over the place with everything
+20:48 < sulix> ulps are only valid for normalized floats.
+20:48 < sulix> Yeah, FPS is a totally terrible unit.
+20:49 < matches> SPF might be better
+20:49 < sulix> You should try for ms/frame, but even that will probably be a bit broken.
+20:50 < matches> FPS is in the code now, it can change later
+20:50 < matches> "This wobbly line is slightly lower than this one, indicating WORSE"
+20:50 < matches> Ok, what other performance tests did I need
+20:51 < matches> Oh yeah, ones that actually alter the view with things in it, as opposed to ones that import an svg at a fixed scale
+20:53 < matches> Man explaining how all these tests are actually valid will be a pain
+22:34 < matches> I am too tired to work out how to skip the tests that are essentially pointless for various transformation settings
+22:35 < matches> I guess they'll just be in the figures as straight lines thus proving my point
+22:35 < matches> (Or confusing the figure)
+22:35 < matches> The fact that there is a graph should be good enough for a draft
+22:36 < matches> Yes, they are straight lines, thus proving my point
+22:36 < matches> (Actually they just make the figure confusing)
+22:38 < matches> I think what I've actually invented is just a very convoluted way to demonstrate things that everyone has known since Knuth
+22:39 < matches> And less of a useful SVG viewer
+22:40 < matches> Either that or an epileptic siezure machine
+22:41 < matches> So many flashes
+22:42 < matches> Hmm it looks like the grid cumulated error is really not as noticable with the grid
+22:42 < matches> s/grid//
+22:42 < matches> s//grid/
+22:42 < matches> skdfjhasdf
+22:50 * matches prepares the "hairy fox" hypothesis
+22:58 < sulix> No relation to the hairy ball theorem? http://en.wikipedia.org/wiki/Hairy_ball_theorem
+23:07 < matches> That is... an unfortunate name
+23:08 < matches> Oh, it turns out to produce the hairy fox you need to do a lot of cumulative transforms (dur)
+23:08 < matches> Not just two really big transforms
+23:08 < matches> So the ulp thing is useful
+23:08 < matches> For understanding the rounding errors for small widths
+23:10 < matches> The subtraction of x - v_x gives you up to 1 ulp and then the division by 1e-6 increases it to 1e6 ulp and if 1 ulp \approx 5e-5 or more, suddenly it is half your view width
+23:10 < matches> Increasing the exponent of (v_x, v_y) will double the ulp
+23:10 < matches> So for the same width you get half the precision
+23:20 < matches> Hairy fox syndrome appears to work best if you use pxzoom
+23:20 < matches> I won't question it...
+23:41 < matches> Yeah you have to try really hard to get the hairy fox
+23:42 < matches> My greatest fear is that someone will realise to achieve these "errors" by using the mouse (which is what it simulates) it would take you several days of determined scrolling
+23:42 < matches> Wow it makes interesting patterns in the grid though
+23:43 < matches> It affects both the position and the dimensions of the lines so your grid gradually disappears
+23:55 < sulix> pxzoom will have more error because it randomly calls expf() on its input, so you've got some dodgy approximation of 'e' messing things up.
+--- Day changed Fri Oct 10 2014
+00:16 < matches> Well that would have been nice to know before I ran a 20 minute test
+00:16 < matches> I thought it was equivelant to using the mouse
+00:17 < matches> Oh well
+00:17 < matches> The test still proves the point
+00:17 < matches> Even though there's the dodgy approximation of e going on
+00:17 < matches> GMP rationals give a very small error
+00:17 < matches> Cumulative transforms give a very large error
+00:17 < matches> Direct transforms give an increasing error and also have the issue with precision
+00:18 < matches> I should probably distinguish between error and precision a bit more
+00:18 < matches> We want precision and we don't want error
+00:19 < matches> So the GMP rationals applied to Path bounds pass both tests
+00:19 < matches> Whereas the other two approaches pass one test and fail the other
+00:19 < matches> Or fail both
+00:19 < matches> s/two/three/however many I had I lost count
+00:45 < matches> New draft is pushed
+00:45 < matches> Enjoy the graphs
+00:46 < matches> Try not to have too much fun questioning the validity of the results, they are all that's keeping me going
+00:46 < matches> I wish path-rat gave no error
+00:46 < Pommers> When do you need iPDF working on windows/
+00:47 < matches> It's not really a priority
+00:48 < matches> I'll probably try and get it working after the final report is due
+00:48 < matches> I will link to it anyway see
+00:49 < matches> The odds of anyone actually following the link are slim
+00:49 < matches> If it doesn't work I'll tell people to run it in wine
+09:33 < sulix> Those are damn nice graphs!
+09:34 < sulix> I take it there's no 'rat' measurement because it's too slow.
+09:35 < sulix> pxzoom is actually the same as the mouse, the mouse still does random expf() calls to work out the zoom amount.
+09:35 < sulix> (I thought I'd changed that, but apparently not)
+09:37 < sulix> Also, thank god we don't use 'sin': http://randomascii.wordpress.com/2014/10/09/intel-underestimates-error-bounds-by-1-3-quintillion/
+09:38 < matches> There should be a rat measurement?
+09:38 < matches> In the loss of precision graph, the path-rat program loses no precision
+09:39 < matches> But it's underneath all the other implementations that also lose no precision
+09:39 < matches> They are all on the same line...
+09:39 < matches> In the accumulated error graph, it is down near 10^{-2}
+09:39 < matches> I'm not sure why it isn't at zero...
+09:39 < matches> I'm just going to point vaguely at the expf function
+09:41 < matches> I'll probably add MPFR with 10 bits (half floats...) and X bits where X is a lot
+09:41 < matches> But not today
+09:41 < matches> My draft fleshes out a lot more when I uncomment things...
+09:41 < matches> I mean the idea of commenting them was that they'd be removed
+09:42 < matches> Also there are two sources of error in the Direct transformation
+09:42 < matches> I need to think about whether they are both equally bad or one is worse
+09:42 < matches> You need to apply the inverse view transformation to express the svg in document space
+09:43 < matches> *Then* you apply the view transformation to render it
+09:43 < matches> Either of those could be the one that breaks it, but I suspect the rendering transformation is worse
+09:46 < matches> Maybe some of the ipython figures don't have path-rat in them, I forget
+11:40 * sulix sighs.
+11:40 < sulix> cssubmit requires my abstract to be in ASCII, so the é in Bézier means cssubmit rejects it.
+11:51 < matches> Haha
+11:51 < matches> I got excited when Rowan said "Looks great to me" and then I realised he was talking about your abstract not my draft... :P
+11:52 < matches> That would have been impressive speed reading
+11:52 < matches> My abstract is sort of really terrible
+11:52 < matches> It clings to the whole "document formats" thing that the project was alledgedly about but has moved well away from
+11:53 < matches> It also promises that I'll compare arbitrary precision floats as well, so I guess I better hack something together with those...
+11:53 < matches> Maybe a graph showing how you can increase the precision but then the FPS goes down
+11:54 < sulix> That'd ve really good, actually.
+11:55 < matches> Yeah I think I did something similar for CQM once
+12:06 < matches> Hmm, I can probably hack together a CPU renderer only binary for windows
+12:06 < matches> He says, ignoring the tendency for the CPU renderer to shit itself and die
+12:07 < matches> It'd be a Cool Feature for it to fall back to the CPU renderer instead of just segfaulting
+12:08 < matches> Falling back to the backup renderer always sounds impressive
+12:08 < matches> Everyone loved it when HTR did that
+12:08 < matches> (And then I realised the "backup" renderer was actually better)
+12:17 < sulix> I've fixed (hopefully) the OpenGL version detection. It should now Fatal() when the driver doesn't have needed extensions.
+13:43 < sulix> Excellent: the é has gone through!
+--- Day changed Sat Oct 11 2014
+10:02 * sulix -> Perth Games Festival
+14:52 < Pommers> Is it good there?
+18:22 < matches> The "fix" to OpenGL version detection now means I don't have a valid version of OpenGL.
+18:23 < matches> It was working perfectly fine before
+18:24 * matches -> s/Fatal/Error/ and hopes it still works anyway
+18:25 < matches> Should you be setting the GL minor version to 1 and then failing if it isn't 3
+18:26 < matches> I am confused how this even works
+18:26 < matches> My OpenGL version is apparently 3.1 and the if statement apparently checks "IsVersion" 3.2
+18:26 < matches> And then says "We want 3.3"
+18:28 < matches> I get no error if I set the minor version attribute to 3
+18:28 < matches> So I take it we required 3.3 functions but were specifying that we only needed 3.1 or something
+18:28 < matches> And somehow the 3.3 functions still worked?
+18:29 < matches> Anyway, I'm in favour of the "Instead of terminating the program, report an error and then see whether it will crash anyway" approach
+18:29 < matches> If it *does* crash, then at least we warned them
+18:29 < matches> If it doesn't crash, hey it's running! Everyone wins!
+18:43 < matches> Using integer indices for different types of Real seemed like *such* a good idea at the time
+18:43 < matches> And then there was the ability to have up to three different types of Real...
+18:45 < matches> -std=c++11 -g -Wall -Werror -Wshadow -pedantic -rdynamic -I../contrib/include/SDL2 -I`pwd` -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -Itests -I. -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DREALTYPE=1 -DQUADTREE_DISABLED -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DTRANSFORM_OBJECTS_NOT_VIEW -DTRANSFORM_BEZIERS_TO_PATH -DPATHREAL=Gmprat -c -MMD
+18:45 < matches> Truly our Makefile is a thing of beauty
+18:47 < matches> It's so beautiful that there is now a Python function to invoke it with different arguments
+18:57 * matches stabs indentation errors
+18:59 < matches> "Unindent does not match any outer indentation level" What the fuck
+18:59 < matches> What the hell is an undindent
+18:59 < matches> It is pointing at a ':' character
+19:00 < matches> Oh
+19:00 < matches> It's because I copied it from ipython which magically converts your tabs to spaces
+19:00 < matches> And then tried to add things to it indenting with tabs
+19:01 < matches> I think it's a conspiracy to make the tabs vs spaces war even worse
+19:02 < matches> Now people have no option to compromise
+19:02 < matches> Or, in my case, use tabs where we bloody well typed tabs in the first place
+19:35 < matches> My clock says it's 3am, that's about how I feel...
+19:42 < matches> "Just use MPFR" is looking more and more likely to be the conclusion
+19:42 < matches> Wait...
+19:42 * matches eats hat
+19:43 < matches> Well, GMP rationals applied to path bounds is faster than mpfr with 1024 bits applied directly
+19:43 < matches> That's probably not a fair test though
+--- Day changed Sun Oct 12 2014
+14:53 < matches> Setting up the performance tests is a real pain if you want to actually include the really slow methods
+14:53 < matches> Well, restarting them can be painful
+14:54 < matches> Which means if you screw them up...
+14:58 < matches> Placing a limit of 30s per frame was perhaps a bit too generous
+15:05 < Pommers> THis is why you should use a build server
+15:05 < matches> Yeah except that's more effort to set up than it would save
+15:05 < matches> We even have one
+15:06 < matches> Motsugo could potentially run all these tests
+15:06 < matches> But it has to use a CPU renderer and is therefore shit
+15:06 < matches> Seeing the results in real time is a huge advantage
+15:06 * Pommers really needs to set up a proper Jenkins set up for UCC
+15:06 < matches> Oh, I'm not allowed to use my own laptop in the conference
+15:07 < matches> So if you want to fix the MinGW build for me... :P
+15:07 < matches> I'll see if sulix's magical GL version changes fixed anything later
+15:08 < matches> Ah
+15:08 < Pommers> I can give it a shot tonight. If you proof read some stuff for me right now
+15:08 < matches> I'm querying the FPS once the view has stopped being scaled
+15:08 < matches> Ok
+15:09 < matches> (I should record performance in the python script I think)
+15:09 < Pommers> tonight means after I finish work that is
+15:09 < matches> So 3am?
+15:09 < Pommers> Nah, like 6.30ish
+15:09 < matches> Honestly I'm probably just going to run a video
+15:10 < matches> But it'd be nice to say "Here's the binary with which you can reproduce the results"
+15:18 < matches> It's probably going to need to run on a Windows 95 presentation PC or something
+15:19 < matches> It has geometry shaders so it's probably beyond hope that it would work
+15:19 < matches> Hmm, do I need to prepare a response do a "Why didn't you just use <insert name of a language that isn't C++ here>"
+15:20 < matches> I seem to get that question every time I use C++ for anything
+15:20 < matches> Or alternately "Why didn't you use boost"
+16:19 < matches> sulix: What black magic should I do if I want to include the debug font in a screenshot...
+16:45 * matches resorts to ffmpeg instead
+16:45 < matches> With the disadvantage that 1 frame in a screen grap != 1 frame in the demo :(
+16:45 < matches> grap
+16:45 < matches> grape
+16:45 < matches> grab
+--- Day changed Tue Oct 14 2014
+00:17 -!- bobgeorge33 is now known as Pommers
+13:34 < matches> My presentation is tonight
+13:34 < matches> Looks like Tim is back just in time to watch it!
+14:50 < sulix> In order to break things at exactly the wrong moment, IPDF has a profiler now.
+14:50 < sulix> It dumps the time spent in various functions at the end of each frame.
+15:10 < matches> That's pretty awesome
+15:11 < matches> Ok, time to test this pdf in adobe reader...
+15:11 < matches> And scream if it doesn't work
+15:19 * matches screams
+15:20 < sulix> Oh dear...
+15:20 < sulix> The power of adobe!
+15:24 < matches> I bet the videos don't work either
+15:26 < sulix> What format are they in?
+15:26 < matches> mkv
+15:26 < matches> They work
+15:26 < matches> I guess it was too much to expect pdflatex to produce a valid pdf
+15:35 < Pommers> Latex PDF? Got it working yet?
+15:55 < matches> No
+15:56 < matches> I have narrowed it down to
+15:56 < matches> "Cannot include graphics in slides"
+15:56 < matches> Which will make for an amazing presentation
+15:58 < matches> Ah
+15:58 < matches> Adobe doesn't support including pdfs within pdfs
+15:58 < sulix> What!?
+15:59 < sulix> Man, I've included pdfs within pdfs in pretty much every assignment I've submitted ever.
+15:59 < matches> I don't know
+15:59 < matches> That's the first place it shits itself
+15:59 * sulix ponders whether or not this may have affected marks.
+15:59 < matches> Debugging by repeatedly commentint out bits of TeX and recompiling is not very efficient and/or fun
+16:00 < sulix> Worst comes to the worst, take screenshots of all of your slides, I guess...
+16:00 < sulix> (Or download a windows binary for evince/etc and put that on the thumb drive)
+16:02 < matches> Yeah I'm supposed to be registering now
+16:25 < Pommers> matches: Send me the tex source and I'll try
+--- Day changed Wed Oct 15 2014
+10:38 < matches> Frames compiled it for me on Windows, so I survived
+10:40 < Pommers> Yeah. That's what I was going to do
+10:40 * Pommers should really set up that build server properly
+13:18 < matches> I might have promised a Windows version in the talk...
+13:18 < matches> Also saving, loading
+13:18 < matches> And...
+13:18 < matches> Shading
+16:05 < matches> I wonder if I can hack in a "draw" mode...
+16:05 < matches> Now that the conference is over, ANYTHING IS POSSIBLE
+16:06 < matches> (Except there's only two weeks left)
+16:06 < matches> ... < 2 weeks left
+--- Day changed Sun Oct 19 2014
+14:48 < sulix> Far out: I'm looking up some IEEE GPU stuff, and Google keeps pointing me to your lit review.
+17:01 < matches> :S
+17:02 < matches> I need to muster the courage to write more of my report
+17:02 < matches> So tired
+--- Day changed Mon Oct 20 2014
+22:45 < sulix> So it turns out that the crazy multithreadedness of the control panel totally bollockses up the profiler.
+22:46 < sulix> Which explains the random crashing due to "impossible things happening" like "functions returning before their parents do".
+22:49 < sulix> The everything gets bollocksed when adding text bug is also fixed.
+22:50 < sulix> The magical invisible turtles bug remains.
+22:51 * sulix wonders if he should see the teenage mutant ninja turtles movie for an explaination.
+23:48 < sulix> For reasons unknown, I'm generating a lot of quadtree overlays with the exact same objects in them.
+23:48 < sulix> By which I mean the same {object_begin, object_end} pairs.
+23:49 < sulix> So lots of things are being rendered ~40 times, and many things aren't being rendered at all.
+23:51 < sulix> Actually, never mind, I'm just printing out the wrong thing in my debug statement.
+--- Day changed Tue Oct 21 2014
+00:48 * sulix has a lot of writing to do tommorrow.
+00:48 < sulix> By which I mean today.
+09:02 * sulix ->sainity--
+09:30 < Pommers> Morning
+11:07 < matches> :(
+11:11 * sulix has engaged "panic mode"
+11:12 < Pommers> Can you try and shake it off? https://www.youtube.com/watch?v=nfWlot6h_JM
+11:12 < sulix> Also "holy shit, I don't have any results other than SIGSEGV" mode.
+11:20 < matches> I wish I hadn't read the comments on that video
+11:24 < matches> I'm having trouble understanding the metaphor
+11:24 < matches> Is Taylor Swift meant to be the thesis or me
+11:25 < matches> And how is the illuminati involved
+11:28 < Pommers> Never read YT comments
+11:28 < Pommers> Metaphor? Th[4~esis? Illuminati?
+11:34 < matches> "Haters gonna hate" would be me hating the thesis, but the thesis being an inanimate and currently purely digital object would be unable to shake itself
+11:35 < matches> According to the comments Taylor Swift is in the illuminati
+11:35 < sulix> The only shaking I can imagine is the solemn shaking of heads.
+11:35 < matches> :(
+11:35 < Pommers> Or
+11:36 < Pommers> Does your thesis hatre you, hence it's not happening
+11:36 < Pommers> and therefore you need to shake it off?
+11:36 < matches> Perhaps the clue is in the name, in that we need to Swiftly apply Taylor series to things
+11:38 < sulix> matches: That is the only consistent interpretation.
+11:38 < matches> I regret catching up on 6 weeks of lectures instead of working on the thesis
+11:40 < matches> http://www.irregularwebcomic.net/374.html
+11:40 < sulix> http://phdcomics.com/comics/archive.php?comicid=1749
+11:42 < matches> Back to it I guess
+11:42 < matches> By which I mean back to spending 30 minutes mentally preparing myself to go back to it
+11:43 < Pommers> While you relax
+11:43 < Pommers> You could fix NTP on your laptop
+11:46 < sulix> better still, set the time to three days ago so that you have more time to work on the thesis.
+11:47 < Pommers> Thats's a good idea! Just avoid anything that relies on time
+11:49 < sulix> The number of sudden thoughts about much better ways to do this project is slightly terrifying.
+12:44 < sulix> /me suspects he's deleted more than he's written.
+13:02 < sulix> Someone's looked at quadtrees for "infinite bitmaps": http://programmers.stackexchange.com/questions/104609/infinite-bitmap
+13:44 < sulix> Knuth apparently does not like the term "mantissa". He has quite a rant about it and now I'm feeling guilty for using it.
+13:47 < matches> Let's face it, Knuth won't read our work, and if he does, he won't like it
+13:48 < sulix> I had a nightmare where Kahan was berating me for not understanding floats.
+13:49 < matches> You don't even need to write about floats? Do you?
+13:49 < matches> Also, should I be urgently producing graphs of how slow rationals are
+13:50 < matches> I have 6662 words, but this is really not good
+13:51 < sulix> I'm sort-of leaving the "results" section blank at the moment.
+13:51 < matches> Wait but what else do you need?
+13:51 < matches> Lit Review should be done*
+13:52 < matches> There is a "Methods" chapter which I'm a bit embarressed about
+13:52 < sulix> Also, I should push the "speed up everything because it was dodgy renderrange code that was taking >90% the time" fix at some point.
+13:52 < matches> How badly would pulling break everything...
+13:52 < sulix> I've been writing up how the quadtree works, and fixing up the lit review, intro, gpu float bits, etc.
+13:53 < sulix> Well, I don't think I've been brave enough to push yet, but probably it will break everything.
+13:53 < sulix> Though, with some small amount of luck, it should still compile.
+13:56 * sulix has pushed. Time to warm up your "git revert" commands.
+13:57 < sulix> Also I need to write up about how rationals can represent more things than the quadtree, which can only represent binary fractions.
+14:18 < matches> "A naive approach would be to simply replace all floating point operations with arbitrary precision operations, and this is in fact what we did before we realised how stupid that was"
+14:21 < sulix> I was going for "A naïve approach would be to simply replace all floating point operations with arbitrary precision operations, and unlike the quatreethulu, that does actually work."
+14:21 < matches> How do you get the ï in LaTeX
+14:22 < sulix> \"i
+14:22 < matches> Thankyou
+14:25 < matches> Is there a good reference I can cite for how shaders work...
+14:25 < matches> I really don't want to or have the space to explain the OpenGL API
+14:25 < sulix> The OpenGL spec?
+14:25 < matches> I guess
+14:25 < sulix> Or ARB_vertex_program / ARB_shader_program
+14:25 < sulix> s/shader_program/fragment_program
+14:47 < matches> You know I am linking to the git repository in my report
+14:47 < matches> The one with all the "My eyes, they burn!" commit messages...
+14:48 < matches> I figured that the markers assuming there wasn't version control was marginally worse than them reading my commit messages
+14:48 < matches> But only marginally
+14:49 * sulix wipes some nervous sweat from his brow.
+14:50 < Pommers> What did you do for commit messages?
+14:50 < matches> Usually stuff to the effect of "This code is awful"
+14:50 < matches> "I didn't even design this!"
+14:50 < matches> Etc
+14:51 < sulix> Pommers: cover your eyes: http://git.ucc.asn.au/?p=ipdf/code.git;a=shortlog
+14:52 < sulix> My favourite is "A Song of Floodfills and Segfaults"
+14:52 < Pommers> haha
+15:11 < sulix> matches: Any idea why "bezier.h:61:20: error: call of overloaded ‘Abs(Gmprat)’ is ambiguous"
+15:13 < sulix> Also: "rect.h:21:13: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘const IPDF::Rational<IPDF::Arbint>’)" if I try Rational<T>
+15:37 < matches> Aaaah
+15:37 < matches> It wasn't ambiguous when I last used it!
+16:03 * sulix squirms nervously.
+16:06 < matches> I finally made the performance test graphs
+16:06 < matches> They are kind of dodgy
+16:07 < sulix> Ooh... show me.
+16:13 < matches> http://szmoore.net/ipdf/sam/figures/time.pdf
+16:13 < matches> http://szmoore.net/ipdf/sam/figures/memory.pdf
+16:13 < matches> It's using eye_of_the_rabbit.script
+16:14 < matches> It keeps track of how much memory is used for the View width
+16:14 < matches> And how long it takes to do each cycle that involves adding 3 rabbits seperated by 1e-3 or whatever it was
+16:14 < matches> A totally arbitrary test but hey, the graph is linear
+16:15 < matches> I'm pretty fed up with this project at this point
+16:15 < matches> Words are on the page
+16:16 < matches> It's amazing how much less you have to write when you remove the "TODO: I really should explain this properly"
+16:19 < sulix> Those are with the Gmprat for path bounds, doubles? for beziers?
+16:21 < matches> Gmprat for path bounds
+16:21 < matches> Not really much point doing it for anything else
+16:21 < matches> Since anything else won't render the images correctly
+16:21 < matches> I guess I should do it for doubles as well
+16:22 < matches> Actually doubles would be able to render that particular script correctly
+16:22 < matches> For a long time
+16:23 < sulix> The quadtree can render it correctly until there is more than one rabbit.
+16:23 < sulix> Also eye_of_the_rabbit is cpu rendered by default, no?
+16:24 < matches> Yeah I changed it to make that test
+16:24 < sulix> Okay.
+16:24 < matches> I'll run it for mpfr-1024 path
+16:24 < matches> I've had enough of having to tweak things to recompile the software...
+16:25 < matches> So I'm limited to the binaries I already have and they have a habit of sigfpe'ing
+16:26 < matches> Oh, it was also done with the window hidden
+16:26 < sulix> By choice or by fglrx?
+16:26 < matches> By choice
+16:31 < matches> Urgh this project is dumb
+16:31 < matches> I really don't want to have to repeat my final year project :S
+17:17 < matches> How do you like being referred to as "Gow"
+17:17 < matches> Also it's been an hour or so without me saying this project is silly
+17:17 < matches> So I'll say it again
+17:18 < matches> I ended up putting the Circles on CPU/GPU in my "Lit Review" part...
+17:18 < matches> Because it just fit a lot better underneath the section that was actually talking about it
+17:18 < matches> Rather than in the results
+17:19 < matches> "By the way we did some circles too"
+17:19 < matches> I feel like I should say something snarky about the naive method not being worthy of publication...
+17:19 < matches> That might be a bad idea
+17:29 < matches> "Hi all, No doubt you are busy preparing your final report..."
+17:29 < matches> AAAAAHHH
+17:30 < matches> I don't know, there's only so much you can polish a turd..
+17:30 < matches> Holy shit how do I have 40 references
+17:30 < matches> I guess there was that "Look I read about GPUs [10 references]" paragraph
+17:31 < matches> Should I mention the arbitrary precision on GPU stuff
+17:31 < matches> Blargh
+17:41 < matches> "The main body of the report should be between 6,000 and 8,000
+17:41 < matches> words excluding appendices. (i.e. from the beginning of the
+17:41 < matches> Introduction to the end of the Conclusions/Future work section)."
+17:41 < matches> Finally found the word limit
+17:41 < matches> Dammit
+17:41 < matches> Here I was aiming for 6000 maximum...
+17:44 < matches> I can stick in the pointless sections about "Pixels or Perish" I guess
+17:44 < matches> Distract them with pretty pictures
+17:47 < matches> Takes me up to 46 references...
+17:47 < matches> And 6972 words
+17:47 < matches> Done
+17:48 < matches> Submit
+18:21 < sulix> I think your thesis is significantly better than mine.
+18:22 < sulix> Mostly because it has more results and less "TODO"
+18:26 * sulix seeps into a 20 minute come.
+18:26 < sulix> s/come/coma
+18:26 < sulix> (The state of my brain is becoming more and more evident)
+18:55 < matches> (The trick is to delete the TODOs)
+--- Day changed Wed Oct 22 2014
+12:50 < matches> ECM sent me an email about 2015 Final Year Project preferences...
+12:50 < matches> NO
+12:50 < matches> I already did this!
+12:50 < matches> They also sent me an email about submitting vacation work reports
+12:50 < matches> I didn't do that yet!
+12:51 < matches> This is what you get for totally ignoring the recommended degree progression
+17:17 < Pommers> Guess who has card access through the main door for CS xD
+17:18 * sulix is filled with a jealous rage.
+17:20 < Pommers> hehehehe
+17:20 < Pommers> Pretty sure I now have more Access to CS than both of you :D
+17:54 < matches> They'll probably be glad they get to revoke our access at the end of the year
+17:54 < matches> Doing other assignments is a nice distraction from the project although in terms of time investment it is not wise
+17:54 < matches> In terms of time investment the correct approach is to fail everything else
+17:55 < matches> Although that didn't work so well last semester
+17:55 < matches> (I didn't actually fail but my marks got consistently lower :(
+17:55 < matches> I don't know how to bracket that
+17:55 < matches> :()
+--- Day changed Thu Oct 23 2014
+18:12 < matches> My report scores a Flesch Reading Ease of 42.30
+18:12 < matches> Which is higher than "university graduate" and lower than "13 to 15 year old students"
+18:13 < matches> It scores a Flesch-Kincaid Grade of 12.44
+18:13 < matches> I guess that means it is high school level...
+18:13 < matches> That isn't as reassuring as I'd hoped...
+18:14 < matches> At least I'm beating "an average 6th grade assignment"
+18:17 < matches> My physics thesis is 39.90 and 12.99 indicating my writing has gotten dumber, as expected
+18:19 < matches> Yours is at 46.06 and 11.39
+18:19 < matches> The question is, what should we be aiming for...
+18:21 < matches> That was an interesting but not particularly productive diversion into readability of documents
+18:21 < matches> (I think the most this test can conclusively say is that we did indeed write some words)
+18:21 < matches> (Many of which had more than one syllable)
+19:40 * sulix shall have words with "an arbitrary number of syllables" in his thesis.
+19:41 < sulix> Also, it turns out printperf has a big #ifdef QUADTREE_DISABLED around it.
+19:41 < sulix> Which explains much.
+19:59 < sulix> Did you know: when rendering with GMPrat, sometimes the debug text displays the bounds as being totally wrong for a frame, and then they're back to normal.
+20:00 * sulix has found something even more fun than watching paint dry: watching gmprat render.
+20:16 * sulix now has a graph: http://davidgow.net/stuff/ipdf-gmpqttest1.pdf
+20:54 < matches> Cool
+21:16 < matches> That looks very similar to the turtles graph I just got
+21:16 < matches> Except qtree isn't on it
+21:16 < matches> Path-gmprat is my favourite
+21:29 < matches> Ok, I know it's only 9:28 but my clock says 5:28
+21:29 < matches> So that counts as bed time
+21:30 * matches tries not to think about the asignment due tomorrow or the 3 weeks of assignments that need to be marked before students start to hate me
+21:30 < matches> Or, for that matter, how he is going to explain Quantum Mechanics...
+21:31 < matches> Or CoderDojo...
+21:31 < matches> I must be getting old
+21:31 < matches> Back in 2012 I could work on my thesis until 5am and still be awake enough to do my other assignments :S
+21:32 < matches> That might be a slight exagerration, I think there was a large amount of feeling like death involved
+21:36 < matches> I used to know the quantum number selection rules off by heart too...
+21:41 < matches> Ahh, the amazing HTML formatting of the quantum mechanics webpage
+21:41 < matches> The memories
+--- Day changed Sat Oct 25 2014
+11:26 * sulix will not be able to make coderdojo today, for obvious reasons.
+11:26 < matches> Ok, good luck
+17:39 -!- sulix [
[email protected]] has quit [Quit: So long and thanks for all the ghoti]
+--- Log opened Sun Oct 26 14:54:49 2014
+14:54 -!- Irssi: #ipdf: Total of 4 nicks [1 ops, 0 halfops, 0 voices, 3 normal]
+14:54 -!- Irssi: Join to #ipdf was synced in 3 secs
+14:55 < matches> Very much in the "The referencing doesn't produce ?? submit it" phase
+14:57 < matches> Ah crap the referencing still produces ??
+14:57 < matches> But only in the appendix...
+15:50 < matches> I get to submit this to a "Printerface"
+15:50 < matches> Oh ho ho
+15:53 * sulix has had the joy of having to redo his data with vblank off.
+15:54 < sulix> Also, the random flickering bug is actually showing up in the graphs
+16:02 < matches> Yuk
+16:03 < matches> So you have loads of data now though?
+16:03 < matches> I had vague plans of redoing graphs and then apathy happened
+16:03 < sulix> Yeah, lots and lots of graphs and numbers.
+16:03 < matches> Cool
+16:04 < matches> I just have like, 3...
+16:04 < sulix> I extended the profiler to also output the number of objects in the document and rendered
+16:04 < sulix> (Well, I only have 3 interesting graphs)
+16:05 < sulix> The quadtree spens 23.7% of its time generating new nodes.
+16:05 < sulix> (In case you cared)
+16:05 < matches> Only 23.7%?
+16:05 < sulix> Yup.
+16:06 < sulix> It generates at total (during the zoom-in-on-grid test for 800 frames) of 219 nodes.
+16:06 < sulix> And clips a total of 6559 objects
+16:07 < matches> I'll email what I have.
+16:07 < matches> Prepare to be whelmed.
+16:07 < matches> Oh dear I just quoted *that* movie
+16:09 < sulix> I'll email mine when I've finished regenerating all of the graphs and stats with non-vblanked data.
+16:10 < sulix> (The quadtree is now officially 2127 times faster than naïve use of GMP rationals)
+16:12 < matches> I think naive use of GMP rationals is a slightly unfair benchmark... :P
+16:12 < matches> But it'll make for impressive graphs
+16:12 < sulix> The requested URL /sam/ipdf/thesis.pdf was not found on this server.
+16:13 < matches> /ipdf/sam/thesis.pdf
+16:13 < matches> Also attached it to the email
+16:13 -!- Irssi: #ipdf: Total of 4 nicks [1 ops, 0 halfops, 0 voices, 3 normal]
+16:13 < sulix> Also, "Wintrhop Professor".
+16:13 < matches> Oh boy
+16:14 < matches> Wait where does it even say that...
+16:14 < matches> Oh
+16:14 < matches> The damn letter
+16:19 < matches> Yeah going by the rubric I think I'll have a solid 1/4 average
+17:05 < sulix> Again, the closer this project is to being due, the more interesting mathematical things I'm finding that I wish I'd seen earlier.
+17:06 * sulix slips a small reference to the Riemann Zeta function into a footnote.
+17:23 < matches> I'm concerned about the lack of interesting mathematical things in my thesis, footnote or otherwise
+17:24 < matches> I think I'm allowed to call it a thesis since that's what I was supposed to put on the "letter"
+17:25 < matches> You can't diss this ertation
+17:25 < matches> That worked in my head
+17:25 < matches> synonyms..
+17:25 < matches> monograph
+17:26 < matches> disquisition
+17:26 < matches> disquietening
+17:26 < matches> composition
+17:26 <@bobgeorge33> When does Tim officailly start work again?
+17:26 < matches> in the key of F# minor
+17:26 < matches> Um
+17:26 < matches> Next year?
+17:27 < matches> Someone has to write a "supervisor report"
+17:29 < matches> Well, I at least have lots of words
+17:29 < matches> Too many to proof read
+18:07 < matches> It has been submitted to the Printer Face
+18:07 < matches> Good luck sulix
+18:10 * sulix solemnly nods: "Good luck to us all!"
+23:34 < sulix> It is done: http://davidgow.net/stuff/DavidFYPThesis.pdf
+23:38 <@bobgeorge33> When are they due?
+23:42 <@bobgeorge33> Lastly, as a double degree student I need to
+23:42 <@bobgeorge33> express a double degree of thanks to my friends and family for their continued patience whilst I
+23:42 <@bobgeorge33> completed my second “final year” project in what is technically a penultimate year.
+23:42 <@bobgeorge33> Very nice
+--- Day changed Mon Oct 27 2014
+08:46 < matches> They're due at 12:00pm
+09:00 < matches> Hmm, there are only a few highly wrong statements in my thesis
+09:01 < matches> To resubmit or not to resubmit
+09:03 < matches> I keep thinking I really need more detail and then I realise it's 9000 words...
+09:03 < matches> What did I even say in those 9000 words I don't even
+09:04 < matches> In other news it's 9:04 and no one is at my tutorial...
+09:05 < matches> I was going to show them CQM animations
+09:09 < matches> Curses a student
+09:09 < matches> (I don't know what I want)
+10:15 * sulix resubmits to fix the typo in the latin reference that Tim disconvered.
+10:16 < sulix> I've also added the original proposal as an Appendix because apparently I'm meant to, though it does sort-of highlight how little of it I've actually done.
+10:19 * sulix proceeds to collapse from exhaustion.
+10:44 -!- Netsplit mussel.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @bobgeorge33
+10:45 -!- Netsplit over, joins: @bobgeorge33
+11:11 -!- Netsplit mussel.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @bobgeorge33
+11:12 < matches> Aaaand
+11:12 < matches> LMS is being LMS
+11:13 -!- Netsplit over, joins: @bobgeorge33
+11:13 < matches> UWA is having problems?
+11:13 < matches> Trying to resubmit to Printer Face
+11:13 < matches> Not sure if I am now going to end up with two copies...
+11:14 < matches> The second copy is slightly less vague
+11:14 < matches> I guess people can work out that they need to read IEEE to get the full gory details of the encodings and stuff
+11:15 < matches> Also people can probably work out the legends on my graphs if they think
+11:15 < matches> Also there is like, wierd functional programming notation in Tim and Rowan's emails
+11:15 < matches> Is it a secret code?
+11:23 < matches> AAAH SHIT
+11:23 < matches> My last commit is going to be at 7:23pm
+11:23 < matches> I'll get in trouble for using a time machine to submit it before 12:00pm
+11:40 -!- Netsplit mussel.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @bobgeorge33
+11:42 -!- Netsplit over, joins: @bobgeorge33
+11:42 < matches> Well, that as anticlimactic
+11:43 < matches> The whole having 3 other assignments due this week thing sort of ruins it
+11:51 -!- Netsplit mussel.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @bobgeorge33
+11:51 -!- Netsplit over, joins: @bobgeorge33
+11:53 < matches> I actually really don't trust someone else to print my assignment :S
+11:53 < matches> Who is this Printer and why does it have a Face
+11:54 < matches> What if the inline postscript gets interpreted by the driver as actual postscript and it just prints 40 pages of shape.eps
+11:54 < matches> Aaaah
+11:56 <@bobgeorge33> What happens if it decides to print 100 copies instead of 1 and they aren't collated!
+11:59 * matches stabs
+12:01 < matches> sulix: "Programmme"
+12:01 < matches> Does it have three mmm like that
+12:01 < sulix> Um... it does now.
+12:02 < matches> I approve
+12:02 < sulix> I am a programmmmmmer
+12:03 -!- Netsplit mussel.ucc.au.uniirc.com <-> arctic.uniirc.com quits: @bobgeorge33
+18:38 -!- bobgeorge33 is now known as Pommers
+--- Day changed Thu Oct 30 2014
+13:45 < matches> sulix: Is there going to be a meeting about your presentation? Should I come, or stay away?
+14:16 < sulix> I don't think there's going to be a meeting... I've got another research project due at 4:00, so I'll be doing that.
+14:16 < sulix> The seminar schedule is out now, though: http://undergraduate.csse.uwa.edu.au/year4/Current/Project/seminarTimetable.html
+14:17 < sulix> It's hysterically empty.
+14:28 < matches> Baha
+14:29 < matches> 25 minutes, ew
+14:29 < matches> Good luck
+14:29 < sulix> You're welcome to come along to the talk if you hate sleep.
+14:29 < matches> I will try and come
+14:30 < matches> "Time travel debugging"...
+14:30 < sulix> Yeah, Ben's a genius.
+14:30 < matches> I do that all the time though
+14:30 < matches> (With printf statements)
+14:30 < sulix> But you live in the future.
+14:30 < matches> (And scrolling through the output with less)
+14:30 < matches> That too
+14:31 < matches> Don't worry, your abstract sounds really cool too
+--- Day changed Sat Nov 01 2014
+10:27 < matches> I guess we're done here, good job
+--- Day changed Tue Nov 04 2014
+14:30 < matches> We will leave this channel here until the marks come out
+--- Day changed Sat Nov 08 2014
+23:00 -!- Pommers is now known as bobgeorge33
+23:00 -!- bobgeorge33 is now known as Pommers
+--- Day changed Tue Nov 11 2014
+--- Day changed Wed Nov 12 2014
+--- Day changed Fri Nov 14 2014
+--- Day changed Sun Nov 30 2014
+12:08 < Pommers> When are marks due out?
+12:46 < matches> Well
+12:46 < matches> Other unit results are due on the 17th so I assume these are as well
+12:51 < matches> I will just continue to be thankful that my 2012 results are listed first on my academic record...
+13:26 < Pommers> Yes That is always the bust thing
+13:55 < matches> The best thing about those results is the totally vague unit names
+13:55 < matches> "Special Topics in Physics I, II, III and IV"
+--- Day changed Mon Dec 01 2014
+14:03 < sulix> Hmm... it looks like my project marks are on csmarks.
+15:20 < Pommers> fuck
+15:22 * Pommers loves scaling
+21:31 < matches> Oh dear
+21:32 < matches> Mine are not :S
+21:33 < Pommers> Don't fret
+21:34 < Pommers> Looks like they've pulled the marks now
+21:34 < matches> -_-
+21:34 < matches> But I wanted to know
+21:34 < Pommers> Wait. I'm just blind
+21:35 < matches> I could check LMS
+21:35 < matches> CSMarks evil step cousin
+21:35 < matches> It seems to just be a weekly "RETURN ANY KEYS BORROWED"
+21:36 < Pommers> LMS says I got 57% for the unit
+21:36 < Pommers> "equal 16th / 35 in cohort"
+21:36 < matches> ... I still have - out of 100% for the Semester 1 progress report
+21:36 < Pommers> The average was below my mark
+21:36 < Pommers> 14 people sitting on 0% though >.>
+21:36 < matches> That's wierd
+21:36 < matches> Scaling is wierd
+21:38 < Pommers> But i love it
+21:38 < matches> I wish the culture was "we will do an amazing job on the unit and its assessible content so that everyone gets a mark that is indicative of their knowledge" not just "screw it we'll scale everyone"
+21:38 < matches> But apparently apathy averages out better than diligence
+21:39 < matches> If lots of people got 0% that would make scaling do strange things
+21:39 < matches> How much magic do they do to make it a normal distribution
+21:40 < matches> Well I guess they just scale everyone who got more than 0% and it will maybe be normal
+21:41 < matches> Good luck anyway
+21:42 < matches> I suppose around December 17th I'll start to get nervous about my "0/300" score on LMS
+--- Day changed Thu Dec 11 2014
+19:28 < matches> :S
+19:29 < Pommers> Tis a boty
+--- Day changed Sat Dec 13 2014
+10:18 < matches> Well thank goodness that's over
+10:19 < matches> It was certainly an interesting if not very mechatronical project
+10:21 < sulix> Yeah... I'm sure one day I'll be able to use floats again without developing a nervous twitch.
+10:22 < sulix> Although they never asked me to do corrections, which is odd because there's at least the "programmme" mistake there.
+10:22 < matches> I just started reading my thesis...
+10:22 < matches> There are some rather cringeworthy sentences
+10:23 < matches> The pretty pictures as a distraction paid off
+10:24 < sulix> I've no plans to read mine again just yet... I suspect all of the good parts were the puns in TeX comments.
+10:42 < matches> One day I will try and run ipdf again
+10:42 < matches> And it will probably segfault
+--- Day changed Mon Jan 12 2015
+19:22 < matches> It's 2015, we can probably assume we got away with it now
+19:26 -!- Irssi: #ipdf: Total of 3 nicks [0 ops, 0 halfops, 0 voices, 3 normal]
+--- Day changed Wed Jan 14 2015
+20:53 < matches> I have to confess a horrible crime. I took a screenshot of graphs instead of saving them as pdfs.
+--- Log closed Wed Jan 14 20:53:48 2015
+--- Log opened Wed Jan 14 20:57:00 2015
+20:57 -!- Irssi: #ipdf: Total of 3 nicks [0 ops, 0 halfops, 0 voices, 3 normal]
+20:57 -!- Irssi: Join to #ipdf was synced in 0 secs
+20:57 < Pommers> It's okay matches
+20:57 < Pommers> This is a safe space
+--- Day changed Mon Jan 19 2015
+10:30 -!- sulix [
[email protected]] has quit [Quit: So long and thanks for all the ghoti]
+--- Day changed Wed Jan 21 2015
+20:40 < matches> Good luck at google sulix