00:00:00 --- log: started forth/05.09.15 00:00:22 In the MAF document I referenced a while back, there's an implementation. 00:00:43 maf? 00:01:25 Minimal ANS Forth, a Forth written in Forth. 00:01:37 Ah, yes. The one I downloaded 00:02:42 Can I ask how you started getting into your compoany/developing Quartus Forth etc? 00:03:47 I heard about the Pilot handheld; found out it could be programmed for with relative ease and low barrier-to-entry, and got excited about the idea of programming directly on it. 00:04:20 When was that? 00:04:31 Late '96, I think. 00:04:37 * amca nods 00:04:54 Then found out there wasnt a Forth implementation for Palm and decided to write one? 00:05:24 Right. 00:05:45 Or were there Forth implementations, but not quality ones? 00:05:55 There were none when I began. 00:07:14 Is there any competition now? 00:08:34 There've been a couple of other efforts, only one of which had any backing, but I believe they're both abandoned at this point. Quartus Forth is the only actively-supported Forth for the Palm OS, as far as I'm aware. 00:08:55 * amca nods 00:10:36 --- quit: JasonWoof ("off to bed") 00:10:39 So did you start Quartus in 97? 00:10:56 That sounds about right. 00:15:48 What did you start coding it in? Did you bootstrap it? 00:16:14 I started it in a 68000 cross-assembler. 00:16:21 --- quit: madwork (Read error: 110 (Connection timed out)) 00:16:25 Ah. 00:16:30 My notes say I started it on 1997.7.18. 00:16:51 Hmm. Almost a year after you got your palm 00:16:52 I undoubtedly began earlier than that, research, gathering tools, etc. 00:16:58 I see 00:17:06 How old were you around then? 00:17:16 I'm going from reconstructed memory; I may not have got the device until early-mid '97. 00:17:23 ok 00:17:48 I suppose that would have made me nearly 30, at the time. 00:18:06 Can I ask what you had been doing up till then? 00:18:21 Reading back-issues of the Reader's Digest. 00:18:55 Ah. Sounds like Quartus really improved your life then 00:19:31 I wouldn't go that far. I mean, you've got Quotable Quotes; Word Power; Humor in Uniform; I Was Joe's Lung; that sort of thing. 00:20:07 lol. So Quatus *really* improved your life then ;) 00:20:19 Although I must admit I like reading them too... 00:20:56 When I was a kid I'd pick up back-issues cheap. Always something to read. 00:21:05 * amca nods 00:21:16 Full of info for an info whore like me 00:21:19 and laughs 00:29:35 It's well into the wee hours here; I'm off. 00:30:09 Enjoy your sleep then 00:30:15 Thanks! 00:30:30 :) np 00:46:43 --- quit: thinfu_ (Remote closed the connection) 00:46:43 --- join: thinfu (i=thin@bespin.org) joined #forth 00:46:43 --- mode: ChanServ set +o thinfu 01:19:28 --- quit: virsys (Read error: 110 (Connection timed out)) 01:20:29 --- join: virsys (n=virsys@or-65-40-181-238.dyn.sprint-hsd.net) joined #forth 02:29:52 --- join: amca_ (n=plump@as-bri-4-1-151.ozonline.com.au) joined #forth 02:50:10 --- quit: amca (Read error: 113 (No route to host)) 02:50:22 --- nick: amca_ -> amca 03:16:45 --- quit: amca ("d34d") 04:11:58 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 04:47:05 --- join: amca (n=plump@as-bri-4-1-175.ozonline.com.au) joined #forth 04:48:43 Hello 04:49:02 Raystm2: are you at work or home? 05:08:11 hi amca 05:08:29 How are ye tathi ? 05:08:36 The thing in asm that I was working on yesterday is a Forth, BTW 05:08:48 I'm still fighting with the assembler, but I think I've got it on the run... :) 05:08:50 How are you? 05:08:58 hehe :) 05:09:02 Not too bad 05:09:07 Got some sleep today :) 05:09:53 What chip you coding it for? 05:10:04 PPC 05:10:21 Ah, yes 05:10:28 currently runs under Linux, or boots under Open Firmware, though no drivers yet. 05:10:32 Is there any code for it online yet? 05:17:59 not really... 05:17:59 Is it something you would like to email? 05:17:59 actually, it's in my SVN repository, so I guess it is online. 05:17:59 Ah. Open to the public? 05:17:59 read access... http://josh.qualdan.com:3/svn/forth/ should work 05:17:59 cool thanks 05:17:59 I wanna have a look at what PPC Forth implementation looks like :) 05:17:59 How is it going? 05:18:54 it works ok. Still pretty minimal though. 05:19:02 I keep tinkering with the internals rather than adding functionality. 05:19:33 Changing how it is structured/refactoring it? 05:19:42 yeah. 05:20:16 This has been my most "normal" forth -- I generally work on it for a bit, then drop it for a while to go experiment with crazier ideas. 05:20:19 --- join: PoppaVic (n=pete@0-1pool46-87.nas30.chicago4.il.us.da.qwest.net) joined #forth 05:20:27 But I keep coming back to it every 6 months or so. 05:20:38 Well that is probably a better thing to be fiddling with internals rather than adding features to a buggy thing 05:20:46 Howdy 05:20:58 Helo again! :) 05:21:00 Oh, I don't know that it was buggy, just that I'm working towards cleaner code. 05:21:00 watt I miss? 05:21:02 Hi PoppaVic 05:21:24 Hi tathi,amca 05:21:35 it's getting to be fairly good (or at least it fits the inside of my head). I can come back to it after 6 months and it still makes sense :) 05:21:43 tathi: Sorry, that's what I meant by "buggy". To me code that is inelegant is buggy >.> 05:21:51 ah. :) 05:22:08 no. Elegance is not all that thrilling 05:22:19 PoppaVic: Maybe not to you 05:22:29 PoppaVic: We are chatting about tathi's PPC asm Forth 05:22:45 Readability, easy and comments where apropos are a lot more useful ;-) 05:23:23 PoppaVic: To me that *is* elegance 05:23:27 Ahh 05:23:55 Moreso than fancy hacks, although I can appreciate the good one's like Duff's Device too 05:24:00 lol 05:24:03 Some folks seem to believe that "elegance" is using the perfect, tightest, fastest routine. 05:24:13 LOL 05:24:22 That is raw power, not elegance 05:24:32 of course.. you can't then port or read it, but: it's "elegant" ;-) 05:25:13 Different things are different elegance to different pplk I suppose 05:25:24 I sometimes see folks advocating recursion that way, too 05:26:02 Recursion can be elegant as long as it is appropriate and adds to readability IMO 05:26:36 yeah. There are places where it fits beautifully; there are other places where a simple loop is just tidier. 05:27:02 yep 05:27:02 otoh, I've never been one to suggest someone recurse right outta' stack. 05:27:17 tathi: I like your air hocky idea :) 05:28:39 amca: yeah, I actually have a table. 05:28:49 but I didn't use self-leveling epoxy, so... 05:28:56 oy 05:28:57 it's still waiting for me to finish sanding it level. 05:29:02 ow 05:29:23 Is self levelling epoxy less viscous than normal epoxy? 05:29:37 I gather the chemistry is rather complicated. 05:29:37 what in the world needed epoxy? 05:30:10 PoppaVic: I built an air-hockey table (mostly out of wood), and I finished the top surface in epoxy 05:30:17 ahh 05:30:24 I see. 05:30:35 amca: in high school I worked as a lab assistant at a place that did epoxies 05:30:42 PoppaVic: He wants a nice laquered finish on the front of his monitor ;) 05:30:48 I still have the 2 cans of nice Hobby-Poxy pain ;-) 05:30:58 tathi: Ah. So you have an idea how complicated it is? 05:31:02 pain/t/ 05:31:06 in the troubleshooting lab. Seemed like half our problems were that some big plant was having trouble with there finishes not leveling quite right. 05:31:33 I think that the problem is that it hardens by forming long chains, so if you don't get it just right it affects the surface tension and you get dimples. 05:31:35 Ah 05:31:42 amca: now-now... Poxy ain't laqueer ;-) 05:31:44 yep 05:32:04 What *is* the difference between the two. Im pretty bad when it comes to paints 05:32:36 I can't recall ever using a lacquer. Enamels, yeah. 05:32:57 I used to recall the diffs.. Been too many years now. 05:33:10 Laquers are transparent, arent they? 05:33:14 yeah...I should finish up the air-hockey table and publish some plans for it. 05:33:21 they can be; don't have to be 05:33:54 Can enamels and epoxies be transparent? 05:34:05 sure, afaik 05:34:10 yeah. 05:34:22 color is always a function of pigments 05:34:38 epoxies tend to be a bit on the yellowish side, but basically transparent. 05:34:49 although, I can recall some epoxies that "clear" was a bit inaccurate on. 05:34:57 what tathi said 05:35:40 tathi: Do you know what the difference between laquer, epoxies and enamels are? 05:35:59 not really. 05:36:13 One of these days I'll have two projects: making gramps gun-cabinet about 2-3" deeper; and building a decent reloading-bench. 05:36:31 I mean, epoxy is a two-part thing (have to mix resin/hardener), the others aren't 05:37:22 * amca nods 05:37:27 Like epoxy glue 05:37:52 tathi: Why did you pick epoxy for the surface instead of ;laquer or enamal? 05:37:53 lacquer: any of various clear or colored synthetic coatings made by dissolving nitrocellulose or other cellulose derivatives together with plasticizers and pigments in a mixture of volitale solvents used to impart a high gloss to a surface. 05:38:26 Oooh! I ought to look at wikip 05:38:43 and...sounds like enamel is a catch-all term for latex or oil-based paint. 05:39:13 yeah, I was afraid they'd do that 05:39:15 but that it originally referred to a finish of fired glass. 05:39:17 So it basically the type of chemicals used as opposed to the paint function? 05:39:40 absolutely 05:40:04 some cultures did better with one or the other; both have slightly diverse uses 05:40:18 Ah 05:40:34 "baked enamel" is a fairly tough coat 05:40:49 ..also used on jewelry and such 05:41:12 I knew about the origin of "enamel" so I wondered why it applied to oil/latex based paints 05:41:41 I would guess they threw up their hands and appropriated it as a descriptive-term. 05:42:26 certainly a high-gloss white latex-enamel looks nice on doorframes. 05:42:57 ..and, perhaps they have other additives that make it act more like a real enamel as it dries? 05:43:38 Is one of the three more weather resistant? I would guess that lacquers would be the most durable 05:43:38 (btw, never EVER buy and use oil-based paint on homes - ewwwww!) 05:43:54 heh 05:43:58 iirc, there are indoor and outdoor latex-enamels 05:44:17 --- join: aardvarx (n=folajimi@shell2.sea5.speakeasy.net) joined #forth 05:44:19 oh crap 05:44:27 Good day. 05:44:41 tathi: the house I once owned: the idiotic family had stolen industrial yellow-oilbase and painted the kitchen and LR. It was a WHORE to repaint. 05:44:51 hi aardvarx ;-) 05:44:59 gday aardvarx 05:44:59 hi PoppaVic. 05:45:06 gday amca 05:45:16 PoppaVic: How come it was a whore to repaint? 05:45:29 PoppaVic: Couldnt just paint over it with water based paints? 05:45:43 amca: you have to use etchants and sanding to get enough 'tooth' for any new paint to adhere. 05:46:10 ah. Nice and glossy then 05:46:17 What's with the 403 on the TWiki? 05:46:41 ..and for all that... Those walls were easier than the one they "papered"... There were like 5 layers.. Some were flocked, some were contact-paper. 05:47:02 aardvarx: haven't looked this AM. Lemme' load up. 05:47:28 lol 05:47:32 shit 05:47:41 hmmm 05:47:47 forbidden? Weird 05:47:56 I guess it's not just me. 05:48:11 ok.. I guess we irked someone. Somehow. 05:48:30 Quartus: yo! you awake? 05:50:46 Maybe his system went down/oral? No clue 05:51:57 --- join: ccfg (i=ccfg@dsl-roigw3de0.dial.inet.fi) joined #forth 05:55:04 Anyway, one of the questions that came up yesterday was whether or not you plan to use an alternative to Make for Metabuilder. Is that true? 05:56:20 To build itself, I've been using GNU make, yeah. However, once built, I'd like to step away from the assorted-makes if possible. the shell-ish thingie or another should act for makes 05:56:39 Specifics, man. Specifics. 05:56:46 Will http://freshmeat.net/articles/view/1715 help? 05:57:28 There are a variety of Make alternatives listed there. 05:57:37 You keep looking for hard-code and a Five-Year Plan, and I'm trying to get things lined up to build tools to build tools ;-) 05:58:59 Decent url - reading 05:59:27 Well, if you're dissatisfied with something, now will be the time to address it. Nothing is written in stone. However, some of the discussions here illustrated why projects start off with Make, but regret the decision later. 05:59:48 Yeah. And, I try to keep makefiles dead-simple. 06:00:50 "An enamel paint is a paint that dries to an especially hard, usually glossy, finish.This is a commonly used, yet fanciful term, implying that an ordinary latex or oil-based paint has the same properties as true, fired vitreous enamel." 06:01:04 amca: that sounds right 06:02:07 I've doesnloaded and seen some of those tools 06:02:14 doWn 06:03:23 This is not a contract; but it is helpful to have this written down so that in the future if questions regarding the chosen approach(es) arise... 06:03:36 you will have something to look back to. 06:03:53 I agree. And, should we ever get the wiki back, we can address these issues 06:05:35 I've already code in place that sweeps thru /usr/include and the "standard headers" list, and checks on all defines. So, some "tools" have had some experiments done. BUT, mind you: not in forth(ish) - just in C. 06:06:15 That's another issue I do not understand. 06:06:27 Where does C end and Forth begin? 06:06:37 After seeing all the insanity that relies on sh, and make, and sed and m4 and - well, I've pretty well concluded we've language rather than speed issues 06:07:03 aardvarx: It depends where you want it to 06:08:05 If you mean "Where do you end C to start the forthish code?" then, when I get a system (lib/api) in place that lets us interact, extend, save and load. At that point, we can begin forthish code-dev. 06:09:18 * aardvarx checks Wikipedia for what an API is... 06:09:54 think headers(structs, types, proto) 06:10:13 then the lib has code/funcs, structs & data 06:10:43 aardvarx: Application Programming Interface. The interface you use to use a code library so you dont have to know about the internals 06:10:46 You have to have the "critical mass" to leave the C for the forthish 06:10:56 eg Windows API for creating windows etc 06:11:51 amca, I *MUST* understand API to be a good programmer!!! 06:11:54 :P 06:12:13 aardvarx: wtf? 06:12:25 he's right ;-) The term is prevalent 06:12:38 --- join: madwork (n=foo@derby.metrics.com) joined #forth 06:12:57 hi mad 06:13:22 --- quit: tathi ("leaving") 06:14:14 amca, I have always heard of APIs, but did not think much of them. From what I am reading now, it seems it behooves me to comprehend the concept behind APIs. 06:14:24 absotively 06:14:50 C-fiends can talk of headers and libs and plugins: but they need to know of "API" to work with them. 06:14:55 Ah, yes. 06:15:04 some other languages may NOT have an equivalent. 06:15:06 aardvarx: I thought you might be being sarcastic or something 06:15:38 nah, he was being sincere ;-) 06:15:41 aardvarx: In face when you code your programs, it is a good idea to create a clean API yourself between the model and the user iinterface 06:15:52 PoppaVic: ;P 06:16:10 exactly - regardless if the "user" is another programmer or a app-user that CAN'T program. 06:17:36 aardvarx: The advantage of having a clean API is that you can use the library for multiple uses and if you want to change how your library is implemented, you can keep the same API. 06:17:58 yep. changes to guts don't need to change the "interface" 06:18:22 aardvarx: Do you know much about different implementations of stacks? 06:19:17 Nope 06:19:40 I just started reading about stack traces two days ago... 06:19:42 Do you know what a linked list is? 06:20:13 amca, I am only slightly familiar with it; I'm willing to learn, though. :) 06:20:40 amca, I *CAN* create an API? 06:20:47 Yes 06:20:52 I thought only Corporations can do that. 06:20:56 no 06:21:14 aardvarx: What langs do you know? 06:21:25 C and QBasic. 06:21:38 I'm learning C++ now. 06:21:38 cool 06:21:46 http://rafb.net/paste/results/exQpP677.html 06:22:26 that's some older code of mine 06:22:30 ..an "API" 06:22:59 Say you have a program that has a number that you want to manipulate in an opque way, so that if you decide to change how the number is stored, you still have the same interface 06:23:17 yep like a CELL or DCELL or QCELL 06:23:39 okay... 06:24:27 that old API I posted would allow any program to "interface" with stacks and all the gymnastics - w/o having to write a pile of support themselves. 06:24:43 What??? 06:24:46 So your interface to the data structure could be "void set_number(int num); int get_number(void);" 06:24:55 That's less than 100 lines! 06:25:03 PoppaVic, are you serious? 06:25:10 the .c file is never seen, it'd be in a lib 06:25:30 aardvarx: That is just the interface, not the implementation. The idea is that the implementation is hidden from the library user 06:25:35 all they do is #include and remember to -labstrack 06:25:37 Okay. 06:26:12 These API's are why I develop in the order which I do. 06:26:28 tools-to-write-tools 06:26:45 amca, are you saying that get_number() is the data structure? 06:26:51 nope 06:26:55 the interface 06:27:05 Okay. 06:27:12 No. get_number is part of the the API to the data structure. 06:27:14 amca - use the term 'CELL' instead of 'int' - it's more abstracted 06:27:32 PoppaVic: Im just giving a very basic example 06:28:06 CELL get(Something *context, offset o); 06:28:20 PoppaVic: Too complicated an example 06:28:23 CELL put(Something *context, offset o); 06:28:28 hehe - yeah, sorry 06:28:39 amca, I see what you're saying. The data structure is contacted by the API, not directly by the user. 06:28:39 Good form, but :) 06:28:43 Right? 06:28:44 yes 06:28:49 should we throw in vtables now? ;-) 06:28:55 lol No! 06:29:18 aardvarx: Ill rafb it it will be easier to understand 06:29:31 aardvarx: the datastruct can be opaque, or abstract, or literal (dunno the proper term there) 06:30:01 amca, okay. 06:30:02 aardvarx: have you used FILE* and handles? 06:30:21 PoppaVic, is FILE a data type? 06:30:28 If not, no. 06:30:41 a FILE* is intended to be opaque. A handle is abstract 06:31:12 I guess this has nothing to do with fopen() or fclose() 06:31:18 C programmers are NOT supposed to dick around within what either represent, w/o going trhu the provided API 06:31:27 aardvarx: sure it does 06:32:47 In fact, folks that DO get inside the FILE struct (via the *) and tinker around, soon discover that some other machine will blow up - because only the system is supposed to KNOW about the guts. And they can vary across platforms. 06:33:58 In fact, the only reason folks always use to pick one system over the other (open vs fopen), is the API's for either are not reflective. 06:34:33 PoppaVic: fopen is higherlavel IO than open as well 06:34:43 yep, and I use it almost exclusively 06:34:54 the api's are just not mirrored 06:35:06 Say for example you had this code. number.h is the interface, or API - what users of the library know about, and number.c is theimplementation - what users of the library dont (or shouldnt) know. http://rafb.net/paste/results/vrWMRc15.html 06:35:20 aardvarx: That last one was for you btw 06:36:16 should do "static int _number=0;" and a leading _ is reserved 06:36:45 is it? I thought it was 2 leading _'s? Doh 06:36:54 What should I use instead to indicate privateness? 06:36:55 the 'static' tells the compiler to not add the term to a symbol-table 06:37:21 soo, no outside code can 'find' the var 06:37:37 aardvarx: Can you undertand that code? 06:38:12 PoppaVic: What is a better prefix to use then? 06:38:17 amca, just a sec. 06:38:34 I'd use some 'namespace' suggestion... like example_ 06:38:59 Ah, yes 06:39:04 (and recall that some prefixes like that are ALSO "reserved", the bastards) 06:39:22 O_O 06:39:30 Who reserved them? GNU? 06:39:40 This is another fine reason for our vm/engine ;-) 06:39:55 amca: GNU maybe, but the committees/stds anyway 06:40:02 PoppaVic, I need to write that down. 06:40:10 Could you please clarify it? 06:40:16 It took me weeks to run them all down. 06:40:27 amca, number.c is hidden, right? 06:40:31 Well it isnt in the 89 std I dont htink. Is it in the 99 one? 06:40:43 stuff like 'E' prefix is reserved for errors; "mem" and "str" are reserved, etc. 06:40:59 aardvarx: The user will see number.c as a compiled library, like number.o or number.a 06:41:04 amca: could be - all I know is I ran into an abundance of irritations 06:41:23 PoppaVic: With -Wall under gcc? 06:41:39 aardvarx: And the .h file too of course 06:41:47 I went thru the web and wrote tests and such, I'd have to look around for the code and notes 06:44:03 amca, so would I do '#include ' in my C-code? 06:44:17 Im pasting an example program now 06:44:24 right 06:44:34 http://rafb.net/paste/results/zMaZq384.html 06:44:34 and, you'd link the object/lib to gcc 06:45:25 PoppaVic: Any suggestions about the coding style? What order should I have had the includes in? 06:45:39 for your example? 06:45:46 yep 06:46:07 aardvarx: Does that look clear? Any Qs about it? 06:46:16 I always include the systems-stuff first, then my own stuff (possibly installed), and the "local.h" stuff 06:46:21 Yeah, that was very helpful :) 06:46:25 cool 06:46:32 Now, the important part 06:47:01 the exception to my above would be a possible LEADING #include "config.h" 06:47:11 Say you have discovered a bug in your code (like PoppaVic pointed out) and you also want to change the implementation of your library 06:47:30 * PoppaVic is in the corner and watching 06:47:40 With a well written API, you could use it the same and not worry about the implementation details. 06:47:49 eg http://rafb.net/paste/results/hwaJmp90.html 06:48:11 You would still use the API functions and number.h exactly the same way 06:48:54 PoppaVic: you would name the library libnumber.a wouldnt you? 06:49:32 ahh, usually. For a static-lib .a - the "lib" prefix is always used, and never mentioned at -l 06:49:49 * aardvarx compares the header files for differences... 06:50:03 * amca nods 06:50:34 So you would use gcc -l number myprogram.c -o myprogram 06:50:40 aardvarx: ahhh - the "interface" (API) remained the same ;-) 06:51:50 Two things: 06:52:02 But the internals are different - the float being used instead of an int. Of course this is a trivial example, but it shows the basis behind APIs 06:52:04 go on 06:52:12 well, I'm sorta' adamant that it should always be akin to " [-o target] [] [-llibraries] 06:52:45 (naturally above MIGHT change a bit because order can be significant) 06:53:00 First, is "number.c" the data structure? I'm used to having to use 'struct' to define a structure... 06:53:24 ahhh 06:53:29 Second, are you just casting int to float and back? 06:53:35 aardvarx: No. 'int _number'/'float p_number' is the data structure in this case 06:53:35 number.c is the source-code. 06:54:11 number.c might be considered the never-seen ABI 06:54:17 I see. 06:54:51 But in this case there can be only one data structure of this type in the program. It would be possible to have it set up so that you could have multiple ones in your api, usually by using handles etc. Do you want to see an example of that? 06:55:05 * aardvarx nods enthusiastically. 06:55:19 Yes! 06:55:23 Okay. PoppaVic will have to debug it, cause I hadnt thought of this yet :) 06:55:37 To your other Q 06:55:38 I have to interfere for a moment... Please remember C++ is not remotely C - it's a language of it's own. And, the whole 'classes' and inheritance/methods mess is a real mess to begin from. 06:56:38 now, while I am trying to beat the fovm_ struct: what did you want me to write/post? 06:56:49 In the first implementation , the library stores the data as an integer, and in the second one it stores the number represented at a floating point number. I use casts (int) and (float) to convert them back and forth 06:57:13 PoppaVic: Just want you to double check my new implementation 06:57:19 and API 06:57:20 and in both cases amca mentions: the users and API haven't a clue HOW the data is maintained internally. 06:57:48 I did check - looked ok. Maybe a notch too trivial for him? Maybe a struct & union example? 06:58:02 PoppaVic: No, I havent written it yet 06:58:24 So, number.h allows access to the set_number() and get_number() functions? 06:58:35 oh. OK. lemme know when ready, I'll go back to my corner so aardvarx doesn't get confused. 06:58:47 aardvarx: specifies HOW 06:59:28 PoppaVic, but if I don't include the header file, I can't use the functions, right? 06:59:48 welllll...... Let's say you cannot, just to make you write good code 07:00:03 Okay. 07:00:37 as a very good rule: NEVER use funcs/vars that w/o including the proper headers 07:01:06 Fair enough. 07:01:11 using "gcc -W -Wall ..." is a very good way to do CYA. 07:01:22 (cover yer ass) 07:01:29 I'm already in the habit of "gcc -Wall -pedantic -ansi ..." 07:01:50 Wait a minute... you're using -W and -Wall concurrently... isn't that redundant? 07:02:21 PoppaVic: What header is malloc in? 07:03:08 stdlib.h 07:03:32 always "man foo" and heed the includes if unsure 07:03:52 aardvarx: no, it just triggers some extra noise 07:04:20 yeah, some folks like -pedantic, I use it rarely - as a self-check. 07:04:53 "-ansi" specifies defines affecting includes and code and extra screams. 07:06:03 You need to understand: I've been at this for morethan 20 years, but never paid or got a degree in coding. So, some of my habits and suggestions are not "purist". 07:06:36 PoppaVic: Shock! Horro! ;) 07:06:42 (Horror) 07:09:50 Is it safe to say the code is "clean" if it passes all of those flags? 07:10:21 syntax error free, yes. Not bugfree 07:10:31 I see. 07:22:38 aardvarx: still there? 07:22:38 Yes. 07:22:38 --- join: virl (n=hmpf@chello062178085149.1.12.vie.surfer.at) joined #forth 07:22:38 aardvarx: We are still working on the new API - havent coded in C for a while. :) 07:22:38 Should be ready soon 07:22:38 TYT 07:28:37 he's about ready to unveil ;-) 07:28:56 http://rafb.net/paste/results/9qarde90.html 07:29:06 oops wrong window 07:29:14 loading 07:29:16 that was for PoppaVic 07:29:29 never cast malloc - EVER 07:30:06 otherwise, yeah - looks she'd compile. 07:30:53 (only c++ casts malloc-returns) 07:31:20 I think *I'm* gonna learn more out of this than aardvarx ;) 07:31:21 * aardvarx never looked. 07:31:29 Let me know when you're done. 07:31:50 http://rafb.net/paste/results/e5ZTzJ30.html 07:31:53 that is it 07:32:29 with that (trivial) example, you can create as many numbers/nums in your program that you want 07:33:57 ignore 'typedef float num_type;' in the source >.> 07:34:23 hehe typos are always a thrill ;-) 07:35:15 Or plain fuckups ;) 07:36:04 So, for num_get() ... 07:36:24 yes? 07:36:24 You're casting a "handle" to a float, then to an int? 07:37:46 * aardvarx recalls using handles to toggle between figures/plots in MATLAB... 07:38:20 What is a handle used for in the context of the code? 07:38:32 casting the parameter variable handle (which is a void*) to a float*, dereferencing it, then casting it to an int 07:39:12 A handle is a datatype used to abstract the actual data type. You use a void* handle to hide the implementation details 07:39:34 NUMBER is a pointer data type? 07:39:41 yep 07:39:48 hmm. 07:39:53 Never heard of that before. 07:39:59 --- join: sproingie (i=foobar@64-121-2-59.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 07:40:02 a void pointer, so the user doesnt know what data structure it actually points to 07:40:23 Ohhh. 07:41:06 You're not casting the *ADDRESS* of the structure to a float. 07:41:09 Is that right? 07:41:17 I could have had 'typedef float* NUMBER', but then the user would know too much about the implementation - it would have been too transparent and not opaque enough 07:41:38 So, this is a data security issue then? 07:42:17 you are casting a variable from a void pointer type to a float pointer type, so we can then dereference it and treat it as a float. 07:42:20 yes 07:42:31 Encapsulation 07:42:40 Ahhh. 07:49:19 I do recall reading about that in "C Primer Plus" 07:49:19 * amca nods 07:49:19 Id recommend knowing C reasonabley well myself before learning C++ but others may have other opinions 07:49:19 I agree. 07:49:19 You gonna learn some more C then are you? 07:49:19 Absolutely! 07:49:19 h. I thought you were going to head right into C++ now 07:49:19 h = Ah 07:49:19 I must have misread you 07:49:19 I've got the book right beside me. 07:49:19 * amca huggles his computer and thanks the Dev Gods 07:49:19 Which one? 07:49:19 It's about time I cracked open the "C Primer Plus" again. 07:49:19 PoppaVic: What do you think of K&R2? 07:49:19 I never bought it - mine is v1 ;-) 07:49:19 v1? 07:49:19 I dont own it but I have read it 07:49:19 Hi all, sorry i'm late, meetings and customers take presidence... 07:49:19 Oh! K&R instead of K&R2 07:49:19 Ray_work: Nah, you just hate us all and fgind excuses to be busy ;) 07:49:19 --- join: thinfu_ (i=thin@bespin.org) joined #forth 07:49:19 --- quit: thinfu (Read error: 104 (Connection reset by peer)) 07:49:37 hehe well, I thought I was hiding it better... 07:49:43 :) 07:49:45 Well, so much for thinfu! 07:50:06 So what is the diff between Ray_work and Raystm2? 07:50:45 um, :) I'm at work and I'm not at home :) 07:51:36 ok, amca - here comes a rafb... 07:51:55 PoppaVic: Cool 07:52:21 http://rafb.net/paste/results/UNbhVX11.html 07:52:23 Ray_work: So why is Raystm2 online if you are at work? 07:54:02 back shortly, I need the phone.... 07:54:04 --- quit: PoppaVic ("Pulls the pin...") 07:54:34 amca, how do you mean that the new API is the same implementation? 07:54:35 Damn. He pulled the pin but it didnt explode 07:55:09 aardvarx: Same implementation as the second one with the float - the number is stored as a float rather than an int like the first implementation 07:55:51 the link posted by PoppaVic is a more robust way of coding it. 07:57:29 In a way. I would still format/style it more like mine myself 07:59:05 No offence to PoppaVic, but yours is easier to comprehend and read. 07:59:22 His style is too terse for my liking - I like a little more verbosity. 07:59:37 Agreed. 07:59:52 i recommend don't ever port code like that to C++ 08:00:00 C++ lets you overload cast operators for a reason 08:00:36 sproingie: Yeah. If I was coding in c++ I would use a completely different style - nore OOP than structured programming 08:00:37 sproingie, are you referring to the code posted by PoppaVic? 08:01:14 writing dynamic types in a static language always feels like a bit of a kludge 08:01:27 because to a static typed language, they *are* a kludge 08:01:42 sproingie: One would be advised to lose the pointers for as many references as possible in C++ wouldnt you? 08:01:56 for this purpose, yes 08:02:14 pointers are largely unavoidable even in modern C++ 08:02:50 i believe boost provides a variant type 08:02:57 I thought C++ has aliases? 08:03:12 c++ references for the most part ARE aliases 08:03:13 boost? 08:03:18 boost.org 08:03:22 k 08:03:24 it's what the C++ standard library should be 08:03:33 well at least parts of it 08:03:38 Why isn't it so? 08:03:43 hehe 08:03:56 the library committee is conservative. boost isn't 08:04:04 some of the boost folks are on the committee actually 08:04:09 Ah. 08:04:19 "Ten Boost libraries are already included in the C++ Standards Committee's Library Technical Report (TR1) as a step toward becoming part of a future C++ Standard. More Boost libraries are proposed for the upcoming TR2." 08:05:01 boost isn't perfect, but using it judiciously makes some things a lot easier 08:05:24 i never managed to get boost::bind and boost::lambda to play nice with each other 08:05:30 sproingie: Do you know how C99 is different from C89? 08:05:37 --- join: PoppaVic (n=pete@0-1pool66-1.nas22.chicago4.il.us.da.qwest.net) joined #forth 08:05:53 then i became disgusted enough with C++ that i decided to port the whole project to lisp ... something i have yet to do, tho 08:05:54 wb 08:06:19 thanks - it'll be a LIMITED gun-day soon ;-/ 08:06:28 O_o 08:06:30 boost::spirit is pretty nice for creating one-off parsers 08:06:53 ..my brother exhausted me with all the tests/shooting yesterday 08:06:54 probably good for creating big parsers too, but i've never attempted it 08:07:10 glib has a lexer-facility as well 08:07:21 spirit does more than lex 08:07:30 libc itself has strtok, but who'd want to use it 08:07:40 eww 08:07:44 i guess in the forth world you dont need to do more than lex 08:07:47 PoppaVic: Even with the variable there, I would still introduce a typedef so that if you change the type it only has to be changed one place 08:07:52 I stick pretty tight to fgets+sscanf 08:08:14 amca huh? where? 08:08:33 http://rafb.net/paste/results/UNbhVX11.html 08:08:34 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 08:09:14 the header needs no change - just added/altered func-support (ops) 08:09:23 something like 'typedef float my_type' 08:09:35 oh.. in the .c - noooooo use a define 08:09:49 Why a define instead? 08:10:00 one-step replacement everywhere 08:10:00 by the time i get to sscanf, i pull out regexes 08:10:44 not with a typedef? 08:10:45 after the "foo.h" you'd add #define FOOEY float - and global replace the "float" 08:11:07 the define or a define() - are more useful in the .c at that point. 08:11:10 why replace primitive types everywhere? 08:11:24 sproingie: it was an example-file demo 08:11:38 sproingie: teaching aardvarx about API's 08:11:41 sproingie: I might want to make the float a bignum or such at some point 08:11:45 amca, PTI, but in the http://rafb.net/paste/results/hwaJmp90.html example, the float operation has no effect on the user? 08:11:48 you might. you probably won't 08:12:09 aardvarx: none - they'll never see it 08:12:14 aardvarx: True, but it is for the API implementer 08:12:25 PTI means what sorry? 08:12:31 aardvarx: worst-case: you lose accuracy switching back and forth with a float 08:12:34 The point is just to show that there are things the user will never see, right? 08:12:34 sproingie: Point 08:12:42 if you expect the user to use the semantics of the type, like a float, you better just let them know it's a float 08:13:00 you should only hide types you expect to be opaque, like "handle" types 08:13:15 sproingie: as we said, it was an API-demo - and I'd told amca a std type was a bad example 08:13:21 ..we tried to KISS 08:13:23 sproingie: As opposed to making them think it is a non-primitive type? 08:13:40 They were just showing me what an API was. 08:14:03 Without having to take down my pants 08:14:09 indeed 08:14:13 amca: right 08:14:21 The illustrations were intended to show that some activities should be invisible to users. 08:14:31 or, COULD be 08:14:37 ..depends on the whats and whys 08:14:44 sproingie: In a non trivial API it would probably be a structure or such probably 08:14:56 anyway 08:14:59 I should be off to bed 08:15:00 almost 100% porbability - struct or union 08:15:12 amca, thanks for the information. 08:15:12 probability, too - ok, sleep well 08:15:14 PoppaVic: Could be a pointer to a pointer to a struct :P 08:15:27 amca, it is greatly apprciated. 08:15:28 amca: no excuse for ** 08:15:48 cheers. 08:15:50 i guess for examples sake ... just dont go around making a real API of MYNUMBER, MYSTRING, MYCHAR etc ;) 08:15:54 you can opaque once, as a * and translate internal for ** as needed 08:15:58 aardvarx: Glad to be of use 08:16:06 sproingie: good god, no - I agree 08:16:24 Night all! 08:16:25 --- quit: amca ("d34d") 08:16:34 sproingie: otoh, a lot of "languages" do treat all forms of 'numbers' as NUMBER 08:16:45 ..to them, it is a convenience 08:17:16 I never agreed 100%, but then... I know how to use structs and unions 08:18:01 PoppaVic: true, but that's for those languages 08:18:49 i suppose if it's a C->scheme API that might even make sense :) 08:19:52 or even a C-to-any-dynamic-language API. A C->C API should be in C 08:20:42 well, all I can say for sure is this: if you can present a C api and lib/module, from anything, you can't go far wrong. 08:20:45 i'm actually a fan of using primitive types in C++ api's too. makes FFI's much easier 08:21:14 yeah, FFI's are a bitch I'm currently ignoring 08:22:02 FFI isn't too hard if you ignore stuff like varargs 08:22:28 PoppaVic, would the following be valid code calling amca's last API: 08:22:32 http://rafb.net/paste/results/yOeUaq21.html 08:22:54 lemme load 08:23:11 no 08:23:19 you need a handle/ptr 08:23:50 Hmm. 08:24:10 '1' itself is just a number 08:24:22 no "context" I should say 08:24:28 int* samplehandle; 08:24:38 Would that be an appropriate declaration? 08:25:02 what url is your header and lib-source again? 08:25:22 http://rafb.net/paste/results/e5ZTzJ30.html 08:25:59 you almost must use his num_create() 08:26:15 O_o 08:26:25 ..cleanup with his num_destroy - they are both poor terms, but they ARE part of his API 08:27:17 the return fro, create is the 'handle' 08:27:24 fro,/from/ 08:38:57 PoppaVic, how about this: 08:38:57 http://rafb.net/paste/results/jY87xl97.html 08:38:57 any better? 08:38:57 loading 08:38:57 no 08:38:57 NUMBER, not void* samplehandle; 08:38:57 --- join: p8r (i=peter@t206.medien.kunstlabor.at) joined #forth 08:38:57 so "NUMBER samplehandler;" 08:38:57 other than that, it might work 08:38:57 Gotcha. 08:38:57 Thanks! 08:38:57 the url I sent was "cleaner" 08:38:57 sure 08:38:57 Rather terse reading, though. 08:38:57 also, the one I pasted included a small demo 08:38:57 http://rafb.net/paste/results/UNbhVX11.html 08:38:57 That one? 08:38:57 yah 08:38:57 --- join: thinfu (i=thin@bespin.org) joined #forth 08:38:57 --- mode: ChanServ set +o thinfu 08:38:57 --- quit: thinfu_ (Read error: 104 (Connection reset by peer)) 08:38:57 It's got 'ADVANCED' written all over it! 08:38:57 :P 08:38:57 not really. I apologize if it seems so. 08:38:57 No need for apologies, man. 08:38:59 You've been doing this for decades. 08:39:09 I must've been in diapers back then. 08:39:18 well, the best of examples would literally keep the header, the source, and the test isolated - so as not to confuse. 08:39:46 I do admit, that I appreciate you clearing that up. 08:39:52 sure 08:40:24 You included stdlib.h... is that just a habit? 08:40:34 for malloc & friends 08:41:15 I just noticed that amca omitted stdio.h ... would that cause problems? 08:41:16 stdio gives you printf & friends; stdlib is malloc & friends 08:41:24 I see. 08:41:54 note that - properly - the #include could have preceeded just the main() test-breakout 08:41:54 Which one contains return & exit ? 08:42:05 return is a keyword 08:42:08 man exit 08:42:26 man 3 exit 08:42:38 LIBRARY 08:42:38 Standard C Library (libc, -lc) 08:42:38 SYNOPSIS 08:42:38 #include 08:43:50 I guess I ought to avoid exit where possible. 08:43:58 I dunno why 08:44:08 It does not return. 08:44:08 --- join: JasonWoof (n=jason@pdpc/supporter/student/Herkamire) joined #forth 08:44:08 --- mode: ChanServ set +o JasonWoof 08:44:11 exit simply terminates a program immediately 08:44:18 Good day, JasonWoof. 08:44:52 hello hello 08:44:59 --- quit: p8r ("[BX] Tiger Woods uses BitchX. FORE!") 08:45:21 Imagine a loop wherein things must happen properly, but in any cases you want to bailout of the whole program if things are not correct. exit() then becomes useful and sensible. 08:45:31 I see. 08:45:39 or, even a cascaded if or case 08:45:59 Sounds legitimate. 08:46:03 yeppers 08:46:20 work-arounds with loop-flags and breakouts will just never be as clean 08:46:32 void die(char* message) { 08:46:37 sure 08:46:41 fprintf(stderr, message); 08:46:44 exit(); 08:46:45 } 08:47:08 generally, a func with vargs and fprintf(stderr and then the exit() work really well 08:47:14 Is it also used for program crashes? 08:47:28 crashes take it out of your hands 08:47:41 Oh. 08:47:50 exit can also make a clean, "all is well" exit out of the program 08:48:22 you may be thinking of abort() and such - therein there be monsters 08:49:09 aardvarx: I'd recommend setting yer client to join ##C as well as #forth. At the least, they discuss a wide, WIDE range of subjects 08:49:48 (of course, we will also insult you and recommend ##C++ if you begin to "stray" ;-) 08:50:07 lol 08:50:24 How do I configure irssi to handle that? 08:50:32 ..not to say we don't suffer our own idiotic c++ "trolls" 08:50:40 ha. 08:50:45 Nice shot. 08:50:49 not sure: I always teach xchat to join my preferred channels 08:51:01 i'm a colorforth troll, I think, if I have the def of troll correct? 08:51:11 ha. 08:51:22 Why did you have to go there? 08:51:33 break up my crazy work day... 08:51:40 Ray_work: well, in my case: I meant lukers that basically recommend their fav alternative and ridcule ##C when they can. 08:51:57 ah, well, i'm not that kind of bastard :) 08:52:02 PoppaVic: yeah, I've got a varargs one sitting around somewhere 08:52:11 * aardvarx gasps 08:52:15 'course, ##C++ is usually more dead than a cemetery 08:52:17 388 users!!! 08:52:28 heheh 08:52:29 told you 08:52:38 ##C is a decent reference center 08:52:38 :) 08:52:44 O_O 08:52:45 I use irssi 08:52:49 I wouldn't pretend to know. 08:52:55 you want these two channels by default when you start up irssi? 08:53:03 yeah, JasonWoof exactly 08:53:07 JasonWoof, absolutely! 08:53:08 hey, JasonWoof I need to know that 08:53:29 * PoppaVic tolerates xchat and switches termwin as required ;-) 08:54:05 * aardvarx continues to gasp 08:54:19 breath deeply and slowly - trust me 08:54:28 How does anyone ever get a word in edgewise??? 08:54:30 O_O 08:54:35 (or push away yer girlfriend ;-) 08:54:50 aardvarx: probably easiest to just look at my ~/.irssi/config: http://jason.herkamire.com:2201/irssi.config 08:55:00 aardvarx: you specify it in the channels list, and the windows list 08:55:03 in ##C there is either silence, or anything from 1 to N conversations at any time 08:55:09 JasonWoof, thanks! 08:55:22 --- quit: sproingie (Remote closed the connection) 08:56:06 hopefully, they'll not start on politics the day you start joining them ;-) 08:56:17 PoppaVic: so that'd be 0 to N... 08:56:29 hmm 08:56:37 JasonWoof: maybe -N to N 08:56:48 you could also do something like (from within irssi) /channel add -auto ##C freenode 08:57:04 and then /save 08:57:09 oh yeah 08:57:36 tathi, thanks! 08:57:37 irssi has some help built in, so you can do "/help channel" and such 08:59:09 tathi, thanks for the info! :) 08:59:37 * aardvarx heads out to lunch... 08:59:38 I'm glad there are ways to do that stuff 09:01:20 Yeah, I've been pretty happy with irssi. 09:01:29 JasonWoof: talk to me of USER variables. 09:01:34 I feel out to lunch 09:01:45 How do you perceive and use them? 09:01:51 PoppaVic: they're a crutch for people who don't think forth yet 09:02:07 can you define 'USER variable' please? 09:02:21 I'm assuming you mean locals 09:02:32 generally, they are a way to link some 'handle'/offset back to the engine 09:02:40 no, I know what locals are 09:02:51 oh, what's a user variable then? 09:02:52 up, udp, user 09:03:06 what engine? 09:03:22 any engine 09:03:37 sp0, fp0, dp0 09:03:46 so...why do you say "USER variable", instead of just "variable"? 09:04:15 because the phrase would be "USER foo" 09:04:20 ..foo is a user var 09:04:40 still, no idea what you're talking about 09:04:40 hmm 09:04:47 can you be descriptive and specific? 09:04:49 hmmm lemme get some code 09:05:01 so USER is equivalent to the standard forth word VARIABLE ? 09:05:13 see user 09:05:13 : User 09:05:13 header reveal douser: cfa, cell uallot , ; ok 09:05:25 user-vars are not quite the same 09:05:43 sorta' like offsets/indice into a LL back into the vm of the engine 09:06:24 see here 09:06:24 : here 09:06:24 dp @ ; ok 09:06:24 see dp 09:06:24 : dp 09:06:25 dpp @ ; ok 09:06:27 see dpp 09:06:29 User dpp 09:07:04 generally speaking, and a lot from memory, user-vars can be allocated like C does malloc 09:07:14 not exactly the same, but similar 09:07:46 but their "reference" is not portable between tasks/jobs necessarily 09:07:47 * Ray_work piping in uneducated: I thought user vars were for mulit-tasking? 09:08:01 yeah, that was the orignial intent, methinks 09:08:41 kibitz at will, ray - I'm trying to decide if they need support and how and why they would/are used 09:09:01 i see. 09:09:04 Sorry, I still don't see the distinction between your 'User' and Forth's 'VARIABLE'. 09:09:07 I'm thinking they are mostly an abstraction-layer - "handles" 09:09:29 so, USER allows you to access memory from the host system? 09:09:42 tathi: well, from all I've seen/read: it seems to use a different reference and allocation scheme 09:09:43 Except that maybe they're allocated from a different memory space than the normal forth "heap" 09:09:47 right 09:09:59 JasonWoof: could, not sure if "should" 09:10:13 OK. I also don't see how that is useful at all. 09:10:21 tathi: sorta' like vars in ram and consts in rom, etc 09:10:45 PoppaVic: sorry, I don't know which response to read and I'm confused. could you respond to this again: 09:10:48 so, USER allows you to access memory from the host system? 09:10:59 yeah. I'm guessing it MIGHT be better to dump the distinction, and either consider handles-is-handles or not at all 09:11:22 JasonWoof: it seems to be implementation-dependent. I get the feeling it's a legacy 09:23:56 ok 09:23:56 I think I have a vague idea of what they do 09:23:56 I can recall the FIG-forth use, and sure - with 64K "tasking" was amusing 09:23:56 I just don't understand why they were created 09:23:56 JasonWoof: I believe they were really considered part of the vm for "tasks", because at that time, we HAD no tasks and switching 09:23:56 I can see they might be useful for multitasking. 09:23:56 yeah, or faking it 09:23:56 "scheduling" and such, anyway 09:23:56 But in this day and age, I'd rather push that off on the host system, and just run another copy of the engine for each "task". 09:23:56 (I think) 09:23:56 right, I agree - if we are all of the same view. 09:23:56 it sounds like an implementation hack 09:23:56 if your implementation has the same problems as theirs, then maybe you should do it 09:23:56 I certainly would trust *nix and C and pth/pthreads more than some other mess 09:23:56 but I wouldn't go out of your way to do it 09:23:56 ok. Cool. Then I can live w/o them 09:23:56 otoh, does anyone see an issue with - or how is best - to interface forthish into the malloc-universe? 09:23:56 I've been avoiding that so far. 09:23:56 however, I can easily see apps needing malloc/free 09:23:56 tathi: I'm still a near-virgin with mmap. Is there a way to do this clean and portable? 09:23:57 Well...the standard has the Memory Allocation wordset -- it provides ALLOCATE, FREE, and RESIZE (which are basically malloc, free, and realloc). 09:23:57 cool 09:23:57 that is ANS, yes? 09:23:57 So you could say that malloc/free are already part of the forthish universe. 09:23:57 yes. 09:23:57 cool! 09:23:57 I hadn't dug in too deep 09:23:57 Now... (here's a puzzler) Can we implement suchness with handles and retain relocatable, non-absolute images? ;-) 09:23:57 mmap is kind of a HAL over the MMU. I'd just wrap in malloc/free, I think. 09:23:57 I'm thinking along similar lines, yeah 09:23:57 good question :) 09:23:57 I'm just about convinced that a lot of 'absolute' is shit we'd need in a "register" or on (a) stack, but NOT want to embed as literal and absolute. 09:23:57 comma-variants have always bugged me 09:23:57 I'm guessing the low-level irritation is due to treating addresses and numbers as the same thing 09:23:57 one sec we are abstract, the next time - we are lockstepped 09:23:57 I'd love some debate and alternatives 09:23:57 For one thing, (just to jar minds), I'm not sure a stack should be a mere array-of-CELL 09:23:57 --- join: thinfu_ (i=thin@bespin.org) joined #forth 09:23:59 the DATA in terms of CELL/DCELL, sure. 09:25:19 Mind you, I'm stirring up a lot of assumptions above and below forth or C. Dunno' if they are fantastic, but I believe they deserve some consideration. 09:26:28 tathi: for example - can't a "stack" really be an array of some type? And, if so, then you can use a struct of tagfield+CELL(union) 09:27:26 If I implement MALLOC and FREE I figured I'd do it in forth from a chunk of memory ALLOTed from the heap 09:27:31 the tag need not be much more than a size/type melding. (where the latter is maybe literal, offset or absolute) 09:27:50 JasonWoof: like glib "chunks"? 09:29:04 --- quit: thinfu (Read error: 113 (No route to host)) 09:31:37 Hey all. 09:32:00 yeah, if you wanted to get into type-checking, you could do that. 09:32:29 hi q. Hey, the wiki freaked us out and 403'd us today! 09:33:04 tathi: the point though, is: it SEEMS transparent and harmless - what do folks think of it? 09:35:32 I'd add the tagfield in a heartbeat if it seemed sensible.What size and settings is another issue. 09:36:32 PoppaVic, it's broken. First time ever. Maybe it was attacked. 09:36:55 ahhhhh 09:37:27 Looking at it now. 09:37:40 PoppaVic: I know a couple folks have done it, but it's not something I'm interested in. 09:37:42 q: just so you know and can fix it - we were afraid we busted something. And, can you wax that stupid attachment we've now obviated? 09:38:09 The attachment was gone yesterday, it's a simple matter of marking it to be not visible via the [manage] button. 09:38:18 tathi: understood. 09:38:38 Quartus: ahh, I figured a pure wipeout local would do it. My bad 09:38:58 PoppaVic: you might try googling for "type stack" or "tag stack" or something -- maybe search comp.lang.forth too. 09:39:07 I know I've seen various discussions of the matter, but no idea where. 09:39:41 yeah, I might do so. I can also code it ;-) But, I was seeking any comments/consensus. I believe consensus may be moot at this time. 09:40:18 certainly not difficult in C, but it does make a paradigm-shift for forthish-purists. 09:41:24 Unless I hear a unified outcry and folks break out tar & feathers, I think I may go ahead and set up the stack(s) that way. 09:41:39 May result in a cheaper core-code anyway 09:41:58 I have no idea yet what caused the problem with the wiki; sorry for the inconvenience. It's back. 09:42:19 Oh, joy! :) 09:42:20 NP, Quartus - we were afraid we had inconvenienced/peeved YOU! ;-) 09:43:03 No, I depend on the wiki, so the worst I'd do is delete your pages and tell you to go away ;() 09:43:12 Not to worry. :) 09:43:26 cool 09:44:04 * PoppaVic has been melted before, just doesn't like causing the issues 09:44:55 tathi: well, strangely... I think we can use a few bits for a tagfield and save mem that is wasted with float-stacks and such. 09:45:43 I'm trying HARD to visualize "strings" and "stringstacks" that way as well. 09:47:49 PoppaVic, in your spare time, I'd like for you to respond to a pair of questions I've added to the FAQ. 09:49:50 ok, aardvarx I may get to it in the morning, if that is NP. I'm expecting company very soon. 09:50:07 Also, there is the issue of *reserved* items, e.g. "mem" 09:50:15 No problem, PoppaVic. 09:50:18 well, that's a C-issue 09:50:24 Okay. 09:50:38 actually "symbols and prefixing" 09:50:58 "symbols and prefixing" 09:51:02 in C 09:51:14 not for us, to us: it's insignificant 09:51:53 Okay. 09:51:59 Very good. 09:55:32 check the url, I answered 09:56:24 Middle-of-road with the standards, eh? 09:56:32 yeah, sorta' 09:56:46 we need a real "API" - how they achieve it is moot 09:57:09 ..hell, they can write cross-compilers and translators - we would just cheer 09:58:08 Ah. The VM effort is just a SUBproject; so it may be completed "by any means necessary"? 10:02:26 ..ahh company hath cometh... 10:02:53 Yeah, sorta' - all we care is "This WILL be how shit operates - how you acieve it is MOOT" 10:03:12 "achieve" 10:03:15 Understood. 10:03:40 As for Metabuilder... 10:03:42 so, basically: we code for the still-unworking bytecode - all ELSE is "noise" ;-) 10:03:55 nai - metabuilder is another project... 10:04:02 be back later or tomorrow! 10:04:03 I guess we'll cross that bridge when we get there. 10:04:04 --- quit: PoppaVic ("Pulls the pin...") 10:04:41 --- quit: virsys (zelazny.freenode.net irc.freenode.net) 10:07:03 Let me know if the wiki falls over again. 10:07:11 --- join: virsys (n=virsys@or-65-40-181-238.dyn.sprint-hsd.net) joined #forth 10:07:11 --- quit: virsys (zelazny.freenode.net irc.freenode.net) 10:07:12 --- join: virsys (n=virsys@or-65-40-181-238.dyn.sprint-hsd.net) joined #forth 10:07:35 Quartus, will do. 10:08:46 --- quit: virsys (Operation timed out) 10:22:28 --- join: virsys (n=virsys@or-65-40-181-238.dyn.sprint-hsd.net) joined #forth 10:44:29 --- quit: ianp (Remote closed the connection) 10:58:52 --- quit: aardvarx ("leaving") 11:42:49 --- join: slava (n=slava@24.43.80.35) joined #forth 11:59:41 --- join: PoppaVic (n=pete@0-1pool73-106.nas24.chicago4.il.us.da.qwest.net) joined #forth 12:03:11 Whee 12:04:00 New scopes, measurements and feedback. Groovy. 12:05:21 hmm? 12:29:31 --- quit: virsys (Connection timed out) 12:37:27 humph-humph.... 12:38:05 please, don't jump here, the floor isn't very robust. 12:40:56 OK. I'm seeing an "issue". 12:41:26 PoppaVic, are you writing a C version of JasonWoof's VM design? 12:41:42 A "dictionary" is one or more vocabulary(wordlist()) 12:42:18 slava, how is factor going? do you improve speed? 12:42:22 a dictionary != vocabulary != wordlist 12:42:38 at the moment I think it's terrible, somehow not useable. 12:42:47 slava: working up something similar 12:42:48 what is slow specifically? 12:43:29 pff.. the gui, scrolling, text, displaying, in short everything related to the factor gui. 12:43:49 the gui is slow because it uses SDL 12:44:02 i'll be redoing it to use x11 later 12:44:09 guis are guis; a whole specialized api/lib 12:44:16 and cairo for rendering; cairo can use hardware acceleration 12:44:30 x11 itself is right on the edge of "shoot me now" 12:44:38 yeah, but SDL is worse 12:44:44 I will agree 12:44:51 only one top level window, no hardware acceleration 12:44:53 its just a framebuffer 12:45:01 and sdl-ttf is slooooww 12:45:12 i think more than 75% of the GUI's running time is spent inside the sdl-ttf text rendering function 12:45:13 sounds like a lame curses semiport 12:46:39 err, curses runs in the terminal... 12:47:16 curses is curses 0 and works WITH termwin 12:47:29 yeah but i want to draw graphics 12:47:34 scratch '0' 12:47:39 ns. 12:47:42 hence i'm using SDL and later OS-specific x11/win32/carbon backends 12:47:50 oh, geezus 12:48:36 how else do you propose doing a GUI? 12:50:34 slava, why should a framebuffer be slow? iirc, it should be very fast. 12:50:52 * PoppaVic sighs 12:51:13 virl, because SDL forces you to redraw the entire screen on every repaint, and because SDL_ttf is slow 12:51:15 PoppaVic, what? 12:51:26 it's layers of abstracts over abstracts until you read the machine/rep 12:52:01 PoppaVic, what is a layer of abstract? dga or what? 12:52:18 oddly, abstract-layers can be macros over macros (current universe) until you hit an API 12:52:51 the actual "paint a pixel in this color" is waaaay low-level 12:53:00 so, what is a such a layer in that fucking context? 12:53:13 with modern graphics hardware, you don't want to be painting individual pixels 12:53:27 you want to use x11 or opengl which has a driver that does rendering in hardware 12:53:38 yep, I agree - and your code should never mention the hw anyway 12:54:01 not until you get to the "driver" or whatever in C or asm 12:54:49 slava: guis and such are really not done well anywhere. You'll hear of semi/sorta'/kinda' stuff - but it almost all makes yer blood boil. 12:55:48 i'm just trying to make something very simple 12:55:58 Anytime you want a "need to affect" on some "unit", yer prolly in need of an interface API - there are just none I've ever felt like recommending 12:56:38 not one thing with the screen or GUI's ever seems to be "simple" - not and coexist well elsewhere 12:57:25 that's because most people choose to make their GUI toolkits horribly complicated 12:57:40 right, they are really badly layered on the whole 12:58:04 ...and if they try really strict "layering", they then bitch about "slow" 12:58:25 ..or worse: space 12:58:41 There is flat-out no "ideal" 12:58:51 i like the concepts behind squeak's gui toolkit, but the implementation has a few problems 12:59:01 then the imp is a prob 12:59:20 they just added too many silly features 12:59:36 trying to cater to the 1% instead of making the 80% case work well 12:59:43 features are like dynamic-memory: optional ;-) 13:00:07 yep, seen that before. "Creeping Featuritis" is a pandemic 13:00:42 I have no issues with linking another lib or a nice, neat plugin-interface 13:00:46 especially lots of features that are not designed together and don't work well together 13:01:15 its like having a food processor with a dvd player built in 13:01:24 (except in my own case: I'd really prefer to NOT require 3rd-party libs) 13:01:31 yeppers 13:01:48 i don't mind 3rd party libs as long as they don't impose their own structure on your program 13:02:13 graphics is like sound or : they get cute instead of solid and upgradable. 13:02:37 slava: well, I do have probs when I require 3rd part for a low-tool 13:03:23 It just makes me "antsy" because my requirements-base gets wider and wider and deeper and deeper 13:04:09 some folks will install a foo-binary, others the source - but foo and bar can require the snafu-program, etc. 13:04:23 does your VM parse source files, or some kind of bytecode format? 13:04:33 or neither? 13:05:09 it does dick yet. I decided to restart the core from comments herein. The vm steps thru bytecode; parsing and such are all routines. 13:05:28 ok 13:05:33 so how does it load the initial code? 13:05:53 slava: just to be different, I decided to backburner old code and seek consensus in #forth 13:06:08 "how" is not an issue. We should never care 13:06:22 we write an API and adhere to it. 13:06:53 we could care less if sh can somehow load and fork and exec it 13:07:45 all we care is the vm/engine and core code is all "as expected" and that the image-files and, yes, source-parsing all does the same job. 13:08:05 brb 13:15:03 hmm 13:15:10 Jim is in & out 13:15:38 hard to deal with guests that way 13:39:35 --- join: Ardor (n=toyou@tcr110.dynip.ripco.net) joined #forth 13:48:10 every eight days or so, I check e-mail. :) 13:57:57 --- part: Ardor left #forth 14:19:55 --- quit: PoppaVic ("Pulls the pin...") 14:52:17 --- quit: madwork (Read error: 110 (Connection timed out)) 15:42:07 --- join: ccfg_ (i=ccfg@dsl-roigw3de0.dial.inet.fi) joined #forth 15:50:14 --- quit: ccfg (Read error: 110 (Connection timed out)) 16:26:12 --- join: Trinsic (n=t@ool-4572d08f.dyn.optonline.net) joined #forth 16:42:26 Hey all. 16:44:37 hi 16:44:49 Hi Quartus. 16:52:48 are there any other languages at the same machine level as forth? (just above asm while retain machine like characteristics and nothing above or at the same level as 'c')? 16:54:02 None come to mind. 17:06:25 i found one called ERC, it's a mix between LISP and Forth. 17:11:33 That's a new one on me. 17:12:17 It's entirely arguable as to what 'machine level' Forth is; you can abstract away from the machine very quickly in Forth. 17:14:27 Hi tathi. 17:52:45 Say, Quartus, how's your day going? 18:06:33 --- join: YoyoFreeBSD_ (n=yoyofree@219.144.168.128) joined #forth 18:06:40 --- join: Raystm2_ (n=Raystm2@adsl-68-95-254-73.dsl.rcsntx.swbell.net) joined #forth 18:08:11 --- quit: Raystm2 (Read error: 104 (Connection reset by peer)) 18:23:20 anybody know where i could find images of mason stools? 18:36:02 Hey Raystm2_. Sorry, was heads-down. 18:36:19 Going ok here - -you? 18:46:19 --- quit: tathi ("leaving") 19:00:08 --- join: sproingie (i=foobar@64-121-2-59.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 19:11:05 --- quit: ccfg_ (Read error: 110 (Connection timed out)) 19:50:24 --- quit: YoyoFreeBSD_ (Read error: 110 (Connection timed out)) 19:56:38 --- quit: virl (Remote closed the connection) 19:58:23 FYI, something odd is happening with my wiki; a permission on one of the directories is changing, apparently by itself. I'm pursuing it. 19:59:14 --- join: snoopy_16 (i=snoopy_1@dsl-084-058-147-201.arcor-ip.net) joined #forth 20:00:41 --- quit: Snoopy42 (Nick collision from services.) 20:01:16 --- nick: snoopy_16 -> Snoopy42 20:33:38 --- quit: crc (Read error: 110 (Connection timed out)) 20:50:00 The wiki is back up. Let me know if you have any trouble. 21:01:46 --- part: Trinsic left #forth 21:57:56 --- join: virsys (n=virsys@or-65-40-181-238.dyn.sprint-hsd.net) joined #forth 22:26:39 --- join: aum (n=aum@60-234-156-82.bitstream.orcon.net.nz) joined #forth 22:29:49 --- quit: virsys (Remote closed the connection) 22:39:01 --- join: docl_ (n=docl@65-73-219-147.bras01.mcl.id.frontiernet.net) joined #forth 22:40:46 --- quit: docl (Read error: 110 (Connection timed out)) 22:44:15 --- quit: JasonWoof ("off to bed") 23:09:48 --- join: virsys (n=virsys@or-65-40-181-238.dyn.sprint-hsd.net) joined #forth 23:10:38 --- quit: aum (Remote closed the connection) 23:54:30 --- quit: OrngeTide ("brb") 23:54:45 --- join: OrngeTide (i=orange@rm-f.net) joined #forth 23:59:59 --- log: ended forth/05.09.15