21:33 < jtanx> http://man.devl.cz/deb/l/libldap2-dev ?
21:33 < sam_moore> Oh, well there you go
21:33 < sam_moore> Thanks
21:34 < sam_moore> No wait, it has all those functions the compiler was complaining about
21:34 < sam_moore> ?
21:34 < jtanx> ok then
21:34 < sam_moore> Except there's this fsfuncLDAP instead of LDAP
21:36 < sam_moore> ...
21:36 < jtanx> oh that documentaiton is so terrible: http://www.openldap.org/doc/
21:37 < jtanx> the html version is at least
21:37 < sam_moore> Yeah
21:38 < sam_moore> Um... given that the only documentation for libldap2 documents the "deprecated" functions, I'm going to continue using those functions
21:39 < sam_moore> Installing libldap2-dev installed all those man pages
21:39 < jtanx> yep
21:39 < jtanx> >.>
21:41 < jtanx> ldap_init(3) was obsoleted by ldap_initialize(3)
21:41 < jtanx> http://www.openldap.org/lists/openldap-bugs/200509/msg00151.html
21:42 < sam_moore> Seriously
21:43 < sam_moore> Please tell me they changed more than just the name...
21:44 < sam_moore> Oh great, they did, now I need to work out how to use it
21:44 < jtanx> int ldap_initialize(ldp, uri)
21:44 < jtanx> LDAP **ldp;
21:44 < jtanx> char *uri;
21:44 < jtanx> wow, that's old school way of specifying the type of the input arguments
21:45 < jtanx> I've only seen that style once elsewhere
21:45 < jtanx> In code from the ~1990s
21:45 < sam_moore> LDAP was invented in the 80s
21:45 < sam_moore> So that would make sense
21:45 < jtanx> you'd think they'd update the manpages by now though
21:46 < sam_moore> They don't even note in the man page that ldap_init is depreated
21:46 < jtanx> yeah
21:46 < jtanx> the joys of poor documentation
21:46 < sam_moore> At least the function names make sense
21:46 < sam_moore> initialize
21:47 < sam_moore> Obvious what that does
21:47 < sam_moore> ... I think the "uri" includes the port
21:47 < sam_moore> Like "ldap://server" or "ldaps://server"
21:47 < jtanx> yep
21:48 < jtanx> the whole ldap_init vs ldap_initialize reminds me of fopen vs fopen_s on windows
21:48 < sam_moore> That's going to screw with anyone that puts their ldap server on a non-standard port for security-by-obscurity reasons
21:48 < jtanx> couldn't you do
21:48 < jtanx> ldap://server:port
21:48 < sam_moore> Oh
21:48 < sam_moore> Probably
21:56 < sam_moore> Sigh... they deprecated ldap_bind and made ldap_simple_bind and then at some point that got deprecated too
21:57 < sam_moore> Now it's ldap_sasl_bind_s
21:57 < jtanx> what's with that naming convention
21:57 < sam_moore> sasl stands for something
21:57 < jtanx> _s for secure
21:57 < jtanx> yey
21:57 < sam_moore> The LDAP expert at UCC was basically like "It's terrible, no one ever uses it, but the LDAP standards wanted to put it in, so it's there"
21:57 < sam_moore> And that's all I know
21:58 < jtanx> gee ok
21:59 < sam_moore> But as opposed to ldap_simple_bind(ld, dn, password)
21:59 < sam_moore> You have something like 10 arguments?
21:59 < sam_moore> Please let half of them be NULL...
22:12 < jtanx> that's all for today
22:12 < jtanx> bye
22:12 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
23:07 -!- Rowan [~Rowan@220-253-165-231.dyn.iinet.net.au] has joined #mctxuwa_softdev
23:19 < sam_moore> Hi Rowan
23:19 < Rowan> hello
23:19 < sam_moore> I'm working on getting logins with UWA's pheme system
23:19 < sam_moore> So it will be kind of like LMS
23:24 < Rowan> are we trying to keep the gui to only a few pages or can we use several.
23:25 < Rowan> like a cover page(a link to just the stream, a link to dump data and a login). then the login page goes to the experiment page
23:26 < sam_moore> I think several pages
23:26 < sam_moore> Probably even one page per sensor?
23:26 < Rowan> sweet, i shall enjoy this gui :)
23:41 < sam_moore> See you tomorrow
23:47 < Rowan> yep
--- Day changed Mon Sep 30 2013
03:31 -!- Rowan [~Rowan@220-253-165-231.dyn.iinet.net.au] has quit [Ping timeout]
10:57 -!- jtanx [~asfa@130.95.54.13] has joined #mctxuwa_softdev
11:10 -!- Rowan [~Rowan@220-253-165-231.dyn.iinet.net.au] has joined #mctxuwa_softdev
11:17 < sam_moore> Hi Rowan, do you have anything we should put in the report?
11:34 -!- Rowan [~Rowan@220-253-165-231.dyn.iinet.net.au] has quit [Ping timeout]
11:58 -!- Rowan [~Rowan@130.95.158.122] has joined #mctxuwa_softdev
11:59 < Rowan> ill have the outline of all the pages i wanted on git this afternoon
12:05 < sam_moore> Ok
12:42 -!- Rowan [~Rowan@130.95.158.122] has quit [Connection reset by peer]
12:44 -!- Rowan [~Rowan@130.95.158.122] has joined #mctxuwa_softdev
13:33 < Rowan> so far i have a cover page which links to a login page which links to the index page. but theres no styles for them and no security on the login
14:09 < Rowan> im not sure the files ive added went into sams git. im pretty sure they all forked over to mine. :S
14:58 -!- Rowan [~Rowan@130.95.158.122] has quit [Ping timeout]
15:20 -!- Rowan [~Rowan@130.95.158.122] has joined #mctxuwa_softdev
15:57 -!- Rowan [~Rowan@130.95.158.122] has quit [Ping timeout]
16:18 -!- Rowan [~Rowan@220-253-165-231.dyn.iinet.net.au] has joined #mctxuwa_softdev
16:18 -!- jtanx [~asfa@130.95.54.13] has quit [Ping timeout]
16:31 -!- Rowan [~Rowan@220-253-165-231.dyn.iinet.net.au] has quit [EOF From client]
18:20 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has joined #mctxuwa_softdev
18:55 -!- MctxBot [~twang@220-253-203-242.dyn.iinet.net.au] has quit [Ping timeout]
21:18 -!- Rowan [~Rowan@220-253-165-231.dyn.iinet.net.au] has joined #mctxuwa_softdev
21:44 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
22:06 -!- Rowan [~Rowan@220-253-165-231.dyn.iinet.net.au] has quit [EOF From client]
--- Day changed Tue Oct 01 2013
08:50 -!- jtanx [~asfa@124-148-112-240.dyn.iinet.net.au] has joined #mctxuwa_softdev
09:03 -!- jtanx [~asfa@124-148-112-240.dyn.iinet.net.au] has quit ["brb"]
11:04 -!- jtanx [~asfa@124-148-112-240.dyn.iinet.net.au] has joined #mctxuwa_softdev
13:40 < sam_moore> Another option for the login system (a really terrible option that I don't condone on any real world system, but it might just get us marks)
13:40 < sam_moore> Is to provide some cgi scripts that wrap around "useradd" "userdel" and "usermod"
13:40 < sam_moore> And have our "Login" function check /etc/shadow
13:41 < sam_moore> I emailed UWA IT help desk about Pheme anyway
13:41 < sam_moore> I wonder what they'll make of it...
13:51 < jtanx> hehe
13:52 < sam_moore> The more I think about it, the more I think LDAP is the way you'd do this properly though
13:52 < sam_moore> It basically is a text file
13:53 < jtanx> yeah
13:53 < sam_moore> If you started with a text file, you'd quickly find yourself reinventing the wheel and probably converging with what LDAP already does
13:53 < jtanx> I guess the real problem is that rolling our own solution is not really feasible in the time left, especially if you want to ensure it's at least ok in terms of security
13:57 < sam_moore> Yes
14:08 < sam_moore> For reference: http://www.debuntu.org/how-to-set-up-a-ldap-server-and-its-clients/
14:09 < sam_moore> And http://mindref.blogspot.com.au/2010/12/openldap-create-user.html
14:09 < sam_moore> (How to set up our own LDAP server)
14:11 < jtanx> slapd
14:12 < jtanx> what a weird choice of a name
14:12 < sam_moore> Haha
14:15 < jtanx> oh
14:15 < jtanx> if you set up an ldap server
14:15 < jtanx> http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page
14:15 < jtanx> get them to manage the ldap database themselves
14:15 < jtanx> :P
14:15 < jtanx> to add or remove users
14:22 < sam_moore> Yeah, that's kind of how ldap was designed
14:22 < sam_moore> Technically I can probably modify my UWA "pheme" password from a command line using ldappasswd
14:22 < sam_moore> Unless they use kerberos
14:23 < sam_moore> (We don't want to start going into kerberos...)
14:54 < sam_moore> Welp, I've put an LDAP server on my laptop for testing purposes
14:54 < sam_moore> With an account "snoopy"
14:55 < sam_moore> Seems to work... now to test it with our software
14:55 < sam_moore> Hey, maybe we could just put an LDAP server on the BeagleBone and get a GUI LDAP editor
14:56 < sam_moore> Oh right, you suggested that at 14:15
14:56 < sam_moore> I like it though
14:58 < jtanx> yah not too bad
14:58 < jtanx> say we had an ldap server on the bbb
14:59 < jtanx> we could even write the password manager in a different language
14:59 < jtanx> if we wanted to make one
14:59 < sam_moore> Yeah, exactly
14:59 < jtanx> because it only has to interact with the ldap database
14:59 < sam_moore> We shouldn't do that in the FastCGI program
14:59 < jtanx> yup
15:00 < sam_moore> I sent an email about it to everyone, suggesting PHP or python CGI to wrap around LDAP
15:01 < sam_moore> I wonder when this system is going to start being put together though
15:02 < sam_moore> We'll end up with a server and no hardware to control
15:02 < jtanx> Looks like it
15:02 < sam_moore> Those images Justin sent us look nice
15:02 < jtanx> Yeah they look quite good
15:07 < sam_moore> With the FastCGI program
15:07 < sam_moore> Do you think it's better to pass options through the command line
15:07 < sam_moore> Or have a bunch of #defines that need to get configured?
15:08 < sam_moore> eg: To specify the LDAP server
15:08 < sam_moore> (At the moment it's just a #define)
15:08 < jtanx> hmm
15:08 < jtanx> It's probably better to pass as a command line
15:09 < sam_moore> Ok
15:09 < jtanx> unless we're absolutely sure that the ldap address is fixed
15:10 < sam_moore> What we can do is write a bash script that sets a bunch of variables
15:10 < sam_moore> Then run.sh sources that and passes them all as arguments
15:10 < jtanx> sounds good
15:35 < sam_moore> What about things like the path to the GPIO and ADC? I figure they should stay as #defines
15:35 < sam_moore> Since they probably won't be changing
15:36 < sam_moore> At least not until the next BeagleBone kernel comes out
15:36 < jtanx> hehe
15:36 < jtanx> yeah that should stay as defins
15:36 < jtanx> if the path does change
15:36 < jtanx> then that probably warrants a recompile anyway since stuff may have changed with how you access it
15:36 < sam_moore> Ok, should I put all the defines that you might want to adjust on a recompile in the same place?
15:37 < sam_moore> common.h?
15:37 < jtanx> what defines do we have right now
15:37 < jtanx> that may change
15:39 < sam_moore> Nothing major, I just want it to be flexible
15:39 < jtanx> hmm
15:39 < jtanx> even if you did that
15:39 < jtanx> if you needed to change the define
15:39 < jtanx> you'd probably be looking at changing hte code anyway
15:40 < sam_moore> Sure, but that doesn't mean you can't put the defines in an easy to find place
15:40 < sam_moore> For example, say someone wants to recompile this for a RPi
15:40 < jtanx> But for stuff like 'where's the pwm path'
15:40 < sam_moore> Given the trouble we had with pwm path confusion
15:41 < jtanx> I'd look in the header relevant to pin control
15:41 < sam_moore> I think it's helpful to make it easy for someone to see what we're doing
15:41 < sam_moore> I suppose
15:42 < jtanx> ok I guess it doesn't matter if it goes in common.h or not
15:42 < sam_moore> Yeah, but I think I agree with you now :P
15:42 < jtanx> ( I guess this is what ./configure and configure.h are for :P )
15:51 < sam_moore> Sigh...
15:51 < sam_moore> I put in a #warning to generate a warning if you tried to compile the software on something that isn't the BeagleBone
15:51 < sam_moore> ...
15:51 < sam_moore> And the use of #warning caused a warning
15:52 < sam_moore> warning: #warning is a GCC extension [enabled by default]
16:05 < jtanx> :p
16:08 < jtanx> because of the -pedantic flag
21:13 -!- jtanx [~asfa@124-148-112-240.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
21:23 -!- MctxBot [~twang@124-148-112-240.dyn.iinet.net.au] has joined #mctxuwa_softdev
--- Day changed Wed Oct 02 2013
17:34 -!- Rowan [~Rowan@106-68-70-204.dyn.iinet.net.au] has joined #mctxuwa_softdev
21:54 -!- Rowan [~Rowan@106-68-70-204.dyn.iinet.net.au] has quit [Ping timeout]
--- Day changed Thu Oct 03 2013
09:30 -!- jtanx [~asfa@124-148-112-240.dyn.iinet.net.au] has joined #mctxuwa_softdev
09:30 -!- jtanx [~asfa@124-148-112-240.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
09:32 -!- MctxBot_ [~twang@124.149.138.201] has joined #mctxuwa_softdev
09:45 -!- Rowan [~Rowan@130.95.51.202] has joined #mctxuwa_softdev
09:47 -!- MctxBot [~twang@124-148-112-240.dyn.iinet.net.au] has quit [Ping timeout]
10:26 -!- MctxBot_ is now known as MctxBot
10:37 -!- MctxBot [~twang@124.149.138.201] has quit ["leaving"]
10:44 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
10:45 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
10:45 < jtanx> finally
11:02 -!- Rowan [~Rowan@130.95.51.202] has quit [EOF From client]
12:09 < MctxBot> guh
12:09 < MctxBot> crappy laptop keeps crashing
12:17 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit [Ping timeout]
12:20 -!- jtanx_ [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
12:20 -!- jtanx_ is now known as jtanx
12:28 < jtanx> about login_handler
12:28 < jtanx> The result from FCGI_ParseRequest
12:28 < jtanx> for string types
12:28 < jtanx> should be treated as const char*
12:29 < jtanx> I guess it really doesn't matter, unless it returns an empty string
12:29 < jtanx> it's also not true that user/pass would be of max length BUFSIZ
12:30 < jtanx> because of how it was defined, params has a max length of BUFSIZ
12:30 < jtanx> but user/pass may be anywhere in that string
12:30 < jtanx> so their max length < BUFSIZ
12:30 < jtanx> so the bounds check makes no sense
12:31 < jtanx> (sure, it prevents an infinite loop, but by that stage, you could be writing to locations where you don't want to anyway)
12:31 < jtanx> besides, FCGI_ParseRequest should guarantee that they're null terminated
12:38 < jtanx> also, whitespace (>.< :P)
12:38 < sam_moore> True, but this is the whole "defensive" programming thing where you assume that some future unspecified developer is going to do something stupid and you attempt to minimise the damage they can cause :P
12:38 < jtanx> while (*user && isspace(*user)) user++;
12:38 < jtanx> char *ptr = user;
12:38 < jtanx> while (*ptr && isalnum(*ptr)) ptr++;
12:38 < jtanx> *ptr = 0;
12:39 < jtanx> well
12:39 < jtanx> by that stage you're screwed anyway
12:39 < jtanx> not much point doing something that doesn't make sense too
12:39 < sam_moore> You're more screwed if your program is writing to undefined locations in an infinite loop than if it's writing to a finite number of undefined locations
12:39 < jtanx> still
12:39 < jtanx> at least if it's infinite
12:39 < jtanx> you'll know it crashes
12:40 < jtanx> actually that's hardly the case
12:40 < jtanx> because it will come across a zero at some point
12:40 < jtanx> more often than not
12:40 < jtanx> but anyway...
12:40 < jtanx> does valgrind pick that up?
12:41 < sam_moore> Hah
12:41 < jtanx> and to be honest, by adding the BUFSIZ check, that's implying their max length when it's actually not
12:41 < jtanx> which may be confusing in itself
12:41 < sam_moore> The operating system should pick up a segfault on the first invalid write anyway
12:41 < jtanx> unless
12:41 < jtanx> the following region is writeable too
12:42 < jtanx> eg you have a struct, members follow each other
12:43 < sam_moore> If you really want to remove the bounds check go ahead
12:43 < sam_moore> Either way that code does what it's meant to
12:43 < jtanx> ok, well yeah
12:44 < jtanx> hmm
12:44 < jtanx> problem
12:44 < jtanx> anyone can logout the currently logged in user
12:44 < jtanx> oh wait
12:45 < jtanx> sorry
12:48 < sam_moore> My network is being terrible so I can't say much
12:48 < sam_moore> One last argument in favour of the BUFSIZ check... if someone modifies the function that "should" be guaranteed to null terminate the string and doesn't... then you fall into an infinite loop
12:49 < jtanx> well that's a case of too bad
12:49 < jtanx> if it infinite loops
12:49 < jtanx> then it shows you've done something wrong, so it'd be a good case to check what you've done
12:50 < jtanx> if you hide that with a BUFSIZ check, you may not know there's a problem until later down the track
12:50 < sam_moore> If you port the code to run in a kernel module or something, it's a case of instead of getting a seg fault, you suddenly wipe out all your memory
12:50 < jtanx> with a kernel module, you'd be testing it pretty rigorously in a vm, i would think :P
12:51 < sam_moore> Yeah, but it pays not to assume things about the sanity of other programmers
12:51 < sam_moore> That's why all that extremely irritating "public, private" stuff is used
12:52 < jtanx> to be honest, I'd rather have it fail fast than come up with weird issues that may/may not happen all the time
12:52 < sam_moore> Anyway, just remove the bounds check, this is getting ridiciluos
13:31 < jtanx> hmmm
13:31 < jtanx> if ($http_cookie ~* "id=([^;] +)(?:;|$)" ) {
13:31 < jtanx> set $id $1;
13:31 < jtanx> }
13:32 < jtanx> right now, only the control key can be sent as the one and only cookie
13:38 < jtanx> we could get nginx to extract the desired cookie
14:33 < jtanx> actually nah
15:02 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has quit [Ping timeout]
16:27 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit [Connection reset by peer]
21:16 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
21:17 < jtanx> herp derp
21:17 < jtanx> was idling in mctxuwa
21:17 < jtanx> not mctxuwa_softdev
21:40 < jtanx> anyway...
21:40 < jtanx> a (the) login/logout functionality is almost done for the gui
21:40 < jtanx> to make it work, I need to add the identify module to the modules that doesn't need login
21:41 < jtanx> also, maybe fields to indicate if logged in or not when ident is called + if logged in, a 'human friendly' name to display for the user
22:34 < jtanx> ok
22:34 < jtanx> it's just about done. It auto redirects you (via javascript) to the login page if you're logged out (and vice versa)
22:34 < jtanx> this can be disabled for debugging purposes by changing mctx.debug=true in mctx.gui.js
22:34 < jtanx> it works quite well, I think
22:35 < jtanx> I still haven't implemented the whole 'friendly name' thing though
22:35 < jtanx> (e.g the 'Welcome Joe Bloggs' with the actual user name or something)
22:40 < jtanx> test at: https://mctx.us.to:8043/test/
22:42 < jtanx> except now there's a logout bug grr...
22:46 < jtanx> fixed
23:32 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Fri Oct 04 2013
14:50 -!- jtanx [~asfa@130.95.54.13] has joined #mctxuwa_softdev
14:50 < jtanx> so i'm in uni right now
14:50 < jtanx> and was playing with the webcam
14:50 < jtanx> If I followed this: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=35689&p=314596
14:51 < jtanx> It actually displays something and not the black image
14:51 < jtanx> the problem is that it only displays maybe the top 5% of the image
14:51 < jtanx> the rest is nothing
14:51 < jtanx> I think the next step from here is to try compiling the latest version of the uvcvideo driver ourselves
14:51 < jtanx> see if it helps
14:59 < jtanx> google 'uvcvideo beaglebone issues'
14:59 < jtanx> I wonder how we didn't see that before
15:00 < jtanx> http://e2e.ti.com/support/arm/sitara_arm/f/791/t/223368.aspx
15:03 < jtanx> so many issues getting the camera to work
15:03 < jtanx> https://groups.google.com/forum/#!msg/beagleboard/sgCwaP5RVUo/aFPBOk02A7IJ
15:04 < jtanx> fwiw I'm not sure we'll be able to support cameras at all, at this rate
15:04 < jtanx> although some seem to have success with UVC video. no idea why
15:08 < jtanx> except I was testing it on angstrom
15:08 < jtanx> when i boot off the sd card, there's no modprobe and no rmmod
15:08 < jtanx> tf
15:08 < jtanx> wtf
15:10 < jtanx> derp
15:10 < jtanx> not root
15:20 < jtanx> well crap, I got it working with ffmpeg
15:20 < jtanx> ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 -vcodec copy o.mjpg
15:21 < jtanx> along with the 'uvcvideo nodrop=1 timeout=5000 quriks=0x80'
15:21 < jtanx> it spits out a bunch of warnings though
15:26 < jtanx> ahh
15:26 < jtanx> if set to rawvideo
15:27 < jtanx> 640x480 is not supported
15:27 < jtanx> it must be that it's such a large resolution that only mjpg is supported
15:27 < jtanx> 320x240 works fine
15:32 < jtanx> ah well
15:32 < jtanx> that's alll for now
15:32 -!- jtanx [~asfa@130.95.54.13] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
16:16 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
21:25 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
22:15 < jtanx> I got user friendly names working
22:15 < jtanx> 'except by user friendly I mean their usernames
22:16 < jtanx> I guess for LDAP we could look up their real name? but I don't know how to do that.
22:19 < sam_moore> I'm not sure how, but it can be done
22:20 < sam_moore> However it's probably a fair amount of work
22:20 < sam_moore> So I'd make it low priority
22:20 < jtanx> yeah ok
22:20 < sam_moore> Afterall, *they* know who they are
22:20 < sam_moore> Good work with the camera
22:20 < sam_moore> I'll be in tomorrow morning I guess
22:20 < sam_moore> Working on another project now
22:21 < jtanx> Yeah, the camera's still not finished though - it's really buggy and I only got it working with ffmpeg and not opencv
22:21 < sam_moore> Anything is progress
22:23 < sam_moore> 0/away
22:24 < sam_moore> Stupid network lag
23:13 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Sat Oct 05 2013
08:41 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
08:44 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has quit [Ping timeout]
11:37 < sam_moore> Hi, I'm at Uni, but we can't access G19
11:38 < sam_moore> I was hoping Rowan, Justin, James or Callum would come in though
11:38 < sam_moore> But I guess I need to do more stuff for CITS3003 anyway
12:18 < jtanx> Sorry, I can't make it today
12:19 < jtanx> Too much crap with my CITS3242 and CITS2232 projects to deal with
12:19 < sam_moore> Ok no problem
13:16 < jtanx> james just posted some layout stuff via email
13:17 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
18:06 < jtanx> now... to do some work on this gui
21:15 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Sun Oct 06 2013
08:52 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
11:17 < jtanx> slight problem: http://i.imgur.com/D28SHaQ.png
11:17 < jtanx> 100% cpu usage on idle
11:18 < jtanx> that memory usage too doesn't look too healthy
11:18 < sam_moore> Damn
11:20 < jtanx> I also probably figured out why valgrind crashes with the --trace-origins option - not enough memory on my system :P
11:30 < jtanx> It's probably because in read data all the cases except one have a sleep in them
11:31 < sam_moore> I'd say so
11:31 < sam_moore> There are like 8 threads
11:31 < sam_moore> We don't need 8 threads
11:39 < sam_moore> Are you in G19?
11:39 < jtanx> no
11:40 < sam_moore> Alright
11:40 < sam_moore> I suppose I should do some work on this
11:40 < sam_moore> CITS3003 is funner though
11:40 < sam_moore> I'll look into the performance issues
11:41 < jtanx> hehe
11:42 < sam_moore> My "Incident" with UWA IS is now Moderate Priority
11:42 < sam_moore> It's been assigned!
11:42 < sam_moore> I suppose I should wait for this guy to email me and say "What the hell are you on about?"
11:42 < sam_moore> (Re: Using Pheme)
11:42 < sam_moore> They classified it as a "Request for service"
11:43 < sam_moore> Which I suppose is true, except they don't really have to do anything
11:43 < jtanx> o.o
11:44 < jtanx> I hope it goes through
11:44 < sam_moore> Yes, no one's going to do a user management system
11:44 < jtanx> Yep
11:44 < sam_moore> When people complain they have nothing to do though...
11:44 < sam_moore> That's like a semester of work right there
12:40 < sam_moore> um... that image you linked
12:40 < sam_moore> That's not actually running on the BeagleBone is it?
12:40 < sam_moore> Because on the BeagleBone
12:40 < sam_moore> It's like 0.7%
12:41 < sam_moore> Actually 0.3% CPU 1.1% memory
12:50 < jtanx> no
12:50 < jtanx> that's because there's a conditional #ifdef
12:50 < jtanx> beaglebone to sleep
12:50 < jtanx> I got that condition around the wrong way
12:50 < jtanx> Initially I thought you wanted to test the absolute maximum sampling rate on the BBB
12:53 < jtanx> I just updated the repo to really remove that pwm array reference
12:54 < jtanx> (about the cpu) It's because of this: https://github.com/szmoore/MCTX3420/blob/master/server/sensor.c#L257
12:55 < jtanx> That ifdef should be removed anyway, just put in an unconditional sleep for 0.1s
12:55 < jtanx> then remove the individual sleeps from each sensor case
13:17 < sam_moore> Sure
13:17 < sam_moore> Light has been shed on the PWM thing
13:18 < sam_moore> They are using some RC circuit which I believe averages out the PWM to give you a constant signal
13:18 < sam_moore> I thought it was some kind of IC that took a PWM input
13:21 < jtanx> oh ok
13:22 < jtanx> yeah that's what I thought too
13:22 < jtanx> so no dac I guess
13:22 < jtanx> (dac ic that is)
13:24 < sam_moore> I have my doubts that electronics will be able to make this custom DAC
13:24 < sam_moore> And of course, no DAC means no Pressure control
13:24 < sam_moore> But oh well
13:24 < jtanx> ^_^
13:24 < jtanx> homebrew DAC
13:25 < jtanx> how will this ever be calibrated
13:26 < sam_moore> We should probably include a calibration routine in software
13:27 < sam_moore> I'm looking a bit more into the RT linux stuff
13:27 < sam_moore> It doesn't look too crazy
13:27 < sam_moore> Our program pretty much looks the same
13:27 < sam_moore> With a function at initialisation to set it's priority and stuff
13:27 < sam_moore> But otherwise, you just use usleep, sleep, pthreads, everything as normal
13:28 < jtanx> ok
13:28 < jtanx> as long as it works on the bbb I guess
13:30 < sam_moore> I think I should port from gettimeofday to clock_gettime too
13:35 < sam_moore> https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO
13:35 < sam_moore> I'll compile us a kernel and see if it works
13:46 -!- Callum [~chatzilla@106-69-25-112.dyn.iinet.net.au] has joined #mctxuwa_softdev
14:09 < sam_moore> Yeah, it looks like RT Linux won't work on the BBB
14:09 < sam_moore> Oh well
14:17 < jtanx> damn
15:34 < Callum> Hey guys, sorry i havent been in touch lately. done a bit of work on dilatometer but its not quite complete. Uploaded what iv done but i got a test i tomorrow i should go study for now
16:29 < jtanx> hahaha
16:30 < jtanx> interactive sbd
16:31 < jtanx> hmm dialatometer
16:45 < jtanx> Justin's idea with the system diagram was pretty good
16:55 < jtanx> test run: https://mctx.us.to:8043/test/
16:55 < jtanx> no links yet
16:55 < jtanx> no descriptions either
16:55 < jtanx> logout when you're done
16:55 < jtanx> no auth so type anything you want in login field
17:24 < Callum> looks pretty good
17:27 -!- Rowan [~Rowan@130.95.133.71] has joined #mctxuwa_softdev
17:44 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has quit ["leaving"]
17:47 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
17:49 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has quit ["again"]
18:12 < jtanx> I stuffed up /etc/fstab and now the root filesystem is readonly :(
18:19 < jtanx> ...and I just wasted time booting off ubuntu 7.04, which doesn't support ext4...
18:30 -!- Callum_ [~chatzilla@106-69-19-128.dyn.iinet.net.au] has joined #mctxuwa_softdev
18:42 -!- Callum [~chatzilla@106-69-25-112.dyn.iinet.net.au] has quit [Ping timeout]
18:43 -!- Callum_ is now known as Callum
18:52 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
19:30 < jtanx> I've just enabled personal webspace for everyone
19:30 < jtanx> check your emails for details
19:35 -!- Callum [~chatzilla@106-69-19-128.dyn.iinet.net.au] has quit [EOF From client]
19:50 -!- Rowan [~Rowan@130.95.133.71] has quit [Ping timeout]
19:52 < jtanx> :(
21:11 < sam_moore> Cool
21:11 < sam_moore> Sorry, I'm trying to finish CITS3003
21:14 -!- Rowan [~Rowan@106-68-70-204.dyn.iinet.net.au] has joined #mctxuwa_softdev
21:25 < jtanx> Yep no problem
21:38 < jtanx> nice: http://cssmenumaker.com
22:09 < jtanx> weird, getting http 500 when trying to access our github repo
23:16 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
23:27 -!- Rowan [~Rowan@106-68-70-204.dyn.iinet.net.au] has quit [EOF From client]
--- Day changed Mon Oct 07 2013
10:44 -!- Rowan [~Rowan@130.95.117.19] has joined #mctxuwa_softdev
12:45 -!- callum [~chatzilla@130.95.91.11] has joined #mctxuwa_softdev
12:47 < callum> you guys in g19?
14:46 -!- callum [~chatzilla@130.95.91.11] has quit [Ping timeout]
14:55 -!- callum [~chatzilla@130.95.54.13] has joined #mctxuwa_softdev
14:59 -!- Rowan [~Rowan@130.95.117.19] has quit [Ping timeout]
16:11 -!- callum [~chatzilla@130.95.54.13] has quit [Ping timeout]
18:22 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
18:44 < jtanx> ha, you can clone a wiki
18:45 < jtanx> git clone https://github.com/szmoore/MCTX3420.wiki.git
20:50 < sam_moore> Yeah, I know
20:51 < sam_moore> I don't really think it's great to be relying on the BeagleBone to serve all these additional requirements
20:51 < jtanx> Yeah, probably not
20:52 < jtanx> I've just been playing around with django for my CITS2232 project
20:52 < jtanx> it's like a python based cms
20:53 < sam_moore> That might work
20:53 < jtanx> It's actually not too bad
20:53 < jtanx> but incredibly annoying to learn how to use
20:53 < jtanx> it's got its own inbuilt user system
20:54 < sam_moore> How could we query it from our server though?
20:54 < jtanx> as in?
20:54 < jtanx> you can still query directly from the browser
20:54 < jtanx> from django itself
20:54 < jtanx> I'm definitely sure there's a json parsing library
20:55 < jtanx> (python at least should have one)
20:56 < sam_moore> As in, if we want to "login"
20:56 < sam_moore> How do we authenticate?
20:57 < sam_moore> From within the FastCGI process
20:57 < jtanx> Okay, there's two approaches I guess
20:58 < jtanx> if you want to continue to use fastcgi to login I guess you could get django to figure out
20:58 < jtanx> who's logged in
20:58 < jtanx> If you use django's login system
20:58 < jtanx> hmm
21:00 < jtanx> but one thing I haven't done yet is how do you prevent concurrent access in django
21:01 < jtanx> but say this:
21:01 < sam_moore> I think binding to an LDAP server is pretty standard for this sort of thing
21:01 < sam_moore> I think Django can even let you bind to LDAP for using it
21:01 < jtanx> probably
21:01 < jtanx> I think class2go was built using django
21:01 < jtanx> if you've ever used that crappy website
21:02 < jtanx> say for the fastcgi process we revert to
21:02 < jtanx> /api/control?lock
21:02 < jtanx> /api/control?unlock
21:02 < jtanx> etc
21:02 < jtanx> but /api/control is only visible to django
21:02 < sam_moore> Ah, I see
21:02 < sam_moore> Um...
21:02 < jtanx> then django can query it
21:02 < jtanx> and conditionally return the control key?
21:03 < jtanx> i dunno
21:03 < sam_moore> I'd be slightly nervous about adding additional systems that have to work together though
21:03 < jtanx> yeah
21:03 < jtanx> that's the problem
21:03 < sam_moore> I mean, if it works, it's fine
21:03 < sam_moore> If it breaks, suddenly anyone (or noone) can access the real underlying hardware
21:03 < jtanx> Yeah
21:04 < jtanx> especially if someone screws up the server config
21:04 < sam_moore> I think I'd prefer to stick with the current login handler
21:04 < sam_moore> There's some flexibility with how you actually do the authentication
21:04 < jtanx> Sure
21:06 < jtanx> I'm just thinking, how would we implement the 'admin' features
21:06 < jtanx> you'd then have to have some sort of list distinguishing normal users from admins
21:06 < jtanx> unless you hardcode admins?...
21:07 < sam_moore> With LDAP you can store admin as a user field and check it
21:08 < sam_moore> With /etc/shadow, have 2 files
21:08 < sam_moore> One for admin, one for regular users
21:08 < sam_moore> (When I say /etc/shadow I just mean the style of auth, not necessarily actually using *the* /etc/shadow)
21:08 < sam_moore> In fact
21:09 < sam_moore> We could possibly do a minimalist user management with python cgi and a custom /etc/shadow style file
21:10 < jtanx> say what
21:11 < jtanx> so use the python cgi to modify it
21:11 < sam_moore> Yeah
21:11 < jtanx> our c fastcgi to read
21:11 < sam_moore> Yes
21:11 < jtanx> that could work
21:11 < jtanx> have a look at flask
21:11 < sam_moore> It's also probably possible to easily do a lot of the things Adam wanted
21:12 < jtanx> flask is like the simpler version of django
21:12 < sam_moore> At least, you can get python cgi to send emails to people with a temporary password and ask them to change it
21:12 < jtanx> i think I still have an example too
21:15 < sam_moore> If you want and it doesn't require rewriting large parts of the FastCGI process
21:15 < sam_moore> Personally I don't think I have the time
21:16 < jtanx> well if it's completely separate from the fastcgi process
21:16 < sam_moore> Sure
21:17 < jtanx> hmm
21:18 < sam_moore> Just a simple CGI script might do the job though
21:18 < jtanx> yeah
21:18 < jtanx> except nginx doesn't have normal cgi
21:19 < sam_moore> Wat
21:19 < jtanx> only fastcgi
21:19 < sam_moore> Damn
21:19 < sam_moore> And I guess apache2 only has normal cgi and not fastcgi?
21:19 < jtanx> there may be mod_fastcgi
21:19 < jtanx> but
21:19 < jtanx> before we get ahead of ourselves
21:20 < jtanx> okay no, nginx doesn't have fastcgi
21:20 < jtanx> sorry cgi*
21:20 < jtanx> we could do it in php
21:21 < jtanx> urgh
21:21 < sam_moore> urgh indeed...
21:21 < sam_moore> I dunno
21:22 < sam_moore> We *did* tell Adam that we wouldn
21:22 < sam_moore> 't be able to do the user management system
21:22 < jtanx> haha
21:23 < sam_moore> I really think getting our program to interface with an LDAP server is reasonable
21:23 < jtanx> yeah
21:23 < sam_moore> Ok, I need to fix CITS3003 some more
22:46 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
22:53 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
22:53 < jtanx> brainspark: we can probably use django to proxy api requests
22:53 < jtanx> so it goes like this: user <-> django <-> server api
22:54 < jtanx> then you don't even have to expose the server api at all
22:54 < jtanx> although if I ever end up trying this I don't know
22:55 < jtanx> (by expose I mean that django can conditionally pass on the results from queries to the api)
22:55 < jtanx> but yeah, it's probably best to leave it how it is right now
22:55 < jtanx> as I doubt I have the time to implement this
23:10 < jtanx> it would definitely add overhead too
23:40 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Tue Oct 08 2013
18:01 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
19:37 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has quit [Ping timeout]
21:16 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Wed Oct 09 2013
08:29 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
09:20 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit [Ping timeout]
09:54 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
10:52 -!- jtanx [~asfa@130.95.133.152] has joined #mctxuwa_softdev
10:55 -!- jtanx_ [~asfa@130.95.54.13] has joined #mctxuwa_softdev
10:56 < jtanx_> welp the usb microscope arrived
10:56 < jtanx_> it uses uvcvideo too
11:07 -!- jtanx [~asfa@130.95.133.152] has quit [Connection reset by peer]
12:00 < jtanx_> shit, we have to coordinate one report across the whole cohort
12:02 < sam_moore> Yeah, shit
12:03 < sam_moore> This unit has not been run very well
12:03 < sam_moore> Except the tutorials
12:06 < sam_moore> If I still cared I
12:06 < sam_moore> d try and take charge of putting the report together
12:07 < sam_moore> But I know that if no one else does it we'll all pass anyway since you can't fail an entire class
12:07 < sam_moore> So terrible
12:07 < sam_moore> We should just start writing a chapter on the software
12:09 < sam_moore> I wonder if we could use the wiki format and export it as a pdf somehow
12:11 < sam_moore> https://github.com/szmoore/MCTX3420/wiki/Hardware:-Pneumatics
12:11 < sam_moore> Hilarious
12:41 < jtanx_> ~.~
12:41 < jtanx_> our final report will be the wiki!
12:42 < jtanx_> made some progress on the camera
12:42 < jtanx_> lowering the resolution to 352x288
12:42 < jtanx_> and it will work with openc
12:42 < jtanx_> opencv
12:42 < jtanx_> ffmpeg's fine with 640x480 though
12:42 < jtanx_> opencv just sucks
12:57 < jtanx_> good 'ol stream.html
13:05 < jtanx_> those fatal checks in sensor.c are bad
13:05 < jtanx_> because half the time adc reads will fail and the whole program just crashes
13:07 < jtanx_> oh right I saw your email, nevermind
13:08 < jtanx_> I'm not getting the warnings that you're seeing either
13:12 < sam_moore> Yeah, those warnings were actually on my laptop though, they don't seem to appear on the BeagleBone
13:12 < sam_moore> I'm redoing the sensors code a fair bit
13:12 < sam_moore> You'll probably hate it :P
13:12 < sam_moore> Well, it's not really redoing the structure of how they work
13:13 < sam_moore> Just separating the logic of how sensors get read from all that control loop stuf
13:14 < sam_moore> I'm going to keep with the "one thread per sensor" idea, because that is definitely the simplest
13:16 < sam_moore> Did you tell Omid that they shouldn't assume anything about the state of the GPIO pins before the software starts?
13:16 < sam_moore> Which means that if (unlikely, but I don't know what they're doing) having two pins on at once would cause a catastrophic failure...
13:16 < sam_moore> By murphy's law, it will almost certainly happen
13:33 -!- jtanx_ [~asfa@130.95.54.13] has quit [Ping timeout]
13:59 -!- jtanx [~asfa@130.95.121.247] has joined #mctxuwa_softdev
13:59 -!- jtanx [~asfa@130.95.121.247] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
14:51 -!- jtanx [~asfa@130.95.248.194] has joined #mctxuwa_softdev
14:52 < jtanx> oh yah, somehow electronics ordered a non-powered usb hub
14:52 < jtanx> I'm pretty sure we told them to get a powered usb hub...
14:57 < sam_moore> Yep, and I remember them saying that is what they were going to get
14:57 < sam_moore> Dammit, I'm stuck trying to pick the best name for something -_-
14:57 < sam_moore> The worst place to be stuck
15:19 < jtanx> ??
15:19 < jtanx> thesaurus.com
15:23 < sam_moore> Hahaha
15:23 < sam_moore> I decided the thing didn't really need to exist
15:23 < sam_moore> Problem solved
15:24 < sam_moore> If someone who knows absolutely nothing about programming tries to add sensors to our program they will still be confused
15:24 < jtanx> Hahaha
15:24 < sam_moore> But I hope I've made it easier for someone who knows what they're doing
15:24 < jtanx> Okay
15:24 < jtanx> what were the compiler warnings that you got
15:25 < sam_moore> pin_test.c:41:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
15:25 < sam_moore> pin_test.c:48:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
15:25 < sam_moore> More on lines 54, 128, 190,204
15:25 < jtanx> weird
15:25 < jtanx> I never saw any of those
15:25 < sam_moore> Also I think the code I just wrote for the Strain sensors gives some as well
15:25 < sam_moore> Yes, it does
15:26 < jtanx> did you change GPIO_Export to use int type
15:26 < jtanx> wait
15:26 < jtanx> what am I saying
15:26 < sam_moore> It already uses int type?
15:26 < sam_moore> But it's something like that
15:26 < sam_moore> It looks like you're using unsigned char for something
15:27 < sam_moore> int gpio_num = Strain_To_GPIO(id);
15:27 < sam_moore> GPIO_Export(gpio_num);
15:27 < sam_moore> Is the sort of thing that causes the warning
15:27 < sam_moore> But I have "bool GPIO_Export(int pin)" in bbb_pin.c
15:27 < jtanx> oh right
15:27 < sam_moore> So it makes no sense
15:28 < jtanx> hmm
15:29 < sam_moore> Ooh
15:29 < sam_moore> It must be something to do with the "stub" functions
15:29 < jtanx> Is this on compilation on the BBB
15:29 < sam_moore> No, BBB was fine last time I checked
15:29 < jtanx> okay,w ell I'm not getting any warnings
15:29 < sam_moore> Compiling on my laptop because it's faster
15:30 < sam_moore> #define GPIO_Export(pin) True_Stub((void*)pin)
15:30 < sam_moore> That means the int is getting cast to a void*
15:30 < jtanx> yeah on my computer it's not putting out any warnings
15:30 < jtanx> int to void* is fine
15:30 < jtanx> anything to void* is fine
15:30 < jtanx> actually
15:30 < jtanx> is your system 64 bit
15:30 < sam_moore> 64 bit
15:31 < jtanx> yeah
15:31 < sam_moore> (You still have 32 bit :P)
15:31 < jtanx> well that would explain it
15:31 < sam_moore> Ok, it doesn't matter
15:31 < sam_moore> The stub function doesn't actually do anything with the value
15:31 < jtanx> cast int to int64 or whatever it is
15:32 < sam_moore> That would cause warnings on the BBB though?
15:32 < jtanx> only for the stub functions
15:32 < jtanx> and only for 64 bit
15:32 < jtanx> more ifdefs, yay
15:32 < sam_moore> ...
15:32 < jtanx> or we could get rid of the stubs
15:32 < sam_moore> I'm just going to ignore the warnings
15:32 < sam_moore> That could also work
15:32 < sam_moore> It doesn't really matter
15:32 < jtanx> and just do Wno-unsued-function or someting
15:32 < jtanx> yeah, oh well
15:35 < jtanx> One of the suggestions for the dilatometer was to just take a photo at the start and at the end
15:35 < jtanx> then do comparison
15:35 < sam_moore> Um, ok
15:35 < sam_moore> If they just want 2 data points
15:35 < jtanx> well
15:35 < jtanx> if we can find something other than opencv
15:36 < sam_moore> Ah
15:36 < sam_moore> How slow is it?
15:36 < jtanx> that may help, because right now opencv only plays nice with 352x288 or some other crap resolution
15:36 < jtanx> it's not that it's slow
15:36 < jtanx> is that it only works if the resolution is ~ 350 pixels x 2xx pixels
15:37 < jtanx> ffmpeg is fine with 640x480 afaik
15:37 < jtanx> it could probably do higher but haven't tested that
15:38 < sam_moore> http://libccv.org/
15:38 < sam_moore> Maybe
15:39 < jtanx> or what if we framegrabbed with some external softare
15:39 < jtanx> then used opencv to process the saved image
15:39 < sam_moore> Yes, I was about to suggest that
15:39 < sam_moore> I'm assuming the problem with OpenCV is that it doesn't like taking images from cameras directly of that resolution
15:39 < sam_moore> And not some underlying problem with having large CvMats or something
15:40 < jtanx> no idea why
15:40 < jtanx> some obscure setting can probably fix it or something
15:40 < jtanx> but I'm not about to trawl though opencv documentaiton now
15:40 < sam_moore> Actually OpenCV works with my 640x480 webcam, so it's probably some low level arm specific problem
15:40 < sam_moore> Which would probably mean that other image processing libraries would also suck
15:40 < jtanx> it may be that too
15:41 < jtanx> I know that with ffmpeg it was spitting warnings at 640x480
15:41 < jtanx> like non-monotonically increasing timestamp
15:41 < jtanx> and some other crap
15:41 < jtanx> I was running guvcview though
15:42 < jtanx> and it seemed to take 640x480 just fine
15:42 < jtanx> it was quite slow with x-forwarding and all, but at least it worked
15:44 < sam_moore> Hmm
15:44 < sam_moore> I would be inclined to say that taking a bunch of data points at low resolution is probably more useful than taking 2 data points at high resolution
15:45 < sam_moore> The best solution is to find some way of reading at the higher resolution though
15:46 < sam_moore> ... I'm worried about what Kieran is going to produce if he writes this dilatometer algorithm
15:46 < sam_moore> It's going to return an array isn't it...
15:46 < sam_moore> I have no idea why
15:47 < jtanx> :3
15:47 < jtanx> brb ~5 mins while I relocate to a lecture theatre
15:47 < sam_moore> Ok
15:47 -!- jtanx [~asfa@130.95.248.194] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
15:54 -!- jtanx [~asfa@130.95.248.194] has joined #mctxuwa_softdev
16:13 < sam_moore> Ok, this is both terrible and awesome
16:13 < sam_moore> But I've written a test "sensor" that is essentially just an external program
16:17 < sam_moore> So... if anyone complains about not being able to use python... they can use python
16:17 < sam_moore> And they don't have to reinvent all of our FastCGI stuff
16:17 < sam_moore> Although apparently that's easy in python anyway
16:17 < sam_moore> It's the thought that counts
16:21 < jtanx> :P
16:21 < jtanx> flup
16:30 < jtanx> http://zacharyvoase.com/2009/09/08/sendfile/
16:30 < jtanx> this could be interesting
16:31 < jtanx> replace static with our fastcgi app
16:31 < jtanx> http://wiki.nginx.org/XSendfile
17:00 -!- jtanx [~asfa@130.95.248.194] has quit [Ping timeout]
17:52 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
18:07 < jtanx> mmm feature creep
18:08 < sam_moore> Meh, it was better than dealing with that switch statement
18:09 < jtanx> yeah
18:09 < sam_moore> Also it made it really easy to decide where to put mutexes
18:10 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has quit [Ping timeout]
18:10 < sam_moore> Given that I would have had to write a "strain.c" and do about the same amount of work anyway, I think the solution is a good one
18:10 < jtanx> it kind o makes sense though
18:11 < jtanx> you can't particularly generalise that much to each sensor type
18:11 < jtanx> so it makes sense to separate out based on what type of sensor it is
18:11 < sam_moore> Yes
18:11 < sam_moore> The Piped sensor is definitely feature creep though :P
18:12 < jtanx> ^-^
18:12 < sam_moore> Although...
18:13 < sam_moore> If we wanted to distribute the sensors with a "master slave" system
18:13 < sam_moore> The code would end up looking alot like that
18:13 < sam_moore> Except with a network socket instead of a unix domain socket
18:14 < sam_moore> Also I'm not sure why I called it piped given that it doesn't use a pipe
18:14 < sam_moore> I suppose it sounds cooler than "uds"
18:20 < jtanx> So with electronics
18:20 < jtanx> the reason why they were having issues with getting the psu approved
18:20 < jtanx> was because they wanted to cut the leads and solder directly to the board
18:21 < jtanx> Oliver suggested that they use extension connectors
18:21 < jtanx> and cut the lead on the extension
18:21 < jtanx> but why they didn't think of that first, I don't know
18:37 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
18:45 < jtanx> now to watch this week's lecture...
21:31 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Thu Oct 10 2013
08:11 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
09:40 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
13:30 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
23:04 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Fri Oct 11 2013
08:21 -!- Rowan [~Rowan@130.95.129.225] has joined #mctxuwa_softdev
08:42 -!- Rowan [~Rowan@130.95.129.225] has quit [EOF From client]
09:19 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
09:59 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
15:09 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
15:10 < jtanx> urgh
15:10 < jtanx> burning the midnight oil trying to get my cits2232 project done
15:10 < jtanx> but
15:10 < jtanx> it has taught me a lot about django
15:10 < jtanx> which may be of use, especially for the whole admin stuff
15:11 < jtanx> one possibility is that we have two separate 'logins'
15:11 < jtanx> one gains you access to the site
15:11 < jtanx> one gains control over the bbb (eg the server api)
15:12 < jtanx> what you could do is keep the 'bind' functionality for the api, but make it check against the django user database for credentials
15:12 < jtanx> I'll look into it, if not today then probably tomorrow
19:39 < sam_moore> That sounds good
19:48 < sam_moore> Should we do something like this: http://stackoverflow.com/questions/8988855/include-another-html-file-in-a-html-file (The accepted answer) to do with our sidebar/menu stuff
19:48 < sam_moore> Although...
19:48 < jtanx> well
19:48 < jtanx> if we use django it has really cool templating stuff
19:48 < sam_moore> That solution is actually about as much as just copy/pasting the sidebar at the moment
19:48 < jtanx> yeah
19:49 < sam_moore> So Django does parts of our GUI as well as the user management system?
19:49 < jtanx> Well yeah
19:49 < jtanx> so django would be ui mostly
19:49 < jtanx> then tack on to that our api
19:49 < jtanx> which remains exactly the same
19:49 < jtanx> except that it uses the django database for checking authorizaiton
19:50 < jtanx> so right before you commence an experiment, you try to 'gain control' of the bbb, you resupply your login creds
19:50 < sam_moore> Sure, that's a good solution, I thought django would just do user management though (rather than replace the JavaScript GUI)
19:50 < jtanx> well if you do use django
19:50 < jtanx> it's a good idea to change some of it, because of the templating system
19:51 < jtanx> and that it can conditionally show content
19:51 < sam_moore> Ok
19:51 < jtanx> some of the javascript stuff will stay though, definitely
19:51 < jtanx> especially all the live update stuff
19:51 < jtanx> but this is getting ahead of myself, because i'm not even sure if this will work
19:51 < sam_moore> Hahaha
19:52 < sam_moore> You're entering a territory where I can't help much
19:52 < jtanx> yeah, well all of this 'web development' is new area for me too :P
19:52 < jtanx> I'm supposed to be majoring in computation, not web tech...
19:52 < sam_moore> You know more/better jQuery than me
19:52 < jtanx> jquery is pretty easy to learn though
19:53 < jtanx> i picked it up completely from this project
19:53 < sam_moore> Well, that's one reason why we went with it, since I used it briefly for something and it wasn't too hard, and James said he'd used it before too
19:54 < jtanx> Yeah
19:54 < sam_moore> If you want to replace stuff with django, I'm ok with that, if it's simpler
19:55 < jtanx> I'll see how it goes, hopefully it shouldn't be too hard to setup
19:55 < sam_moore> It just seems silly to copy/paste this Navigation Menu into every file
19:55 < jtanx> yep
19:55 < sam_moore> But copy/pasting the code (stack overflow) to automatically make it is also annoying
19:55 < jtanx> We can roll with the jquery soln if I don't get this working
19:56 < sam_moore> Unless you could include that in the "runBeforeLoad()" ?
19:56 < jtanx> can't you just have a placeholder
19:56 < jtanx> and on document load, you load it?
19:56 < sam_moore> Yeah
19:56 < jtanx> It'll look a bit crap because you'll see it before the sidebar loads
19:56 < sam_moore> Actually that's how you're doing other things
19:56 < jtanx> yeah
19:56 < sam_moore> But the navigation menu is hard coded html
19:56 < sam_moore> I'm just reading the existing code :P
19:56 < jtanx> haha
19:57 < jtanx> yeah it's hardcoded - it's the easiest solution
19:57 < jtanx> I've got my case study for 2402 this/next week too
19:57 < sam_moore> Um... I think it's fairly easy to call load from a file
19:57 < sam_moore> I'll look into that
19:57 < jtanx> ok
19:58 < sam_moore> The case study was reasonable, although he wanted a lot more detail from us
19:58 < jtanx> what did you do?
19:58 < sam_moore> Despite struggling to cram it into 4 pages
19:58 < sam_moore> The pencil
19:58 < sam_moore> That's a good one
19:58 < jtanx> ah
19:58 < sam_moore> Lots of youtube videos
19:58 < jtanx> we're doing pet bottles
19:58 < jtanx> there's this megafactories one on the coke plant which was prettyc ool
19:58 < jtanx> but yeah the pencil one also has a lot
19:58 < jtanx> i think i saw the how its made one
19:59 < jtanx> Ha
19:59 < jtanx> http://wiki.nginx.org/HttpSsiModule
19:59 < jtanx> if you want to get server specific
19:59 < jtanx> you can do ssi
19:59 < jtanx> let's not do that if possible :P
20:00 < sam_moore> Wait...
20:00 < sam_moore> It looks like you put html comments and they get sent to the server?
20:00 < sam_moore> How is that a thing?
20:00 < jtanx>
20:00 < jtanx> nah what happens
20:00 < jtanx> is the server reads the html file
20:00 < jtanx> and where there's special placeholders
20:00 < jtanx> it does stuff
20:00 < sam_moore> Ah
20:01 < sam_moore> No, do it client side
20:01 < jtanx> yeah
20:01 < sam_moore> There's like jQuery.load
20:01 < sam_moore> I'd probably keep django for user auth to start with
20:01 < sam_moore> But I think jQuery should be sufficient for the GUI
20:02 < jtanx> I think if you roll with django
20:02 < jtanx> you should use jQuery for all the interactive stuff
20:02 < jtanx> (which you'd have to anyway)
20:02 < jtanx> but you should use the templating system that django's got
20:03 < sam_moore> Ok, what does django give you exactly then, I'm not quite sure what the "template" stuff is, I assume it's nothing like a C++ template
20:03 < jtanx> OK
20:03 < jtanx> hmm
20:03 < jtanx> I'll give you access to my cits2232 repo temporarily
20:03 < jtanx> so you can see
20:03 < sam_moore> If it lets you easily include bits of html that's cool, but jQuery looks to be able to do that easily as well
20:03 < sam_moore> Alright
20:04 < jtanx> actually you know what
20:04 < jtanx> i'll just post it on pastebin or something
20:05 < jtanx> http://privatepaste.com/ec22ba7238
20:05 < jtanx> That's the base template
20:05 < jtanx> http://privatepaste.com/07499e4a19
20:05 < jtanx> That's the index
20:05 < jtanx> {{variable_name}} will display a variable name
20:05 < jtanx> sorry, the contents of that variable
20:06 < jtanx> {% %} blocks are for control
20:06 < sam_moore> Hmm
20:07 < jtanx> the base template got a bit out of hand for that project
20:07 < sam_moore> Well, if you want to use something like that I'm ok with it
20:07 < sam_moore> Although I think the thing that I was originally complaining about can be solved in jQuery :P
20:08 < jtanx> yeah
20:08 < sam_moore> But you should probably ask everyone else involved with the GUI for input too
20:08 < jtanx> Yeah, good point
20:09 < sam_moore> ... Really I didn't want to be involved with the GUI, but I kind of need to mess around with at least some basic graph stuff to work out if I need to change the server sensors/actuators api
20:09 < jtanx> well let's just say that i did not envision doing the gui either
20:09 < sam_moore> I'll try and keep what I do consistent with the overall style though
20:09 < sam_moore> Which is how I got sidetracked complaining about copy/pasting things :P
20:10 < sam_moore> I think the GUI we have so far is pretty good
20:10 < jtanx> hehehe
20:10 < jtanx> yeah it's not too bad
20:11 < jtanx> the only thing that I wouldn't know how to do is that admin stuff
20:11 < sam_moore> user admin or experiment admin?
20:11 < jtanx> um
20:11 < jtanx> I dunno, whatever that 'admin' functionality needs to be
20:11 < jtanx> like 'access the full logs'
20:11 < sam_moore> Oh, right
20:12 < jtanx> unless you start implementing permissions in the api
20:12 < sam_moore> Hmm, we might have to
20:13 < sam_moore> It should just be an enum for the user type that gets returned/set by the authentication handler and checked for certain operations
20:13 < sam_moore> But as you mentioned the other day, you don't want someone to be able to login after someone else has started an experiment and cancel it
20:13 < sam_moore> Actually
20:13 < sam_moore> Do you?
20:13 < jtanx> admin only?
20:13 < sam_moore> Exactly
20:14 < jtanx> how difficult is that to do though
20:14 < sam_moore> Store the username of who owns the current experiment
20:14 < sam_moore> Store an enum of the user type of whoever is currently logged in
20:14 < sam_moore> If someone tries to stop the experiment, unless their username matches, or they are an admin, refuse
20:14 < sam_moore> There could be a safety issue there?
20:15 < jtanx> the only thing is
20:15 < sam_moore> If someone needs to stop the experiment but isn't an admin?
20:15 < jtanx> everything's based off the control key
20:15 < sam_moore> Meh... add another cookie
20:15 < sam_moore> ... That escalated quickly
20:15 < jtanx> you've already used the nameless cookie
20:15 < jtanx> if you add another cookie
20:15 < jtanx> you have to do string parsing
20:15 < jtanx> and have named cookies
20:16 < sam_moore> Hmmm
20:16 < sam_moore> "Beyond the scope of the project" ?
20:16 < jtanx> i think the format was
20:16 < jtanx> key=value; key=value2
20:16 < jtanx> yeah, beyond the scope :P
20:16 < sam_moore> Yeah, that is ever so annoying
20:16 < jtanx> let's leave it for now
20:16 < jtanx> come back to it
20:16 < sam_moore> Because if it were something like "key=value&key=value2" you could potentially reuse the FCGI parser
20:17 < jtanx> yeah
20:17 < jtanx> you could modify it
20:17 < sam_moore> That would be the way to go
20:17 < jtanx> generalise it
20:17 < sam_moore> But it's low priority now
20:17 < jtanx> yep
20:17 < jtanx> wow i'm getting seriously sidetracked
20:18 < jtanx> this mechatronics project is more interesting than any of my other projects though
20:18 < sam_moore> Haha
20:19 < sam_moore> I know what you mean
20:19 < sam_moore> I want to compile a RT linux kernel on my laptop (since they have x86 versions)
20:19 < sam_moore> So that I can look at how much the consistency in sample rate could theoretically improve...
20:20 < sam_moore> If someone managed to port the RT linux kernel to the BeagleBone
20:20 < jtanx> RT linux on your computer
20:20 < jtanx> isn't that generally bad
20:20 < jtanx> because RT screws up other stuff
20:21 < sam_moore> Like what?
20:21 < jtanx> decreased performance to meet the deadlines
20:21 < sam_moore> Also, I don't have to permanently replace my existing kernel, just add another bootloader entry
20:22 < sam_moore> If it screws up nginx that would be annoying though
20:23 < jtanx> while you're at it, try running the bfs scheduler instead of the cfs scheduler :P
20:23 < sam_moore> Maybe
20:42 < sam_moore> Ok, the solution to the copy/paste is just something like $("#sidebar").load("static/sidebar.html")
20:42 < sam_moore> However, whilst running this in the document.ready function on a test page works, running it in index.html appears to have no effect
20:43 < sam_moore> Oh
20:43 < sam_moore> I know why
20:43 < sam_moore> Because runBeforeLoad is failing
20:43 < sam_moore> Presumably you still want to load content like the navigation bar even if the server isn't running
20:44 < sam_moore> So... there is ".done()" and ".fail()" ... is there ".either()"?
20:46 < sam_moore> Ahahaha
20:47 < sam_moore> Of course, there is ".always()"
20:49 < sam_moore> Hmm, I wouldn't want to design any sort of large system with a language like this, but it is an interesting style
20:51 < jtanx> haha
20:52 < sam_moore> So, a lot of the header stuff can be moved into .html files and just jQuery.loaded, which should make things cleaner
20:52 < sam_moore> I will refrain from doing that now though
20:53 < jtanx> don't be too tempted to do a lot of templating with javascript
20:53 < jtanx> because it will load asynchronously, stuff will look weird
20:53 < jtanx> and if the js breaks
20:53 < jtanx> well, your page is more screwed than before
20:54 < sam_moore> Ok... but you could still potentially have at least one html file in the static directory
20:54 < sam_moore> With all the header and navigation stuff
20:55 < sam_moore> Just have a .fail() function!
20:55 < sam_moore> That's what it's for, right :P
20:56 < sam_moore> $("#thing").load("static/thing.html").fail($("#thing").html(" Something fucked up
")
20:56 < sam_moore> Oh dear
20:58 < jtanx> ~.~
20:58 < jtanx> django here: https://mctx.us.to:8043/databases
20:58 < jtanx> login with testuser:testuser
20:58 < jtanx> ignore that it looks a lot like our gui
20:58 < jtanx> except it doesnt work anymore
21:00 < sam_moore> Well, django's used for UCC for member administration
21:01 < sam_moore> Except it's entirely seperate from LDAP which we use for authentication
21:01 < sam_moore> Except it's not really because it binds to LDAP for authentication :S
21:01 < sam_moore> Wheels within wheels...
21:02 < jtanx> ookay
21:04 < sam_moore> You need LDAP for shell access
21:04 < sam_moore> In fact...
21:04 < sam_moore> We could potentially give pheme users shell access to the BeagleBone
21:04 < sam_moore> But there's not really any point
21:04 < jtanx> is that a good idea
21:05 < sam_moore> No
21:05 < sam_moore> It's an awful idea
21:05 < sam_moore> Just saying it's possible :P
21:06 < sam_moore> Someone could do this: :(){ :|:& };:
21:06 < sam_moore> And break the entire thing
21:08 < jtanx> is that the fork bomb
21:09 < jtanx> ok the site works now
21:09 < jtanx> sort of
21:10 < sam_moore> 400 Bad Request
21:10 < jtanx> hurr
21:10 < sam_moore> I think iceweasel is being dumb and ignoring https:// ?
21:10 < sam_moore> Although it was fine before
21:11 < jtanx> nah probably screwed up the nginx config
21:11 < sam_moore> No, it works, I just had to type the https:// instead of copy paste
21:11 < sam_moore> Wierd
21:11 < sam_moore> The test login doesn't work though
21:11 < jtanx> testuser doesn't work for some reason
21:11 < jtanx> yeah just register
21:12 < sam_moore> Will it actually send an email?
21:12 < jtanx> urgh
21:12 < jtanx> no
21:12 < sam_moore> haha
21:12 < jtanx> okay no the config is still broken
21:16 < sam_moore> I'll have to come back to this tomorrow
21:16 < sam_moore> Bye
21:17 < jtanx> ok bye
23:09 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Sat Oct 12 2013
10:20 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has joined #mctxuwa_softdev
13:49 -!- jtanx_ [~asfa@124-169-73-222.dyn.iinet.net.au] has joined #mctxuwa_softdev
13:49 -!- MctxBot_ [~twang@124-169-73-222.dyn.iinet.net.au] has joined #mctxuwa_softdev
14:03 -!- jtanx [~asfa@106-68-47-96.dyn.iinet.net.au] has quit [Ping timeout]
14:05 -!- MctxBot [~twang@106-68-47-96.dyn.iinet.net.au] has quit [Ping timeout]
14:34 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
14:39 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
14:46 -!- jtanx_ [~asfa@124-169-73-222.dyn.iinet.net.au] has quit [Ping timeout]
14:47 -!- MctxBot_ [~twang@124-169-73-222.dyn.iinet.net.au] has quit [Ping timeout]
--- Log closed Sat Oct 12 17:39:23 2013
--- Log opened Sat Oct 12 22:41:38 2013
22:41 -!- matches [matches@motsugo.ucc.gu.uwa.edu.au] has joined #mctxuwa_softdev
22:41 -!- Irssi: #mctxuwa_softdev: Total of 2 nicks [0 ops, 0 halfops, 0 voices, 2 normal]
22:41 -!- Irssi: Join to #mctxuwa_softdev was synced in 2 secs
22:41 -!- You're now known as sam_moore
--- Day changed Sun Oct 13 2013
08:30 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
10:18 < jtanx> yeah, about the django stuff, I'm not sure if we should do that now
10:18 < jtanx> two options I considered:
10:19 < jtanx> if you kept the 'bind' module, but added a method to authenticate against the django database, that could work, but it's a lot of effort
10:19 < jtanx> - there's two ways - one is to manually do it via interaction with the sqlite database and parsing the user string etc etc
10:20 < jtanx> the other way is to call the python function from c
10:20 < jtanx> I explored the 'call python from c' option and it does work, but it's quite cumbersome
10:20 < jtanx> I didn't bother exploring the 'manual interaction with sqlite' because that would be even more cumbersome
10:21 < jtanx> The other way, which I got working quite easily
10:21 < jtanx> is to protect one of the modules with nginx
10:21 < jtanx> say /api/control now becomes an 'internal' only module
10:21 < jtanx> so it's not usually accessible from outside
10:22 < jtanx> with django, say you got the address /databases/control
10:23 < jtanx> it can send back a request with header 'X-Accel-Redirect' to /api/control
10:23 < jtanx> Because it was sent by django, which is an internal application, it works
10:23 < jtanx> such that /databases/control looks like /api/control to the user
10:24 < jtanx> the problem with this setup is that then your api becomes entirely dependent on django to work
10:24 < jtanx> I guess you could replace 'django' with any other authrorization frontend
10:31 < jtanx> let's just stick with what we've got
10:36 < jtanx> hahahaha and that x-accel-redirect just crashed my server after I held down f5
10:36 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has quit [Connection reset by peer]
10:39 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
19:19 < jtanx> I think I'll try to get in early tomorrow to work on whatever needs to be done
19:56 < jtanx> For the actuators, do you really want it to crash (Fatal) if the user supplies a step say of 0,1,40000,2?
21:19 < jtanx> working on the graphs now
23:29 < jtanx> ookay
23:29 < jtanx> too tired to check, but I refactored it and I think it still works
23:30 < jtanx> I'll just leave it in my fork for now
23:30 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has quit ["bye"]
--- Day changed Mon Oct 14 2013
10:03 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
10:03 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
19:15 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
19:19 < jtanx> this is stupi
19:19 < jtanx> d
19:19 < jtanx> flot is still the easiest to use
19:20 < jtanx> chart.js can only plot a line chart, so all the data series must share the same x-axis points
19:20 < jtanx> jqplot sucks
19:21 < jtanx> oh well, I'll work on this some other time
19:21 < jtanx> stick with flot for now
19:40 < sam_moore> Re actuators: No, Fatal is probably not the correct response to an invalid user input :P
19:40 < sam_moore> Re just using flot: OK
19:43 < sam_moore> I think we need to do a grep -R "Fatal" and get rid of the ones that don't actually need to be Fatal
19:43 < sam_moore> Which is probably most of them
19:44 < sam_moore> Working on more useful user based control now
19:45 < jtanx> ok
19:46 < jtanx> I wonder if it's possible to selectively colour text in a textarea with javascript
19:47 < sam_moore> Probably?
19:47 < jtanx> I have a feeling that you'd have to surround those ones in blocks
19:48 < sam_moore> Hmm, but that would make them all on new paragraphs
19:48 < jtanx> fine, s
19:48 < sam_moore> That makes sense
19:48 < jtanx> but you'd probably need to surround highlighted text in some sort of <> block
19:48 < jtanx> so you can style it
19:48 < sam_moore> Makes sense
19:48 < sam_moore> What are you going to colourise?
19:49 < jtanx> say if there's a fatal message
19:49 < jtanx> you colour it red?
19:49 < jtanx> make it blink, 90s style
19:52 < sam_moore> Hahaha
19:52 < sam_moore> Sounds good
19:53 < sam_moore> Colourising the labels for the graph might be useful too
19:53 < sam_moore> (Possibly easier than adding labels to the flot plot?)
19:53 < jtanx> hmm
19:54 < jtanx> what I was thinking of doing was to use nvd3, which generates the graphs using the svg element instead of a canvas
19:54 < jtanx> then you can use something like http://code.google.com/p/canvg/ to render the svg in js to a png file
19:55 < sam_moore> Interesting
19:55 < jtanx> no idea if it will work
19:56 < sam_moore> Do you even have to render it to png? SVG is a good format for graphs
19:56 < jtanx> i mean if you want to save it
19:56 < jtanx> i dunno, most users will go
19:56 < jtanx> what's this svg format
19:56 < sam_moore> That's what I mean; can you save it as an svg?
19:56 < sam_moore> Hahaha
19:56 < jtanx> probably
19:56 < sam_moore> If it were me, I would *want* the svg format
19:56 < sam_moore> You can edit the graph in inkscape
19:57 < sam_moore> Really easily
19:57 < jtanx> yeah
19:57 < jtanx> I'd prefer the svg format too
19:57 < sam_moore> Get SVG working and if you really want, add a radio box to choose the file format
19:57 < jtanx> yep
19:58 < sam_moore> I thought FCGI_LockControl was being called on any user action, but it looks like it's only called in login.c now
19:58 < sam_moore> Is that the change you were talking about earlier?
19:59 < jtanx> nah
19:59 < jtanx> fcgi_lockcontrol should only be called in login.c
19:59 < jtanx> there was this leftover part in control.c
19:59 < sam_moore> Oh, right, nevermind
19:59 < jtanx> that called it too
20:00 < sam_moore> I was thinking of FCGI_HasControl,that's ok
20:00 < jtanx> yeah
20:10 < MctxBot> .
20:12 < sam_moore> ?
20:12 < sam_moore> MctxBot: Have you become sentient yet?
20:12 < jtanx> I was just testing notification on all messages for chatzilla
20:14 < sam_moore> Ok
20:53 < sam_moore> I think the correct way to do this is to store more stuff in the FCGI_Context
20:54 < sam_moore> Like the name of the experiment currently being conducted
20:54 < jtanx> hmm
20:54 < sam_moore> I noticed that control.c avoids storing the actual name of the experiment anywhere
20:54 < sam_moore> But it's late and I'm just going to hack something together
20:55 < jtanx> yeah
20:55 < jtanx> I don't particularly like how 'experiments' were handled in control.c
20:55 < sam_moore> g_control stores the user name of whoever last succeeded in doing an "action=start"
20:55 < sam_moore> I can rework it, but not tonight
20:55 < jtanx> that's fine
21:41 < sam_moore> ==21160== Uninitialised value was created by a stack allocation
21:41 < sam_moore> ==21160== at 0x6A22DBE: __md5_crypt_r (md5-crypt.c:121)
21:41 < sam_moore> :S
21:41 < jtanx> .....
21:41 < sam_moore> Not causing an error, but still
21:41 < jtanx> what does that even mean
21:42 < sam_moore> It's nice to know that the linux crypt functions that are used for parsing /etc/shadow have uninitialised values
21:42 < jtanx> you sure you're calling it correctly
21:42 < jtanx> ?
21:42 < sam_moore> The full text (brace for impact)
21:42 < sam_moore> ==21160== Conditional jump or move depends on uninitialised value(s)
21:42 < sam_moore> ==21160== at 0x6D75188: ??? (strcpy.S:98)
21:42 < sam_moore> ==21160== by 0x6A230E7: __md5_crypt_r (md5-crypt.c:249)
21:42 < sam_moore> ==21160== by 0x40A5F6: Login_Shadow (login.c:93)
21:42 < sam_moore> ==21160== by 0x40AA7B: Login_Handler (login.c:243)
21:42 < sam_moore> ==21160== by 0x404CE3: FCGI_RequestLoop (fastcgi.c:548)
21:42 < sam_moore> ==21160== by 0x4052AE: main (main.c:143)
21:42 < sam_moore> ==21160== Uninitialised value was created by a stack allocation
21:42 < sam_moore> ==21160== at 0x6A22DBE: __md5_crypt_r (md5-crypt.c:121)
21:42 < sam_moore> if (strcmp(crypt(pass, salt), buffer+passwd_index) == 0)
21:43 < sam_moore> Looks like the correct usage to me
21:43 < sam_moore> I mean, it's *working*
21:43 < jtanx> ~.~
21:43 < jtanx> well then
21:44 < sam_moore> It's probably someone being lazy with initialising things
21:44 < jtanx> https://bugzilla.redhat.com/show_bug.cgi?id=760262
21:44 < sam_moore> GCC under linux usually initialises things to zero
21:44 < jtanx> https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=699917
21:44 < sam_moore> But under other things (like Mac OSX) it doesn't; if it's not initialised you can't assume anything
21:45 < jtanx> I thought C standard was any global variables were zeroed
21:45 < jtanx> anything else is undefined
21:45 < sam_moore> Well it's probably not a global variable then
21:45 < sam_moore> But I think you're right
21:45 < sam_moore> I just remember in CITS1210
21:45 < jtanx> from the bug report - 'This is an annoying, but harmless false positive warning.'
21:46 < sam_moore> We had a bunch of variables that weren't initialised
21:46 < sam_moore> gcc under debian/ubuntu was zeroing them for us
21:46 < sam_moore> So things still worked
21:46 < jtanx> yeah
21:46 < sam_moore> Go to the Mac lab...
21:46 < sam_moore> Everything exploded
21:46 < jtanx> hahahaha
21:46 < jtanx> ah... CITS1210
21:46 < jtanx> when did you take it?
21:46 < sam_moore> Aaages ago
21:46 < sam_moore> 2009?
21:47 < jtanx> that was long ago
21:47 < sam_moore> Yes
21:47 < jtanx> 2011 for me
21:47 < sam_moore> We got 100% though :)
21:47 < sam_moore> For the second project
21:47 < jtanx> sweet
21:47 < jtanx> I think I got that too
21:47 < jtanx> they docked marks off the first one for some stupid reason
21:47 < sam_moore> (He had an infinite loop in the sample solution, which we found and eliminated in our solution, I think that was the main reason)
21:48 < jtanx> ook
21:48 < sam_moore> (He probably didn't appreciate the #ifdef BE_REALLY_STUPID // Replicate the behaviour *exactly* as requested by the lecturer)
21:48 < jtanx> :P
21:48 < sam_moore> Good fun
21:49 < jtanx> yeah, one of the comments on mine was 'did not exactly match whitespace of output'
21:49 < sam_moore> Haha, it was pretty harsh with the replicating exactly
21:49 < sam_moore> We had a long debate about whether we should replicate the infinite loop or not
21:49 < sam_moore> I think we actually submitted it with "BE_REALLY_STUPID" defined :S
21:50 < jtanx> hahahaha
22:24 < jtanx> now to look into nvd3
22:36 < sam_moore> I've pushed some progress, I will try and clean it up later this week (it's pretty hacky)
22:36 < jtanx> cool
22:37 < sam_moore> I do like the idea of having svg plots, if it works it will be much nicer than flot
22:37 < jtanx> hopefully
22:37 < jtanx> it doesn't work in ie8 without this compat library
22:37 < sam_moore> Ah
22:37 < jtanx> and with compat it'll probably be slow
22:37 < jtanx> but oh well
22:38 < sam_moore> Fallback to flot if browser is ie8? :P
22:38 < jtanx> yeah
22:38 < jtanx> maybe
22:38 < jtanx> that could work
22:39 < sam_moore> I'm pretty sure it's within our rights to say "You need to use one of these browsers" since it's so easy to install browsers
22:39 < jtanx> true
22:39 < jtanx> ie8 is more an afterthought anyway
22:39 < sam_moore> But I suppose if they have some stupid SOE that only includes ie6...
22:39 < jtanx> if you use ie6 you'd be screwed anyway
22:39 < sam_moore> Haha
22:40 < sam_moore> The first flot page I made didn't work in my phone's browser, but that's probably a JavaScript setTimeout thing
22:40 < jtanx> do browsers even support the canvas element
22:40 < jtanx> *mobile browsers
22:41 < sam_moore> Well it showed the first set of data but didn't update
22:41 < jtanx> oh
22:41 < jtanx> right
22:41 < sam_moore> Don't worry, we don't need to support phone browsers
22:41 < sam_moore> Or at least, until we tell Adrian that we don't support phone browsers, we won't have to support phone browsers :P
22:42 < jtanx> hehehe
23:12 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has quit [Connection reset by peer]
23:13 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
23:20 < jtanx> hahaha nvd3 crashed firefox
23:20 < jtanx> let me try again
23:20 < jtanx> if I disconnect, you know why
23:22 < jtanx> well it didn't crash, but it didn't work
23:22 < jtanx> oh well, I'll try again tomorrow
23:22 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has quit ["bye"]
--- Day changed Tue Oct 15 2013
12:08 < sam_moore> http://jayrambhia.com/blog/capture-v4l2/
12:08 < sam_moore> Might be useful?
12:08 < sam_moore> I suspect the issue with the cameras is related to the colour format
12:08 < sam_moore> MJPEG fails, but YUVU (whatever the hell that is) succeeds
12:09 < sam_moore> Although it is still only giving 320x240
12:13 < sam_moore> I noticed uvccapture, etc are quite buggy on my own debian laptop
12:13 < sam_moore> I'm hoping that it might actually be a shitty userspace error that we can fix by using the v4l2 API directly
12:13 < sam_moore> Although it's not likely
12:14 < sam_moore> May as well try
12:14 < sam_moore> But uvccapture just likes to hang forever
12:14 < sam_moore> If you give it larger resolutions
18:52 -!- james__ [~chatzilla@CPE-58-160-245-20.wa.bigpond.net.au] has joined #mctxuwa_softdev
19:29 -!- james__ [~chatzilla@CPE-58-160-245-20.wa.bigpond.net.au] has quit [Ping timeout]
21:27 -!- James__ [~chatzilla@CPE-58-160-245-20.wa.bigpond.net.au] has joined #mctxuwa_softdev
21:31 < James__> Hey Sam
21:39 < James__> Having Issues uploading to the GUI to git but i have successfully tested it on Firefox, Chrome and IE. I will continue trying to upload but if i can't i will see if i can find you or Jeremy tomorrow
21:57 -!- James__ [~chatzilla@CPE-58-160-245-20.wa.bigpond.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Wed Oct 16 2013
13:39 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has quit [Ping timeout]
13:59 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
13:59 < jtanx> ...
13:59 < jtanx> I brought the bbb home
14:00 < jtanx> booted it off an ubuntu image, and uvccapture can take 800x600 images fine from my webcap
14:00 < jtanx> webcam*
14:00 < jtanx> I don't know if it's because it's a different camera, or because it's a different os
14:34 < jtanx> I just tested with the api/image and I can get 800x600 fine
14:34 < jtanx> too
14:38 < jtanx> I can even do 1600x1200 images just fine
14:38 < jtanx> ................
14:38 < jtanx> ._.
14:38 < jtanx> I'll be bringing this in tomorrow, see if it works with the cameras that we're going to be using
14:39 < jtanx> Since my 1gb sd card was not big enough to opencv, I've actually flashed the internal memory with ubuntu
14:39 < jtanx> (so I could install opencv)
14:41 < jtanx> wowthat is so stupid
14:42 < jtanx> so either it's the cameras that we bought, or the os
14:42 < jtanx> but it works at 1600x1200
14:42 < jtanx> (max resolution of my webcam)
14:43 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
15:00 < jtanx> ok, I just tried it with the os we've been running before (on your 32gb sd card), and it also works at 1600x1200
15:00 < jtanx> so it's an issue with the camera
15:01 < jtanx> (e.g selecting a camera that actually works with the BBB
15:14 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has quit ["brb"]
15:16 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
20:10 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has quit [Ping timeout]
21:41 -!- jtanx_ [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
21:56 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has quit [Ping timeout]
23:28 -!- jtanx_ [~asfa@220-253-133-241.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
23:28 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
--- Day changed Thu Oct 17 2013
09:16 -!- jtanx [~asfa@130.95.54.13] has joined #mctxuwa_softdev
09:17 < jtanx> ....
09:17 < jtanx> I just ran the bBB with ubuntu and used the usb microscope
09:17 < jtanx> and it worked
09:18 < jtanx> and so too does it work on the original os
09:18 < jtanx> wtf
09:33 < jtanx> hahahaa
09:33 < jtanx> it crashed because it ran out of memory
09:33 < jtanx> I tried having both cameras at once
09:33 < jtanx> and switching between them
09:34 < jtanx> but other than that it works
09:34 < jtanx> this is weird
09:44 < jtanx> about 1/5 tries fails at 1600x1200 with 'select timeout'
09:44 < jtanx> probably because it can't buffer that fast or something
09:45 < jtanx> but definitely to run both cameras at once (or at least have them connected), you require an external power source, either for the beaglebone or for the usb hub
09:47 < jtanx> yep
09:47 < jtanx> if you do
09:47 < jtanx> modprobe uvcvideo nodrop=1
09:47 < jtanx> It will only display part of the image
09:47 < jtanx> probably because it hasn't filled the buffer yet
09:48 < jtanx> but if you load uvcvideo with normal settings
09:48 < jtanx> it either displays the full image, or no image at all
09:48 < jtanx> the problem is, I don't know how you detect this in opencv
10:10 -!- jtanx [~asfa@130.95.54.13] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
13:47 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
14:55 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has quit [Ping timeout]
17:14 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
17:20 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has quit ["leaving"]
17:22 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
22:38 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Log closed Fri Oct 18 11:45:55 2013
--- Log opened Fri Oct 18 11:46:19 2013
11:46 -!- sam_moor1 [matches@motsugo.ucc.gu.uwa.edu.au] has joined #mctxuwa_softdev
11:46 -!- Irssi: #mctxuwa_softdev: Total of 3 nicks [0 ops, 0 halfops, 0 voices, 3 normal]
11:46 -!- Irssi: Join to #mctxuwa_softdev was synced in 8 secs
11:56 -!- sam_moore [matches@motsugo.ucc.gu.uwa.edu.au] has quit [Ping timeout]
16:03 -!- You're now known as sam_moore
16:03 -!- Irssi: #mctxuwa_softdev: Total of 2 nicks [0 ops, 0 halfops, 0 voices, 2 normal]
16:03 < sam_moore> MctxBot: Tell your master that snoopy is broken
17:41 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
17:42 < jtanx> woops
17:42 < jtanx> I probably screwed up fstab on the sd card when trying to enable swap space
17:42 < jtanx> sorry about not replying earlier
19:42 < sam_moore> Haha
19:42 < jtanx> ~.~
19:42 < sam_moore> We used ubuntu to test the pressure sensor and microphone
19:42 < jtanx> what were you doing with the BBB?
19:42 < jtanx> oh
19:42 < jtanx> how did that go?
19:43 < sam_moore> Alright, flot and/or JavaScript suck at large numbers of points though
19:43 < jtanx> yeah
19:43 < jtanx> did you finally get your hands on a voltage divider or something
19:44 < jtanx> or hsa the electronics team finished their stuff
19:44 < sam_moore> We just made one, but electronics does have one
19:45 < sam_moore> "We have 2 boards and 2 of them don't work"
19:45 < sam_moore> GPIO can't trigger the relays it would seem
19:45 < jtanx> well
19:46 < jtanx> what are they going to do about that
19:46 < sam_moore> Although we only tested 2 outputs, apparently some are 4mA some are 6mA and the thing needs 5mA
19:47 < sam_moore> I don't know? Try every single pin, actually measure the current drawn by the relay switch
19:47 < sam_moore> Replace the transistors on the relay
19:47 < jtanx> haha
19:47 < jtanx> that sounds so dodge
19:47 < sam_moore> We tried 2 GPIO pins at once :S
19:47 < jtanx> in parallel?
19:47 < sam_moore> Didn't work
19:48 < sam_moore> Yeah
19:48 < jtanx> hahaha
19:48 < sam_moore> But I think that might cause one to draw current from the other
19:48 < jtanx> hmm
19:49 < sam_moore> Need to actually look at the GPIO circuit diagram to work out what that would do
19:49 < sam_moore> Our software can sample more than fast enough for the microphone
19:50 < jtanx> that's cool
19:50 < jtanx> could you see it on the graph
19:50 < sam_moore> But plotting it in flot crashes the browser
19:50 < sam_moore> Sort of
19:50 < sam_moore> Had to change start_time to get all the points
19:51 < jtanx> Flot doesn't sound too reliable
19:51 < sam_moore> It crashes after ~1s
19:51 < sam_moore> min
19:51 < sam_moore> not second
19:51 < jtanx> But can we just cut down on the number of data points
19:51 < jtanx> how many datapoints is that after 1 min
19:51 < sam_moore> It's obviously incredibly inefficient
19:52 < sam_moore> I will see if averaging points helps flot
19:52 < sam_moore> Or if it's actually JavaScript not liking really big arrays
19:52 < jtanx> yeah
19:52 < jtanx> I think having large arrays consumes an enormous amount of memory in js, for some reason
19:53 < sam_moore> Dammit
19:54 < sam_moore> We could make a python GUI using requests and pyplot :P
19:54 < jtanx> -.-
19:54 < jtanx> wouldn't it be worse, trying to plot it on the beaglebone
19:55 < jtanx> given that you're using a full blown computer to plot it
19:55 < sam_moore> No, you still plot it on the client
19:55 < jtanx> How does that work
19:56 < jtanx> You'd have to render it on the BBB, no?
19:56 < sam_moore> Nope; get data the same way through HTTP and plot on the client
19:56 < jtanx> what's the difference?
19:57 < sam_moore> The BBB doesn't gave a problem transferring data points
19:58 < sam_moore> The browser ie JavaScript sucks at coping with them
19:58 < jtanx> Yeah, but if you say plot on the client, how do you plot on the client?
19:58 < jtanx> ohhhhhhh
19:58 < jtanx> Right I understand now
19:59 < sam_moore> Python has modules for plotting
19:59 < sam_moore> And modules for HTTP requests
19:59 < jtanx> You're saying instead of a web interface a python gui instead
19:59 < sam_moore> Maybe
19:59 < jtanx> ??
19:59 < sam_moore> I can at least do a proof of concept
19:59 < jtanx> I'm lost
20:00 < sam_moore> But we probably shouldn't redesign the entire GUI...
20:00 < jtanx> Hey, I'm all for it if it can be done
20:20 < jtanx> Now, to do this control page
20:20 < jtanx> A username can only contain alphanumeric characters
20:21 < jtanx> right?
20:21 < sam_moore> Yep
20:21 < jtanx> okay
20:21 < jtanx> was just thinking if someone had say .. in their username...
20:25 < sam_moore> You can allow other characters
20:25 < jtanx> well as in
20:25 < sam_moore> Not '=' though
20:25 < jtanx> having .. in their username would move you up a directory
20:26 < sam_moore> Ah, cunning
20:26 < sam_moore> Thwarted by general paranoia though
20:26 < jtanx> :P
20:26 < sam_moore> No stupid characters in usernames
20:27 < sam_moore> Definitely no '/' allowed
20:27 < jtanx> hahaha
20:27 < jtanx> I think an alphanumeric limitation is good
20:27 < jtanx> until the university stipulates having random characters in usernames
20:28 < sam_moore> You forget that if the university does that they will have to cope with the same kind of bullshit
20:29 < jtanx> Yeah, true that
21:42 < sam_moore> I pushed a python plotting thing, but I don't really think we should be switching to it at this stage.
21:42 < jtanx> Okay
21:42 < sam_moore> I'll try tweak the flot GUI tomorrow to make it less shit
21:43 < jtanx> hahaha
21:58 < jtanx> urgh
21:58 < jtanx> barely started on the control page
21:59 < jtanx> I guess I'll have to complete it tomorrow
21:59 < jtanx> even though we're probably (maybe) going with james gui
22:00 < jtanx> I've removed the width restriction
22:00 < jtanx> and you can hide the navigation bar
22:00 < jtanx> for more space
22:11 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Sat Oct 19 2013
07:59 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has joined #mctxuwa_softdev
10:39 < jtanx> blegh, now to start on the js for the control page
11:10 < jtanx> what would you say if instead of all this chdir business
11:10 < jtanx> one of the initial options to start the software is to specify where you want experiments to be held
11:11 < jtanx> e.g /usr/share/experiments or whatever
11:11 < jtanx> then you build the path based on the username
11:25 < sam_moore> That sounds good
11:26 < jtanx> Okay, I'll try to do that then
14:37 < sam_moore> There's some kind of error in mctx.gui.js now
14:37 < jtanx> what's happening?
14:37 < sam_moore> A syntax error
14:37 < jtanx> let me check
14:38 < jtanx> what page is this on?
14:38 < sam_moore> Line 272 (mctx.gui.js): outdiv[0].scrollHeight - outdiv.height()
14:38 < sam_moore> Caused by loading graph.html
14:38 < jtanx> ahhhh
14:38 < jtanx> I know why
14:38 < jtanx> maybe
14:39 < jtanx> I decided to just to $("#errorlog").seterrorlog in mctx.gui.js
14:39 < jtanx> so I don't have to repeat that on every page
14:39 < sam_moore> The debug function also causes some error in chromium
14:39 < jtanx> but if the page deosn't have an error log
14:39 < jtanx> hahaha
14:39 < jtanx> chromium
14:39 < jtanx> what does it say
14:39 < sam_moore> Didn't I tell you that something was causing iceweasel to segfault? I have no choice! :(
14:40 < jtanx> :P
14:40 < sam_moore> console.log.apply(this, arguments); causes an uncaught type error: illegal invocation
14:40 < sam_moore> I shall replace it with "alert"
14:40 < jtanx> hmm
14:41 < jtanx> it's because chrome has a different implementation of console.log
14:41 < jtanx> http://stackoverflow.com/questions/9521921/why-does-console-log-apply-throw-an-illegal-invocation-error
14:41 < jtanx> for that bug
14:41 < sam_moore> Right
14:42 < sam_moore> Why is the call to outdiv.scrollTop on line 272 spread over 3 lines?
14:42 < sam_moore> ... That's probably why it syntax errors
14:42 < jtanx> nah
14:42 < jtanx> it's legit
14:43 < jtanx> the problem is there's no div there if you don't define #errorlog somewhere in your html
14:43 < sam_moore> I thought the html was supposed to load any elements specific to that page
14:44 < sam_moore> Which should avoid this sort of thing happening
14:44 < jtanx> Yeah, except that we were repeating the same sort of load code
14:44 < jtanx> in most of the pages
14:44 < jtanx> I've just added a check in seterrorlog
14:44 < jtanx> which should ignore if there's no such div anyway
14:44 < sam_moore> ok
14:44 < jtanx> that whole 'experiment dir' thing is ~.~
14:44 < jtanx> I think it's mostly done
14:45 < sam_moore> Ok
14:45 < jtanx> so
14:45 < jtanx> instead of having a file 'name.exp'
14:45 < sam_moore> Yeah that was hacky
14:45 < jtanx> it's a folder 'name.exp'
14:45 < jtanx> all the stuff for one experiment gets stuck in that folder
14:45 < sam_moore> That's slightly less hacky
14:45 < jtanx> so you have something like
14:45 < sam_moore> Makes sense
14:46 < jtanx> /experiments_folder/username/experiment_name.exp
14:46 < sam_moore> Cool
14:46 < sam_moore> If it ever is changed to use local user accounts you can just set experiments_folder to /home
14:47 < jtanx> yeah
14:47 < jtanx> experiments_folder is just an argument you pass to it when you start it
14:47 < jtanx> -e experiment_folder
14:49 < sam_moore> Found a syntax error in graph.html now
14:49 < jtanx> just pushing stuff now
14:49 < jtanx> but what's the errro?
14:50 < sam_moore> There's an unterminated bracket on the runBeforeLoad.done
14:50 < sam_moore> I think
14:50 < jtanx> ah
14:50 < sam_moore> So many brackets
14:50 < jtanx> hehehe
14:50 < jtanx> yeah you're probably right
14:50 < jtanx> netbeans is giving angry red on the bracket
14:51 < jtanx> do you want me to push the fix for that?
14:51 < sam_moore> Well there are other issues with the page
14:52 < sam_moore> No method "always" where it's being chained on the document.ready
14:53 < jtanx> no wait
14:53 < sam_moore> Wait what the hell is it meant to do there
14:53 < jtanx> [14:52:32.186] ReferenceError: mctx is not defined @ http://localhost:8383/MCTXWeb/static/mctx.graph.js:8
14:53 < jtanx> hmm
14:53 < jtanx> I broke something
14:53 < sam_moore> That's not the problem I'm getting, but generally there are lots of wierd things here
14:53 < jtanx> yeah
14:53 < jtanx> sorry
14:53 < jtanx> it was probably working before I pushed changes yesterday
14:54 < sam_moore> You have runBeforeLoad.done() calling $(document).ready which does nothing, but is chained to .always which will then call $(document).ready which then loads $("#graph-controls").setDevices()
14:55 < sam_moore> ... I think what I originally had was runBeforeLoad.always() calling $("#graph-controls").setDevices
14:55 < sam_moore> Possibly inside a document.ready
14:55 < sam_moore> But now mctx.gui.js is calling document.ready itself...
14:55 < jtanx> waiit
14:55 < jtanx> I think it's ok now
14:56 < jtanx> it was just brackets
14:56 < jtanx> I'll try it on my server first
14:58 < jtanx> yeah, I see what you mean
15:01 < jtanx> ahh
15:01 < sam_moore> Well I fixed it enough to test stuff
15:01 < jtanx> yeah
15:02 < jtanx> you planning on modifying stuff?
15:02 < sam_moore> I think it's just a matter of having runBeforeLoad().done() call $(document).ready() and then initialise stuff
15:02 < jtanx> I'll just keep it in my repo for now
15:03 < sam_moore> With runBeforeLoad.fail if you want to handle bad stuff
15:03 < jtanx> I just made it
15:03 < jtanx> runBeforeLoad().always(function() {
15:03 < jtanx> $(document).ready(function() {
15:03 < jtanx> $("#graph-controls").setDevices();
15:03 < jtanx> });
15:03 < jtanx> });
15:03 < sam_moore> Yep, that's what I just did
15:03 < sam_moore> You can commit it and I'll pull it
15:03 < jtanx> okay
15:03 < sam_moore> If you fix the console and the errorlog things as well
15:03 < jtanx> yep
15:03 < jtanx> pushed that too
15:05 < sam_moore> Hmm, start_time = -1 is not actually giving the most recent second of data
15:05 < sam_moore> That might be a server API problem
15:05 < jtanx> hmmm
15:05 < sam_moore> But it might also explain why things were shitting themselves so much with the fast sampling rate
15:06 < jtanx> what is it giving?
15:06 < sam_moore> Because the jQuery would be getting hundreds of thousands of points...
15:07 < sam_moore> At the moment the server API is not giving any points and giving back a stupid value for start_time
15:07 < sam_moore> I think I might have broken it when I changed all the clocks
15:07 < jtanx> when did you change ti?
15:07 < sam_moore> Just now
15:07 < jtanx> ah
15:07 < sam_moore> I'm hoping that my first assumption about the thousands of points was the case before I broke it as well :P
15:08 < sam_moore> (ie: It was already broken before I broke it more)
15:08 < jtanx> ahahahah
15:08 < jtanx> I can try
15:08 < jtanx> I still have the old version
15:09 < jtanx> with start_time=-1 it returns nothing
15:09 < jtanx> start_time in the response is constant
15:11 < sam_moore> Yeah I get wierd stuff
15:11 < sam_moore> start_time = 17889.590701
15:12 < sam_moore> "current_time" : 18589.539255
15:12 < jtanx> is that with clock_gettime?
15:12 < sam_moore> "running_time" : 699.948554,
15:12 < sam_moore> Yes
15:13 < sam_moore> Oh herdurp
15:13 < sam_moore> start_time in the JSON response is *not* the same as start_time the parameter to the sensor
15:13 < jtanx> yeah
15:13 < sam_moore> .... should probably change that
15:13 < jtanx> start time of experiment
15:14 < jtanx> experiment_start_time?
15:14 < jtanx> long variable names...
15:14 < sam_moore> I think it's actually the program start time
15:14 < jtanx> nup
15:14 < jtanx> experiment starttime
15:14 < sam_moore> Alright
15:14 < jtanx> oh
15:14 < jtanx> actually you may be right
15:14 < sam_moore> Haha
15:14 < jtanx> I thought i changed it
15:14 < jtanx> wway back when i did the control stuff
15:15 < jtanx> initially
15:15 < sam_moore> ControlData has a start_time variable
15:15 < jtanx> yeah
15:15 < sam_moore> But g_options has a start_time variable
15:15 < sam_moore> -_-
15:15 < jtanx> that's confusing
15:15 < jtanx> hahaha
15:15 < sam_moore> Yeah, what idiot designed this...
15:15 < jtanx> ~.~`
15:19 < sam_moore> Right, sensor values are being saved relative to Control_GetStartTime (experiment starting time)
15:19 < sam_moore> That's fine
15:19 < jtanx> yep
15:19 < sam_moore> Sensor_Handler gets "current_time" from that as well
15:19 < jtanx> Thread safety on that is dodgey
15:19 < jtanx> I must say
15:20 < jtanx> but it's probably fine
15:20 < sam_moore> It's fine, clock_gettime is posix thread safe
15:21 < sam_moore> Oh, do you mean if the experiment changes
15:21 < jtanx> yeah
15:21 < jtanx> the whole *Control_GetStartTime() looks dodgy too
15:22 < sam_moore> Perhaps just a "double Control_CurrentTime()" would be better
15:22 < sam_moore> But it works
15:22 < jtanx> hmm
15:24 < sam_moore> Anyway, I think start_time=-1 is not giving any data because the default sampling rate is 1s and therefore current_time - 1 is outside the data range most of the time
15:25 < sam_moore> start_time=-3 gives a single point with the default sampling rate
15:25 < sam_moore> Increasing the sampling rate then you appear to get the right points
15:31 < sam_moore> I'm going to repeat my timestamp test with the current software under regular kernel and RT linux
15:32 < sam_moore> I know we can't ever get RT linux but I want to see if it makes much of a difference
15:46 < jtanx> okay
15:50 < jtanx> finally... back to actually coding the control page
22:59 -!- jtanx [~asfa@220-253-133-241.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
--- Day changed Sun Oct 20 2013
15:56 -!- Callum [~Callum@106-68-161-33.dyn.iinet.net.au] has joined #mctxuwa_softdev
15:59 < Callum> hey sam, got a link to the dropbox?
16:06 < sam_moore> https://www.dropbox.com/sh/km90dmbdrgin3mg/OimGp0qopv
16:06 < Callum> thanks
16:07 < sam_moore> I think I might be able to hack together a user management system based on UserCake
16:08 < sam_moore> Someone else will have to make it look pretty though
17:25 < Callum> opencv is fucking retarded.
17:25 < Callum> C++ has a bunch of different functions for each individual type of blur
17:25 < Callum> C has one function but you pass it an ID for which type of blur you want to use..
17:30 < sam_moore> OpenCV used to be in C, but they moved it to C++
17:30 < sam_moore> But it still supports the C API
17:30 < sam_moore> Through some wierd magic
17:30 < sam_moore> At least, if you run our program in valgrind, it reports a lot of stuff happening with things like "std::string" and "cv::Mat"; ie: C++ namespaces
17:32 < Callum> yea. its a bit of a bitch to code in C...all the documentation is for c++ pretty much
17:32 < Callum> like right now im trying to find out how to simply set all elements to 0.. where in c++ its just Mat::Scalar(0)
17:32 < sam_moore> If you really want you can probably compile in C++, but I'm not sure if it will cause issues elsewhere
17:33 < Callum> il just keep going like this. just a couple of things atm i need to figure out. hopefully thats it
17:33 < sam_moore> Cool
17:34 < sam_moore> The server now supports 3 entirely different authentication methods :S
17:34 < Callum> haha. a little excessive.
17:34 < Callum> hopefully they'll be happy with atleast one of them..
17:34 < sam_moore> If we modify UserCake we can run our own user management system
17:35 < sam_moore> I need to change it so that instead of users registering themselves it's the admin that adds users manually though
17:35 < sam_moore> Also we'd have to get email working
17:57 < Callum> uuh. so using one of his test images for the microscope, running it through Canny gives a bunch of squiggly lines all over the place
17:57 < Callum> its funny, the part which is actually the edge...has the most black
17:57 < Callum> il try some of his other images and see what it does
20:22 -!- Callum [~Callum@106-68-161-33.dyn.iinet.net.au] has quit [EOF From client]
20:50 -!- MctxBot_ [~twang@106-68-93-93.dyn.iinet.net.au] has joined #mctxuwa_softdev
21:05 -!- MctxBot [~twang@220-253-133-241.dyn.iinet.net.au] has quit [Ping timeout]
21:06 -!- Irssi: #mctxuwa_softdev: Total of 2 nicks [0 ops, 0 halfops, 0 voices, 2 normal]
21:08 -!- jtanx [~asfa@106-68-93-93.dyn.iinet.net.au] has joined #mctxuwa_softdev
21:10 < jtanx> working on the report the day before...
21:10 < jtanx> what is this madness
22:23 -!- jtanx [~asfa@106-68-93-93.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]