#emc-devel | Logs for 2006-10-07

[03:03:55] <jepler> jmkasunich: so it could be any type at least as wide as u32/s32
[03:05:11] <jmkasunich> yeah
[03:05:19] <jmkasunich> you're just in time for me to ask an obscure question
[03:05:35] <jmkasunich> man INFINITY says that there is a positive infinity, and also HUGEVAL which is positive
[03:05:44] <jmkasunich> is there a negative infinity or similar?
[03:06:51] <jmkasunich> oh, on those types: the types in the union need to retain the signedness, for printing purposes
[03:07:08] <jmkasunich> thats why there is a .u and an .s
[03:14:17] <jepler> yes, in ieee arithmetic there is a negative infinity
[03:14:26] <jmkasunich> I thought so
[03:14:33] <jmkasunich> but I can't seem to find a define for it
[03:14:43] <jepler> I think you can write it -INFINITY
[03:14:49] <jepler> if INFINITY is defined
[03:14:52] <jmkasunich> duh
[03:15:30] <jmkasunich> I'm used to signed ints, where -biggest_positive != biggest_negative
[03:15:59] <jmkasunich> I'm still debating on how to handle the ends of the screw comp curve
[03:16:02] <jepler> wow this seems like a too-clever way to check for infinity:
[03:16:05] <jepler> ./python2.4/pyport.h:#define Py_IS_INFINITY(X) ((X) && (X)*0.5 == (X))
[03:16:42] <jmkasunich> portable, completely independent of the floating point bit patterns
[03:17:35] <jmkasunich> I can either put a couple dummy curve points at the end of the screw, which should keep the main runtime code very clean
[03:17:55] <jmkasunich> or I can use more conventional logic to detect the ends
[03:19:21] <jepler> can you leave the "dummy point" creation up to the userspace? If so, it sounds fine to me.
[03:19:42] <jmkasunich> actually it needs to be in the "here's a new point" command handler in kernel space
[03:20:01] <jmkasunich> because I start out with no points, and as each one is added, I need to deal with that
[03:20:16] <jmkasunich> originally, array[0] = -INF, and array[1] = +INF
[03:20:27] <jmkasunich> after adding a single point, array[2] = +INF
[03:20:28] <jmkasunich> and so on
[03:20:31] <jepler> oh, hm
[03:21:27] <jmkasunich> of course, I could just load +INF into all the points except array[0] at startup
[03:21:36] <jmkasunich> that actually might be a clean way to do it
[03:22:33] <jepler> then you just have to avoid setting array[last] ever
[03:22:46] <jmkasunich> yeah, but thats easy
[03:23:03] <jmkasunich> the new point command handler already detects "hey you sent me too many points"
[03:23:18] <jmkasunich> easy to offset that by one or two
[09:37:02] <A-L-P-H-A> boo.
[09:42:21] <alex_joni> ??
[11:09:20] <Lerneaen_Hydra> A-L-P-H-A: looks like you scared everyone away
[14:43:43] <SWPadnos_> SWPadnos_ is now known as SWPadnos
[15:03:37] <jmkasunich> alex_joni: there seems to be something wrong with iniAxis
[15:03:54] <jmkasunich> it returns failure for many legitimate failures
[15:04:22] <jmkasunich> and it also returns failure if you call it for an axis that isn't configured
[15:05:36] <jmkasunich> but emcMotionInit calls it for all 8 axis, regardless of whether they are configured or not
[15:06:01] <jmkasunich> so, we need to do one of the following:
[15:06:26] <jmkasunich> 1) have iniAxis return success for axes that aren't configured
[15:06:47] <jmkasunich> 2) have iniAxis return some special code for axes that aren't configured (other than success or fail)
[15:07:26] <jmkasunich> and deal with it in emcMotionInit()
[15:08:03] <jmkasunich> 3) have emcMotionInit only call emcAxisInit (and thus iniAxis) for the axes that are configured, instead of all of them
[15:08:51] <SWPadnos> option 3 is the most sane, I think
[15:09:10] <jmkasunich> 4) go back to the old, way, where as long as one axis returns success, we are happy
[15:09:15] <SWPadnos> how does iniAxis know how many axes are configured?
[15:09:24] <jmkasunich> I think 4 is just plain wrong, and your fix is a step in the right direction
[15:09:51] <jmkasunich> SWPadnos: it reads [TRAJ]AXES from the ini file
[15:10:16] <SWPadnos> does iniAxis do that, or emcMotionInit?
[15:10:42] <jmkasunich> iniAxis does, and I think thats the design error. iniAxis should _not_ be reading the [TRAJ] section
[15:10:56] <SWPadnos> well, that doesn't really matter. whatever reads [TRAJ]AXES should loop for that many axes, and return failure ifg any of those can't be found
[15:11:12] <SWPadnos> or fail in other ways
[15:11:29] <jmkasunich> iniTraj should read the TRAJ section and store the number of axes, then later iniAxis should get called only for those axes
[15:11:56] <SWPadnos> yep
[15:12:29] <SWPadnos> it's really too bad that there's so much baggage included with XML
[15:12:52] <jmkasunich> s/XML/NML
[15:13:07] <SWPadnos> heh
[15:16:07] <jmkasunich> ah, this is actually easy
[15:16:23] <jmkasunich> emcMotionInit calls emcTrajInit first
[15:16:34] <jmkasunich> and that sets a variable to the number of axis
[15:16:39] <jmkasunich> then it does the loop
[15:17:05] <jmkasunich> so I can just change the loop end condition from EMCMOT_MAX_AXIS to the var it sets
[15:17:49] <SWPadnos> sounds like a good solution
[15:18:00] <SWPadnos> can it also limit the pins it exports based on the number of axes configured?
[15:18:20] <jmkasunich> no, unfortunately
[15:18:27] <SWPadnos> buymmer
[15:18:30] <jmkasunich> at least not without some serious work
[15:18:34] <SWPadnos> ok
[15:18:40] <jmkasunich> motmod exports pins when you insmod it
[15:18:50] <jmkasunich> but the ini file hasn't been read at that point
[15:18:57] <SWPadnos> ah - right
[15:19:12] <jmkasunich> later, userspace reads the inifile, and sends a "set number of axes" command to motmod
[15:19:30] <SWPadnos> maybe there should be a parameter for the number of axes
[15:19:32] <jmkasunich> actually, we _could_ do it by another route
[15:19:35] <jmkasunich> insmod param
[15:19:39] <SWPadnos> ok
[15:19:42] <SWPadnos> ;)
[15:19:56] <jmkasunich> (hal param won't work - again, the info is needed at insmod time)
[15:20:13] <SWPadnos> rught - that's what I meant
[15:20:15] <jmkasunich> ok
[15:20:24] <jmkasunich> to many kinds of params floating around
[15:20:44] <SWPadnos> yep
[15:20:52] <SWPadnos> maybe we should rename one set to "options" ;)
[15:21:52] <jmkasunich> not gonna rename hal params - too much work
[15:22:02] <jmkasunich> and insmod params are the ones that would logically be options
[15:22:02] <SWPadnos> insmod options?
[15:22:43] <jmkasunich> but the kernel space macros that implement insmod options/params use the name param, so there would still be confusion in the code
[15:23:06] <jmkasunich> I tend to use "param" when I mean hal param, and "insmod param" for the others
[15:23:08] <SWPadnos> well, as long as there's going to be confusion, no sense changing anything
[15:23:38] <SWPadnos> right - param = HAL, module/insmod param = err - you know
[15:24:57] <jmkasunich> well, I think I fixed one bug, but I found another
[15:45:06] <jmkasunich> even though I get: emc/task/emctaskmain.cc 2470: can't initialize motion
[15:45:10] <jmkasunich> (before the fix)
[15:45:17] <jmkasunich> axis starts right up as if nothing is wrong
[15:46:01] <jmkasunich> won't come out of estop though
[15:46:35] <SWPadnos> is tha ta runscript problem (like a program return value being interpreted incorrectly)?
[15:46:41] <jmkasunich> dunni
[15:46:44] <jmkasunich> dunno
[15:47:41] <jmkasunich> what I know about task (and the other userspace parts of EMC) could be written on my fingernail with a wide point marker and leave empty space)
[15:48:10] <SWPadnos> heh -we're in the same boat then
[15:48:17] <jmkasunich> I have no idea how an init failure in emctaskmain gets propogated
[15:48:32] <SWPadnos> is tha tpart of the RT code or userspace?
[15:48:34] <SWPadnos> garhh
[15:48:42] <jmkasunich> user
[15:48:55] <jmkasunich> "task" is strictly userspace
[15:51:03] <jmkasunich> ok, emctask's main() calls emctask_startup, which among other things calls emcMotionInit
[15:51:06] <SWPadnos> ok, so the HAL module is loaded (somewhere), and then task reads ini settings and sets itself up from there?
[15:51:09] <SWPadnos> ok
[15:51:25] <jmkasunich> if emcMotionInit fails, that propogates back up to main() which does exit(1)
[15:51:51] <jmkasunich> the hal module with the motion controller (motmod) is loaded by the .hal file
[15:52:17] <SWPadnos> I'd really like to have lxr available for our CVS repository (since I have no emc devel machine ATM)
[15:52:28] <jmkasunich> that would be very slick
[15:52:51] <cradek> what's lxr?
[15:52:57] <jmkasunich> linux cross reference
[15:53:07] <SWPadnos> yes. I should just add a static IP to linuxcnc.org, and set up CVS there
[15:53:15] <cradek> what's linux cross reference?
[15:53:28] <SWPadnos> http://lxr.linux.no/
[15:53:47] <jmkasunich> cradek: haven't you used that before?
[15:53:52] <jmkasunich> I thought you told me about it
[15:53:54] <SWPadnos> full text, identifier, etc. search for multiple linux versions
[15:53:59] <SWPadnos> I thikn that was me
[15:54:45] <cradek> nope
[15:54:54] <SWPadnos> I like the identifier hyperlinking - very slick
[15:54:59] <jmkasunich> yep
[15:55:10] <jmkasunich> click on a name, see where its defined, and where its used
[15:55:14] <jmkasunich> file and line number
[15:55:22] <SWPadnos> I think maybe jepler mentioned that you can install it locally pretty easily (like apt-get install lxr)
[15:55:23] <jmkasunich> then click to go to that line
[15:55:28] <cradek> interesting
[15:56:05] <jmkasunich> example: http://lxr.linux.no/ident?i=bus_add_device
[15:57:12] <SWPadnos> http://packages.ubuntulinux.org/dapper/source/lxr-cvs
[15:57:15] <jmkasunich> ah, they have a new home: http://sourceforge.net/projects/lxr
[15:58:25] <SWPadnos> hey - edgy should be released in a week or two
[15:58:30] <cradek> very surprisingly, I can't find it in freebsd ports
[15:59:12] <jmkasunich> it has some non-trifial dependencies, like MySQL or similar
[15:59:20] <jmkasunich> http://lxr.cvs.sourceforge.net/lxr/lxr/INSTALL?revision=1.22&view=markup
[15:59:48] <SWPadnos> I don't see that here: http://packages.ubuntulinux.org/dapper/misc/lxr-cvs
[16:00:17] <jmkasunich> the INSTALL file is 250 lines long....
[16:01:13] <SWPadnos> what do you see if you look at the package info in synaptic?
[16:01:46] <SWPadnos> hmmm - you can't look at package info unless it's installed, but you should see dependencies
[16:02:21] <jmkasunich> the package is version 0.9.2.something
[16:02:32] <cradek> looks pretty complex to set up (sql)
[16:02:32] <jmkasunich> the INSTALL file I was reading was the latest, 0.9.4
[16:02:34] <SWPadnos> yep - the source is only up to 0.94 or so
[16:02:40] <SWPadnos> ah
[16:02:51] <jmkasunich> "Fix bug 103178: Document that MySQL 4.x is needed"
[16:03:02] <SWPadnos> heh
[16:03:06] <cradek> haha
[16:03:16] <cradek> surprise!
[16:03:44] <jmkasunich> even 0.9.3 needs a database
[16:04:03] <cradek> I don't know how well our little cvs server would handle running mysql etc
[16:04:17] <jmkasunich> it might be a bit ambitious
[16:04:31] <SWPadnos> I'm somewhat serious about setting up DH to allow for anonymous CVS access
[16:04:45] <cradek> SWPadnos: how would you get changes to it?
[16:04:46] <SWPadnos> and mysql is already running there
[16:05:16] <cradek> I'm against anything that will make anon users wait to get commits again
[16:05:17] <SWPadnos> I can add users to the DH account, so CVS for developers is pretty easy
[16:05:28] <SWPadnos> it's anonymous access that needs the fixed IP, I think
[16:05:37] <SWPadnos> it would be the same repository, as it is now
[16:06:01] <cradek> I thought DH was not suitable for devel CVS when we studied it earlier
[16:06:05] <SWPadnos> I'm very unconcerned about space and bandwidth now - they just upped the storage to 400G, and transfer to 4TB/month
[16:06:18] <SWPadnos> it wasn't, due to the lack of a fixed IP (mostly, I think)
[16:06:35] <cradek> fixed IP for what? I don't understand
[16:07:00] <SWPadnos> they require that you have a fixed IP if you want to set up anonymous CVS access
[16:07:16] <SWPadnos> I think it's due to the fact that it's a shared server, and CVS doesn't play well that way
[16:07:37] <jmkasunich> SWPadnos: what is the benefit of moving CVS to DH?
[16:07:43] <SWPadnos> with SVN, you don't need a fixed IP, and you can set up "virtual" servers (so people would only see the emc modules if they get a list)
[16:07:54] <SWPadnos> uptime, speed, sql
[16:08:09] <SWPadnos> disadvantage is that it's not local to one of us
[16:08:13] <jmkasunich> sql to enable lxr, right?
[16:08:21] <SWPadnos> yep
[16:08:24] <cradek> does it have cvsweb?
[16:08:28] <SWPadnos> also redundancy, etc.
[16:08:31] <SWPadnos> I don't know
[16:08:38] <jmkasunich> uptime hasn'd really been an issue
[16:08:43] <SWPadnos> cvsweb is all cgi, right?
[16:08:59] <cradek> I thought the problems were more serious but I wish I could remember more.
[16:09:01] <SWPadnos> I'm pretty sure that I can install custom CGI
[16:09:07] <SWPadnos> I'll check it out
[16:09:08] <cradek> yes I think it's just cgi
[16:09:20] <jmkasunich> lxr doesn't need cvs I don't think, it just needs a checkout of the code?
[16:09:27] <SWPadnos> they actually have SVN as a "one-click install"
[16:09:40] <jmkasunich> we're _not_ moving to SVN
[16:10:09] <SWPadnos> I know - just mentioning it ;)
[16:10:43] <cradek> securely doing cvs is very complex, requiring restricted accounts and chroot environments
[16:10:52] <cradek> I thought they didn't have any of this
[16:10:57] <cradek> but maybe it's better now
[16:11:01] <jmkasunich> I don't want to screw around with our cvs setup at all
[16:11:22] <SWPadnos> they probably don't have much of that, though there's got to be something, since they have CVS installed for multiple projects
[16:11:32] <jmkasunich> but what if the DH server has an up-to-date cvs checkout, and runs lxr on it?
[16:12:13] <jmkasunich> the compile farm checkouts lag CVS by less than 5 minutes
[16:12:50] <SWPadnos> yeah - that could also work. we should be able to set that up under some account
[16:14:35] <jmkasunich> http://cvs.linuxcnc.org/cvs/infrastructure/farm-scripts/check_commit?rev=1.3
[16:15:33] <jmkasunich> that could be used unmodified I bet
[16:15:47] <cradek> http://blog.dreamhosters.com/kbase/index.cgi?area=1074
[16:16:06] <cradek> Beware experienced CVS users:
[16:16:06] <cradek> Do not expect operate a normal cvs such as you use on source forge or apache to share files with the public!
[16:16:09] <cradek> You will be greatly disappointed!
[16:16:12] <cradek> This is for sharing between passworded users only, and you can't give out a read only password. All users must have write access.
[16:16:54] <SWPadnos> yep. I'm looking for the place where they talk about the additional features when you havea fixed IP
[16:20:12] <SWPadnos> anyway - it's not that important. I can look into what's needed to get lxr working on DH, and it doesn't matter where CVS is for that to happen
[16:20:33] <cradek> and I'll look into setting up lxr
[16:21:10] <SWPadnos> do you know the specs of the laptop that CVS is hosted on?
[16:21:25] <cradek> iirc PII-300 128MB RAM
[16:21:37] <cradek> might be just fine
[16:21:59] <SWPadnos> if not, I'm sure someone involved with EMC has a higher spec machine sitting around gathering dust ;)
[16:22:03] <cradek> CPU: Pentium II/Pentium II Xeon/Celeron (300.68-MHz 686-class CPU)
[16:22:36] <jmkasunich> the nice thing about a laptop as server is built in monitor/keyboard if needed for maintainence, and built in UPS
[16:22:48] <cradek> yeah
[16:22:52] <SWPadnos> indeed
[16:22:56] <cradek> faster machines are everywhere, faster laptops, not so much
[16:23:01] <SWPadnos> plus the fact that they generally are low power machines
[16:23:02] <jmkasunich> and very little space needed
[16:23:25] <cradek> http://cgi.ebay.com/hp-e-pc_W0QQitemZ140035941594QQihZ004QQcategoryZ140072QQrdZ1QQcmdZViewItem
[16:23:36] <jmkasunich> I bet ram and network bandwidth are more of an issue than raw speed for lxr
[16:23:38] <cradek> this is what I'm going to use to replace timeguy.com
[16:23:59] <cradek> still small and quiet, but a lot faster machine
[16:24:10] <jmkasunich> doesn't say much about it
[16:24:23] <cradek> PIII-9xx with 256MB
[16:24:24] <SWPadnos> p3 933 MHz, 256M, 20G - sounds good
[16:24:32] <cradek> they have a full size hard drive
[16:24:44] <jmkasunich> yeah, for some reason I skipped right over that header stuff, expecting normal text
[16:24:48] <cradek> the one I have seems to not handle a 512MB module, so 256 may be it
[16:25:15] <cradek> but I bet jepler would be happy to replace cvs with one of these
[16:25:36] <cradek> I'll set up lxr and if it's slow, maybe I'll consider buying another one
[16:25:48] <SWPadnos> heh - 2670 items found in desktop PCs, <$75.00 :)
[16:26:09] <jmkasunich> I wonder how much network bandwidth lxr is gonna need?
[16:26:25] <SWPadnos> shouldn't be too much, it's all text
[16:26:26] <jmkasunich> it basically sends out entire source files
[16:26:26] <cradek> none except for serving web pages if it's on cvs
[16:26:50] <SWPadnos> annotated with HTML, so the pages are actually 2-3x the size of the source file
[16:26:51] <cradek> only when it's being used, I bet it's no problem
[16:27:14] <cradek> hmm a machine without a stolen copy of windows might be even cheaper
[16:27:22] <cradek> I wish sellers wouldn't do that shit
[16:27:25] <jmkasunich> I guess a 2000 line source file, with annotation, is still not much worse than a picture or two
[16:27:39] <cradek> I don't want someone to SHIP me that, even if I just delete it
[16:27:39] <jmkasunich> stolen how? wasn't it originally installed on that machine?
[16:28:12] <cradek> I don't know if you can transfer that even IF you send the media and license sticker along with it
[16:28:18] <cradek> but you can be sure you'll get neither
[16:28:22] <jmkasunich> oh, that right.... M$
[16:28:53] <jmkasunich> as far as proprietary licenses go, I always thought the "book" concept was a fair one
[16:29:04] <jmkasunich> I don't recall what company it was, maybe borland or something
[16:29:08] <SWPadnos> Borland
[16:29:36] <jmkasunich> but they basically said "treat it like a book - one person can use it at a time - any person - and you can transfer it, just don't make a copy"
[16:29:37] <SWPadnos> "You may install this in as many places as you like, as long as it's used like a book - ie, only one person is using it at a time"
[16:29:56] <SWPadnos> I thought that was quite fair
[16:30:10] <jmkasunich> yep
[16:30:39] <SWPadnos> then they came out with their more resteictive licenses, like "you may not use this compiler to create software that competes with Borland (C)(R)(TM) products"
[16:31:50] <cradek> yay gnu
[16:32:27] <jmkasunich> yeah
[16:32:44] <jmkasunich> you mean there are still compilers in the world that aren't called gcc?
[16:33:02] <SWPadnos> hmmm - I think there are
[16:33:06] <cradek> yeah you find them on windows machines
[16:33:19] <SWPadnos> Metrowerks, IAR, Tasking, Keil, Greenleaf
[16:33:20] <SWPadnos> ...
[16:33:44] <SWPadnos> gotta run - going hiking wit the wife
[16:33:46] <SWPadnos> see you later
[16:33:50] <cradek> bye
[16:33:52] <jmkasunich> have fun
[16:33:54] <SWPadnos> http://cgi.ebay.com/HP-S7310N-SLIM-PC-1-5GHz-512MB-160GB-DVD-BURNER-NEW_W0QQitemZ190038918856QQihZ009QQcategoryZ140072QQrdZ1QQcmdZViewItem
[16:34:43] <jmkasunich> wonder what it will wind up going for
[16:35:15] <cradek> cute
[16:35:23] <cradek> I like the memory card slots on the front
[16:35:54] <cradek> looks like you can have a PIII-933 e-pc for $60 shipped buy-it-now
[16:36:06] <jmkasunich> boggles the mind
[16:36:06] <cradek> I'd probably do that to replace cvs if it comes to that
[16:36:24] <cradek> btw the one I have tests fine for realtime, even with its built-in video
[16:36:33] <jmkasunich> cradek: on a slightly different topic (but still related to "pcs in your house")
[16:36:45] <jmkasunich> you have switched your main system over to non-RT, right?
[16:37:00] <cradek> yes it's booted that way right now
[16:37:08] <jmkasunich> does that run all the time?
[16:37:13] <cradek> yes
[16:37:26] <cradek> I mainly did it to get suspend working, but it doesn't work right anyway
[16:37:40] <jmkasunich> would you consider hosting a compile farm slot so we can make sure the non-RT stuff builds?
[16:38:18] <cradek> I could do that on my redhat9 machine
[16:38:28] <cradek> something unrelated to ubuntu would be a better test
[16:38:30] <jmkasunich> here is whats involved: http://cvs.linuxcnc.org/cvs/infrastructure/farm-scripts/README?rev=1.3
[16:39:14] <cradek> my desktop is up and down a lot, but I have a redhat 9 machine that's up for years
[16:39:29] <jmkasunich> that sounds good
[16:41:13] <cradek> An unavoidable function of the farm is to download a configure script from CVS
[16:41:17] <cradek> and run it on the local machine without human intervention.
[16:41:34] <jmkasunich> yeah...
[16:41:35] <cradek> eeek
[16:42:23] <cradek> I'll have to think about this
[16:42:28] <jmkasunich> chroot maybe?
[16:42:32] <cradek> I'm leaning toward "no way"
[16:42:39] <cradek> yeah it would have to be chroot.
[16:43:02] <cradek> but that means setting up a lot of things
[16:43:25] <jmkasunich> how risky is it? I'm not so worried about the cubix slots, but the breezy slot is running on my main box
[16:43:44] <cradek> well that's up to you to decide :-)
[16:43:58] <cradek> you wrote that document and understand the risk just as well as I do
[16:44:10] <jmkasunich> well, I don't know how hard it is to escalate privliges
[16:44:24] <jmkasunich> if I have a user "farmer" that runs the script, how much damage can it do?
[16:44:28] <cradek> does it run as you or some other user?
[16:44:45] <jmkasunich> right now it runs as me, but thats easy to change
[16:44:45] <cradek> then it depends on how well permissions are set on all your files
[16:45:04] <cradek> so it could trivially remove your home directory today.
[16:45:11] <cradek> no priv escalation required
[16:45:19] <jmkasunich> yeah, gotta fix that
[16:45:20] <cradek> bbl, starving
[16:45:32] <jmkasunich> * jmkasunich reads how to add a user on ubuntu
[16:46:18] <jmkasunich> one thing to keep in mind - any such trojan would have to be committed by an approved EMC developer, and the commit would be logged
[16:46:45] <jmkasunich> that wouldn't replace the lost data, but it would tell us who needs their ass kicked
[16:51:45] <cradek> very true
[16:52:01] <cradek> lost data is replaced simply by restoring a backup
[16:52:48] <cradek> any developer could make a mistake. I'm not so worried about a trojan
[16:53:10] <jmkasunich> replacing emc/src/configure with "rm -rf *" is not a mistake
[16:53:56] <cradek> no but rm -r $(some_make_variable_spelled_wrong)/ is
[16:54:10] <jmkasunich> making a mistake in emc/src/configure that does damage would be bad for every user of emc, the compile farm would just be the canary in the coal mine cause it would get hit first
[16:54:25] <cradek> true
[16:58:15] <jmkasunich> oh, I think I figured out the 2nd bug
[16:58:41] <jmkasunich> if there is a problem during init (like the one I just fixed), task exits
[16:58:56] <cradek> hmm
[16:58:57] <jmkasunich> but the run script starts task in the background, and then continues on to start the GUI
[16:59:18] <jmkasunich> net result, GUI is up, no apparent indication of the problem, but the machine is busted
[16:59:20] <cradek> yuck
[16:59:32] <jmkasunich> at least that what happens with axis
[16:59:45] <jmkasunich> I think with tkemc emcsh will fail if task isn't running
[17:00:19] <cradek> task should fork and exit when it's ready, and the script should check the exit code
[17:00:45] <jmkasunich> I'm not coding that!
[17:00:55] <jmkasunich> * jmkasunich runs back to kernel space where its safe
[17:01:04] <cradek> hahaha
[17:01:05] <cradek> bbl
[17:01:12] <jmkasunich> you're right tho, thats the proper solution
[17:02:27] <jmkasunich> yeah, with sim/tkemc, emcsh fails to connect to emc and everything dies
[17:02:41] <jmkasunich> but with axis, it doesn't know that task is dead
[19:20:05] <cradek> - for (axis = 0; axis < EMCMOT_MAX_AXIS; axis++) {
[19:20:08] <cradek> - if (0 == emcAxisInit(axis)) {
[19:20:11] <cradek> + for (axis = 0; axis < localEmcTrajAxes; axis++) {
[19:20:14] <cradek> + if (0 != emcAxisInit(axis)) {
[19:20:20] <cradek> jmkasunich: did you mean to change the second line too? reversing the sense of the error returnvalue?
[19:20:30] <jmkasunich> yes
[19:20:38] <cradek> ok
[19:20:40] <jmkasunich> 0 is success
[19:42:50] <A-L-P-H-A> Just a Q. why's it "0 == emcAxisInit(axis)", instead of "emcAxisInit(axis) == 0" I remember something from compsci about certain languages being more optimized one or the other.
[19:43:13] <cradek> it's a very old practice by newbie programmers
[19:43:25] <cradek> it gives you an error if you write 0 = fn() instead of 0 == fn()
[19:43:48] <cradek> for me, it makes the code harder to understand
[19:44:06] <A-L-P-H-A> ??
[19:44:16] <jmkasunich> except any reasonabley modern GCC will flag an = in an if statement anyway
[19:44:23] <cradek> right
[19:44:53] <cradek> today it's probably just a religious thing for some folks, no particular reason for it
[19:45:28] <cradek> I normally take them out or switch them around when I run into them
[19:53:15] <A-L-P-H-A> cradek, which way makes it harder for you?
[19:54:36] <cradek> retval == fn()
[19:55:08] <cradek> just not used to it, it seems otherworldly and I always switch it around in my head to understand it
[19:57:00] <alex_joni> hello
[19:57:08] <alex_joni> * alex_joni just got back
[19:57:10] <A-L-P-H-A> I can understand it... some compilers would give you an error trying to assigne function a value.
[19:57:13] <alex_joni> jmkasunich: sorry bout that :)
[19:57:16] <A-L-P-H-A> assign a function to a value
[19:57:23] <A-L-P-H-A> but a constant maybe a different story...
[19:57:30] <A-L-P-H-A> I think it's bad form anyways.
[19:58:00] <A-L-P-H-A> the accidental = vs ==
[19:58:07] <A-L-P-H-A> hello aj
[19:58:16] <jmkasunich> alex_joni: no prob
[19:58:35] <alex_joni> had to leave urgently.. so I just checked in all the stuff..
[19:58:46] <alex_joni> glad you worked it out rather quick :)
[20:04:01] <alex_joni> jmkasunich: tried comp yet?
[20:04:25] <jmkasunich> just a little
[20:04:29] <alex_joni> any good?
[20:05:02] <jmkasunich> yeah
[20:05:08] <alex_joni> cool
[20:05:26] <alex_joni> I still have 1-2 hours of work planned for tonight
[20:05:39] <alex_joni> so I'd do the backlash change.. anything agains?
[20:05:44] <alex_joni> against?
[20:05:44] <jmkasunich> oops... I misunderstood
[20:06:02] <jmkasunich> I thought you were talking about jepler's .comp
[20:06:08] <alex_joni> :-)
[20:06:12] <alex_joni> no.. screw comp
[20:06:13] <jmkasunich> screw comp is still untested
[20:06:22] <alex_joni> ok.. same here
[20:06:32] <jmkasunich> "backlash change" ?
[20:06:42] <alex_joni> yes, trating backlash as comp
[20:06:58] <alex_joni> forward = backlash/2, reverse = -backlash/2
[20:07:01] <jmkasunich> dunno if we want to do that yet
[20:07:13] <alex_joni> that's why I asked
[20:07:13] <jmkasunich> not until the current changes are tested
[20:07:26] <alex_joni> but I saw the changes, and it's not that critical anyway
[20:07:39] <alex_joni> you simply do it the other way around..
[20:07:49] <jmkasunich> then in user space we need something like "if there is comp data, send the points, else if there is backlash, send one comp point"
[20:08:32] <jmkasunich> then the backlash variable (and the emcmot command that sets it) get removed from the RT code
[20:08:46] <jmkasunich> but I want to wait until we know screw comp works
[20:13:01] <alex_joni> right
[20:13:43] <alex_joni> there was a user that asked for leadscrew compensation afaik
[20:14:01] <jmkasunich> ohh, a beta-tester!
[20:14:15] <alex_joni> yeah, but I can't remember who it was
[20:14:22] <alex_joni> we both talked to him
[20:14:35] <alex_joni> and you said it's fairly easy to add to emc2 :)
[20:17:49] <alex_joni> logger_devel: search
[20:17:49] <alex_joni> Try this address for searching the logs:
[20:26:02] <skunkworks> alex_joni: ooh that is cool. Did you just do that?
[20:26:30] <skunkworks> or has that always been there?
[20:26:50] <alex_joni> a few days ago
[20:29:13] <alex_joni> bbl
[21:25:19] <cradek> http://cvs.linuxcnc.org/lxr
[21:26:22] <jepler> cradek: neat
[21:28:01] <jepler> cradek: in the top of the 'rtapi' directory, it looks like it might have some broken html: "README">README for RTAPI"
[21:30:01] <cradek> hmm, sure is
[21:31:07] <jepler> can it index the top emc2 directory? source code like tcl/ and lib/python would be nice to browse as well
[21:31:39] <cradek> probably
[21:31:48] <cradek> but this took about an hour to index...
[21:31:56] <jepler> oh -- ugh
[21:32:18] <jepler> that poor laptop
[21:36:00] <alex_joni> whoa.. that's some nice software :D
[21:36:05] <alex_joni> http://cvs.linuxcnc.org/lxr/source/emc/nml_intf/emc.hh
[21:47:29] <cradek> jepler: finally fixed that README thing
[21:48:22] <cradek> hmm, this isn't fast, is it
[21:51:06] <alex_joni> cradek: fast enough
[21:51:24] <jmkasunich> very nice
[21:51:27] <alex_joni> way faster than swiching & grepping through the files
[21:51:38] <jmkasunich> will it have to spend an hour indexing each time somebody commits?
[21:51:50] <cradek> it won't be able to reindex after a commit
[21:51:55] <cradek> it will have to be nightly or something.
[21:53:44] <alex_joni> cradek: does it do something funky while accessing some entries?
[21:54:01] <alex_joni> or is it pre-written in html?
[21:54:20] <alex_joni> I mean.. lots of lookups in the index?
[21:54:43] <alex_joni> cause some things I clicked took a bit longer to complete than others.. (can be my internet connection too though)
[21:55:11] <cradek> I don't know how it works - there's a big database involved
[21:55:45] <alex_joni> oh, ok..
[21:56:37] <cradek> http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=230035795269
[21:56:49] <cradek> oh forget it (no power supply)
[21:57:46] <jepler> cradek: shopping for a machine for yourself?
[21:58:02] <cradek> no, maybe to replace the laptop
[21:58:23] <cradek> we'll see if this is slow enough to be irritating first
[21:58:27] <cradek> not sure if we'll use it a lot
[21:58:48] <jepler> I think someone using swish and tags on his local machine gets most of the benefit
[21:59:06] <jepler> not easy access to history, but to the location of use and definition of identifiers
[21:59:23] <cradek> I agree
[21:59:26] <alex_joni> jepler: I like this a bit better than swish :D
[21:59:33] <alex_joni> but that's probably taste
[22:00:42] <cradek> jepler: inexplicably, most people use editors that don't know how to handle tags
[22:01:33] <jepler> cradek: *shrugs*
[22:01:41] <alex_joni> inexplicably the editors the know how to handle tags are so much different than any other editor :)
[22:02:05] <alex_joni> and quite hard to get acustomed to
[22:02:19] <cradek> I didn't mean to start a holywar, sorry
[22:02:34] <alex_joni> no war :)
[22:02:46] <alex_joni> it's just damn frustrating for me when I have to start vi
[22:02:57] <cradek> try xemacs?
[22:03:03] <alex_joni> emacs? yuck
[22:03:13] <cradek> * cradek shrugs
[22:03:15] <alex_joni> been there a while ago
[22:07:28] <alex_joni> maybe I should do that again sometimes :)
[22:07:46] <cradek> or find/write tags support for your favorite editor
[22:08:02] <cradek> seems like it can't be too hard
[22:17:24] <alex_joni> is gvim any good?
[22:18:26] <cradek> I think it's a gui version of vim
[22:18:36] <cradek> I've never used it
[22:18:52] <jmkasunich> cradek: can I ask you an eagle question or two?
[22:18:59] <cradek> of course
[22:19:08] <jmkasunich> I drew a copper polygon
[22:19:25] <alex_joni> http://www.jnrowe.ukfsn.org/graphics/calendar.png <- looks interesting
[22:19:36] <jmkasunich> now I want to associate it with a net (when I do tools->ratnest it gets clearance around the pins I want it to connect to)
[22:19:50] <cradek> name it the same as the net
[22:20:28] <jmkasunich> and how does one A) find the name of the net, and 2) change the name of the polygon?
[22:20:46] <cradek> with the info and name commands I think
[22:20:57] <cradek> I don't have eagle in front of me unfortunately
[22:21:07] <jmkasunich> ok, I'll dig around
[22:21:11] <cradek> info is the "i" icon
[22:21:25] <cradek> name might be under the change (wrench?) icon
[22:23:09] <jmkasunich> name is under the edit menu, dunno if it has an icon
[22:23:17] <jmkasunich> but it seems to be working - thanks
[22:23:24] <cradek> welcome
[22:47:07] <jmkasunich> its being weird
[22:47:26] <jmkasunich> some polygons get filled in, others don't, with no apparent reason
[22:48:29] <jmkasunich> I made my complex shaped heavy traces with multiple polygons, overlapped where needed
[22:48:46] <jmkasunich> I wonder if I have no choice but to make one big polygon for the entire trace?
[22:49:30] <alex_joni> jmkasunich: http://linux-vserver.org/Welcome_to_Linux-VServer.org <- for the farm maybe?
[22:50:14] <jmkasunich> I dunno
[22:50:26] <jmkasunich> right now I don't want to think about it, I'm trying to lay out a board
[22:50:58] <alex_joni> heh.. ok :)
[23:02:24] <alex_joni> night all