00:00:00 --- log: started forth/04.08.13 00:06:16 --- join: rav3n (rav3n@user-2ivff3o.dsl.mindspring.com) joined #forth 00:16:26 --- join: ianp (ian@inpuj.net) joined #forth 00:30:53 * Tomasu is away: dlrrp/anime 00:31:01 --- nick: Tomasu -> TomasuDlrrp 02:57:01 --- join: segher (~segher@blueice1n1.de.ibm.com) joined #forth 04:02:24 --- join: mwc (~mcox@CPE0030654f85d8-CM014400102747.cpe.net.cable.rogers.com) joined #forth 04:11:04 --- join: crc (crc@0-1pool52-13.nas39.philadelphia1.pa.us.da.qwest.net) joined #forth 04:17:07 * TomasuDlrrp is away: nigit 04:34:51 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 04:37:43 Does anybody have any anecdotal info or references on implementing a native forth system on a ?C? 04:39:41 what's a ?C?? 04:40:12 Forth in C... Creepy. 04:40:13 A microcontroller 04:40:19 in this case an MC68HC11E1 04:40:19 so 8 bit arithmetic with a 16 bit address space 04:40:19 Ah. 04:40:32 Your character set is messed up, mwc. 04:40:48 Anyway... I have http://robert.zizi.org/mtv.html 04:40:56 i started a STC FORTH for an AVR, by writing a complete emulator for the AVR first (was a bit silly, i admit) 04:41:05 Perhaps not exactly what you're looking for, but it is a Forth system on a microcontroller (AVR). 04:41:37 But this system is not cross-compiled, but uses a VM to run on the microcontroller. 04:44:20 though my AVR thingy has a 'code' word now, so you it is actually usable :D 04:44:50 (you can define all the missing words yourself :P 04:44:50 :) 04:44:55 That's good 04:45:13 although the colon compiler is still inefficient 04:45:32 i was in the process of making the colon compiler (which is actually written in python) perform optimisation 04:46:14 I'm just trying to figure out where to start with this. The microntroller has a bootloader program in rom that will read 512 bytes from serial and branch to it, so that 512 byte program will have to load my Forth, but I'm at a loss as to waht to do next 04:46:46 write the basic words in assembler I guess 04:47:49 read this? http://www.zetetics.com/bj/papers/moving1.htm 04:47:57 --- quit: crc (Client Quit) 04:48:00 explains in detail the components required to implement a FORTH 04:48:05 (very interesting) 04:48:18 Pefect, that's seems like exactly what I was looking for 04:48:32 --- join: Serg[GPRS] (~z@193.201.231.126) joined #forth 04:48:44 hi ! 04:48:53 i'm in big bad ass ;(( 04:49:01 mwc: How will you run the code, from a virtual machine? 04:49:11 What happend, serg? 04:49:20 No, on the microcontrolelr itself I should thing 04:49:28 Serial interface on the board is easy 04:49:33 are the 68HC11s harvard or not? 04:49:37 No 04:49:43 Neumann 04:49:47 aha, bonus 04:49:57 http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=68HC11E1&nodeId=01624684498635 04:49:58 (harvard architectures make implementing FORTH a pain ;) 04:50:10 Yeah, I know, compiling a word would seem to be a nightmare 04:50:13 Robert: after gateway crash at work, firewall is disabled and i did not check it !! 04:50:18 should be easy enough to implement it all on-chip 04:50:33 Well, I have a pile of peripherials on the board 04:50:52 LCD/pc-keyboard? :) 04:51:03 Robert: praise GOD, SMTP server requires auth and does not let shit through 04:51:08 (though a serial interface would be more sensible) 04:51:08 16x2 LCD display, no kb 04:51:13 but 139 is open ;(( 04:51:20 Yeah, serial interface is how I'd do it 04:51:35 Just need to finish soldering the thing together 04:51:43 Waiting for critical resistor 04:52:08 Hehe 04:52:45 mwc: So... how will you run it, then? 04:53:36 "Hey bill, can I use this 3.5Kohm instead of the missing 2.2K? Oh really? That bad? Wow." 04:53:36 you could easily fit a basic FORTH in 512 bytes, i reckon 04:53:55 i have a fu..g option: run to work now or wait till monday ;(( 04:54:03 Yeah, and I also have 32K of offchip SRAM 04:54:14 Serg[GPRS]: nothing you can SSH into? 04:54:21 no ! 04:54:25 :/ 04:54:28 it's Win2k :( 04:54:41 Oh shit, start running! 04:54:57 You could probably just remotely root in :P 04:55:10 if only use some hacker exploit... 04:55:12 assuming you have VPN access 04:55:31 it has 139 open to world ... 04:55:47 Windows machines are pretty hard to compromise from the internet itself if their decently patched, but from the LAN their honeypots 04:55:48 --- quit: Serg[GPRS] () 05:00:52 --- quit: sallust (Read error: 104 (Connection reset by peer)) 05:17:09 Hey Topaz, this was EXACTLY the sort of thing I was looking for, thanks 05:17:32 tis a fine document 05:17:47 Yeah, all his stuff is 05:17:58 all other things i've read about FORTH never tell you quite enough about how to actually start, heh 05:18:31 essentially just boiling down to implementing 'NEXT' and a few basic words 05:26:33 --- quit: mwc ("Shower Time") 06:11:29 --- join: mwc (~mcox@CPE0030654f85d8-CM014400102747.cpe.net.cable.rogers.com) joined #forth 06:13:28 --- join: Serg_penguin (~z@212.34.52.140) joined #forth 06:13:53 re from work ;( 06:14:28 tomorrow will be great historic airshow ;) 06:17:35 Best airshow I was ever at, an F16 buzzed the crowd at about 30 meters altitude at full afterburner, and some old guy in the audiance had a heart attack 06:17:55 live WWII aircrafts flew to near-Moscow airfield from all over the world ;) 06:18:21 if i get some luck, i'll hit real Mosquito w/ my 10$ fake-Leica 06:18:29 Pretty good, the last airshow we had here, a USAF P-51 and F-16 did a formation dislay 06:18:38 it was really awesome 06:19:29 Its must be tricky to fly a jet and a prop fighter through formation maneuvers together 06:21:14 hmm... 06:21:37 unsure for F-16, but Su-27 flew w/ even chopper, Mi-28 06:22:10 yeah, it can be done, but its hard to get acrobatic with a jet at low speeds 06:22:21 the f16 is meant for sustained 5G maneuvering 06:23:00 Has to be good pilot, its too easy to lose control of an aircraft at low speeds 06:23:26 speed automatic ? 06:24:17 I mean that with an F16, flying in the prop fighter performance domain is getting close to its stall limit 06:24:47 especially when it you consider G-loading from maneuvering 06:25:29 yeah ! 06:25:42 serg! hi :) 06:25:45 do u know what modern fighters are electronically stabilized ? 06:25:51 hi I440r 06:26:29 Like, if it does a 2G turn at 45? of bank, you're looking at an additional 1.4G of downward loading, so the plane weighs 2.4 times what it does in straight and level flight 06:26:42 and yeah, the f16 is so unstable its unflyable without stableization 06:27:26 And that's a pretty gentle turn 06:29:34 --- join: madwork_ (~madgarden@derby.metrics.com) joined #forth 06:32:16 Heh, putting a bridge rectifier on the DC input of this board is a nice touch: impossible to mess up the power polarity. That's today's entry in the "Why Didn't I Think of That" folder 06:35:56 what is port for HTTPS ? 06:36:05 * Serg_penguin is configuring firewall 06:37:38 Default is 443 06:37:58 TCP of course 06:38:41 TNX 06:55:23 ha-ha, done ! 06:55:57 NMAP says: "host seems down" ;)) this is the only REAL GOOD config of firewall ;)) 07:22:59 --- quit: Topaz (Read error: 110 (Connection timed out)) 07:23:44 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 07:43:08 --- quit: Topaz (Read error: 110 (Connection timed out)) 07:55:07 any Forth in j2me for cellphones ? 07:55:32 * Serg_penguin wants some way to write short proggies in my phone 07:58:16 JVMs are stack-based, aren't they? 07:58:16 SHould be relatively easy 07:59:29 i mean ready thing, not writing myself 08:01:54 Heh 08:02:49 Just having one of those days where I spend 20 minutes doing something really clever and realize that's I've irrecoverably fucked up 08:09:11 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 08:09:57 --- quit: Serg_penguin () 08:28:56 --- quit: Topaz (Read error: 110 (Connection timed out)) 08:29:18 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 08:48:56 --- quit: Topaz (Read error: 110 (Connection timed out)) 09:15:28 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 09:19:45 * TomasuDlrrp is back (gone 05:02:39) 09:19:53 --- nick: TomasuDlrrp -> Tomasu 09:21:46 --- quit: Topaz ("Leaving") 09:21:49 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 09:29:37 --- join: tgunr (~davec@A17-205-43-45.apple.com) joined #forth 09:30:14 --- join: T0paz (~top@spc1-horn1-6-0-cust117.cosh.broadband.ntl.com) joined #forth 09:38:08 --- quit: Topaz (Read error: 60 (Operation timed out)) 09:38:19 --- nick: T0paz -> Topaz 09:43:50 --- quit: mwc (Read error: 110 (Connection timed out)) 09:55:46 --- quit: OrngeTide ("bye") 10:53:49 * Tomasu is away: dlrrp 10:59:00 --- part: segher left #forth 11:04:53 --- join: warpzero (~warpzero@mi169.dn185.umontana.edu) joined #forth 11:05:34 --- quit: tgunr ("Quit") 12:13:02 :> "cats" "spaz" over $cat nip 12:13:02 ok. 12:13:02 :> . 12:13:02 spazcats ok 12:17:32 haha 12:29:17 hey 12:29:29 madwork_, nice :) 12:29:42 factor version: 12:29:50 "cats" "spaz" over cat2 nip . 12:29:52 :-) 12:30:17 hehe. 12:30:49 i'm working on a new set of i/o primitives 12:30:55 read/write will return immediately 12:31:07 and there will be a way to register callbacks for completion 12:31:14 and another primitive that does the big select() call 12:31:15 but 12:31:19 with your yielding i/o implementation 12:31:26 it will be presented to the programmer as a blocking stream 12:31:33 yup 12:31:38 instead of blocking, it yields to the next task 12:31:50 i'm almost done iwth the C half, now to write the library support 12:40:07 --- join: imaginator (~George@georgeps.dsl.xmission.com) joined #forth 12:46:44 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 12:59:40 --- quit: FlamingRain ("Leaving") 12:59:51 hey imaginator 13:03:22 Hi slave 13:03:28 slava 13:05:02 Fellow forth freaks, hi. 13:05:57 hi 13:15:33 hey i have a few questions for the x86 asm experts 13:16:15 i'm thinking of writing a factor compiler 13:16:35 should compiled word blocks be allocated in the main heap, or a separate heap? 13:16:39 would mixing code and data in the same heap kill the cache? 13:25:03 yes 13:25:10 sorta heh 13:25:26 ok 13:25:32 i can do a separate heap 13:25:50 also, if the compiled code has pointers into the data heap (eg, literal objects)... 13:25:56 objects in the data heap can move 13:26:09 would it be practical to have the gc update the pointers in the machine code? 13:26:31 or would it be better to have literals accessed from compiled code through an indirection table which the gc will update? 13:27:19 this is the sticking point, the fact taht things can move unpredictably so you can't hold on to a raw address unless the gc knows to update this address if it needs to 13:28:54 gc ? 13:29:02 oh 13:29:03 garbage collector 13:29:04 ick 13:29:26 i could use a non-copying collector but that would require maintaining a free list, and makes allocation more complex than just incrementing HERE 13:29:27 see... you add garbage collection to the pot and everything gets all mixed up lol 13:29:45 well it works fine so far ;) 13:30:25 in x86 machine code, are addresses encoded literally? 13:30:54 well rather are 32-bit literals encoded literally 13:30:58 we talking pmode here ? 13:30:59 or real 13:31:00 yes 13:31:05 protected of course 13:31:09 in pmode ANY register can be used as a pointer 13:31:20 well what i mean is, the generated code will mostly look like this: 13:31:24 call 13:31:30 movl 13:31:33 call 13:31:34 movl 13:31:35 etc 13:31:45 the gc will need to fix up the literal pointers somehow 13:31:47 you can push immediates 13:31:56 push 1234 13:31:59 you can also 13:32:02 push [1234] 13:32:16 push the literal 1234 or push the contents of the address 1234 13:32:20 ok 13:32:29 well i might do this 13:32:29 you can also do push ebx and push [ebx] :) 13:32:35 each compiled word block would be: 13:32:45
... 13:32:58 and the code would use relative addressing to indirectly refer to the addresses of the literals 13:33:08 and the gc would fix up the block of literal addresses at the start on each collection 13:33:37 does this make sense? 13:33:55 err not really but garbage collection is kinda beyond me lol 13:34:27 i cant even conceve of a scenario where i would want garbage collection. 13:34:50 i never have crashes from dangling pointers, or meomry leaks 13:35:03 its simply impossible 13:35:23 the only way to crash the interpreter is by manually undefining a bunch of core words or something 13:35:33 you can't just randomly clobber a memory location by using an invalid pointer 13:36:15 im sure you can sabotage yourself if you try hard enough hehe 13:36:53 also it makes code more decoupled 13:37:05 which means ? 13:37:07 since you nevre have to worry about 'do i deallocate this structure or does my caller deallocate it' etc 13:37:31 or worry about buffer overflows since arrays and strings just resize 13:38:02 the only thign you lose is passing a pointer to the middle of an array 13:38:07 you have to pass the pointer to the start of the array + index 13:38:46 a pointer or a handle ? 13:38:58 a pointer 13:39:20 --- join: OrngeTide (orange@rm-f.net) joined #forth 13:39:27 hio 13:39:28 so if your passing a pointer plus an offset whats to stop you just passing the pointer to the index'd item ? 13:39:34 hi 13:39:41 I440r_, the gc would follow the pointer and not see an object header 13:39:45 i440r, how've you been? 13:39:49 ohh.. a gc in forth ? 13:40:00 conservative gc? 13:40:11 i dont think he is talking about a forth hehe 13:40:19 OrngeTide, exact gc and not forth 13:40:24 which means #forth != #tunes 13:40:25 lol 13:40:35 I440r_, does isforth have linked lists? 13:40:37 there is a #tunes? hrm neat:) 13:40:40 sort of 13:40:52 ive not done a very good job with them 13:40:56 I440r_, single linked lists? 13:41:16 doubly or singly 13:41:24 how much memory does each node of a single linked list use? 13:41:30 total heap usage 13:41:37 my memory manager uses them :) 13:41:43 err 4 bytes 13:41:44 i've been playing with scheme lately. sometimes I wish forth had some of the things in scheme, but other times I wish scheme had some thigns that forth does. either way they both support important features that C completely lacks. 13:42:03 I440r_, in factor, *heap allocated* linked list nodes use 8 bytes (4 byte obj + 4 byte next obviously) 13:42:07 I440r_, there is no header, and no padding 13:42:20 I440r_, but gc reclaims them as necessary and knows what they are 13:42:40 OrngeTide, look at factor, its a mix of forth and scheme 13:42:50 slava, interesting. 13:43:11 a bit slow though, so i'm researching writing an x86 compiler and bugging I440r with stupid questions 13:43:37 heh 13:43:44 <-- an expert ? 13:44:19 --- join: SDO (~SDO@67-23-111-213.clspco.adelphia.net) joined #forth 13:44:40 hi DSO 13:44:42 SDO* 13:45:09 yo 13:45:10 --- quit: SDO (Remote closed the connection) 13:52:03 i shot myself in the foot with select() 13:52:45 dont use select lol 13:52:46 use poll 13:53:01 mac os x doesnt have poll() 13:53:08 doh 13:53:16 i want the same C source (no #ifdefs lol) to compile on fbsd, linux, mac os, and solaris 13:53:46 rotsa rukk 13:53:51 ? 13:53:58 "good luck" 13:54:04 heh 13:54:12 i couldn't imagine writing code for one OS 13:54:16 i've never done it ;) 13:54:22 slava, i think mac os x should have kqueue/kevent instead. 13:54:30 OrngeTide, yes, but the others don't 13:54:40 all the important ones do. 13:54:44 linux? 13:54:51 like i said all the important ones 13:54:56 is linux important? :) 13:55:02 not really 13:55:04 * I440r_ thwaps slava 13:55:06 lol 13:55:19 epoll is okay. 13:55:58 select/poll/epoll/kqueue are all going to make up less than 1% of your program. ideally the core "platform depedent" part of that code is going to be about 10 lines of code. 13:56:25 i don't have a big problem writing 10 lines of platform specific code if it saves me 20 lines of trying to abstract everything in a generic way so it can run slowly on any os. 13:56:52 i want to get the slow/portable one working first though. 13:56:57 stabilize first, optimize later 13:57:06 i've found the portable solutions often are the most work. 13:57:19 i usually go for getting it to run on one platform first. then go for portability later. 13:57:37 personally i could care less about portability heh 13:57:47 i don't use epoll or kqueue for optimization. i do it because i'm too lazy to deal with braindead apis of select and poll 13:58:10 I440r, the most important thing is that it runs on your computer. :) 13:58:10 bitrot is a problem 13:58:18 if i use kqueue, then the select() impl will go unmaintained 13:58:26 exactly! 13:58:27 lol 13:58:27 good. 13:58:30 when this gets a bit more users, i'll start adding platform specific stuff 13:58:33 that's lines you can delete later 13:58:38 if it runs on yours thats just a bonus :P 13:59:05 i'm not bothering with win32 stuff, they can use cygwin 13:59:20 that's entirely your choice. i generally target my code for one platform and then when it works i port it from linux to bsd and osx. and then tell anyone who wants windows support to buy a new computer. 13:59:32 heh 14:00:01 my last big project runs on unix, windows, vms, os/2 and mac :) 14:00:08 i actually bought windows xp. but i'm not sure why. i don't actually do anything constructive with it. 14:00:38 i spent all my money on windows licenses that i couldn't afford any other software to run on it. :P 14:01:07 i've exclusively used linux and recently fbsd for the last 7 years 14:01:32 and still manage to write portable code ;) 14:02:57 all my work, finances, taxes, toys, books and music are on my linux machines. and it's been that way since I switched from dos to linux. I only tried windows out at home recently. i'm not impressed though. i'm not really sure what I'm supposed to do with a windows computer. 14:03:11 slava, my code is generally portable. but that's usually an accident. 14:03:20 OrngeTide, GAMES!!!! 14:03:22 lol 14:03:41 i wish i had a computer capable of playing 3d games ;) 14:03:46 i haven't played a 3d game in years... 14:05:02 windows! because Linux is just a waste of a decent games machine! 14:05:04 i'm doing a bit of opengl coding but its going slow 14:05:26 I440r_, i dunno. neverball is for linux and it's pretty fun. so is tuxracer 14:05:43 and egoboo 14:05:51 lol 14:06:05 my linux 3d drivers are very very broken 14:06:09 mostly i play zelda on an emulator. :P 14:06:12 it's not even that they don't work 14:06:16 i just have polygons in the wrong places 14:06:23 i like the "Linux! because knowing windows just isnt all that impressive" 14:06:24 lol 14:06:46 Topaz, tell me about it. my nvidia drivers were broken for like 9 months. they died in the middle of me doing opengl devel. i ended up finishing up my work on macosx 14:07:13 mine causes file system errors because it's corrupting block cache. 14:07:18 hrm 14:07:20 weird 14:07:45 yea. it eventually got fixed. it was mostly because I upgraded to 2.6 before nvidia released their closed-source drivers for 2.6 14:08:01 but i needed 2.6 to use some of my other hardware. so i was stuck. 14:08:06 yeah 14:08:16 i dunno what i'm going to do, hmm 14:08:17 besides the scheduler on 2.6 is soooo much better 14:08:20 yeah :) 14:08:26 redefines low-latency ;) 14:08:38 preemptive kernel ahoy... 14:08:57 yea. it made nfs mounts a lot less crappy 14:09:00 i'd use linux if there was a decent distro 14:09:13 slava, out of the 50 distros you couldn't find one you liked? 14:09:22 i like debian a lot, but i'm also in the process of thinking up my own distro ;) 14:09:36 lfs is pretty good, because when it doesn't work you have nobody to blame but yourself. 14:10:06 crux has awesome package management, and it's super easy to make your own packages. (it's easier to make a package from some source than manually install the source!) 14:10:09 apparently my ideas for a new distro are very amigaos-esque 14:10:13 though i've never used amigaos 14:10:28 i discovered 'checkinstall' the other day 14:10:30 something like gentoo but not as broken 14:10:32 (omgomgomgomg! :D) 14:10:41 but crux's package lists are poorly maintained. you end up having to maintain your own list of packages or use someone else's list. (you can have multiple package reposistories) 14:10:45 i love freebsd ports, and i love how trouble free freebsd is 14:10:54 linux distros just rot away after you install/uninstall enough packages 14:10:57 and random stuff breaks 14:11:03 ever used debian? 14:11:05 i guess you must have 14:11:08 slava, crux's is basically like gentoo but not a big broken ass python script 14:11:14 debian? with kernel 1.2 and kde 1.0? no thanks 14:11:24 debian unstable is too unstable 14:11:25 i tried it 14:11:28 debian stable is prehistoric 14:11:29 haha 14:11:38 well, i have no problems at all with unstable 14:11:38 you can use netbsd pkgsrc on slackware.. 14:11:53 apt-get install , et voila 14:11:53 gentoo 14:11:56 gentoo is always unstable, that's why i run it:) 14:12:07 and 'checkinstall' allows you to uninstall 'make install's 14:12:11 which is uber handy 14:12:30 hmm, directfb is getting on rather nicely... http://www.directfb.org/screenshots/DirectFB_3D_Windows2.png 14:13:09 neat. what's wrong with X11 though? 14:13:31 well, i have no problem with the concept 14:13:36 just X11R6 is a pain in the neck :) 14:13:42 you mean Xfree86 ? 14:13:49 er, yeah 14:14:11 xf86 is a lot better than it used to be. the video drivers are modular now. it was a real pain when you have a different binary for each video driver. 14:14:26 yeah, they're all steps in the right direction 14:14:46 theoretically we could have a good directfb accellerated driver as an xf86 driver. 14:15:00 just things like the lack of any kind of autodetection, etc 14:15:10 Topaz, X -configure 14:15:10 (one can just about achieve it with addons, admittedly) 14:15:18 heh, ok, i lose 14:15:21 (i've never tried that) 14:15:24 but the poor alpha channel support. the shitty font support (anti-aliased fonts are done client-side, so watch your remote X11s crawl if you try to do them with antialiased) 14:15:47 well, i don't have a huge issue with speed 14:15:54 OrngeTide, actually client side fonts are faster due to less round trips 14:15:59 the glyphs get cached on the server anyway 14:16:05 and you no longer need round trips to get font metric info 14:16:09 it isn't as eyecandilicious as directfb, but that isn't really necessary 14:16:23 yea. xf86's autodetection features are fantastic. i used to use that ugly text-based configuration tool, but once xf86cfg and X -configure came out it was a lot easier 14:16:38 slava, no. they are slower. i benchmarked them 14:16:42 anyway, my crazy OS idea amounts to doing everything using application directories (OSX style somewhat, although based on the RISCOS way) 14:16:47 ie, using ROX 14:17:57 you don't even need to benchmark it. just load up xterm remotely with truetype fonts and watch it choke 14:18:08 Topaz, i didn't like ROX at all. 14:18:27 i grew up on RISCOS, so it feels rather nostalgaic ;) 14:18:31 fatter pipe for X? 14:18:45 (i'm currently running enlightenment with a RISCOS window theme :D) 14:19:25 but i was thinking of making everything more intuitive (throwing away most of the UNIXness in the process, but such is life) 14:19:26 i'm mostly into desktops that geared toward useability than nostolgia. 14:19:36 what didn't you like about ROX? 14:19:51 i find unix desktops fine 14:20:07 Topaz, it was hard to use and it took up a my desktop. and the hotkeys were not obvious (does it even have hotkeys?) 14:20:25 also i'm not a big fan of overlapping windows. 14:20:29 hmm 14:20:40 (which is why i use ion windowmanager) 14:21:10 as for file management i like the way old MacOS Finder works better than most other models. 14:21:29 NeXTStep's is not too bad. but the 3 pane view can be confusing. 14:21:41 or two pane view. 14:21:44 i was just considering completely revamping things like the whole boot procedure 14:21:47 (a bit of a task, i know) 14:21:59 and arguably necessary 14:22:09 nah. i've redone the boot procedure numerous times on embedded projects i've worked on over the years 14:22:35 crux has the best boot-up. it's like netbsd's only even lighter weight. :) 14:22:45 what is crux? 14:23:01 crux is a linux distribution. 14:23:53 ah 14:24:09 it's pretty basic. nice package system (source packages are compiled into binary .tar.gz files like slackware packages) 14:24:15 well, as an example, i was thinking of having a file to configure each network interface 14:24:22 (this is all designed to fit in with the ROX filer) 14:24:31 and the boot-up prints 3 things after the kernel messages and then you're ready to log-in. :) 14:24:38 file containing IP/route information, possibly in XML *grin* 14:24:50 Topaz, i think Linux registry project might be interesting for this kind of stuff. http://registry.sourceforge.net/ 14:25:04 and the boot basically just runs all the files in a !Boot directory (or similar) 14:25:06 screw xml. linux registry is better. each attribute is it's own 1-line text file. 14:25:19 somewhere in which a network config file resides 14:25:21 takes a pathetic amount of C or shell script to parse the data. 14:25:35 (and the network config file's default app is the network-device-setter-upper 14:25:42 ok 14:26:09 whilst BSD scripts are nice and versatile and all, they're not really very intuitive to newbies 14:26:31 (partly because of the need to read them to find out what files they then call) 14:26:37 i am partial to the openstep model. someone made a GNUStep-based distro. with the directory hierarchy and interface that you expect on an openstep machine. but the author gave up on the project because it was too much work to maintain on his own 14:26:54 Topaz, well newbies shouldn't have to configure anything. 14:27:05 the more configuration options you give, the less usable the system is. 14:27:18 yeah, but i'm slightly opposed to the throw-lots-of-GUI-complexity-at-it-to-try-and-make-it-easier 14:27:25 zeroconf or dhcp would be better for configuring network interfaces. 14:27:35 ie, replacing editing a single file with navigating some big special config program 14:27:53 Topaz, like redhat's way of doing things. which is why it's often broken. 14:27:58 yeah 14:28:27 so if i had a single file for configuring a network interface, that was in an intuitive place (like /Boot/Network/Interfaces/Ethernet) or something 14:28:41 your average user might be able to find it themselves... 14:28:55 (and rightclick-edit or something) 14:28:55 if you could patch most/all of the programs you are interested in into using something like linux registry. it would make it trivial to have a configuration program for it all. and in a pinch you could use vi/emacs/pico and it wouldn't really be a big deal to "hand edit" things. since you can use grep, find, cd, ls and things to browse the entire configuration of the system 14:29:15 tis an interesting concept 14:29:22 Topaz, MacOS X uses little configuration modules. and just puts them on a control-panel like main menu. 14:29:37 i know a lot of people who are strongly opposed to the windoze way of doing it, but that isn't helped by the rather random layout of the windoze one (and the fact it all resides in one huge easily-corruptable file) 14:29:48 but osx makes one XML file for each interface it configures. 14:29:51 yeah, i'm somewhat stealing ideas from OSX 14:30:13 Topaz, well windows keeps the registry in some special database file. so it's not really the same thing 14:30:14 the same idea to what i had, essentially, though i interestingly haven't closely observed OSX's network settings 14:30:22 sure 14:30:40 gentoo's /etc/conf.d/ layout for things is pretty easy to deal with manually or with some kind of gui tool. 14:31:05 also, i'm somewhat torn between the RISCOS/OSX Application directories, and the debian put-everything-in-the-same-place-but-keep-track-of-every-single-file 14:31:10 mostly they are VAR=value things with comments. and all that happens on boot is the boot shell scripts source those files to set variable for configuration. 14:31:14 sure 14:31:25 doesn't really help that so many useful linux progs have really random systems 14:31:30 *bsd does roughly the same thing with rc 14:31:37 i guess me adding yet another way of configuring things isn't really going to help on the unification front 14:32:08 although if i packaged enough software in a app-dir form, it'd have impact, i guess 14:32:17 Topaz, yea. like if you compare the configuration files of fetchmail to bind to /etc/hosts it's pretty scary how diverse configuration files are in the *nix world. 14:32:44 so unified config is a definite must, options essentially being either the registry thing you talk of (which looks very good), or XML 14:32:57 Topaz, it would only help if you had patches for all the applications out there to have them configurable in a consistent way. 14:33:13 yeah 14:33:15 boot-up stuff isn't really that big of a deal since such a tiny fraction of your system's time is spend booting 14:33:21 just the app-dir way of packaging things is fairly unique 14:33:26 you have a directory containing *everything* 14:33:33 all config files, binaries, everything 14:33:44 (and even auto-compile-on-first-run source code) 14:33:50 including an icon image 14:33:55 you click it, it runs 14:34:07 now i know that many users would really love to be able to copy entire apps across with a single drag 14:34:23 i like MacOS X bundles too. if you could do bundles that would be super neat. bundles don't have an absolute location for configuration. instead they store configuration inside themselves (resource forks). so you can just drag and drop some application anywhere you want it. and it's configurations comes along with it. 14:34:30 yeah 14:34:41 of course, this raises issues 14:34:45 (libraries!) 14:35:21 although having libraries in appdirs too, with a standard system whereby appdirs can look up their dependency library locations, would work 14:35:22 sure it's not appropriate for all applications. but it does make those free little programs you grab a lot less invasive to install. (you don't have to install as root!) 14:35:27 (and ROX gets away with it) 14:35:38 i was thinking about doing it for *everything* 14:35:43 admittedly it'd be rather over-radical 14:35:48 Topaz, yea it would. 14:35:54 so how does forth come into all this? :) 14:35:55 (since debian is oh-so-usable atm) 14:35:58 ;) 14:36:03 (i'm terribly off topic :) 14:38:23 hrm. one nice thing about directfb is that it uses the kernel's translation tables for keyboard input. i hate having to configure my keyboard layout for both console and X11 and then not having them match exactly. 14:38:58 yeah, another annoyance 14:39:15 (although one can see how outraegously easy Apple has it) 14:39:21 --- join: crc (crc@0-1pool0-33.nas26.philadelphia1.pa.us.da.qwest.net) joined #forth 14:39:25 hi crc 14:39:28 (you use our hardware!) 14:39:31 Hi slava 14:39:54 anyways on topic is. what do you guys think about forth with type safety? either static typing (objects cannot change type, so things are handled at runtime) and dynamic typing (you can have a pointer to "something" and query what type that "something" is) 14:40:32 Topaz, yea. apple's model is actually more traditional. it used to be you bought software and hardware from the same vendor and they were bundled together. 14:40:50 * crc dislikes types 14:41:04 crc, well all forth programs have implicit types. :) 14:41:26 I know that, but the types aren't enforced... 14:41:46 right. it's not strongly typed. 14:41:56 * crc dislikes strong types 14:42:04 i've never felt the need to integer-multiply a pointer to an array by a floating point literal, but that's just me 14:42:15 so i like types ;) 14:43:17 and type conversion on a statically typed system can be dealt with at compile-time. so it's not going to add overhead, other than bloating your compiler. 14:43:27 static typing can be very limiting 14:43:32 --- quit: Topaz (Remote closed the connection) 14:44:20 a compiler can perform type inference to give the appearance of dynamic typing, but optimize away all type checks where it can be proven that a value will be a certain type 14:44:29 although i've seem some typed forths and the compilers aren't that much more complicated. the easiest way is to just keep shadows of the data and return stacks to track types. and to tweak the dictionary to include types in your words 14:44:57 slava, well not in all cases. at least from what i've seen of even the best scheme compilers. 14:45:06 OrngeTide, sure, not in *all* cases 14:45:14 that's the whole point of dynamic typing 14:45:16 it's pretty complicated too. 14:46:23 i'd take static typing if i could manually convert types (like having an int->float word) 14:47:53 but doing low-level programming you often need to stick an address into things as if they were ints. or have address literals (like if you need to check the boundry of an address returned from something) 14:47:56 static typing adds vebosity to code 14:48:06 slava, it does? 14:48:13 well, if you're doing low level programming then obviously dynamic typing is inappropriate 14:48:20 OrngeTide, well, the type declarations themselves, no? 14:48:29 you wouldn't have D+ + and F+ .. you could just have + if you have static typing. 14:48:35 or do you mean inferring all types at compile time? 14:49:08 slava, well depends on the model you wish to follow. you can do the C/Modula model where you define variables as having a type. 14:49:21 or you can use the ML/Scheme/Lisp model where variables have the type of what they were bound to. 14:49:41 but that doesn't mean they have to be dynamic. you can just require that you bind a value to any variable when you declare it. 14:49:48 i'm wondering if its possible to implement polymorphism effectively in forth. 14:49:58 this is the major OOP technique i miss in factor 14:50:03 but that does mean you need to have unique representations for all types. 14:50:15 slava, yea. Strong Forth has polymorphism. 14:50:25 i don't like having 'switch on type' words 14:50:30 + in strong forth works on double, floats, etc 14:50:31 how do they do it? 14:50:33 yes 14:50:43 but can I add a new + of my own 14:50:47 that works with complex numbers for example? 14:50:55 without modifying their definitions? 14:51:07 : is tweaked to look for ( x -- x ) .. and that comment actually is recorded in the dictionary entry for the word you've defined 14:51:12 slava, yup. 14:51:28 basically they've defined multiple : + ( ... ) ... ; 14:51:34 ok. 14:51:49 but it doesn't do runtime polymorphism? 14:51:53 that's what i'm interested in 14:51:57 compile time is just an optimization 14:51:58 they are all called the + function. but the proper one is selected when linking to + .. not when executing the operation 14:52:53 how do they implement variables? 14:53:03 no runtime polymorphism. so if you want to have some kind of fancy structure. like a hash table like awk where you can use numbers, strings, etc for keys and have it return numbers, strings, sub-routines, etc. you end up having to tag the type yourself and checking it in a switch. YECK 14:53:17 OrngeTide, yes, that is gross. 14:53:18 slava, there are different defining words for each type of variable you want. 14:53:28 ok 14:53:36 i just wrote a big wad of C code that does this. so i know how painful it is to write (and maintain) 14:53:54 i'd like to implement runtime polymorphism but in the strongforth style 14:54:03 so you can define a new type, and define a new . word to print it 14:54:04 which is how i got in a big scheme kick recently. i noticed a lot of my fancy macros took arguments a lot like lambdas. 14:54:17 slava, that would be really neat to have. 14:54:29 i'd be pretty interested in a forth that did that. 14:54:43 to clarify, i'm trying to get away from this type of code: 14:54:44 : clone ( obj -- obj ) 14:54:44 [ 14:54:44 [ cons? ] [ clone-list ] 14:54:44 [ vector? ] [ clone-vector ] 14:54:44 [ sbuf? ] [ clone-sbuf ] 14:54:45 [ drop t ] [ ( return the object ) ] 14:54:47 ] cond ; 14:54:55 i'm not sure how scheme lambdas relate to this 14:55:09 they don't relate. other than functions are just another type of data. 14:55:12 oh 14:55:22 i sort of switched gears for a minute. 14:55:42 there were two thigns i noticed in my C code. my attempt to use lambdas. and the huge amount of code i had to test and debug for dynamically detecting types. 14:56:11 i'm thinking of something like this -- i won't follow strongforth syntax sinec it would require too many changes to my existing ( ) comments: 14:56:19 and even now my code doesn't support "code" as one the types it can return. which is a shame 14:56:20 GENERIC: . 14:56:30 : . (( integer -- )) .... ; 14:56:34 : . (( cons -- )) .... ; 14:56:43 having to declare a word as GENERIC first 14:56:49 to avoid accidental overrides and then thinking WTF Is going on. 14:56:55 also i'm kind of divided on another issue 14:57:00 slava, well strong forth only keys off the () that is immediately after the : word 14:57:21 OrngeTide, but i have ( ) that look like ( start end str -- ) and so on, not real type names 14:57:23 inside : the ( is replaced with a special one. and when ) is hit it's undone 14:57:35 slava, oh. i see. 14:57:36 also i'm divided on another issue 14:57:46 should there be type names between (( and )) 14:57:51 or names of predicate words? 14:57:53 slava, i think strong forth lets you do i:start rather than integer 14:58:39 slava, i think it should have both or either. don't tie the programmer down too tightly to using your style 14:58:58 (which is why I have C++, it ties me too tightly to bjarne's way of doing OO) 14:59:05 well c++ is a monstrosity. 14:59:12 * OrngeTide vomits. 14:59:34 as soon as i get my two-stage bootstrap done i'll try playing around with generic words 14:59:35 this might be shitty of me. but i don't hire people who are really heavy into C++ 15:00:22 slava, sounds exciting. 15:00:22 since my text interpreter is written in itself and the inner interpreter loads an image file from disk its a bit tricky to make radical syntax changes 15:00:29 slava, i do like your idea of using (( )) 15:00:42 i'd use { } but that's alreayd taken for literal vectors 15:00:44 and [ ] is literal lists 15:00:47 no brackets left :) 15:01:21 slava, well i think you can do most of the changes as just additional dictionary words and an new field in your dictionary. 15:01:43 OrngeTide, pretty much 15:01:58 OrngeTide, my words have property lists like lisp symbols so this stuff is pretty easy to add. 15:02:04 slava, well ( implies that it's not "code". which is good. and since it's (( it implies that not just an ordinary comment. 15:02:07 just the bootstrap issues 15:02:13 OrngeTide, yes 15:02:37 well i'd like to try it out sometime. sounds neat 15:02:50 let me show you something 15:03:41 hmm what is my ip[ 15:04:53 bah. i was going to show the http server but its broken right now because of the select() changes. 15:04:56 i'll finish those first. 15:05:09 oh. okay 15:05:19 OrngeTide, do you know scheme's call/cc? 15:05:37 i don't know much about scheme. i'm exactly 1/3rd the way through reading R5RS 15:10:16 read SICP 15:10:31 i much prefer common lisp to scheme 15:10:32 scheme is a toy 15:11:57 --- join: Topaz (~top@spc1-horn1-6-0-cust117.cosh.broadband.ntl.com) joined #forth 15:16:23 i like toys. 15:16:41 i have some common lisp experience. so mostly i'm just translating things i know about lisp into scheme. which isn't hard 15:17:02 what actually is the difference between LISP and Scheme? 15:17:11 i've used Scheme a bit 15:17:26 scheme lacks a lot of lisps features. 15:17:35 common lisp has a small core like scheme but the standard library is more useful 15:19:19 straight scheme is useless other than to show an algorithm or mathematical proof in a generic way. 15:19:37 yes 15:20:06 about the only thing scheme can do is output to a terminal in a very limited way and load scheme source code from a file. 15:21:15 but what's sad is that even though scheme is so limited, it has a lot more features than ANSI C :P 15:22:16 hrm. I have exactly one week to come up with something to do for SVFIG. any ideas? 15:24:20 i can probably drag my epia 800 box to SVFIG. so i'm set on hardware. maybe it would be interesting to put some directfb bindings in some linux forth (isforth?) 15:25:08 i dunno. maybe i could write solitaire .. not very interesting though. 15:27:08 oh. i got it. you guys ever heard of C robots? 15:27:23 isforth & directfb would be cool 15:28:23 yea. maybe i'll do isforth&directfb and write some little boucing ball app as a demo. i think a week is enough time for that. 15:31:34 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 15:34:43 * Tomasu is away: store 15:41:12 --- quit: OrngeTide ("working") 16:02:13 * Tomasu is back (gone 00:27:30) 16:03:16 --- quit: imaginator (".") 16:05:47 --- quit: Topaz (Remote closed the connection) 16:08:11 --- join: mur (~mur@uiah.fi) joined #forth 16:13:27 --- quit: mur ("Lost terminal") 16:22:21 --- join: mur (~mur@uiah.fi) joined #forth 16:29:44 --- quit: crc (Client Quit) 16:36:34 --- join: solar_angel (~jenni@MTL-ppp-157567.qc.sympatico.ca) joined #forth 16:39:05 --- quit: FlamingRain ("Leaving") 16:50:51 --- join: tgunr (~davec@A17-205-43-45.apple.com) joined #forth 16:58:24 --- quit: tgunr (niven.freenode.net irc.freenode.net) 16:58:24 --- quit: ianp (niven.freenode.net irc.freenode.net) 16:58:24 --- quit: Robert (niven.freenode.net irc.freenode.net) 16:58:24 --- quit: rav3n (niven.freenode.net irc.freenode.net) 16:58:24 --- quit: Tomasu (niven.freenode.net irc.freenode.net) 16:58:24 --- quit: slava (niven.freenode.net irc.freenode.net) 16:58:24 --- quit: I440r (niven.freenode.net irc.freenode.net) 16:58:24 --- quit: fridge_ (niven.freenode.net irc.freenode.net) 16:59:14 --- join: tgunr (~davec@A17-205-43-45.apple.com) joined #forth 16:59:14 --- join: ianp (ian@inpuj.net) joined #forth 16:59:14 --- join: rav3n (rav3n@user-2ivff3o.dsl.mindspring.com) joined #forth 16:59:14 --- join: Robert (~snofs@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 16:59:14 --- join: Tomasu (~moose@S010600045a4c73cc.ed.shawcable.net) joined #forth 16:59:14 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 16:59:14 --- join: I440r (~mark4@216-110-82-59.gen.twtelecom.net) joined #forth 16:59:14 --- join: fridge_ (~fridge@dsl-203-113-229-106.NSW.netspace.net.au) joined #forth 17:25:11 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 18:06:01 --- join: mur_ (~mur@smtp.uiah.fi) joined #forth 18:08:18 --- quit: mur (Read error: 60 (Operation timed out)) 18:18:26 --- quit: jDoctor ("Changing server") 18:24:37 --- join: jDoctor (~rex@pcp08550359pcs.manass01.va.comcast.net) joined #forth 18:31:36 --- quit: FlamingRain ("Leaving") 18:47:42 --- quit: warpzero ("Tried to warn you about Chino and Daddy Gee, but I can't seem to get to you through the U.S. Mail.") 18:52:32 --- quit: jDoctor ("leaving") 18:53:12 --- join: jDoctor (~rex@pcp08550359pcs.manass01.va.comcast.net) joined #forth 18:55:49 --- quit: jDoctor (Client Quit) 18:57:35 --- quit: tgunr ("Quit") 18:58:31 --- join: jDoctor (~rex@pcp08550359pcs.manass01.va.comcast.net) joined #forth 20:14:45 --- join: mur (~mur@uiah.fi) joined #forth 20:21:12 --- join: thefox (~fox@adsl-68-122-3-81.dsl.pltn13.pacbell.net) joined #forth 20:27:09 --- quit: mur_ (Read error: 110 (Connection timed out)) 20:35:58 --- quit: solar_angel ("going for a bit.") 21:15:39 --- quit: thefox () 21:16:50 heh 21:16:52 anyone around? 21:17:07 bbl 21:25:25 --- join: mur_ (~mur@uiah.fi) joined #forth 21:35:40 --- quit: mur (Read error: 110 (Connection timed out)) 21:49:00 --- join: LOOP-HOG (~jdamisch@sub22-119.member.dsl-only.net) joined #forth 21:51:11 --- quit: LOOP-HOG (Client Quit) 22:21:11 --- quit: mur_ (Remote closed the connection) 22:21:45 --- join: mur (~mur@uiah.fi) joined #forth 23:05:41 --- quit: Tomasu ("SIGWTF") 23:11:34 --- join: Tomasu (~moose@S010600045a4c73cc.ed.shawcable.net) joined #forth 23:32:33 --- join: mur_ (~mur@smtp.uiah.fi) joined #forth 23:40:30 --- quit: mur (Read error: 110 (Connection timed out)) 23:59:59 --- log: ended forth/04.08.13