code logs -> 2008 -> Sun, 10 Aug 2008< code.20080809.log - code.20080811.log >
--- Log opened Sun Aug 10 00:00:40 2008
00:05 * TheWatcher actually returns to the computer, writes the aforementioned test
00:06
<@TheWatcher>
Yeah, it doesn't call delete on the object pointed to
00:07
<@TheWatcher>
(also, priority_queue::pop() has no return, just by the way)
00:09
<@TheWatcher>
(you need to do a T *top = queue.top(); queue.pop(); apparently)
00:10
<@MyCatVerbs>
Strange that they'd make pop() return void instead of T* - it's not like that'd've been any huge loss, and it would've been a little more convenient.
00:10
<@TheWatcher>
Indeed
00:10
<@TheWatcher>
But then, you're attempting to apply sense to something in the STL
00:10
<@TheWatcher>
¬¬
00:10
<@McMartin>
There's *something* in STL that does pop and return.
00:11
<@McMartin>
Because I recall using it all over the place for vectors
00:11
<@TheWatcher>
http://www.cplusplus.com/reference/stl/stack/pop.html - stack doesn't either, which is even more bixxare, imo
00:12
<@TheWatcher>
s/xx/zz/
00:12
<@McMartin>
Hum.
00:12
<@McMartin>
I must have written my own.
00:12 * McMartin remembers using "shift_front" and "shift_back" a lot, which were apparently inlines that did those two lines. =P
00:12
<@Derakon>
I could've sworn I remembered something like McM was talking about, but all I can find is push_back, which is the reverse.
00:14
<@McMartin>
I must've made an inline and forgotten about it. =P
00:14 You're now known as TheWatcher[T-2]
00:15 * TheWatcher[T-2] generally only uses STL classes like map and priority_queue (ones that'd actually involve some degree of effort to replicate), tends not to like the interface to STL classes in general, or trust the quality of their implementation in high performance situations
00:16
<@McMartin>
I use vector because I'd rather not have buffer overflows than save six instructions.
00:17
<@TheWatcher[T-2]>
IS that six in your code, or six in the linked executable?
00:17
<@Derakon>
I've kinda lost my interest in C++ ever since the quadtree that took me 750 lines in C++ took me maybe 80 in Perl.
00:18
<@Derakon>
The things we do for performant code~
00:18
<+Consul>
I wish I could write real-time analog-modeled music synthesizers in Perl.
00:19
<@Derakon>
You can.
00:19
<@Derakon>
Just massively upgrade your machine~
00:19
<+Consul>
Heh
00:20
<+Consul>
I'm not expecting it to run on a Pentium 90 or anything, but I don't want it to require a 32-core HP9000 either.
00:20 You're now known as TheWatcher[zZzZ]
00:56
<@McMartin>
Oh, FFS
00:57 * McMartin kicks stock frotz in the face.
00:58
<+Consul>
frotz?
00:58
<@Vornicus>
frotz: a Z-Code interpreter.
00:59
<+Consul>
Oh!
00:59
<+Consul>
Right
00:59
<+Consul>
I compiled that once.
00:59
<+Consul>
Or rather, your own version of it.
00:59
<+Consul>
I'm totally desynched right now.
01:04
<@McMartin>
Yeah, so, even though the bug, and the two-character fix, have been known for *years*, stock Frotz still corrupts the execution stack on save.
01:07
<@Vornicus>
two-character fix?
01:07
<@McMartin>
He ++ed at a point where he was supposed to have --ed.
01:07
<@Vornicus>
aha.
01:08
<@McMartin>
However, the data that was corrupted by this happens to not have been important during the save/restore sequence in Infocom games and in most standard I6 operations.
01:08
<@McMartin>
I7... not so much.
01:08
<@McMartin>
Faett Tiw fails hilariously.
01:10
<@McMartin>
"I am Vorn the Unsqueakable, proprietor of this fell abode. I can grant you
01:10
<@McMartin>
power, yes; dishes beyond the imagination of your pathetic human mind. Non-
01:10
<@McMartin>
Euclidean madness, in a cream puff."
01:11
<@Vornicus>
heeee.
01:14 Thaqui [~Thaqui@Nightstar-13764.jetstream.xtra.co.nz] has joined #code
01:14 mode/#code [+o Thaqui] by ChanServ
01:14
<@McMartin>
>i
01:14
<@McMartin>
You are carrying: a nine-dimensional cr?me br?l?e
01:16
<@MyCatVerbs>
Stress-testing the Unicode support? :)
01:17
<@McMartin>
Basically, yes, though not very hard.
01:17
<@McMartin>
This is only "Latin-1 in a UTF-8 terminal"
01:17
<@McMartin>
Full unicode support requires replacing most of the engine outright.
01:25 Attilla [~The.Attil@92.17.251.ns-11974] has quit [Ping Timeout]
01:57 Vornicus is now known as Vornicus-Latens
02:00 Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout]
02:05 Attilla [~The.Attil@92.2.65.ns-20699] has joined #code
02:05 mode/#code [+o Attilla] by ChanServ
02:06 Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code
02:06 mode/#code [+o Reiver] by ChanServ
02:07
<+Consul>
Ah, another Saturday night, with no life, and only virtual friends. What a time to do some coding.
02:07
< Shoukanjuu>
Suddenly!
02:07
< Shoukanjuu>
....
02:07
<+Consul>
After I finish crying in my pillow.
02:07
< Shoukanjuu>
I said suddenly!
02:08
< Shoukanjuu>
........... Dammit... *goes back to fix the event*
02:24 gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has quit [Quit: Z?]
02:25
< Shoukanjuu>
Suddenly!
02:26
< Shoukanjuu>
*zerglings spawn...and are attacking themselves*
02:27
<@ToxicFrog>
Suddenly!
02:27
<@ToxicFrog>
Hmm, only works when you say it?
02:27
<+Consul>
Apparently, it doesn't work for us mere mortals.
02:27
<+Consul>
Suddenly!
02:28
< Shoukanjuu>
*multiple spawning zerglings lags the application to a crawl*
02:28
<@ToxicFrog>
LAGBLASTER
02:28
< Shoukanjuu>
*The application has unexpectedly quit*
02:28
< Shoukanjuu>
I remember I did that once
02:29
< Shoukanjuu>
Zergling defense, made computers crash
02:29
<@ToxicFrog>
I was actually thinking of the Quake 2 HyperBlaster
02:29
< Shoukanjuu>
heheh
02:30
<@ToxicFrog>
Which earned the name "lagblaster" in online play, due to the fact that it was a rapid-fire weapon where every single projectile was an object - with 3d model and particle effects - in its own right, and everyone was on dialup in those days.
02:30
< Shoukanjuu>
Oh, dear god
02:31
<+Consul>
Hrm, TinyXML is looking like a good XML parser.
02:31
< Shoukanjuu>
It's like Chromehounds.
02:31
<+Consul>
Good enough for my purposes, anyway.
02:31
<@ToxicFrog>
Consul: ?
02:31
< Shoukanjuu>
Large games happening, people ban machine guns
02:32
<+Consul>
ToxicFrog: Please don't be offended, but I finally decided not to use Lua for my preset management. It'll still get used for the scripting layer, though.
02:32
<@ToxicFrog>
Aah. Alright.
02:32
<+Consul>
But I do have a reason for creating a standardized file format for these presets.
02:32
<@ToxicFrog>
Any particular reason?
02:33
<+Consul>
So other people can code synths or effects using my preset manager code.
02:33
<+Consul>
Or just the file format is fine, actually.
02:33
<@ToxicFrog>
They can use lua too ??
02:33
<+Consul>
Well, what if they don't want to?
02:33
<+Consul>
There is a future plan here...
02:34
<@ToxicFrog>
(I jest, actually. XML does have some advantages over lua for pure data representation, like schema validation)
02:34
<+Consul>
And this plan is one reason I finally decided McMartin's won concerning separation of application layers.
02:34
<@ToxicFrog>
(I would, however, like to point out that "what if they don't want to" doesn't make a good argument, as it can be applied to anything. What if they don't want to use XML?)
02:34
<+Consul>
Let's say I have three or four different engines made, a sampler, a multieffects unit, a guitar amp sim, and a nice analog modeling synth.
02:35
<+Consul>
Now, those engines aren't married to their respective GUIs...
02:36
<@ToxicFrog>
Er. s/schema validation/easy schema validation/. You can make validateable lua tables with schemas, you just have to write the validation code yourself, whereas most XML libraries have it built in.
02:36
<+Consul>
So, I can, down the road, create a new GUI that can load *all* of those engines, and manage their patches, and allow the user to perform them.
02:36
<@ToxicFrog>
Yes...
02:37
<@ToxicFrog>
I don't see how this has any relevance to whether they use lua or xml or anything else, though.
02:37
<+Consul>
What that'll look like is this fairly simple performance synth with this ton of presets in it. It's few knobs will be assignable to any parameter in any preset.
02:38
<+Consul>
Anyway...
02:38
<+Consul>
The issue is, I have one piece of metadata, the tagging, which is a one-to-many.
02:38
<+Consul>
Where everything else is one to one.
02:38
<@ToxicFrog>
The code that loads, saves, and manages the presets should be completely independent of the gui anyways, regardless of what representation it uses.
02:40
<+Consul>
So I want metadata to be flexible.
02:43
<@ToxicFrog>
Nothing you've said so far, AFAICT, implies anything about what format it should be in.
02:47
<+Consul>
The PresetManager will be GUI independent, though it won't be part of the dumb engine layer.
02:48
<+Consul>
It'll just be an object that can be used wherever it makes sense to.
02:48
<+Consul>
Probably as part of the UI layer.
02:51
<@ToxicFrog>
Yes...
02:53
<+Consul>
So anytime a UI event happens, like a widget being changed, the preset object gets updated. Then the user can hit "Save" and that info gets written to disk.
02:53
<+Consul>
At least that's how I see it in my head.
02:53
<@ToxicFrog>
Likewise.
02:54
<@ToxicFrog>
I still don't see how this has any relevance to how the data is stored.
02:54
<+Consul>
It doesn't. I just feel I can get it done faster this way.
02:54
<@ToxicFrog>
Ok. Fair enough.
02:55
<@ToxicFrog>
Why the long explanation, then?
02:55
<+Consul>
I can take the time to decide what metadata to require for the format.
02:55
<@ToxicFrog>
???
02:55
<+Consul>
It was a chance to sell some more of my vision. Obviously, it didn't work.
02:56
<+Consul>
That, and I think the world at large would "expect" XML as a file format. I don't know if that makes any sense, but...
02:58
<@ToxicFrog>
It's not so much that it didn't work, as that most of it was stuff I knew already and none of it had any relevance to the question I asked.
03:00
<+Consul>
To be honest, I was kinda dancing around the real answer of, "because I don't feel like it."
03:04
<+Consul>
I didn't want you to think you wasted your time explaining Lua to me.
03:04
<+Consul>
I do intend to use it, just not yet.
03:04
<+Consul>
We're still solidly in "bottom-up" mode.
03:07
<@ToxicFrog>
I don't think I wasted my time, and I am not at all angered that you chose not to use it as the on disk representation; "because I don't feel like it" and "because I think it would scare other programmers" are both entirely valid reasons.
03:08
<@ToxicFrog>
I am, however, rather annoyed that you spent half an hour dancing around this rather than saying it straight.
03:10
<+Consul>
I tend to have that effect on people, and I apologize. To be honest, I needed to convince myself, too.
03:12
<+Consul>
But after making it abundantly clear I'm new to this game, I really wasn't sure how "I think using a table dump from a scripting language as a file format is a daft idea" would sound. Being a newbie, I feel like my opinion in the matter doesn't count somehow.
03:14
<+Consul>
Especially with my confidence at an all-time low at the moment.
03:17
<@ToxicFrog>
It does count, but if your argument is actually that you don't think it's a good idea, I have to disagree.
03:19 Attilla [~The.Attil@92.2.65.ns-20699] has quit [Quit: <Insert Humorous and/or serious exit message here>]
03:20
<@ToxicFrog>
Or, rather
03:20
<@ToxicFrog>
If you think it's not a good idea for the reasons mentioned above, that's fine
03:21
<@ToxicFrog>
If you think it's not a good idea because it's a stupid idea, this is where I vehemently disagree.
03:23
<+Consul>
I want control over the final structure of the file format.
03:25
<@ToxicFrog>
...and?
03:26
<@ToxicFrog>
XML and Lua both give you the same degree of control, ie, the structure of your data is entirely up to you but the means by which that data is expressed in the file is sharply constrained.
03:33
<+Consul>
Look, I really don't know what to say.
03:33
<+Consul>
I'm sorry if I offended you.
03:33
<+Consul>
But the only frame of reference I have is my own.
03:34
<+Consul>
And right now, it's easier for me to wrap my head around a small XML lib, then it is to wrap it around a whole new language I've never touched before.
03:34
<+Consul>
I'm old, I'm tired, I've been working on this stupid class for three weeks and getting nowhere...
03:35
<+Consul>
Which just makes me feel like a moron that has no business even touching a computer, much less trying to program one.
03:39
<@ToxicFrog>
This is, as I said, an entirely reasonable attitude to take! About the XML, I mean.
03:40
<@ToxicFrog>
Where I take umbrage is the assertion that the very idea of using emitted script source as a data format is a stupid one.
03:41
<+Consul>
Well, it certainly is a stupid one for me. For you, it won't be.
03:43
<+Consul>
Someday, computers will be fast enough that nothing we do here will matter. I can write any synth I want in Python, and the computer will be so fast RT safety won't even matter anymore.
03:43
<+Consul>
How I wish those days were already here.
03:44
<@ToxicFrog>
Again, I don't see how that's relevant - and I think we have different definitions of "stupid" here
03:44
<+Consul>
It's only relevant because it follows on from my previous rant.
03:44
<+Consul>
Look, all I want to do is make some music.
03:44
<@ToxicFrog>
To me, saying that an idea is stupid is saying that it is without merit, that it is the product of a malfunctioning mind.
03:44
<+Consul>
I've been trying to write these songs in my head for 10 years now.
03:45
<@ToxicFrog>
You seem to be using it to mean "situationally inappropriate"
03:45
<+Consul>
Ummm...
03:45
<+Consul>
Yes, we most definitely have different definitions.
03:46
<+Consul>
My phrasing before was probably not the best.
03:46
<+Consul>
You wouldn't believe me if I told you why, though.
03:47 Syloq [~Syloq@Admin.Nightstar.Net] has joined #code
03:48 Syloq is now known as Syloqs-AFH
04:28
<@McMartin>
Hee.
04:28
<@McMartin>
Knight Rider AI in I7
04:28
<@McMartin>
"Let drive_dir be the shortest path from Point A to Point B, including even solid walls;"
04:29
<@McMartin>
(> GO EAST "You can't go that way." > LIKE HELL I CAN'T "OK, fine.")
04:30
< Shoukanjuu>
XD
04:30
< Shoukanjuu>
My dad wants me to write something that will make his iphone's map app give directions like one of those GPS talker things
04:30
<@McMartin>
(Actually, since travel is a directed graph, the concept of "including even solid walls" isn't well-defined in textual IF)
05:04 * ToxicFrog glares at X2, glares at his freighters, fires up the in-game script debugger
05:06
<+Consul>
Shoukanjuu: Sorry, I can't resist: http://xkcd.com/407/
05:06
< Shoukanjuu>
That's actually exactly what I was going to do
05:06
< Shoukanjuu>
To piss him off
05:07
< Shoukanjuu>
Because he keeps telling me how useless I am because I won't pay a hundred bucks for an SDK and a place to sell an app that I make with the language I don't know
05:10
<@McMartin>
And to build from scratch an application that retails for several hundred dollars.
05:10
< Shoukanjuu>
There's no doubt I won't make money from it
05:10
< Shoukanjuu>
It's just that at current, I can run my business or learn to write what he wants
05:33 * ToxicFrog goes insane
05:34
<@ToxicFrog>
When I run this script normally, the ship it's running on becomes obsessed with energy cells and does nothing but buy them forever.
05:34
<@ToxicFrog>
When I run it in the debugger it works perfectly.
06:52 AnnoDomini [AnnoDomini@Nightstar-29782.neoplus.adsl.tpnet.pl] has joined #Code
06:52 mode/#code [+o AnnoDomini] by ChanServ
07:54 Vornicus-Latens is now known as Vornicus
09:56 gnolam [lenin@Nightstar-2037.A163.cust.bahnhof.se] has joined #Code
09:56 mode/#code [+o gnolam] by ChanServ
09:58 You're now known as TheWatcher
11:38 Thaqui [~Thaqui@Nightstar-13764.jetstream.xtra.co.nz] has left #code [MORE constitution LESS destitution MORE pros...perity.]
11:43 Attilla [~The.Attil@92.2.65.ns-20699] has joined #code
11:43 mode/#code [+o Attilla] by ChanServ
12:02 * TheWatcher ticks off the last of the VFS core functions, now has to get vfsFiles working
12:10
<@TheWatcher>
(then vfsImplementations... then I can see if it actually /works/ >.<)
13:23
<@gnolam>
Gah! Template hell!
13:27 * gnolam suddenly finds himself longing for Lisp.
13:27
<@gnolam>
And realizing that made me start reaching for the rifle next to my desk.
13:48
<@gnolam>
Hmm. Are there any implementations (actually used in real life) where std::list.size() isn't O(1)?
13:51
<@Vornicus>
Not that I'm aware of; it seems senseless to do so.
13:55
<@gnolam>
Good. Thanks!
13:56
<@Vornicus>
(seeing as you can keep track of list.size very easily with small operations as you go)
13:57
<@gnolam>
That's what I thought. But you never know.
14:08
<@TheWatcher>
With STL, you really don't >.>
14:36
<@ToxicFrog>
Ok, sanity check time
14:37
<@TheWatcher>
you're crazy.
14:37
<@ToxicFrog>
I'm working on an algorithm for a trading script, for a transport vessel that services a single factory.
14:37
<@ToxicFrog>
It needs to decide whether to buy resources (and if so, which ones), sell product, or idle.
14:37
<@ToxicFrog>
What I've come up with is this:
14:38
<@ToxicFrog>
- first it calculates the urgency level for each one. For resources this is % cargo bays empty, for products % full. So as it runs low on a resource or approaches the point where it's generating more product that it can store, the urgency level increases.
14:39
<@ToxicFrog>
- it then filters for eligibility. A ware is not eligible if urgency is under 20%, or if urgency is under 80% (resources)/90% (products) *and* it wouldn't completely fill the transport's cargo bay.
14:40
<@ToxicFrog>
(also, products are not eligible if it's in buy-only mode)
14:41
<@ToxicFrog>
Once it's done this, the eligible ware with the highest urgency is the one it processes; for resources it will look for the best price within in its range and go out and buy them, and for products it will do the same except it will take on a load at the factory and go sell them.
14:41
<@ToxicFrog>
Sanity
14:41
<@ToxicFrog>
?
14:42
<@TheWatcher>
Hm
14:43
<@TheWatcher>
Seems sane to me, yes
14:43
<@TheWatcher>
Although I'm curious how you decided on the thresholds
14:43
<@ToxicFrog>
Largely arbitrary.
14:44
<@Vornicus>
Looks sensible to me. What happens when there's no urgency?
14:44
<@ToxicFrog>
I might actually remove the "under 20%" cutoff and trust the "fills ship cargo bay" condition instead.
14:44
<@ToxicFrog>
The idea is I don't want the ship doing constant small buy/sell runs.
14:44
<@Vornicus>
ah, so
14:44
<@ToxicFrog>
Vornicus: sleep(10) and then return, at which point the ship control script calls it again.
14:44
<@ToxicFrog>
Basically it'll idle until something becomes eligible.
14:45
<@ToxicFrog>
Now I just need to use X2's homesick abortion of an IDE to implement it...
14:45
<@TheWatcher>
Morituri te salutant, and all that
14:46
<@ToxicFrog>
It's the same idea as TI-BASIC, you can't enter the script directly but must instead pick stuff from menus.
14:46
<@ToxicFrog>
And I can't find the menu entry for 'if'.
14:46
<@TheWatcher>
Eugh
14:46
<@ToxicFrog>
I know it has one, because this script uses it.
14:47 * TheWatcher slaps them with a blue whale until they realise that lua exists for a reason
14:47
<@ToxicFrog>
(nor can I simply exit and write the script by hand outside - it stores them as pure ASTs in XML.)
14:48 * TheWatcher eyes the intertubes
14:48
<@TheWatcher>
and apparently the one in X3 is as bad
14:49
<@ToxicFrog>
...augh, this is sick
14:49
<@ToxicFrog>
You do it by choosing "<RETVAR/IF> <EXPRESSION>"
14:49
<@TheWatcher>
...
14:49
<@ToxicFrog>
Then scroll down past all the variables and whatnot until you get to "flow control (if)"
14:49
<@gnolam>
Eww.
14:49
<@ToxicFrog>
(the actual "flow control" category only contains end-of-block markers)
14:49 * TheWatcher hands you an iSpork
14:51
<@Vornicus>
Kill.
14:52
<@ToxicFrog>
Oh yeah. And the debugger has only two commands (although at least it also auto-watches all variables in scope): step, and continue.
14:52
<@ToxicFrog>
Note the lack of either "break" or most especially "step over".
14:53
<@TheWatcher>
Why do I suspect that this is less a scripting facility, and more a form of vicious, spiteful revenge against the people who requested one?
14:54
<@ToxicFrog>
Except it is also heavily used by the developers.
14:55
<@TheWatcher>
Egh
14:56
<@ToxicFrog>
...I can't find the grouping lexemes
14:57
<@ToxicFrog>
Oh, it uses [] rather than ()
15:01
<@ToxicFrog>
Oh fuck you Egosoft
15:01
<@Vornicus>
?
15:02
<@ToxicFrog>
The reference manual for the script engine is downloadable only by registered users.
15:02
<@Vornicus>
Let me guess, you can't register?
15:03
<@ToxicFrog>
I probably could if I could be arsed to give them all the info they want.
15:03
<@TheWatcher>
give me a moment
15:04 * TheWatcher is Making Enquiries for you
15:04
<@ToxicFrog>
Aah, that's what I needed - "get volume of ware"
15:04
<@Vornicus>
Oh, TF, I thought of a problem with your code: what if you have multiple transports serving a factory? Will they all go and try to do the same things?
15:05
<@ToxicFrog>
Vornicus: there's seperate code in the Xai libraries which should deal with that.
15:05
<@ToxicFrog>
I'm not actually writing a new script from scratch; I'm modifying the urgency calculation algorithm of an existing one.
15:06
<@Vornicus>
aha
15:09
<@TheWatcher>
I have someone emailing me a copy of the manual, I'll forward it as soon as I get it TF
15:09
<@ToxicFrog>
Sweet
15:09
<@ToxicFrog>
Thanks
15:15
<@TheWatcher>
coming down now, do you want me to just shove it in fleet.starforge, or mail it?
15:16
<@ToxicFrog>
fleet.starforge is probably faster
15:18
<@TheWatcher>
http://fleet.starforge.co.uk/MSCIHandbook.zip
15:20
<@ToxicFrog>
Got, thanks
15:24
<@ToxicFrog>
Re: collisions: turns out it's not in the library, it's part of the existing script's checks
15:25
<@ToxicFrog>
It considers a ware only if: it has a certain urgency level, the transport has enough room for it, and there isn't another transport currently buying that resource from the same destination it would consider
18:13 AnnoDomini is now known as Elizabeth
19:17 EvilDarkLord is now known as Rico
19:43 You're now known as TheWatcher[afk]
20:31 You're now known as TheWatcher
20:46 AnnoDomini [AnnoDomini@Nightstar-29323.neoplus.adsl.tpnet.pl] has joined #Code
20:46 mode/#code [+o AnnoDomini] by ChanServ
20:47 Elizabeth [AnnoDomini@Nightstar-29782.neoplus.adsl.tpnet.pl] has quit [Killed (NickServ (GHOST command used by AnnoDomini))]
20:47 AnnoDomini is now known as Elizabeth
20:58 Vornicus is now known as Finerty
23:01
<@McMartin>
Hm. Two of my I7 extension updates seem to have gone through.
23:04 Elizabeth [AnnoDomini@Nightstar-29323.neoplus.adsl.tpnet.pl] has quit [Quit: He who fights with monsters should look to it that he himself does not become a monster. And when you gaze long into an abyss, the abyss gazes also into you.]
23:05
<@gnolam>
WTH? No GL_ARB_texture_non_power_of_two? Yarrrrgh.
23:06
<@McMartin>
Man. Remember back when C only considered the first six characters significant?
23:12
<@gnolam>
Actually, no. But I have had to fiddle with code from those Dark Ages. And I don't want to do it again.
23:14 Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout]
23:19 * TheWatcher flails vaguely at his vfsFile class
23:20
<+Consul>
The best I can do is coding in 6500-series assembly on a C64.
23:20 Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code
23:20 mode/#code [+o Reiver] by ChanServ
23:23
<@TheWatcher>
I am so bloody glad I decided to sort out this whole file handling and resource management stuff first...
23:41
<@McMartin>
Yes.
23:42
<@McMartin>
Consul: Entertainingly, I actually wound up writing a fairly modern assembler for the C64 a few years back.
23:43
<+Consul>
McMartin: Cool. Was it for a project embedding the 6510 or along those lines?
23:44
<@McMartin>
Mainly it was so I could do proper development for the emulated hardware
23:44
<@McMartin>
I used it for C64 and NES stuff.
23:44
<+Consul>
Ah, okay.
23:44
<+Consul>
I didn't think about emulation. *facepalm*
23:44
<@McMartin>
http://hkn.eecs.berkeley.edu/~mcmartin/ophis/
23:45
<@McMartin>
I've been told that some people have used it for Atari 2600 homebrew, but it's not ideal for that because you need cycle counts at your fingertips to do that sanely
23:45
<@McMartin>
And it doesn't do that
23:45
<@McMartin>
Mainly because "sane" and "2600" do not fit together.
23:46
<+Consul>
Hehe
23:46
<@McMartin>
http://www.stanford.edu/~mcmartin/retro/ was the stuff I actually used it for that got done.
23:46
<+Consul>
Say, do you know of any books that can teach me more general CS issues?
23:47
<+Consul>
Like, I know what a stack is, but references to the "execution stack" go over my head (I'm assuming it's used for keeping track of scope).
23:47
<@McMartin>
Hm.
23:47
<@McMartin>
So, my answer to the first isn't the answer to the second.
23:47
<@McMartin>
So, for general CS, Abelman and Sussman's "The Structure and Interpretation of Computer Programs" can't be beat.
23:48
<@McMartin>
And its text is online for free.
23:48
<@McMartin>
It's MIT's first CS class, and many other top unis use it.
23:48
<+Consul>
Cool, found it.
23:48
<@McMartin>
The execution stack is part of the runtime for C-like languages, at its core.
23:49
<@McMartin>
For something like that, I believe I was formally trained in it by Patterson and Hennessey's simpler book.
23:49
<@McMartin>
The one that isn't "Computer Architecture: A Quantitative Approach."
23:49
<@McMartin>
One moment while I find its name.
23:49
<@McMartin>
In 6502 terms, though, the stack is what the PHA and PLA instructions operated on.
23:50
<@McMartin>
And where return addresses go when you JSR.
23:50 Attilla [~The.Attil@92.2.65.ns-20699] has quit [Ping Timeout]
23:50
<@McMartin>
It didn't have the room to do much more with it; modern machines tend to stick a function's local variables there too.
23:50
<+Consul>
Yeah, I remember that well enough, I think.
23:50
<+Consul>
And you could make your own stacks if you wanted to.
23:50
<@McMartin>
Yeah.
23:50
<@McMartin>
SICP tends to talk about environments more generally, since LISP and its derivatives actually can't have their computation modeled this way.
23:50
<+Consul>
And you could stuff your own stuff on the computer's stack, too, which made for some interesting hacks.
23:51
<@McMartin>
Yup. At least one implementation of OO involved hacking the stack and doing a bogus RTS.
23:51 You're now known as TheWatcher[T-2]
23:51
<@McMartin>
Aha.
23:51
<@McMartin>
http://www.amazon.com/Computer-Organization-Design-Hardware-Interface/dp/1558604 286
23:52
<@McMartin>
Not a cheap book, though, so you may want some second and third opinions.
23:52
<@McMartin>
But that was my formal intro low-level programming class.
23:52
<+Consul>
I can probably do an ILL.
23:53
<@McMartin>
Berkeley's lower-div CS course was SICP, a data structures class, and the book I just linked.
23:53
<@McMartin>
In series, so, high-level down to bits going to the CPU.
23:53
<@McMartin>
The MIPS architecture is also kind of interesting if you're used to the 6502 and the x86.
23:54
<@McMartin>
(That book was essentially one of the first salvos in the RISC wars.)
23:54
<@ToxicFrog>
Seconding the recommendation for SICP.
23:54 * TheWatcher[T-2] found his first year of uni amusing - they did MIPS assembler in the first semester back then.
23:54
<@McMartin>
TW: Yeah, I can see going low-to-high as well.
23:54
<@McMartin>
high-to-low is better at putting cocky frosh in their place, though, ime.
23:54
<+Consul>
I'm wanting to fill in some gaps in my knowledge concerning things like optimizing to hardware and the way languages work in general, so I can better program what I want (complex DSP routines).
23:55
<@McMartin>
Hrm. That's actually not the way to learn it, then.
23:55
<@McMartin>
DSP is an art all its own.
23:55
<@McMartin>
You'll want to find signals experts for that.
23:55 You're now known as TheWatcher[zZzZ]
23:55
<+Consul>
I also want a good C++ book, preferably one that can help me with exceptions (still struggling, there, and it's unfortunately an unavoidable subject).
23:55
<@McMartin>
SICP is still worth knowing - it's the high concepts for organizing Stuff.
23:56
<@McMartin>
Yeah.
23:56
<+Consul>
Well, I'm concerned with how to do SSE2/3 stuff.
23:56
<@McMartin>
I honestly do think it's easier to learn exceptions in Java or C# before learning them in C++/
23:56
<+Consul>
Not the DSP stuff itself. I have lots of resources for that.
23:56
<@TheWatcher[zZzZ]>
If you're doing anything high performance, you want ot avoid exceptions in c++ like the plague, though
23:56
<@McMartin>
Right, and I suspect the real answer is "use the libfft library, let them use it, and design your DSP so that it makes as few transforms as possible"
23:56
<+Consul>
Oh, none of the DSP routines will use exceptions.
23:57
<+Consul>
I just need it for things like file loading and saving, housekeeping, all that jazz. The boring stuff.
23:57
<@McMartin>
Yeah, if you can make your routines be nothrow whenever possible, you'll make your clients happy
23:57
<@gnolam>
Ahh, SICP. Those were the days...
23:57
<+Consul>
Funny thing there...
23:57
<+Consul>
You mentioned FFTW...
23:58
<@McMartin>
Consul: Anyway, high performance mathematical computing is a totally separate discipline, and CS types like me generally just treat their work as a black box.
23:58
<+Consul>
I found a paper on a way to do zero-latency FFT that apparently isn't patent-encumbered.
23:58
<@McMartin>
As a primitive operation with the documented cost.
23:59
<+Consul>
I also want to write some routines that can output transfer function tables for different circuit models.
--- Log closed Mon Aug 11 00:00:02 2008
code logs -> 2008 -> Sun, 10 Aug 2008< code.20080809.log - code.20080811.log >