code logs -> 2009 -> Tue, 13 Oct 2009< code.20091012.log - code.20091014.log >
--- Log opened Tue Oct 13 00:00:08 2009
00:03
<@Vornicus>
Der: did the save target change help?
00:03
< Derakon[work]>
No.
00:03
<@Vornicus>
Bah
00:08
< Derakon[work]>
That was my reaction too.
00:10
<@TheWatcher>
Dera: is this because he's ignorant of how big a question it is, or because he's not fazed by such?
00:12
< Derakon[work]>
A combination of both.
00:12
< Derakon[work]>
His technical skills are thirty years out of date, remember.
00:12
< Derakon[work]>
But Big Projects aren't generally a problem. They just have to be properly prioritized.
00:16 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has left #code ["Leaving"]
00:16 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has joined #code
00:16
< Derakon[work]>
Thank you, X-Chat Aqua, for making new tabs in one window when I hit command-T, and closing a different window when I hit command-W.
00:25 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has quit [[NS] Quit: Leaving]
00:31
<@McMartin>
Aqua: Apple Inhumane Interface Guidelines
00:47 You're now known as TheWatcher[T-2
00:47 You're now known as TheWatcher[T-2]
00:49 You're now known as TheWatcher[zZzZ]
00:55 Alek [omegaboot@Nightstar-32f25247.emhril.sbcglobal.net] has quit [[NS] Quit: reboot. CoX really needs to get its act together and work on those bugs. >_>]
01:00 Alek [omegaboot@Nightstar-32f25247.emhril.sbcglobal.net] has joined #code
01:01 * gnolam hmms.
01:07
< gnolam>
Ah, bugger.
01:08
< gnolam>
I was going over my old and hideous OBJ loading code and wondering why I wasn't using indexed mode (GL_ELEMENT_ARRAY_BUFFER), since that would save a whole lot of vertex data.
01:09
< gnolam>
Turns out you can in fact only specify /one/ index array in OpenGL.
01:10
< gnolam>
Which means that any non-trivial textured model will require duplication of vertices. :P
01:10 Derakon[AFK] is now known as Derakon
01:11 * gnolam stabs the designers of OpenGL again.
01:37
< SmithKurosaki>
You and your stabbing. gnolam, you are black amge
02:45
< gnolam>
Nyet.
02:46
< gnolam>
Possibly Ramón Mercader, but I refuse to be associated with a crappy webcomic. :P
02:46
< SmithKurosaki>
:(
02:46
< Derakon>
SK: you can use memoserv to send memos to registered nicks. The user will get the memo when they next log on.
02:47
< SmithKurosaki>
he's logged in, but he has been afk to me for a worrying loong time
02:48
< SmithKurosaki>
He's always online, but he's not always at keyboard
02:49
< SmithKurosaki>
I am sorry for wandering in, but I know he frequents there a lot, and I'm worried
02:49
< Reivthia>
Who's he after?
02:49
< Derakon>
SK's after TF.
02:49
< SmithKurosaki>
I am looking for TF
02:49
< Derakon>
And no worries about wandering in.
02:49
< Derakon>
You could probably hang out in there if you wanted to.
02:50
< SmithKurosaki>
Like I won't join and stay there unless you guys are cool with it
02:50
< Reivthia>
Well, then.
02:50
< SmithKurosaki>
I know (before the exp) that you guys were very exclusive
02:50
< Reivthia>
SmithKurosaki: I am, in fact, Reiver.
02:50 * Vornicus has no reason to believe we would not be cool with it.
02:50
< SmithKurosaki>
I know
02:50
< SmithKurosaki>
Really??
02:50
< Reivthia>
I would like to state that 'exclusive' is just about the exact opposite of what I'm trying to do here. :)
02:51
< Derakon>
We aren't so much exclusive as we are just intolerant of dumbasses.
02:51
< SmithKurosaki>
Ahhh
02:51
< Derakon>
So it's basically the difference between having no standards, which is basically the default, and having standards at all.
02:51
< SmithKurosaki>
niiice
02:52
< Reivthia>
Right. This channel is, basically, neutral ground for the networks programmers, who previously were spread over 3-4+ channels and so when a really interesting discussion came up, there was all sorts of chaos trying to get opinions from one to the other, and the chatting tended to swamp the channel they were in anyway.
02:52
< SmithKurosaki>
Nice
02:52
< SmithKurosaki>
Now we all chill in the same place and mention random things
02:53
< Reivthia>
And end up with several pages of discussion over it, 'cuz the other coders go "ooh, interesting" and poke their noses in too. :)
02:53
< SmithKurosaki>
Mhm...
02:53
< SmithKurosaki>
(Wait, there are others?)
02:54
< Derakon>
Reiv: I was talking about #fleet, actually~
02:54
< SmithKurosaki>
Yea, so was I :p
02:54 * Reivthia shrugs. Code is run on a similar basis, just a little more neutral.
02:54
< SmithKurosaki>
Yea
02:55
< Reivthia>
Idiots need not apply, if you don't plan to disrupt a programming discussion, I don't mind if you hang around waiting for folks to show up.
02:55
< Reivthia>
(I suspect he's just Very Busy. A lot of folks are right now.)
02:55
< SmithKurosaki>
Yea, but normally he's not afk for more than an hour at a time
02:56
< SmithKurosaki>
He's been away for like 3 hours now and I am worried
02:56
< SmithKurosaki>
brb
02:56
< Reivthia>
Distracted, I suspect.
02:56
< Reivthia>
Nothin' to worry about.
02:59
< SmithKurosaki>
Well, he didn't answer either of his phones, so I am really worried now
03:00
< SmithKurosaki>
I just ended up going over my minutes for the month, which would have rolled tomorrow. Not hearing from him for this long is really concerning
03:05 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?]
03:05
< SmithKurosaki>
(Yay he's alive!)
03:08
< Reivthia>
See? Problem solved. <g>
03:08
<@Vornicus>
YAY ALIVE
03:08
< SmithKurosaki>
It only took him 3 hours
03:08
< Reivthia>
Hey, I can be AFK for longer than that if I'm busy...
03:08 Attilla [The.Attilla@FBC920.482E2D.402892.A075C8] has quit [[NS] Quit: ]
03:09
< SmithKurosaki>
He's normally never inexplicably afk for longer than an hour
03:11
<@ToxicFrog>
...yes I am
03:11
<@ToxicFrog>
You just don't notice
03:11
< SmithKurosaki>
Well, that's a rough estimate or I know roughly what you are doing
03:12
< SmithKurosaki>
Or why you're not there
03:16
<@Vornicus>
Pffff
03:18 Syloqs-AFH [Syloq@is.an.awesome.Network.Administrator.on.Nightstar.Net] has quit [Connection reset by peer]
03:18
< SmithKurosaki>
Anyways, we cool
03:19
< Reivthia>
Marvelous. <g>
03:20
< SmithKurosaki>
What with the <g>/
03:20
< Alek>
think it means Grin
03:20
< SmithKurosaki>
Ahh
03:21
< Reivthia>
<g> is a way of indicating a grin, yes.
03:22
< Reivthia>
Old, old MUD convention. Quite possibly pre-smileys.
03:22
< SmithKurosaki>
Ahh kk
03:25 Syloqs_AFH [Syloq@is.an.awesome.Network.Administrator.on.Nightstar.Net] has joined #code
03:25
< SmithKurosaki>
Nice hostmask Syloqs_AFH
03:26 Syloqs_AFH is now known as Syloqs-AFH
03:33 Vornicus is now known as Vornicus-Latens
03:55
< Rhamphoryncus>
McMartin: It's possible that most of the traditional approaches don't make sense because I'm doing this all dynamically. I don't know what branches will be taken or what's constant until I'm done. My SSA isn't normal SSA
03:56
<@McMartin>
Define "dynamically"
03:56
<@McMartin>
Like, you're running the program but forcing constraints to hold?
03:56
<@McMartin>
Or just watching it as it goes and building it up?
03:57
<@McMartin>
If you mean "I'm simulating a run by propagating an abstract state along each instruction and each branch", yeah, that's what dataflow is and you don't need SSA for it
03:57
< Rhamphoryncus>
the latter
03:57
< Rhamphoryncus>
But I do need SSA, or at least what I'm calling SSA
03:58
< Rhamphoryncus>
It allows me to track when a variable can no longer be unassigned and helps limit the range of a variable in a loop
03:58
<@McMartin>
Liveness.
03:59
<@McMartin>
That's another "flat" dataflow analysis, though SSA can let you be smarter about register assignment.
04:00
<@McMartin>
(Liveness you have to run backwards, though; everything's dead at the end and you work backwards, making things live as they are read and dead as they are assigned to)
04:02
< Rhamphoryncus>
hrm
04:03
<@McMartin>
That's a good intermediate analysis to do anyway, because it's really simple (one bit per var) and it lets you make sure your basic infrastructure is working
04:03
<@McMartin>
Probably better than the use-before-def one I mentioned before
04:04
< Rhamphoryncus>
That's actually what my SSA turned into
04:04
< Rhamphoryncus>
Each assignment is a different variable, and I track which ones are visible at each point
04:04
< Rhamphoryncus>
I do it forward though
04:07
< Rhamphoryncus>
The description in wikipedia doesn't seem like it'd work. It'd show that a variable might not be unassigned. It won't show that it *is* unassigned
04:09
<@McMartin>
Each assignment is a different variable, and I track which ones are visible at each point
04:09
<@McMartin>
That sounds close to "reaching definitions"
04:12
< Rhamphoryncus>
yeah
04:12
< Rhamphoryncus>
I've read random bits and pieces of all this, but it's mushed together in my brain
04:14
< Rhamphoryncus>
It's not clear what the distinction is between SSA and reaching definitions
04:19 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code
04:21
< Rhamphoryncus>
Have I mentioned that nearly everything I do is simultaneous? Reaching/liveness along side value ranges
04:26 GeekSoldier_ [Rob@Nightstar-e86e3e0d.ip.cablemo.net] has joined #code
04:28 GeekSoldier [Rob@Nightstar-e86e3e0d.ip.cablemo.net] has quit [Ping timeout: 121 seconds]
04:49 ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Operation timed out]
04:51 SmithKurosaki [Smith@Nightstar-ab52522f.dsl.teksavvy.com] has quit [Ping timeout: 121 seconds]
04:51 AgentIchiro [Smith@Nightstar-04e98d9c.dsl.teksavvy.com] has joined #code
04:52 ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code
04:52 mode/#Code [+o ToxicFrog] by Reiver
04:58
<@McMartin>
That's just making it a larger dataflow problem
05:05 Syloqs-AFH [Syloq@is.an.awesome.Network.Administrator.on.Nightstar.Net] has quit [Connection reset by peer]
05:22
< Rhamphoryncus>
How else to you expect to figure out what functions you might call or be called from?
05:36
<@McMartin>
Well, that's really why I was suggesting you ignore arguments to start with and just take them as given
05:36
<@McMartin>
Because calls in Python are made of ;_;
05:36
<@McMartin>
You could take x, assign 3 to it, and then reassign x.__call__...
05:38
< Derakon>
AttributeError: 'int' object has no attribute '__call__'
05:38
<@McMartin>
Well, OK, maybe not 3.
05:39
<@McMartin>
But there's a horrendous number of ways to do call indirection in Python, especially compared to a language like C
05:39
<@McMartin>
Or Java, which is intentionaly highly constrained
05:39
<@McMartin>
Call graphs are a hard problem.
05:39
<@McMartin>
Unless you're in Fortran 77 or something.
05:40
< Reivthia>
Call graphs?
05:41
<@McMartin>
A graph showing who calls whom from where.
05:41
<@McMartin>
Which requires, to really do right, accurate pointer information (where can this pointer point).
05:42
<@McMartin>
Which has been an open research question for 30+ years, including papers like "Pointer analysis: Why haven't we solved this problem yet?"
05:42
<@McMartin>
(Which is an excellent survey of the state of play about 15 years ago)
06:03
< Rhamphoryncus>
ignore arguments?
06:06
< Rhamphoryncus>
If you mean do not bother to determine what types the arguments may have.. that'd mean the only analysis possible would be on literals. That's a non-starter for my goals
06:13
<@McMartin>
Start with literals. It will let you optimize for loops, after all.
06:14
<@McMartin>
Then you can find everything that might be a call to it eventually and merge all those
06:15
< Rhamphoryncus>
hrm. As best I can tell so far the difference between RDA and SSA is that RDA exposes the phi node directly, while SSA assigns phi's output to a temporary first, so that optimizations can operate on the temporary and be oblivious to the phi node
06:16
< Rhamphoryncus>
that'd only let me optimize trivial loops. It wouldn't even work for range() or for something like x+3. To do that as you suggest I'd have to do two copies of everything, one with an optimistic guess and a pessimistic fallback
06:17
< Rhamphoryncus>
SSA also uses a different algorithm than RDA.. not sure about the consequences there
06:22
< Rhamphoryncus>
In my case reading from a local variable into a temporary is a distinct operation anyway, whether or not I call it a phi node
06:23
< Rhamphoryncus>
Maybe it's not ideal, but I won't be doing low-level optimizations here anyway. I'll be letting LLVM do them
06:38
< Reivthia>
Fortran has scary superpowers in this regard?
06:42
<@McMartin>
The older versions of Fortran didn't have pointers, and thus also not function pointers
06:42
<@McMartin>
As a result, you could get the callgraph just as a side effect of parsing the code
06:42
<@McMartin>
"or for something like x+3"
06:43
<@McMartin>
Presumably optimization is only possible if you know for a fact that x+3 returns a register-range integer (or that x is itself register) and not some bizarre string-like thing whose __add__ method accepts ints.
07:02 Derakon is now known as Derakon[AFK]
07:13
< Rhamphoryncus>
McMartin: if x is an argument you don't even know it's an integer, if I'm ignoring them
07:14
<@McMartin>
Yes, it depends on your assumptions
07:14
<@McMartin>
Like, if you assume the progam will run
07:14
< Rhamphoryncus>
Despite being hard, my approach promises to handle that
07:15
<@McMartin>
Still, you want intermediate steps to work
07:15
< Rhamphoryncus>
hmm?
07:16
<@McMartin>
You should get intraprocedural working before you tackle interprocedural
07:17 * McMartin would also suggest simplifying "programmer is not an asshole" assumptions like being able to map function calls by name
07:17
< Rhamphoryncus>
I'll be implementing it first, but my designs include interprocedural
07:18
< Rhamphoryncus>
I already handle globals. I haven't implemented a builtin namespace yet, but it'll be a simple extension of how I handle globals
07:20
< Rhamphoryncus>
I actually have a rough idea of how to handle path-sensitive predicate analysis, or whatever you want to call it. I just wanted to do some reading up on it before I did the implementation
07:20
< Rhamphoryncus>
Also, I haven't figured out how to make it minimally ugly :)
07:23
<@McMartin>
Let me see if I can find a link to one of the papers that made it popular
07:24
<@McMartin>
http://www.stanford.edu/~engler//mc-osdi.pdf
07:24
<@McMartin>
These guys went on to found Coverity, a static analysis-based code auditing company
07:25 * Rhamphoryncus nods
07:27
<@McMartin>
They kind of half-ass pointers in that paper, which works for them because they're focusing on kernel code which doesn't do the kind of shit app code does
07:27
<@McMartin>
(Once OO enters the mix, a large number of bets are off, and type analysis starts becoming more important than pointer analysis per se)
07:32 * Rhamphoryncus suspects he's read this paper before
07:34
<@McMartin>
If you've been looking in the space, it's likely
07:34
<@McMartin>
But they do the simplest path-sensitivity in that paper that actually gets decent results and isn't just "well, let's emulate the program"
07:38
< Rhamphoryncus>
I might do something more like what they do later. I plan to eventually have a way to inspect which functions can raise exceptions, which'd show any code that has internal assertions. However, that only works if I can statically eliminate the assertion
07:38
< Rhamphoryncus>
I might add something extensible for that
07:39
< Rhamphoryncus>
(pie-in-the-sky idea at this point)
07:43
<@McMartin>
Nothrow guarantees would be v. handy
07:44
< Rhamphoryncus>
yeah
07:45
< Rhamphoryncus>
'course that also includes MemoryError. Both the heap and the stack need to be safe
07:46
< Rhamphoryncus>
both are desirable for performance reasons anyway
07:49
< Rhamphoryncus>
speaking of heaps, I'm looking forward to upsetting functional language programmers by deliberately wasting memory on self-recursive functions, inhibiting tail call optimization }:>
08:25 McMartin [mcmartin@Nightstar-2b2c1a9b.pltn13.sbcglobal.net] has quit [Operation timed out]
08:59 Rhamphoryncus [rhamph@Nightstar-a62bd960.abhsia.telus.net] has quit [Client exited]
10:28 Attilla [The.Attilla@FBC920.482E2D.402892.A075C8] has joined #code
10:28 mode/#Code [+o Attilla] by Reiver
10:31 You're now known as TheWatcher
12:17 Attilla [The.Attilla@FBC920.482E2D.402892.A075C8] has quit [Ping timeout: 121 seconds]
12:21 Attilla [The.Attilla@FBC920.65CFFF.E56E70.387AF5] has joined #code
12:21 mode/#Code [+o Attilla] by Reiver
13:14 AgentIchiro is now known as SmithKurosaki
13:40 GeekSoldier_ is now known as GeekSoldier
14:53 Netsplit *.net <-> *.split quits: Namegduf, @MyCatVerbs, Alek, @jerith, @Kazriko, @Reiver
14:53 Netsplit over, joins: MyCatVerbs, Namegduf
14:53 Netsplit over, joins: Reiver
14:53 mode/#Code [+qo Reiver Reiver] by ChanServ
14:54 Reiver is now known as 459AAAGOM
14:54 MyCatVerbs is now known as 963AAAIPF
14:54 Kazriko [kaz@Nightstar-e09690fa.client.bresnan.net] has joined #code
14:54 Netsplit over, joins: Alek, jerith
14:54 Reiver [reaverta@ServerAdministrator.Nightstar.Net] has joined #code
14:54 MyCatVerbs [mycatverbs@Nightstar-492e7e67.co.uk] has joined #code
14:54 ServerMode/#code [+ooqo jerith Reiver Reiver MyCatVerbs] by *.Nightstar.Net
14:54 mode/#Code [+o Kazriko] by 459AAAGOM
14:55 Reiver [reaverta@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
14:55 Kazriko is now known as NSGuest-37447
14:56 MyCatVerbs [mycatverbs@Nightstar-492e7e67.co.uk] has quit [Ping timeout: 121 seconds]
16:05 Syloqs_AFH [Syloq@is.an.awesome.Network.Administrator.on.Nightstar.Net] has joined #code
16:06 Syloqs_AFH is now known as Syloqs-AFH
16:33 963AAAIPF is now known as MyCatVerbs
16:41 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has joined #code
17:00 Rhamphoryncus [rhamph@Nightstar-a62bd960.abhsia.telus.net] has joined #code
17:17 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has quit [[NS] Quit: Leaving]
18:22 AnnoDomini [farkoff@Nightstar-06517934.adsl.tpnet.pl] has joined #code
18:23 mode/#Code [+o AnnoDomini] by 459AAAGOM
19:11 dmlandrum_ [dmlandrum__@Nightstar-fab1cd53.sfldmi.ameritech.net] has joined #code
19:12 GeekSoldier [Rob@Nightstar-e86e3e0d.ip.cablemo.net] has quit [Connection reset by peer]
19:12 GeekSoldier [Rob@Nightstar-e86e3e0d.ip.cablemo.net] has joined #code
19:13 dmlandrum [dmlandrum__@Nightstar-fab1cd53.sfldmi.ameritech.net] has quit [Ping timeout: 121 seconds]
20:07
< gnolam>
"When your hammer is C++, everything begins to look like a thumb."
20:07 * AnnoDomini laughs.
20:08 * AnnoDomini tries to read the new topic.
20:08
<@AnnoDomini>
For all x, I <werde> x <Wissenschaft> does.
20:09
<@AnnoDomini>
Oh. Heh.
20:20 McMartin [mcmartin@Nightstar-cd8a4fac.pltn13.sbcglobal.net] has joined #code
20:20 mode/#Code [+o McMartin] by 459AAAGOM
20:36
<@AnnoDomini>
Hmmm. How would I make preformated text with a given font size?
20:40
< gnolam>
In?
20:42
<@AnnoDomini>
HTML.
20:44
< gnolam>
<pre>Preformatted text goes here</pre>
20:45
<@AnnoDomini>
With a given font size.
20:46
< Namegduf>
CSS?
20:46
< gnolam>
And in the CSS, pre { font-size: something }
20:46
< Namegduf>
Or apply it to a class or id, and add the class or id to your pre tag, to avoid affecting all pre tags.
20:46
<@McMartin>
Or inline the style tag, if you want to make baby Jesus cry
20:47
< Namegduf>
McMartin: Sssh, don't tell people that's possible.
20:47
< Namegduf>
:P
20:47
< gnolam>
Indeed. :P
20:48
<@AnnoDomini>
I can't mess with the CSS, since I don't want to mess up [code] tags.
20:49
<@AnnoDomini>
And don't want to bother the admin to change it for every style.
20:49
<@McMartin>
You can put CSS additions into the header of that page.
20:49
<@McMartin>
That only makes baby Jesus sniffle a little.
20:49
<@AnnoDomini>
I think I'll just make him cry, then. :P
20:51
<@AnnoDomini>
<pre style="font-size: 8;"> </pre>
20:51
<@AnnoDomini>
Like this?
20:53
< gnolam>
Isn't there /any/ way you could use proper CSS? "to avoid affecting all pre tags" is just what class attributes are for.
21:02 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has joined #code
21:07
<@AnnoDomini>
I dunno.
21:37 Derakon[AFK] [Derakon@Nightstar-5abd3ac9.ca.comcast.net] has quit [Client closed the connection]
21:58 * gnolam ponders frustums.
22:03
< gnolam>
Since I'm going to generate every single vertex position on the fly here, I should be able to save an incredible amount of vertices by just making the mesh cover the frustum out to not-quite-infinity.
22:04
< gnolam>
Which /also/ means I should be use an adaptive, saving even more vertices.
22:04
< gnolam>
+able to
22:04
< gnolam>
*adaptive mesh
22:04 * gnolam 's lack of sleep is beginning to manifest.
22:11
<@AnnoDomini>
Adaptive mesh? Sounds like a Sci-Fi body armour.
22:14
< gnolam>
Could be.
22:15
<@McMartin>
Hee
22:15
<@McMartin>
It lives with the Frustum Culling Drive
22:15
< gnolam>
But here, it means I would be trying to cover the screen in equal (projected) area triangles.
22:15
< gnolam>
McMartin: Pfft. I've already explained that the Common Frustum is a small, furry mammal.
22:16
< gnolam>
But you may need an Adaptive Mesh to protect you when you're traveling through Phase Space.
22:16
< gnolam>
Or you might suffer Skeleton-Subspace Deformation.
22:18
<@McMartin>
Is still socially acceptable to perform in backface?
22:19 * gnolam guffaws.
22:22
< gnolam>
But no, I don't think so. The age when shaded and non-shaded polygons couldn't be sent over the same bus is long over.
22:36 Vornicus-Latens is now known as Vornicus
23:02 AnnoDomini [farkoff@Nightstar-06517934.adsl.tpnet.pl] has quit [[NS] Quit: Juffo-Wup is a *candle*. It is filled with many *candy bars*.]
23:04 * Derakon[work] sighs at http://derakon.dyndns.org/~chriswei/temp2/points.png
23:05
< Derakon[work]>
In red: bright points in image 1. In green: bright points in image 2. In blue: bright points in image 2, remapped to align with bright points in image 1.
23:05
< Derakon[work]>
Except the remapping sucks.
23:39 * gnolam starts reading up on astrometry.
--- Log closed Wed Oct 14 00:00:23 2009
code logs -> 2009 -> Tue, 13 Oct 2009< code.20091012.log - code.20091014.log >