15:56 -!- jtanx_ is now known as jtanx
21:48 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 23.0.1/20130814063812]"]
+--- Day changed Mon Sep 16 2013
+16:05 -!- jtanx_ [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 23.0.1/20130814063812]"]
+19:44 < jtanx> no mctxbot while I work on my f# project
+22:58 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 23.0.1/20130814063812]"]
+--- Day changed Tue Sep 17 2013
+09:50 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 23.0.1/20130814063812]"]
+15:34 < jtanx> to run the software not as root, we need to at least add it to the 'video' group so it can access the webcam
+15:34 < jtanx> not sure about the sensors
+15:34 < jtanx> eg sudo usermod -a -G video debian
+15:38 < sam_moore> Ah, cool
+15:39 < sam_moore> I think I worked out how to get around the camera crashing without killing the rest of the program, won't implement it for a while though
+15:57 -!- jtanx_ is now known as jtanx
+16:46 -!- jtanx_ is now known as jtanx
+18:02 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 23.0.1/20130814063812]"]
+23:18 < Callum> hey
+23:23 < sam_moore> Hi
+23:24 < Callum> do you know how to do the second question of that assignment?
+23:24 < Callum> https://docs.google.com/file/d/0B241H5liqVlnbHZETXRZX1Mwd1k/edit?usp=sharing
+23:25 < Callum> rather remember
+23:35 < sam_moore> Well, you can eliminate any epsilon^2 when you substitute those formulae for v into the formula for gamma
+23:35 < sam_moore> Then it has a really simple taylor expansion
+23:35 < Callum> i might have to hunt you down tomorrow to show me. or maybe il be able to think straight tomorrow.
+23:38 < sam_moore> You can express one of the epsilons in terms of the other one after that
+23:40 < sam_moore> I'm pretty busy tomorrow
+23:42 < Callum> mhmm. so no free time at all? coz im fairly free
+23:49 < sam_moore> Not from 8:00am until 5:00pm
+23:49 < Callum> ohwow. you are busy
+23:49 < Callum> im still unsure what im meant to be applyign the taylor expansion to
+23:53 < sam_moore> Substitute in the suggested formulae to gamma, simplify it, then apply a taylor expansion
+23:53 < sam_moore> Anyway, goodnight, good luck
+23:53 < Callum> night
+--- Day changed Wed Sep 18 2013
+09:11 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 23.0.1/20130814063812]"]
+21:03 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Thu Sep 19 2013
+16:08 < jtanx> one thing I forgot to mention - the latest version on git uses syslog
+16:08 < jtanx> if you copy the config file (server-configs/rsyslog.d/* ??) to /etc/
+16:09 < jtanx> it will log to /var/log/mctx[something I can't remember].log
+16:10 < jtanx> i'm pretty sure you can also create a log file specifically for warning level and above (so it logs in three places, stderr, the normal log, and a special 'error' log), but I haven't set this up yet
+18:17 < jtanx_> :0
+18:22 < sam_moore> ?
+18:50 -!- jtanx_ is now known as jtanx
+19:52 -!- MctxBot_ is now known as MctxBot
+20:24 < jtanx> I got the camera image to be updated in javascript instead: http://mctx.us.to:8080/test/
+20:25 < jtanx> right now it's updated around every ~400ms because my webcam is running through a usb1.1 link which seriously limits how fast it can update
+20:36 < jtanx> (its running on a pentium 3 computer)
+21:35 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Fri Sep 20 2013
+18:02 < jtanx> this seems like an interesting option, at least for the cam that just shows the can explode:http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Page
+18:51 < sam_moore> Cool
+18:51 < sam_moore> It, ah
+18:52 < sam_moore> Looks like we might have to recompile the kernel to get PWM working
+18:52 < sam_moore> Hooray
+18:52 < sam_moore> Kernel compiling
+18:52 < sam_moore> What could possibly go wrong?
+19:02 < jtanx> really??
+19:02 < jtanx> why....
+19:03 < jtanx> no am33xx_pwm module?
+19:04 < sam_moore> Not that I can tell
+19:05 < jtanx> well crap
+19:06 < sam_moore> Well... surely I can find a precompiled kernel somewhere
+19:06 < jtanx> it seems that stuff for the BBB is at a really premature stage
+19:07 < sam_moore> Yeah, RPi is much nicer
+19:07 < jtanx> the BBB is just too new..
+19:07 < sam_moore> What's the point of having fancy things like ADC and PWM...
+19:07 < sam_moore> If you can't actually use them without jumping through hoops
+19:07 < jtanx> hahaha
+19:07 < jtanx> were you referencing this, when you said we might have to recompile the kernel? https://groups.google.com/d/msg/beagleboard/wjbOVE6ItNg/AGYVRhYbTX8J
+19:08 < sam_moore> Yeah
+19:08 < sam_moore> ...
+19:08 < sam_moore> I wonder if I can take the kernel used by Angstrom and stick it in /boot
+19:08 < sam_moore> on the SD card
+19:09 < jtanx> ._.
+19:10 < jtanx> what about kernels from here
+19:10 < jtanx> http://rcn-ee.net/deb/precise-armhf/
+19:10 < jtanx> sorry
+19:10 < jtanx> http://rcn-ee.net/deb/wheezy-armhf/
+19:11 < jtanx> what's it currently running
+19:12 < sam_moore> 3.8.13-bone20
+19:13 < sam_moore> Try 3.8.13-bone28 ?
+19:15 < jtanx> what about v3.8.9-bone15
+19:15 < jtanx> oh wait
+19:15 < jtanx> ~.~
+19:15 < sam_moore> I wonder why the BBB developers didn't go with debian...
+19:15 < jtanx> v3.11.0-bone5
+19:15 < jtanx> yeah
+19:15 < jtanx> why angstrom, of all things
+19:15 < sam_moore> Is angstrom used anywhere else?
+19:16 < jtanx> dunno
+19:16 < sam_moore> Other embedded devices, heh
+19:16 < sam_moore> Everyone just has to use their own distro :P
+19:17 < sam_moore> I didn't see the .11 kernels, I'll try the latest one
+19:17 < jtanx> want to try the rc version? lol
+19:18 < jtanx> oh the rc versions are older than .11
+19:19 < jtanx> how does it work?
+19:19 < jtanx> do you just download from http://rcn-ee.net/deb/wheezy-armhf/v3.11.0-bone5/
+19:19 < jtanx> the .sh script and run it from the BBB?
+19:24 < sam_moore> I think so
+19:25 < sam_moore> Well... here goes nothing
+19:26 < sam_moore> Hopefully between 3.8 and 3.11 they actually enabled PWM by default...
+19:27 < sam_moore> It looks like install-me.sh downloads all the .deb files appropriately
+19:29 < sam_moore> It's creating files like: /lib/firmware/bone_pwm_P8_36-00
+19:29 < sam_moore> Which looks promising
+19:29 < sam_moore> Snoopy is not yet on fire
+19:29 < sam_moore> Which is promising
+19:29 < sam_moore> Rebooting and praying
+19:31 < sam_moore> And... it booted into 3.8.13-bone20 -_-
+19:31 < sam_moore> Tempted to just symlink that filename to the new kernel
+19:34 < sam_moore> The new kernel exists in /boot, but obviously there's some boot config that needs to get set
+19:39 < sam_moore> Ok, screw this, I'm making a symlink just to see if it works
+19:40 < jtanx> lol
+19:41 < jtanx> no grub
+19:43 < jtanx> did update-initramfs run?
+19:46 < jtanx> or maybe we need mkimage
+19:47 < jtanx> yeah probably need mkimage
+19:50 < sam_moore> Um, zImage is a symlink to the kernel
+19:50 < sam_moore> But regardless, the new one won't boot
+19:50 < sam_moore> Such a pain
+19:50 < sam_moore> I wonder if we can just toggle the GPIO pin fast enough to implement PWM
+19:56 < sam_moore> Using a decent oscilloscope, I read a 6us period when switching GPIO1_28 on/off as fast as possible
+19:59 < sam_moore> That
+19:59 < sam_moore> s like 166KHz
+19:59 < sam_moore> Heh
+19:59 < sam_moore> Maybe the sources you found were closing the file and reopening it?
+20:01 < sam_moore> Yeah, wow
+20:02 < sam_moore> Using fopen, fprintf and fclose each time takes the period to 224us
+20:02 < sam_moore> Or 4KHz
+20:03 < sam_moore> Also for future reference, that CRO in G19 is definitely broken; it's always a lovely square wave on the modern oscilloscope I'm testing with now
+20:12 < jtanx> haha ok
+20:13 < jtanx> but without kernel support your pwm signal won't be very accurate
+20:13 < sam_moore> Yeah, I suppose
+20:13 < jtanx> how come the new kernel won't boot?
+20:14 < sam_moore> No idea
+20:14 < jtanx> Hmm
+20:14 < jtanx> this lack of documentation on how you do such procedures is pretty crap
+20:15 < sam_moore> Yeah, kernel developers aren't great on documentation
+20:15 < jtanx> is the mkimage package present?
+20:15 < jtanx> if not, install it and try running the install-me script again
+20:16 < jtanx> from this: http://www.jeremycole.com/blog/2011/03/09/beagleboard-upgrading-from-debian-5-to-debian-6/
+20:16 < jtanx> it should be just running that install script and rebooting
+20:16 < sam_moore> Alright, uboot-mkimage I presume?
+20:16 < jtanx> i guess
+20:17 < jtanx> and update-initramfs?
+20:18 < jtanx> (just looking at what the install-me.sh script uses)
+20:18 < sam_moore> Oh, does the script not fail if packages it needs don't exist...
+20:18 < sam_moore> -_-
+20:19 < jtanx> a quick scan says nup
+20:24 < sam_moore> Already had initramfs-tools but not mkimage, so I'll try again
+20:27 < sam_moore> I should probably have focused on the ADC reading before PWM
+20:27 < sam_moore> We're definitely going to get asked about aliasing again
+20:28 < jtanx> urgh yeah
+20:28 < sam_moore> I don't have a signal generator here though
+20:28 < jtanx> this BBB has definitely not been designed with 'plug n play' in mind
+20:28 < sam_moore> Mmm
+20:29 < sam_moore> The Angstrom image would work for this stuff, but obviously has limitations in terms of the webserver stuff
+20:29 < sam_moore> But even with Angstrom you still have to go through a similar convoluted process to control pins
+20:30 < sam_moore> From what I can tell there are two ways to do it
+20:30 < sam_moore> SYSFS, which I can't find much documentation on
+20:30 < sam_moore> Which is the /sys/class/gpio/ stuff
+20:30 < sam_moore> Which actually seems more intuitive than the other way
+20:31 < sam_moore> That involves echoing a bunch of cruft to /sys/devices/cape-manager/slots/ or something similar
+20:31 < jtanx> hmm
+20:32 < sam_moore> There is a /sys/class/pwm
+20:32 < sam_moore> But unfortunately whatever you export it complains about
+20:32 < sam_moore> Probably because the kernel wasn't compiled with it enabled
+20:32 < jtanx> is this with the old kernel?
+20:32 < sam_moore> Yeah
+20:33 < sam_moore> Hangon, the new one's probably finished building by now
+20:34 < jtanx> we don't know if the new one has been compiled with pwm support though
+20:34 < sam_moore> Yeah
+20:36 < sam_moore> The diff between the config options for the kernels shows that the old one has a comment "CONFIG_EHRPWM_TEST is not set" and the newer one has no reference to it
+20:37 < sam_moore> ...
+20:37 < sam_moore> Someone at some point
+20:37 < sam_moore> Has realised that PWM was not enabled
+20:37 < sam_moore> And commented that it isn't enabled
+20:37 < sam_moore> WHY THE HELL DIDN'T THEY JUST ENABLE IT
+20:37 < jtanx> :P
+20:37 < sam_moore> Anyway it still booted off the old kernel
+20:37 < sam_moore> Dinner time
+20:38 < jtanx> ok
+21:15 < sam_moore> http://www.eewiki.net/display/linuxonarm/BeagleBone+Black#BeagleBoneBlack-LinuxKernel
+21:15 < sam_moore> Looks promising
+21:16 < sam_moore> Hmm...
+21:17 < sam_moore> I'll try using 3.8 but building with the PWM
+21:18 < jtanx> building from source - fun fun :P
+21:19 < sam_moore> Well in theory I just change a config option
+21:19 < jtanx> yeah
+21:19 < sam_moore> When that doesn't work and I have to modify the source, that's when the fun begins
+21:19 < jtanx> let's just hope it works
+21:19 < sam_moore> Yeah, if it doesn't we're (beagle) boned
+21:19 < jtanx> oh while you're at it, figure out how to enable the ethernet-over-usb feature
+21:19 < sam_moore> Haha
+21:20 < jtanx> loljk
+21:25 < sam_moore> Hmmm... compiling a kernel is going to take a while
+21:26 < sam_moore> Ergh, why am I running it on this Pentium D
+21:30 < sam_moore> Hmmm, more troubling... why does a debian wheezy server have OpenSUSE sources in sources.list
+21:30 < sam_moore> Oh well, not my problem
+21:33 < jtanx> heh
+21:33 < sam_moore> How the hell are we going to explain this in the progress report...
+21:34 < sam_moore> Also, I didn't fully understand, why can't you use the same image for multiple BBB?
+21:34 < sam_moore> Are we going to have to do this all again for the other BBB?
+21:34 < sam_moore> Spike I mean
+21:37 < jtanx> no idea
+21:38 < jtanx> without some sort of debugging cable to see what happens when it boots, who knows
+21:38 < sam_moore> :S
+21:39 < sam_moore> I love how git gets to the head of the branch
+21:39 < sam_moore> By starting at the initial commit
+21:39 < sam_moore> And going through every commit and changing the file
+21:42 < sam_moore> It hasn't started building yet
+21:42 < sam_moore> And the way you customise the build...
+21:42 < sam_moore> Is to build it with the defaults, so that the options file exists, then change the options, then build it again -_-
+21:43 < jtanx> ಠ ಠ
+21:43 < sam_moore> Oh well, I have to go home, I'll try finish this tomorrow
+21:43 < sam_moore> Bye
+21:43 < jtanx> ok
+21:43 < jtanx> bye
+23:20 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sat Sep 21 2013
+11:23 < sam_moore> http://hipstercircuits.com/enable-pwm-on-beaglebone-with-device-tree-overlays/
+11:23 < sam_moore> So... according to this I should add pwm_test as a kernel module
+11:24 < sam_moore> "This is it. It is now three o’clock in the morning and I have not slept or eaten in two days. My neck is sore, my ass has fallen asleep and my organs are screaming “slow down, man”. I no longer see [CC]s, [LD]s and [AS]s, I only see blondes, brunettes and redheads flashing before my eyes. With my last ounce of energy I barely manage to type in “reboot” as my face hits the keyboard. And that is when it happens.."
+11:25 < sam_moore> Ummm
+11:25 < sam_moore> It's awesome that this guy has solved the problem (I think)
+11:26 < sam_moore> But a bit depressing that it still isn't in the official kernel
+11:29 < sam_moore> I think most people just give up and use Angstrom, which is tempting
+11:30 < sam_moore> I still have that HTTP server code... :P
+11:45 < sam_moore> Looks like Robert C Nelson's 3.8 kernel does have a pwm_test module
+11:45 < sam_moore> Maybe the image you used just had an out of date kernel?
+11:45 -!- Irssi: #mctxuwa_softdev: Total of 3 nicks [0 ops, 0 halfops, 0 voices, 3 normal]
+11:51 < jtanx> hmm
+11:51 < jtanx> no idea
+11:51 < jtanx> it was made in july I think and it uses those rcn kernels
+11:51 < jtanx> We could always use lighttp
+11:51 < jtanx> lighttpd on angstrom if necessary
+11:52 < jtanx> lighttpd and install mod_fastcgi
+11:55 < jtanx> ok so the image uses 3.8.13-bone20, so maybe it wasn't enabled in that version, but it now is in 3.8.13-bone28?
+12:02 < sam_moore> I've just built 3.8.13-bone28 and the module pwm_test exists
+12:03 < sam_moore> ... I also copied the code from that guy's blog as pwm_test2 just in case :P
+12:03 < sam_moore> I'll have to test it later, but at least we have the kernel module
+12:08 < jtanx> nice
+12:39 < jtanx> ohhhhh I know why it didn't work from one bbb to the next, using the same image
+12:39 < jtanx> When you boot for the first time, it assigns the ethernet port eth0
+12:39 < jtanx> when you then take it out and boot it on a different BBB
+12:40 < jtanx> because the ethernet device has a different id, it gets assigned to say eth1
+12:40 < jtanx> and because you don't have any config for eth1 in your network config, there's no internet access
+12:40 < jtanx> http://www.eewiki.net/display/linuxonarm/BeagleBone#BeagleBone-Networking:UsingasharedSDcardwithMultipleBeagleBone
+12:41 < jtanx> should fix that
+15:10 < jtanx> Eh, you know what I'll just stop the threads when you want to pause it
+15:10 < jtanx> instead of conditionals
+15:11 < jtanx> it's not like you're pausing the experiment that often
+15:18 < sam_moore> That's fine
+15:19 < sam_moore> The conditional approach is only really necessary if you're constantly pausing the threads
+15:19 < sam_moore> I used it for an nbody simulator, so the computation of force and position was split up between threads
+15:19 < sam_moore> It's really slow if you have to stop and then recreate the threads on every step
+15:22 < sam_moore> Although still actually faster than the single threaded program
+15:22 < sam_moore> Well, depending on how many objects you simulated
+15:23 < sam_moore> Anyway, just stop the threads, it's simpler to code and the performance effect in our case is probably negligable
+15:30 < jtanx> yeah
+15:30 < jtanx> say you had an actuator that was being controlled at that instant when an 'emergency stop' was issued
+15:31 < jtanx> since an 'emergency stop' is the same as just pausing (eg stopping the thread but keep DataFile open)
+15:31 < jtanx> you'd have to wait for that action to be completed before the 'emergency stop' would be propagated
+15:34 < jtanx> welp I guess that's why there's hardware safety interlocks
+15:38 < jtanx> Also, technically wouldn't it be possible to try to set the actuator value before the current value has been set
+15:38 < jtanx> Since there's no queue
+15:39 < jtanx> a->control could be overwritten by a new request as Actuator_SetValue operates
+16:12 < sam_moore> We want that right?
+16:13 < sam_moore> I'll look at it later if I get time
+16:14 < jtanx> I don't know if we want that or not
+16:15 < jtanx> wait want as in the current behaviour or the behaviour with a queue?
+16:16 < sam_moore> The current behaviour
+16:16 < sam_moore> I don't think you need a queue
+16:16 < sam_moore> You can extend the critical section in Actuator_Loop to stop the current control getting overwritten
+16:17 < sam_moore> Move the pthread_mutex_unlock on line 121 to below line 127 (Actuator_SetValue)
+16:17 < sam_moore> That way if Actuator_SetControl is called before the value has been successfully set, it will just wait
+16:17 < sam_moore> Mutexes actually implement a queue
+16:18 < sam_moore> If one thread has a lock on the mutex, subsequent threads that try to access the mutex will queue up; whenever the mutex is unlocked the next thread (if any) which was waiting will get it
+16:18 < jtanx> ok
+16:23 < jtanx> I'll leave it as is for now
+16:23 < sam_moore> Sure
+16:49 < sam_moore> PWM working
+16:49 < jtanx> nice
+16:50 < jtanx> I still don't really understand - did you compile the kernel from scratch
+16:50 < jtanx> or did you figure out how to use the install-me.sh script
+16:50 < sam_moore> I did, but I didn't need to modify it
+16:50 < jtanx> huh
+16:50 < jtanx> ok
+16:51 < sam_moore> http://www.eewiki.net/display/linuxonarm/BeagleBone+Black#BeagleBoneBlack-LinuxKernel
+16:52 < jtanx> so if we do this: http://www.eewiki.net/display/linuxonarm/BeagleBone+Black#BeagleBoneBlack-Networking:UsingasharedSDcardwithMultipleBeagleBone
+16:52 < jtanx> We should be able to just copy our image
+16:52 < jtanx> and stick it on the electronics' BBB
+16:53 < sam_moore> Sounds good
+16:53 < sam_moore> I'm glad that worked
+16:53 < jtanx> yeah
+16:54 < jtanx> I wonder if it also enabled the usb0 stuff (ethernet over usb)
+16:58 < sam_moore> PWM appears to have picosecond resolution? Or at least the arguments are in ps
+17:02 < jtanx> oO
+17:11 < sam_moore> ADC can sample at ~4KHz
+17:11 < sam_moore> But... that's using bash
+17:11 < sam_moore> It will probably be massively fast when done in C
+17:11 < jtanx> um
+17:11 < jtanx> is there any need to have it sample at a consistent rate
+17:11 < jtanx> as in, with threads there's no guarantee
+17:12 < jtanx> of a consistent sampling rate
+17:12 < sam_moore> Yes, you're right
+17:13 < sam_moore> I don't think we can achieve a consistent sampling rate, but I don't think it's critical that we do
+17:14 < sam_moore> As soon as we make our software run in an operating system with a kernel and other processes that can run as well, it gets pretty unfeasable to have a constant sample rate
+17:14 < sam_moore> We can have it constant to within an uncertainty I guess
+17:15 < jtanx> yeah, true
+17:18 < sam_moore> If you wanted a really high constant sample rate (say much faster than 1us which is probably the best case we could get) you'd have to use a more low level embedded device
+17:18 < sam_moore> Well I guess you could compile your own kernel for the BBB
+17:19 < sam_moore> But either way you'd have to physically run the webserver/GUI interface stuff on a seperate device
+17:19 < sam_moore> At this stage my feeling is what we have is good enough given the complexity of all the requirements we were given
+17:23 < jtanx> yeah
+17:25 < sam_moore> Hmm, I can set some GPIO pins to toggle whenever Sensor_Read is called and get an idea of sample rates and to what degree of accuracy we can quote the time stamps
+17:26 < sam_moore> I think I'll write some pin control code
+17:26 < sam_moore> I don't trust any of these custom libraries
+17:29 < jtanx> custom libraries?
+17:36 < sam_moore> Well they aren't really libraries
+17:36 < sam_moore> http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#Example_of_GPIO_access_from_within_a_C_program
+17:37 < sam_moore> Eg: That one has an fopen and fclose each time the value is changed
+17:38 < sam_moore> I could google until I find someone that has already written a C library, but chances are it will be slow or broken
+17:38 < sam_moore> Since I've worked out how to control the pins I may as well just write the C code to do it
+17:39 < jtanx> yep
+17:49 < sam_moore> I wonder if I can do this with a macro...
+18:30 < sam_moore> Ergh, screw that
+18:31 < sam_moore> Ok, I'm going to implement things like: GPIO/ADC/PWM_Export/Unexport to initialise or deinitialise all pins
+18:31 < jtanx> Ok
+18:31 < jtanx> too much effort with macros?
+18:31 < sam_moore> Yeah,
+18:32 < sam_moore> I was thinking of having something like "GPIOX_Set()" instead of GPIO_Set(int x)"
+18:32 < sam_moore> But that's probably not as nice as I thought it was
+18:32 < sam_moore> Anyway, there's an enum in the header file that contains the id of all pins used
+18:32 < sam_moore> The implementation defines some structs that wrap around the file descriptors
+18:33 < sam_moore> But to use the module you just give it an ID as defined in the enums
+18:33 < jtanx> Makes sense
+18:33 < jtanx> designing the gui is actually not too bad
+18:33 < sam_moore> That's good
+18:34 < jtanx> looks ok in ie8 too
+18:34 < sam_moore> Nice
+18:35 < jtanx> gotta go, dinner
+18:35 < sam_moore> Ok
+18:35 < sam_moore> Hmm, it would be nice if C had value checking on enums
+18:35 < sam_moore> You can define a function that takes an enum type as an argument
+18:36 < sam_moore> But people can still just pass any old integer
+18:36 < sam_moore> As far as I know
+18:36 < sam_moore> eg: typedef enum {FIRST=1, SECOND=10, THIRD=100} EnumType
+18:36 < sam_moore> void Foo(EnumType e);
+18:37 < sam_moore> If you go Foo(2) it won't complain
+18:38 < sam_moore> Annoying
+18:38 < sam_moore> That seems like something the compiler would be able to pick up
+19:31 < sam_moore> Ergh, I'm getting too obsessive compulsive with this pin thing
+19:35 < sam_moore> It's annoying because ADC, GPIO and PWM are treated completely differently
+19:35 < sam_moore> You write one thing and it enables *all* the ADCs
+19:35 < sam_moore> You have to enable each GPIO pin individually
+19:36 < sam_moore> And to enable PWM pins you give a string (not just an integer)
+19:37 < sam_moore> Also the location of the pin files is not guaranteed (though it probably doesn't change for a given system configuration)
+19:39 < sam_moore> Ah, I found a way to enable pwm with /sys/class/ instead of that cape manager thing
+19:39 < sam_moore> I think I'll use that, since at least it's consistent with the GPIO stuff
+19:41 < sam_moore> Ooh!
+19:41 < sam_moore> http://beagleboard-gsoc13.blogspot.com.au/2013/07/sampling-analogue-signals-using-adc-on.html
+19:41 < sam_moore> Provides a driver for continuously sampling with the ADC
+19:41 < sam_moore> Oh wait
+19:41 < sam_moore> Crap in a bucket
+19:42 < sam_moore> Because we're using those multiplexers we can't do that
+19:42 < sam_moore> We have to set the multiplexer before each sample
+19:42 < sam_moore> Oh well, never mind
+19:44 < sam_moore> I suppose we could write our own kernel module :S
+19:45 < sam_moore> I think I understand this enough to talk to Adam next time he tries to talk about sample rate
+19:46 < sam_moore> 1. It's not actually constant, but we can probably have it constant to within a few us
+19:46 < sam_moore> 2. To make it constant would require writing a kernel module
+19:47 < sam_moore> Unless electronics stops being stingy and gets one amplifier per channel :P
+20:22 < jtanx> hehehe
+20:22 < jtanx> next week's adrian though
+20:22 < sam_moore> Ah
+20:23 < jtanx> grilling time
+20:23 < sam_moore> He'll probably ask us the same things :P
+20:23 < jtanx> yeah
+20:23 < jtanx> but man, so much stuff to go through just to get some readings from a few pins
+20:24 < jtanx> so good job with that :P
+20:54 < sam_moore> Thanks
+22:45 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sun Sep 22 2013
+00:51 < sam_moore> Hell yes
+00:51 < sam_moore> PWM controlled through web browser
+00:51 < sam_moore> GPIO controlled through web browser
+01:19 < sam_moore> .... And ADC read through web browser
+01:19 < sam_moore> Blergh
+01:28 < sam_moore> I think I'll take the rest of today off from MCTX3420 :S
+11:53 < sam_moore> I've analysed the crap out of sampling rates for this ADC
+11:53 < sam_moore> At least as much as I can just using the timestamps according to gettimeofday
+11:54 < sam_moore> Contrary to my first email, reading the ADC is actually really slow. And also probably the greatest source of variation in sampling rate.
+11:56 < jtanx> wow
+11:56 < jtanx> only 100Hz?
+11:56 < sam_moore> Well it looks more like 1KHz on the oscilloscope, but there's a lot of variation, it has trouble getting a trigger
+11:57 < jtanx> the cpu datasheet rates it at 200kSPS
+11:57 < sam_moore> Hmm
+11:58 < sam_moore> Well judging by the control it is something about the ADC reading that makes it really slow
+11:58 < jtanx> That's annoyng
+11:58 < sam_moore> Yeah
+11:58 < sam_moore> Also annoying is that the ADC file is generally in a different place each time they're enabled
+11:59 < sam_moore> I ended up modifying the program to take the path to the ADC file as an argument
+11:59 < sam_moore> And making run.sh do the initialisation
+11:59 < sam_moore> I figured that was better than calling system()
+11:59 < jtanx> that makes sense
+11:59 < sam_moore> Yep, we might want to set other options that run.sh can pass to it anyway
+12:00 < sam_moore> Ok, I have to stop now, I'm spending way to much time on this
+12:00 < jtanx> Haha
+12:00 < sam_moore> It's getting to the point where I'm considering writing an ADC kernel module that doesn't suck :S
+12:01 < jtanx> :S let's hope it doesn't get to that stage
+20:12 < jtanx> the pressure regulator has a 1-5vdc analogue output
+20:12 < jtanx> is this considered one of the pressure sensors?
+20:14 < jtanx> or maybe it's just not used
+21:50 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Mon Sep 23 2013
+08:51 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+20:55 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+22:33 -!- Irssi: #mctxuwa_softdev: Total of 2 nicks [0 ops, 0 halfops, 0 voices, 2 normal]
+--- Day changed Tue Sep 24 2013
+14:18 < jtanx> with kernel 3.8 they decided to make life hard with device tree overlays
+14:19 < jtanx> http://e2e.ti.com/support/arm/sitara_arm/f/791/t/277811.aspx
+14:19 < jtanx> https://docs.google.com/a/beagleboard.org/document/d/17P54kZkZO_-JtTjrFuVz-Cp_RMMg7GB_8W9JK9sLKfA/pub
+14:47 < jtanx> huh
+14:47 < jtanx> http://www.youtube.com/watch?v=6gv3gWtoBWQ
+14:47 < jtanx> http://digital-drive.com/?p=146
+15:39 < sam_moore> I wonder if I can write a module that just uses /dev/adcX /dev/gpioX and /dev/pwmX
+15:40 < jtanx> that would make life simple
+15:40 < jtanx> but no
+15:42 < sam_moore> http://www.tldp.org/LDP/lkmpg/2.6/html/x569.html
+15:42 < sam_moore> Probably out of date (2.6?)
+15:45 < sam_moore> Also rt.wiki.kernel.org - realtime linux supposedly gives you better timing accuracy, although it would possibly break with our setup involving nginx
+15:46 < sam_moore> Actually it looks like there are quite a few ways for it to not work
+15:48 < jtanx> I think trying to write a kernel module would cause more grief than it's worth
+15:50 < jtanx> http://saadahmad.ca/using-pwm-on-the-beaglebone-black/
+15:51 < jtanx> I have no idea what's been updated and what hasn't
+15:51 < jtanx> as in, do we have that fix in our kernel
+15:53 < sam_moore> I don't know
+15:54 < sam_moore> We only need 1 PWM though
+16:00 < sam_moore> Or at least, last we heard there was only one. Doesn't make the system very expandable though.
+19:07 < jtanx> you know what I'll try loading an Ubuntu image from rcn to my sd card
+19:08 < jtanx> instead of from armhf
+19:08 < jtanx> armhf.com*
+19:17 < jtanx> ah screw it
+19:17 < jtanx> i'll stick with debian (but do the same thing)
+21:07 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Wed Sep 25 2013
+12:15 < jtanx> I think I know why we were having issues with pwm yesterday
+12:16 < jtanx> if you do this command
+12:16 < jtanx> echo bone_pwm_P8_13 > /sys/devices/bone_capemgr.8/slots
+12:16 < jtanx> you make it unavailable from /sys/class/pwm
+12:16 < jtanx> so in the run.sh script it was exporting all the pwm devices via the first method
+12:16 < jtanx> and then it becomes unavailable via sysfs
+12:17 < jtanx> anyway... I tried booting from the rcn image
+12:17 < jtanx> it comes with pwm enabled already
+12:17 < jtanx> and via that capemgr I got pwm to work
+12:17 < jtanx> I don't know what /sys/class/pwm/pwm0 corresponds to (which pin)
+12:19 < jtanx> the electronics teams' bbb wasn't done properly when we tried to upgrade the kernel
+12:19 < jtanx> probably something to do with the device tree stuff
+12:19 < jtanx> so I flashed it with the rcn image (which runs 3.8.13-bone26
+12:20 < jtanx> (demo image from here)
+12:20 < jtanx> elinux.org/BeagleBoardDebian
+13:09 -!- jtanx_ is now known as jtanx
+13:16 < jtanx> oh
+13:16 < jtanx> so it now works
+13:16 < jtanx> echo bone_pwm_P9_22 > slots
+13:16 < jtanx> if I do that line for pwm0
+13:26 < jtanx> oh right
+13:26 < jtanx> echo bone_pwm_P9_21 >slots
+13:26 < jtanx> for pwm1
+13:30 < jtanx> ahhhhhh
+13:30 < jtanx> if you comment out the line
+13:30 < jtanx> modprobe pwm_test
+13:30 < jtanx> from run.sh
+13:30 < jtanx> it works
+13:43 < jtanx> geeze kernel 3.8 has issues with usb hotplugging
+13:43 < jtanx> https://groups.google.com/forum/?fromgroups#!searchin/beagleboard/usb/beagleboard/8aalvyWwaig/MUXAPuMTSOYJ
+13:43 < jtanx> which explains why we're having issues with cameras
+13:43 < jtanx> (partly at least)
+13:47 < jtanx> and now pwms not working again
+13:48 < jtanx> via sysfs
+13:50 < jtanx> oh
+13:50 < jtanx> I know why
+13:51 < jtanx> you have to export it /sys/class/pwm
+13:51 < jtanx> first
+13:51 < jtanx> *before* you do stuff like echo bone_pwm_P9_21 >slots
+13:52 < jtanx> yep
+13:53 < jtanx> so the order is: echo 0/1 > /sys/class/pwm/export
+13:53 < jtanx> then do that other stuff
+13:57 < jtanx> egh
+13:57 < jtanx> finnicky
+13:57 < jtanx> ok I have to stop now
+16:04 < jtanx> well that was an interesting experience
+16:04 < jtanx> it's most reliable when you work directly with /sys/devices/ocp2.helper/PWM9_22*
+16:05 < jtanx> I think if you echo am33xx_pwm to the slots thing when it's already loaded
+16:05 < jtanx> weird shit can happen
+16:05 < jtanx> too
+16:07 < jtanx> setting the period via sysfs (eg /sys/class/pwm) didn't work most of the time either
+16:07 < jtanx> you could change duty but not period
+16:07 < jtanx> although I swear I had it working at one point
+16:07 < jtanx> via the other way I think it works ok
+16:08 < jtanx> oh yeah, and I was doing this using the demo image from http://elinux.org/BeagleBoardDebian
+16:09 < jtanx> the electrical group's one has been reflashed with that version as well
+16:09 < jtanx> (for ours I worked off my sd card)
+16:10 < jtanx> that image also enables the ethernet-over-usb
+16:36 < jtanx> I think we have to be careful which pins we export/enable
+16:37 < jtanx> https://github.com/CircuitCo/BeagleBone-Black/blob/master/BBB_SRM.pdf?raw=true
+16:37 < jtanx> pages 80-82
+16:37 < jtanx> the pins have different meanings based on what mode they're in
+16:41 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+18:05 < jtanx> ...so I brought the BBB home, even though I should be studying for 2402 :S
+18:05 < jtanx> the microphone came in today too
+18:19 < jtanx> ok
+18:19 < jtanx> so these documents: https://github.com/derekmolloy/boneDeviceTree/tree/master/docs
+18:19 < jtanx> describes what the pins are used for by default
+19:00 < sam_moore> Ah... they already got the microphone
+19:00 < sam_moore> Welp. Guess we're stuck with it.
+19:00 < sam_moore> So... we can record <50Hz sounds reliably, maybe
+19:00 < sam_moore> How useful
+19:01 < sam_moore> Have I been missing out on an email stream where the sensors team actually clears things with us?
+19:04 < jtanx> not that I know of
+19:04 < jtanx> haha
+19:04 < jtanx> in other news
+19:04 < jtanx> the sensors team ordered a pressure sensor with no mount
+19:04 < jtanx> adrian had a spat because it'd cost something like $200 to make the mount
+19:05 < jtanx> for a $10 part
+19:05 < jtanx> so he said, order it from online , I don't care if it's from overseas
+19:05 < sam_moore> Oh boy
+19:06 < sam_moore> If there's an issue with the camera and/or microphone they'll blame us
+19:06 < jtanx> yeah
+19:06 < jtanx> about that camera
+19:06 < sam_moore> Oh dear...
+19:06 < sam_moore> Go ahead?
+19:06 < jtanx> still couldn't get it to work today
+19:06 < sam_moore> God dammit
+19:06 < jtanx> although I didn't spend much time on it
+19:06 < jtanx> I got pwm to work
+19:06 < jtanx> mostly
+19:06 < sam_moore> I thought it might be something like adding the user to the "video" group
+19:06 < sam_moore> That's good!
+19:07 < sam_moore> What was happening?
+19:07 < jtanx> yeah, the problem is it doesn't show up at all (the camera)
+19:07 < sam_moore> Hmm
+19:07 < jtanx> and partly because 3.8 has an issue with usb hotplugging
+19:07 < sam_moore> Haha
+19:07 < jtanx> about pwm
+19:07 < jtanx> it seems that the sysfs method is not so reliable
+19:07 < jtanx> you can get it to work
+19:07 < jtanx> you have to export those first
+19:07 < jtanx> so echo 0 > /sys/class/pwm/export
+19:08 < jtanx> then (and only then)
+19:08 < jtanx> can you do
+19:08 < jtanx> that echo to the slots
+19:08 < jtanx> for those pins
+19:08 < jtanx> then it seems to be happy
+19:08 < jtanx> if you echo am33xx_pwm to the slots when it's already enabled
+19:08 < jtanx> that also screws things up
+19:08 < sam_moore> Ok
+19:09 < sam_moore> Thanks for working that out
+19:09 < jtanx> yeah
+19:09 < sam_moore> If you want to change from sysfs to the other method that's fine
+19:09 < sam_moore> But sysfs was much simpler to code
+19:09 < jtanx> should have spent that time studying for mech2402 though :P
+19:09 < sam_moore> Because you just sprintf an integer to the path
+19:09 < jtanx> yeah
+19:09 < jtanx> witht he other way it's all that dynamic path crap
+19:09 < sam_moore> Rather than keeping track of "bone_pwm_test_P9_22.15.arbitrary_string" crap
+19:09 < sam_moore> Exactly :P
+19:09 < jtanx> but
+19:10 < jtanx> you can enable pwm and analogue on boot
+19:10 < jtanx> if I can find the link
+19:10 < sam_moore> Sure, if that's easy
+19:10 < sam_moore> I figured if we put them in the /etc/init.d script that'd be fine too
+19:10 < sam_moore> Actually... maybe we should put it in the /etc/init.d script
+19:11 < jtanx> oh yeah
+19:11 < jtanx> and the demo image from that rcn image
+19:11 < sam_moore> Because if someone gets a different beaglebone then they'd have to reenable it on boot
+19:11 < jtanx> is better than screwing around with recompiling kernels
+19:11 < sam_moore> Can you give a link?
+19:11 < jtanx> I think it's the first image that you had originally
+19:11 < jtanx> http://elinux.org/BeagleBoardDebian
+19:12 < jtanx> there's this script in /boot
+19:12 < sam_moore> Oh
+19:12 < jtanx> that allows you to copy the sd card to flash
+19:12 < jtanx> it also enables the usb over ethernet
+19:12 < sam_moore> Oh right, the image I downloaded before we used yours
+19:12 < sam_moore> Cool
+19:12 < jtanx> yeah
+19:12 < jtanx> I flashed electronics' one with that
+19:12 < sam_moore> Does PWM and stuff work on it?
+19:13 < jtanx> probably
+19:13 < jtanx> I was using the same image
+19:13 < jtanx> on ours
+19:13 < jtanx> you run this script and it copies exatly what's on the sd card to the internal flash
+19:13 < jtanx> resizes the partition as necessary
+19:13 < jtanx> http://digital-drive.com/?p=146
+19:13 < jtanx> that page shows how to enable on boot
+19:13 < jtanx> it's just a change to uEnv.txt in the boot partition
+19:18 < sam_moore> Good work
+19:19 < sam_moore> While I remember, for multiple logins and crap... can you just try to login as a local user account?
+19:19 < sam_moore> Then we could make a wrapper around adduser and deluser for the "administrator" account
+19:19 < jtanx> wow
+19:20 < jtanx> I don't know
+19:20 < sam_moore> I was just thinking
+19:20 < sam_moore> Linux has a user account system already
+19:20 < jtanx> yep, but is it a good idea to be making ~300 on a BBB?
+19:21 < sam_moore> Well... putting LDAP on the BBB probably won't be less intense
+19:21 < sam_moore> I know it's called "Lightweight"
+19:21 < sam_moore> But that's in comparison to "DAP"
+19:21 < jtanx> well to be perfectly honest, adrian is asking way too much
+19:21 < sam_moore> Which was designed in the 1980s by a telephone directory company and used the original OSI networking model
+19:21 < jtanx> you simply can't support a 300-odd user base on something like a BBB
+19:21 < sam_moore> Yeah
+19:22 < sam_moore> But maybe something like 30 users would work?
+19:22 < jtanx> yeah
+19:22 < jtanx> let's just keep it at that limit
+19:22 < sam_moore> Another thing regarding the crazy requirements...
+19:22 < sam_moore> If we have multiple Beaglebones running FastCGI
+19:23 < sam_moore> We can design our GUI so that it has links to the appropriate Beaglebone for each function
+19:23 < sam_moore> I don't think we actually need to do anything in nginx or the Beaglebone software
+19:24 < jtanx> hmm
+19:24 < sam_moore> At least in terms of displaying sensor data
+19:24 < sam_moore> For actuator control, we would need to introduce networking between individual beaglebones
+19:24 < jtanx> it actually depends on what he means by 'extensible' and/or distributed
+19:24 < jtanx> like
+19:24 < jtanx> you could say this BBB is for this experiement
+19:25 < jtanx> this other BBB is for this other experiment
+19:25 < sam_moore> But quite frankly you'd be mad to trust a distributed system with networking delays to coordinate control over hardware
+19:25 < jtanx> well yeah
+19:25 < sam_moore> Well at least something like this where we care about safety
+19:25 < sam_moore> But if you keep the actual control over hardware independent and on seperate devices
+19:25 < jtanx> but I mean
+19:26 < jtanx> wait
+19:26 < jtanx> if we interpret it as meaning
+19:26 < jtanx> that each BBB runs an instance of the software
+19:26 < jtanx> then they would still be separate
+19:26 < jtanx> as in each BBB controls one 'experiment'
+19:26 < jtanx> you customise each BBB based on the experiment that needs to be done
+19:26 < sam_moore> Yes, that would work
+19:26 < sam_moore> Yep
+19:26 < jtanx> then there's no interaction between BBBS
+19:27 < jtanx> the only thing is you have some sort of control at the front
+19:27 < jtanx> that determines which BBB you connect to
+19:27 < sam_moore> Yes, if there's interaction between BBBs it gets problematic
+19:27 < jtanx> yeah
+19:27 < sam_moore> Yes, you have one BBB which gives the user the "main menu" part of the GUI
+19:27 < jtanx> I reckon that's a stupid requirement to ask
+19:27 < jtanx> yeah
+19:27 < sam_moore> Then the others just have customised GUIs or whatever
+19:28 < jtanx> once you have to get them to talk to each other, you're then having to try and invent a whole new protocol
+19:28 < jtanx> for that
+19:28 < sam_moore> Yeah, and it depends on exactly what the hardware is
+19:29 < sam_moore> You might be able to hack it onto the web protocol (eg: BeagleBone #1 sends http://beaglebone2/api/actuators?id=X?set=Y)
+19:29 < sam_moore> But... let's not think about that
+19:30 < sam_moore> It's clearly beyond the scope of this project
+19:31 < sam_moore> So, after all that, I reckon if we use snoopy for ADC/GPIO/PWM and spike for the dilatometer then that would be cool (probably not actually necessary though)
+19:31 < jtanx> yeah
+19:32 < sam_moore> The dilatomter... it's going to cause headaches if Kieren really wants to "return" an array of points
+19:33 < sam_moore> If the goal is to provide the user with a demonstration of what the dilatometer is doing, then you can just edit an image
+19:33 < sam_moore> If the goal is to provide more data... I don't see the point really
+19:34 < sam_moore> It's going to be the same sort of distribution every time
+19:34 < sam_moore> Realistically all anyone would do is average it
+19:34 < sam_moore> Maybe take a standard deviation
+19:36 < jtanx> I really don't know why a dilatometer's even needed
+19:36 < sam_moore> Educational reasons? :P
+19:37 < jtanx> haha sure
+19:37 < sam_moore> Anyway, hopefully Callum will deal with the dilatometer stuff
+19:37 < sam_moore> The interferometer code is a good starting point
+19:39 < jtanx> Yeah
+19:39 < jtanx> hopefully
+19:42 < sam_moore> We should arrange some meetings next week
+19:42 < sam_moore> Also I'd like to see more of the other group members committing to git and talking in this channel
+19:45 < sam_moore> People are missing a lot of design decisions here :S
+19:45 < jtanx> Yeah
+19:51 < jtanx> Ok
+19:51 < jtanx> so I made a LUT from pin number on the board to GPIO pin number
+19:52 < jtanx> so if you wanted to use P8_13
+19:52 < jtanx> you can use the lut to figure out what gpio number that corresponds to
+19:53 < jtanx> we should probably restrict which pins can be used
+19:53 < jtanx> because quite a few are reserved
+19:53 < sam_moore> Sure
+19:53 < sam_moore> Remove the #defines in bbb_pin_defines.h ?
+19:54 < sam_moore> Don't export those pins in pin_test.c
+19:54 < sam_moore> It is only really for testing anyway
+19:54 < jtanx> yeah
+19:55 < sam_moore> Although... I predict if we leave it in the software, *someone* at some point will try and control hardware directly through it :P
+19:55 < sam_moore> For all the educational stuff it's nice though
+19:56 < sam_moore> Oh, we could have an image of the pinout diagram
+19:56 < sam_moore> And when someone clicks on a part of the image they get to control that pin
+19:57 < sam_moore> Anyway... I really should study for MECH2402 or I will fail it
+19:57 < sam_moore> So bye
+19:57 < jtanx> yeah
+19:57 < jtanx> bye
+20:50 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Thu Sep 26 2013
+17:52 < jtanx> http://www.ti.com/lit/ug/spruh73i/spruh73i.pdf p1986 (chapter 15) on pwm
+17:55 < jtanx> page 1996 on ePWM
+17:56 < jtanx> ahhhhh
+17:56 < jtanx> for ehrpwm0a/0b
+17:56 < jtanx> the frequency is linked
+18:08 < jtanx> ehrpwm is enhanced resolution pwm
+18:08 < jtanx> Implemented using the A signal path of PWM, that is, on the EPWMxA output. EPWMxB output has
+18:08 < jtanx> conventional PWM capabilities
+18:08 < jtanx> (p2053)
+19:06 < jtanx> if you want to make the pwm stuff not suck
+19:06 < jtanx> there's this file called pwm_test.c
+19:06 < jtanx> that's the driver
+19:59 < jtanx> for future ref: http://armsdr.blogspot.com.au/2013/04/archlinux-on-beaglebone-and-linux-38.html
+21:19 < jtanx_> urgh wow
+21:19 < jtanx_> ok, so I think pwm1/3/5 shouldn't be used to avoid period conflicts
+21:19 < jtanx_> (pwm0/1 is for channel A/B of one pwm device, 3/4 another, 5/6 another)
+21:20 < jtanx_> btw the correspondence between pwmX and pin number is:
+21:21 < jtanx_> P9_22, P9_21, P9_42. P9_14, P9_16, P8_19, P8_13, P9_28
+21:23 < jtanx_> pwm 2/7 correspond to eCAP devices
+21:24 < jtanx_> which I think are to capture PWM input
+21:24 < jtanx_> but they can also be used to generate PWM output, afaik
+23:08 -!- jtanx_ [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Fri Sep 27 2013
+13:29 < jtanx> so, apparently if we don't order stuff that we need before the mid semester break (ie today), adrian just won't order it
+13:29 < jtanx> in other news, I think I've mostly sorted out pwm
+13:43 < jtanx> trying to standardise the pin code
+20:10 < jtanx_> lol
+20:10 < jtanx_> we have a file authored '14 years ago'
+20:10 < jtanx_> in git
+20:10 < jtanx_> talk about commitment
+21:47 < jtanx_> so on non-BBB platforms, I disabled the pin code
+21:47 < jtanx_> required some pretty dubious hacks to stop gcc from complaining
+21:48 < jtanx_> 1st attempt: define the functions to nothing
+21:48 < jtanx_> gcc complains about statements that do nothing
+21:48 < jtanx_> various combinations later on statements that do nothing, I move to making function stubs
+21:49 < jtanx_> shaft all the parameters to the stubs
+21:49 < jtanx_> to stop complaints about unused variables
+21:49 < jtanx_> (eg if you did int freq=1000; PWM_Set(...,freq) where the define for PWM_Set doesn't use freq
+23:12 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sat Sep 28 2013
+--- Log closed Sat Sep 28 12:20:39 2013
+--- Log opened Sat Sep 28 12:26:58 2013
+12:26 -!- Irssi: #mctxuwa_softdev: Total of 3 nicks [0 ops, 0 halfops, 0 voices, 3 normal]
+12:27 -!- Irssi: Join to #mctxuwa_softdev was synced in 9 secs
+21:36 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Log closed Sun Sep 29 08:28:33 2013
+--- Log opened Sun Sep 29 08:31:40 2013
+08:31 -!- Irssi: #mctxuwa_softdev: Total of 1 nicks [0 ops, 0 halfops, 0 voices, 1 normal]
+08:31 -!- Irssi: Join to #mctxuwa_softdev was synced in 2 secs
+08:31 -!- Irssi: #mctxuwa_softdev: Total of 1 nicks [0 ops, 0 halfops, 0 voices, 1 normal]
+08:31 -!- You're now known as sam_moore
+15:27 < Rowan> hey jeremy, did you upload the updated gui onto a github? i cant find it anywhere ??
+15:32 < sam_moore> Hi Rowan, I think it's in a few subdirectories
+15:33 < sam_moore> Ah, it's under "testing/MCTXWeb"
+15:33 < sam_moore> https://github.com/szmoore/MCTX3420/tree/master/testing/MCTXWeb/public_html
+15:37 < Rowan> thats the most uptodate version?
+15:39 < jtanx> um
+15:39 < jtanx> maybe
+15:39 < jtanx> I'll update with what I've got now
+15:42 < jtanx> ok
+15:42 < jtanx> updated
+15:42 < jtanx> pintest stuff still not complete
+15:42 < Rowan> are you guys busy?
+15:42 < Rowan> (will you be on here long?
+15:42 < jtanx> right now I'm working on that pintest page
+15:42 < jtanx> I'm here
+15:43 < Rowan> in g19?
+15:43 < jtanx> no
+15:43 < jtanx> I'm at home
+15:43 < Rowan> okay
+15:43 < sam_moore> jtanx: As in, the pin control code isn't working? I didn't think I screwed it up that badly?
+15:43 < jtanx> nah
+15:43 < jtanx> the pin control web page
+15:43 < sam_moore> Oh, nice
+15:43 < jtanx> just thought it'd be easier to have a webpage to control stff
+15:43 < sam_moore> Yes
+15:43 < jtanx> especially for electronics
+15:43 < sam_moore> Yes, definitely
+15:44 < Rowan> are we going to make the gui UWA based or make it our own ?
+15:44 < Rowan> adrian made it sound like he wanted it UWA based with the logo and stuff
+15:44 < jtanx> we probably have to add uwa logo
+15:44 < sam_moore> We should probably put the UWA logo on it
+15:44 < sam_moore> Yes
+15:45 < Rowan> so make it similar to the main UWA page or make it similar to LMS?
+15:46 < Rowan> does anyone know if IT are in this week?
+15:46 < jtanx> we need to make it Colourful
+15:47 < jtanx> I don't think it needs to be exactly like UWA page or LMS
+15:47 < jtanx> just something similar would be good
+15:47 < sam_moore> I think LMS is probably a bad example, lots of people hate it
+15:48 < jtanx> haha
+15:48 < jtanx> I think LMS is fine, although there seems to be alot of problems with it on the backend
+15:48 < Rowan> yeah but adrian loves it
+15:48 < Rowan> keeting uses it for all 5 units hes teaching
+15:49 < Rowan> has anyone heard from james about the gui, i think he uploaded something to dropbox
+15:49 < jtanx> really
+15:49 < jtanx> I haven't checked db
+15:49 < jtanx> why's he not using git
+15:50 < Rowan> i dont know. has he uploaded anything to it/
+15:50 < Rowan> he might be.
+15:50 < Rowan> sometime last week he said he made up a gui todo list type thing but i dont know where he put it
+15:50 < sam_moore> It doesn't look like there is anything in dropbox
+15:50 < jtanx> right
+15:51 < Rowan> im trying to get in contact with him but i might just move on. so we want something somewhat related to lms?
+15:51 < Rowan> or no?
+15:52 < sam_moore> I think so, although it primarily needs to be able to control experiments
+15:52 < sam_moore> For the educational stuff, you could use a wiki style
+15:53 < sam_moore> https://github.com/szmoore/MCTX3420/wiki
+15:54 < Rowan> wiki isnt graphical enough
+15:54 < sam_moore> Yeah, probably
+15:54 < Rowan> its hard to say what adrian wants....
+15:54 < sam_moore> It looks like James has committed something to his own fork of the repository
+15:55 < jtanx> ok
+15:55 < sam_moore> https://github.com/firefields/MCTX3420/commit/e6a8120fdf1cef6d73421bd2b1edb1c45a6f3960
+15:55 < sam_moore> I can pull that into the main fork
+15:55 < sam_moore> Hopefully
+15:55 < jtanx> I think that may actually be
+15:56 < jtanx> sorry
+15:56 < jtanx> my computer decided to freeze at that instant
+15:57 < jtanx> but yeah that's the stuff
+15:57 < jtanx> he worked on
+15:57 < sam_moore> Oh wow... there are a *lot* of files
+15:57 < jtanx> before mine
+15:57 < jtanx> it's all the jquery ui stuff
+15:57 < sam_moore> jquery-ui
+15:57 < sam_moore> Yes
+15:57 < jtanx> wich I told him to get rid off
+15:57 < sam_moore> Dammit I just merged it :S
+15:57 < jtanx> but yeah, he hasn't committed anything since
+15:58 < jtanx> (that commit was done with me at the last meeting)
+15:58 < Rowan> so are we deciding on jeremys version it seems alot more complete
+15:59 < sam_moore> Yes, stick with Jeremy's and build on it
+15:59 < Rowan> sweet :)
+16:46 < Rowan> what was the password and username ?
+16:48 < jtanx> there's none
+16:48 < jtanx> if you haven't set up the htpasswd thing
+16:48 < jtanx> (ie it doesn't work)
+16:48 < jtanx> still not sure how to implement it either
+16:48 < jtanx> now that adrian wants it scalable to '300 students'
+16:53 < jtanx> I need another network switch...
+16:53 < Rowan> okay.
+16:53 < Rowan> i might make up a cover page, which links to the one we have after you log in
+16:54 < Rowan> like this but simpler: http://www.futureeffect.com.au/
+16:54 < Rowan> with a scrolling picture thing and stuff
+16:55 < MctxBot> I live again...
+16:55 < Rowan> whos mctxbot again?
+16:56 < jtanx> :P
+16:56 < jtanx> It does nothing
+16:56 < Rowan> its a cover page
+16:56 < Rowan> its what adrian said
+16:56 < jtanx> It connects whenever mctx.us.to is running
+16:57 < Rowan> what what
+16:57 < Rowan> ?
+16:58 -!- MctxBot changed the topic of #mctxuwa_softdev to: MCTX3420 - Software and co.
+16:59 < jtanx> mctxbot is no one, it's the server I operate
+17:02 < Rowan> hahahahah
+17:02 < Rowan> oh.
+17:03 < Rowan> ive put the uwa logo onto the gui
+17:09 < sam_moore> I'm looking at the login stuff
+17:10 < sam_moore> So... we probably don't want to use shell accounts, since once you have shell access you can do all sorts of things that are completely unrelated to this educational stuff
+17:10 < Rowan> could someone check ive forked it right
+17:10 < sam_moore> I think storing our own file in the same format as /etc/shadow is probably ok
+17:11 < Rowan> the gui.html & style.css
+17:12 < sam_moore> It looks like you've made a new branch for each of the files?
+17:12 < Rowan> i think so
+17:12 < Rowan> do you need to update the main file and i request it to you
+17:13 < Rowan> just so everything is uptodate and and organised
+17:13 < sam_moore> You submitted a pull request, that's fine
+17:13 < sam_moore> Yep
+17:13 < Rowan> both html and css files
+17:13 < sam_moore> You should probably keep edits in the "master" branch, or at least don't make a seperate branch for each file
+17:14 < sam_moore> (That way you only have to do one pull request for all of them, not one per file)
+17:14 < Rowan> how do i do that :|
+17:14 < sam_moore> Are you using a GUI or the command line?
+17:15 < Rowan> gui
+17:15 < jtanx> I think you were working on an old version
+17:15 < jtanx> before I pushed the new one
+17:15 < sam_moore> Hmm
+17:15 < jtanx> so some stuff got deleted
+17:15 < Rowan> S***
+17:15 < jtanx> https://github.com/szmoore/MCTX3420/commit/f43006da69d629d0c5421506c8a56d517b94924e
+17:15 < jtanx> it's ok
+17:16 < sam_moore> jtanx: It should have complained if there was a conflict?
+17:16 < jtanx> I dunno
+17:16 < Rowan> i only added 1 line to the css file anyways
+17:16 < jtanx> yeah
+17:16 < jtanx> so the form.controls, div.centre .bold etc
+17:16 < jtanx> stuff was added later
+17:18 < Rowan> when im home ill try put a cover page with pictures and the login page on it and link the login page to the gui we have atm.
+17:18 < Rowan> any constructive critism ?
+17:19 < Rowan> also ill try be on irc for the rest of the sem to keep up todate with you guys :)
+17:21 < sam_moore> The future effect looks cool
+17:21 < sam_moore> I guess we need to pick some relevant images though
+17:21 < Rowan> yeah ill talk to some other teams and see if they have any cool pics, like the can were testing, the cad model ect
+17:22 < Rowan> ttyl
+17:22 < jtanx> has this been pushed to your (sam's) repo?
+17:22 < sam_moore> I accepted a pull request a while ago
+17:22 < sam_moore> But I noticed Rowan has two branches in his fork; there's one file changed in each branch
+17:23 < jtanx> oh ok
+17:23 < jtanx> because I don't see any change except for some css stuff in your repo
+17:24 < sam_moore> Rowan: I'll try and get in earlier tomorrow to help with the "branching" stuff in git
+17:25 < sam_moore> It looks like your git GUI might have some wierd settings
+17:28 < MctxBot> damn ircnet
+17:29 < MctxBot> 'Too many user connections (local))'
+17:29 < MctxBot> so i'll steal mctxbot for now
+17:42 -!- jtanx_ is now known as jtanx
+17:43 < jtanx> finally
+17:52 < sam_moore> So, we can implement our own login system fairly easily, I'm not sure if we want to or not, although I'm leaning towards just doing it
+17:53 < sam_moore> It wouldn'
+17:54 < sam_moore> t necessarily be the best solution in terms of flexibility
+17:54 < sam_moore> But it's probably a hell of a lot more "lightweight" than LDAP
+17:55 < sam_moore> Using LDAP you'd have to dedicate processes just to being a login server
+17:56 < sam_moore> So... we provide some wrappers around a text file of usernames and password salts, and allow "admin" to use wrappers that change the files
+17:57 < sam_moore> ... I suppose we can have a "forgot password" functionality
+17:57 < sam_moore> Though it is certainly a pain
+17:59 < sam_moore> I feel like we should have "forgot password" but make it ridiculously painful to use, for revenge
+17:59 < sam_moore> ...errr I mean security reasons
+17:59 < sam_moore> Did I say "revenge?"
+18:00 < sam_moore> "Forgot password" should activate one of the ADC channels and record the average over 10s
+18:01 < sam_moore> And you have to enter what it was
+18:01 < sam_moore> No wait, any student could do that
+18:01 < sam_moore> Hmmm
+18:03 < sam_moore> "Your password has been sent via Australia Post to your registered address"
+18:04 < jtanx> hahaha
+18:04 < jtanx> evil
+18:04 < jtanx> I was kinda hoping there was some ready made
+18:04 < jtanx> gateway software
+18:05 < jtanx> like you know the SSO services that uwa uses
+18:05 < sam_moore> Yeah, that's an LDAP gateway
+18:05 < jtanx> yeah but like a simplified version
+18:05 < sam_moore> Haha
+18:05 < jtanx> that just uses an sql database or something
+18:05 < jtanx> slap it on and we're done
+18:06 < sam_moore> Yeah I guess we should look for that
+18:06 < sam_moore> Do we allow users to change their password?
+18:06 < sam_moore> Ooh
+18:06 < sam_moore> Our system is on the UWA network...
+18:06 < sam_moore> Could we just wrap to UWA's LDAP servers?
+18:06 < sam_moore> And... um...
+18:07 < jtanx> do they trust us that much?
+18:07 < sam_moore> They can't really stop us
+18:07 < sam_moore> You can bind to the LDAP servers already
+18:07 < sam_moore> It's not like they can...
+18:07 < jtanx> really?
+18:07 < sam_moore> Put in a login or something
+18:07 < sam_moore> That you have to go through first
+18:07 < jtanx> well then
+18:07 < sam_moore> :P
+18:08 < sam_moore> Hang on, there's some horribly verbose way to test it in a shell
+18:08 < jtanx> my god why is it so hard to vertically align content in css
+18:14 < sam_moore> ldapsearch -x -D cn=20503628,ou=Students,ou=Users,ou=UWA,dc=uwads,dc=uwa,dc=edu,dc=au -h ldap.pheme.uwa.edu.au -W -v -b cn=20503628,ou=Students,ou=Users,ou=UWA,dc=uwads,dc=uwa,dc=edu,dc=au
+18:14 < sam_moore> Replace 20503628 with your own student number
+18:14 < sam_moore> So
+18:14 < sam_moore> Basically we can wrap to ldapsearch using their username and password
+18:14 < jtanx> I wonder what adrian has to say about that
+18:15 < sam_moore> Well, obviously he doesn't want just *any* student being able to access it :S
+18:15 < sam_moore> But...
+18:15 < sam_moore> We could have a plain text file of students
+18:15 < sam_moore> That he can change
+18:15 < sam_moore> Also...
+18:16 < sam_moore> UWA IT might have a problem
+18:16 < sam_moore> It would be ridiculously easy to put a back door in to steal student's passwords :S
+18:16 < jtanx> yeah
+18:16 < sam_moore> But... I guess people would just use their pheme password anyway
+18:17 < sam_moore> I mean, I would
+18:18 < sam_moore> http://xkcd.com/792/
+18:18 < sam_moore> I reckon we implement the system to bind to UWA's ldap servers, obviously don't do anything unethical
+18:19 < jtanx> :P
+18:19 < jtanx> what about jellyfish, calmaeth
+18:19 < sam_moore> And warn Adrian that if he lets random students work on this they can potentially do unethical things
+18:19 < sam_moore> What do they use for login?
+18:20 < jtanx> they roll their own I think
+18:20 < jtanx> but obviously there's some way to import users
+18:20 < sam_moore> Hmm
+18:20 < sam_moore> I like the idea of using UWA's pheme server though
+18:21 < sam_moore> Just add a list of allowed student numbers in front of it
+18:21 < sam_moore> Actually, staff as well
+18:21 < jtanx> yeah true
+18:21 < sam_moore> No wait
+18:22 < sam_moore> That could end in the staff member accidentally deleting themselves
+18:22 < sam_moore> Um...
+18:22 < sam_moore> Just hard code in Adrian's staff number as always allowed :P
+18:22 < sam_moore> Ergh, so many annoying things that have nothing to do with blowing up a pressure vessel -_-0
+18:23 < sam_moore> Ok, I'll try do some more on the login tomorrow
+18:23 < jtanx> ok cool
+18:23 < jtanx> I'll try to come in early tomorrow too
+18:23 < jtanx> though I really should be working on my other projects too...
+18:24 < sam_moore> Well, we're doing alright on the list of things Todo
+18:24 < sam_moore> Not sure how well we're doing by Adrian's standards
+18:24 < sam_moore> Oh, all that GUI stuff isn't getting done very afst
+18:24 < sam_moore> *fast
+18:24 < jtanx> yeah
+18:25 < sam_moore> Also haven't heard anything about image processing from Callum
+18:25 < jtanx> I wonder if james has done anything at all
+18:25 < sam_moore> Oh well... I'll do logins this week
+18:25 < jtanx> Adrian doesn't seem to like how most of the groups are going
+18:26 < sam_moore> Well, not much has happened with other groups I suppose
+18:26 < sam_moore> We've written a lot of software, but it's all low level
+18:26 < jtanx> I also think he underappreciates the effort required for the software though
+18:27 < sam_moore> I think so
+18:27 < sam_moore> Though we really should have more GUI stuff done
+18:28 < jtanx> yeah
+18:28 < jtanx> we really do need to make progress on that
+19:12 < jtanx> firebug slows down my computer so much
+19:22 < jtanx> ok I just updated the gui stuff a bit
+19:22 < jtanx> ...now back to testing if this pin test html page works
+19:32 < jtanx> well hey
+19:32 < jtanx> it works
+19:33 < jtanx> Should probably do reference counting on the export/unexport stuff though
+19:36 < jtanx> actually maybe not
+19:46 < sam_moore> I think DAP (which is what LDAP was based on) wasn't actually meant to be a login system when they designed it :P
+19:46 < sam_moore> But it's used for that more than anything else
+19:46 < sam_moore> Essentially it was supposed to be like an electronic telephone directory
+19:47 < sam_moore> Then they realised that it was a bad idea for any random person to be able to edit stuff, so authentication got added to it
+19:47 < sam_moore> And now it's pretty much just used for authentication
+19:48 < sam_moore> There seems to be a sane C library for it, so if we just implement a client and rely on the good IT staff at UWA to keep pheme working...
+19:49 < sam_moore> (Does UWA even still hire IT staff?)
+19:49 < sam_moore> (Someone told me they "integrated" the librarians into IT)
+19:50 < sam_moore> We'll need to put our login page under HTTPS at some point
+19:52 < jtanx> I was just thinking
+19:53 < jtanx> put the whole damn thing under ssl
+19:53 < jtanx> and be done with it
+19:54 < jtanx> hmm interesting
+19:54 < jtanx> if you query the adc on different channels
+19:55 < jtanx> and you query too fast
+19:55 < jtanx> it'll spit back that it's temporarily unavailable
+19:55 < jtanx> probably can't change the mux that fast?
+19:56 < sam_moore> Maybe
+19:56 < sam_moore> It's kind of ironic that the ADC hardware has a multiplexer to give the extra channels
+19:57 < sam_moore> And then we are sticking another multiplexer on that
+19:57 < jtanx> :P
+19:57 < sam_moore> But I suppose if it means we don't need 4 of the same amplifier that's nice
+20:03 < jtanx> ok well the pintest page works good enough
+20:04 < jtanx> some race conditions
+20:04 < jtanx> but eh
+20:04 < jtanx> who cares
+20:04 < jtanx> ohhh I know what's slowing down the bb
+20:04 < jtanx> bbb*
+20:04 < jtanx> the crazy high sampling rate
+20:04 < jtanx> the test files also constantly eat up all the space on my 1gb sd card
+20:06 < jtanx> ..or maybe not
+20:57 < sam_moore> It turns out UWA uses LDAP to keep track of what units you're enrolled in
+20:57 < sam_moore> That's interesting...
+20:58 < sam_moore> Potentially we could restrict access to people enrolled in MXTC3420
+20:58 < sam_moore> That would mess with the new courses :P
+20:59 < sam_moore> And it appears you can connect to ldap.pheme.uwa.edu.au from UWA's network
+20:59 < sam_moore> But... it also appears to use the unsecured LDAP port?
+20:59 < sam_moore> Surely not
+20:59 < jtanx> what
+21:00 < sam_moore> Or maybe (hopefully) they are doing TLS
+21:00 < sam_moore> http://wiki.wireshark.org/LDAP
+21:00 < jtanx> one would hope that there's some sort of encryption going on
+21:00 < sam_moore> Well, there's HTTPS on the SSO page
+21:01 < sam_moore> But if there isn't actually encryption on the ldap connection
+21:01 < sam_moore> You could just plug into a switch and do some packet sniffing and get everyone's passwords :O
+21:01 < jtanx> haha wow
+21:02 < sam_moore> I think they might be using TLS, because my test program doesn't work
+21:07 < sam_moore> ... Or I'm just deleting one more character than I should be in the password -_
+21:11 < sam_moore> Test program works now
+21:11 < sam_moore> Either the ldap library kindly handles TLS for you automagically, or they aren't using it
+21:12 < jtanx> :S
+21:12 < jtanx> if you used wireshark wouldn't it show whether or not it's encrypted
+21:16 < sam_moore> I've just run it through wireshark
+21:16 < sam_moore> It's not encrypted
+21:17 < sam_moore> My password for pheme appears plain as day
+21:17 < jtanx> well that sounds dodgy as hell
+21:18 < sam_moore> Well, you do have to have root access to a machine that can pick up the traffic
+21:18 < sam_moore> But yes, that sounds dodgy
+21:18 < sam_moore> Hang, on a minute
+21:18 < sam_moore> What about Unifi
+21:19 < sam_moore> Well...
+21:19 < sam_moore> I think this should be filed under "Not our problem"
+21:20 < jtanx> ._.
+21:21 < sam_moore> Surely there's some kind of handshake encryption on Unifi though
+21:22 < sam_moore> Anyway, I have a test function that returns true if you can login to pheme, so if we integrate that with our code and maybe modify it to look at enrolled units, that's a good start
+21:23 < sam_moore> Actually I also need to make it work without using deprecated functions
+21:25 < sam_moore> At least the library maintainers still keep the deprecated functions, but it's annoying when something that works perfectly fine and has tonnes of documentation is replaced by something that has almost no documentation
+21:25 < sam_moore> Almost like the new UWA courses...
+21:25 < jtanx> hahaha
+21:25 < jtanx> what's worse is where the new function is a PITA to use by design
+21:26 < sam_moore> Yes
+21:27 < sam_moore> The "deprecated" version has "LDAP * ld = ldap_init(host, port); ldap_set_options(ld, LDAP_OPT_PROTOCOL_VERSION, &version); and ldap_bind_s(ld, dn, password, authentication_method);"
+21:27 < sam_moore> That makes perfect sense to me
+21:27 < sam_moore> No doubt the new and improved version takes 100x as much code
+21:28 < sam_moore> Although admittedly I was confused as to why the ldap_set_options required a pointer to the integer instead of just passing the integer
+21:28 < sam_moore> It probably modifies it in some cases though
+21:31 < jtanx> which package installs ldap
+21:31 < sam_moore> libldap2-dev
+21:31 < jtanx> thanks
+21:31 < sam_moore> For development libraries
+21:32 < sam_moore> ldap-utils for tools like ldapsearch
+21:32 < sam_moore> At the moment I can only find documentation for libldap-dev (the deprecated stuff)
+21:32 < sam_moore> To get it to work, you just put a #define LDAP_DEPRECATED 1 before the #include <ldap.h>
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+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
+11:17 < sam_moore> Hi Rowan, do you have anything we should put in the report?
+11:59 < Rowan> ill have the outline of all the pages i wanted on git this afternoon
+12:05 < sam_moore> Ok
+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
+21:44 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Tue Oct 01 2013
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Wed Oct 02 2013
+--- Day changed Thu Oct 03 2013
+09:30 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+10:26 -!- MctxBot_ is now known as MctxBot
+10:45 < jtanx> finally
+12:09 < MctxBot> guh
+12:09 < MctxBot> crappy laptop keeps crashing
+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
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Fri Oct 04 2013
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sat Oct 05 2013
+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
+18:06 < jtanx> now... to do some work on this gui
+21:15 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sun Oct 06 2013
+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
+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
+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:43 -!- Callum_ is now known as Callum
+19:30 < jtanx> I've just enabled personal webspace for everyone
+19:30 < jtanx> check your emails for details
+19:52 < jtanx> :(
+21:11 < sam_moore> Cool
+21:11 < sam_moore> Sorry, I'm trying to finish CITS3003
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Mon Oct 07 2013
+12:47 < callum> you guys in g19?
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Tue Oct 08 2013
+21:16 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Wed Oct 09 2013
+10:56 < jtanx_> welp the usb microscope arrived
+10:56 < jtanx_> it uses uvcvideo too
+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:59 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+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
+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 < 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:45 < jtanx> now to watch this week's lecture...
+21:31 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Thu Oct 10 2013
+09:40 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+23:04 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Fri Oct 11 2013
+09:59 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+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> <!--# include file="footer.html" -->
+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("<p> Something fucked up </p>")
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sat Oct 12 2013
+--- Log closed Sat Oct 12 17:39:23 2013
+--- Log opened Sat Oct 12 22:41:38 2013
+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
+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
+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
+--- Day changed Mon Oct 14 2013
+10:03 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+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 <p> blocks
+19:48 < sam_moore> Hmm, but that would make them all on new paragraphs
+19:48 < jtanx> fine, <span>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: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
+--- 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
+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__ [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Wed Oct 16 2013
+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)
+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
+23:28 -!- jtanx_ [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Thu Oct 17 2013
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+22:38 -!- jtanx [
[email protected]] 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 -!- 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
+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: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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sat Oct 19 2013
+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 [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sun Oct 20 2013
+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
+21:06 -!- Irssi: #mctxuwa_softdev: Total of 2 nicks [0 ops, 0 halfops, 0 voices, 2 normal]
+21:10 < jtanx> working on the report the day before...
+21:10 < jtanx> what is this madness
+22:23 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Mon Oct 21 2013
+08:04 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+11:03 -!- jtanx_ is now known as jtanx
+11:22 < jtanx> mctxserv[10834]: FATAL: Data_Save (data.c:80) - Error seeking to end of DataFile test/sensor_1 - File too large
+11:23 < jtanx> jeremy@pickle:~/git/MCTX3420/server/test$ du -sh *
+11:23 < jtanx> 0 actuator_0
+11:23 < jtanx> 2.0G sensor_0
+11:23 < jtanx> 2.1G sensor_1
+11:23 < jtanx> after running overnight
+11:23 < jtanx> hahaha
+11:36 < sam_moore> The 32G SD card might have been a good thing to buy...
+11:36 < sam_moore> Just in case
+11:36 < jtanx> I tried removing the line i made to fstab
+11:36 < jtanx> still didn't work
+11:36 < sam_moore> Damn
+11:36 < jtanx> was there anything important on it
+11:36 < jtanx> could just flash it with the internal memory
+11:37 < sam_moore> I'd be very hesitant to flash it to the internal memory if it doesn't boot
+11:37 < sam_moore> There may be something else wrong with it
+11:37 < jtanx> I mean
+11:37 < jtanx> there's a script
+11:37 < jtanx> to copy the internal memory to the sd card
+11:37 < sam_moore> Oh, that's cool
+11:37 < sam_moore> We can do that
+11:37 < jtanx> Okay
+11:37 < sam_moore> Since Ubuntu magically solved our image problems, we should use it
+11:38 < jtanx> yeah, that was weird
+11:38 < jtanx> just as long as there's nothing important on the sd card
+11:38 < sam_moore> Probably change the phrasing in the report from "We don't know why this fixed it" to "We fixed it through our 1337 haxor skills"
+11:38 < jtanx> >.>
+11:39 < jtanx> how did you set up usercake?
+11:39 < jtanx> like where's this db-settings.php that it mentions
+11:39 < jtanx> oh right
+11:39 < jtanx> never mind
+11:41 < sam_moore> It comes with an install directory that I removed
+11:41 < sam_moore> We should add that because we might want to modify the database structure
+11:41 < jtanx> yeah
+11:41 < sam_moore> Eg: It's a real pain that user permission levels are in a seperate table to everything else
+11:41 < sam_moore> And doesn't make sense...
+11:41 < jtanx> normalised database design
+11:41 < jtanx> :P
+11:42 < sam_moore> We can go with the "strcmp(user, "admin")" for now
+11:42 < sam_moore> Did you get the email about LEFT vs RIGHT can?
+11:42 < jtanx> yeah
+11:42 < sam_moore> I think I should ask
+11:42 < jtanx> pneumatics wants left
+11:43 < sam_moore> "Are you looking at the box from the FRONT or BACK"
+11:43 < jtanx> everyone else thought right
+11:43 < jtanx> hahahaah
+11:43 < sam_moore> "Also, which side is the FRONT"
+11:43 < jtanx> the case team got blasted this morning
+11:43 < sam_moore> Uh oh
+11:43 < jtanx> apparentl
+11:43 < jtanx> y
+11:43 < sam_moore> Then again, we all get blasted every week
+11:43 < jtanx> true
+11:43 < sam_moore> I think we manage to get the least blasting, but still
+11:43 < jtanx> oh yeah
+11:44 < jtanx> apparently the report IS individual
+11:44 < jtanx> per group
+11:44 < jtanx> I'm getting confused
+11:44 < sam_moore> Haha
+11:44 < jtanx> and it's due next monday???
+11:44 < sam_moore> -_-
+11:44 < jtanx> confusion over the due date
+11:44 < jtanx> adam apparently didn't know, and thought sparkplus would send out the date
+11:44 < jtanx> i don't know what sparkplus has got to do with this though
+11:45 < sam_moore> How long does it have to be?
+11:45 < jtanx> I have no idea
+11:45 < sam_moore> Sparkplus is for our peer evaluation
+11:45 < jtanx> yeah
+11:45 < jtanx> but the relation to report due date?
+11:45 < sam_moore> Pretty lazy if you ask me, and I don't care that they might read this (frankly I doubt it) to get the students to mark each other
+11:46 < jtanx> Yeah
+11:46 < jtanx> urgh
+11:46 < jtanx> getting 1045 (access denied) from mysql
+11:46 < jtanx> pretty sure I've got the pwd right
+11:46 < sam_moore> It might be what happens in the Real World (TM), but this is not some company, this is university, my grades should not depend on someone else
+11:47 < sam_moore> Try with `mysql` from the command line and check the password?
+11:50 < jtanx> herp derp
+11:50 < jtanx> no password
+11:53 < jtanx> now that I think about it, it's almost exactly like the django idea, except in php
+11:53 < sam_moore> Yep
+11:53 < jtanx> when you install it, is there any default login?
+11:54 < sam_moore> No; you register an account and that account becomes the admin
+11:54 < sam_moore> (of course you can also manually update the database)
+11:54 < jtanx> okay
+11:54 < sam_moore> You could change the install script to do that
+11:54 < jtanx> how are usernames and passwords stored in the db?
+11:54 < jtanx> crypt?
+11:54 < jtanx> (do you specify the algorithm?)
+11:55 < sam_moore> passwords are crypted with SHA6
+11:55 < sam_moore> The other stuff is plain text
+11:55 < sam_moore> UserCake default is SHA1 or something
+11:55 < jtanx> sha6?
+11:55 < sam_moore> I changed it to SHA6
+11:55 < jtanx> does it use something called pcks
+11:55 < jtanx> pcsk2
+11:55 < jtanx> pcks2*
+11:56 < sam_moore> Wait... by SHA6 I mean "SHA-Whatever-you-get-with-$6$-in-the-salt"
+11:56 < sam_moore> Which is actually SHA-512
+11:56 < sam_moore> Derp
+11:56 < jtanx> hmm
+11:57 < sam_moore> I couldn't find any references to security issues with doing it this way, but that doesn't mean there aren't any
+11:57 < sam_moore> However there's always going to be some security issues with anything we use
+11:57 < jtanx> yeah
+11:57 < jtanx> about the stuff in login.c
+11:57 < jtanx> you'll definitely want to change tat
+11:57 < jtanx> "SELECT password FROM %s WHERE user_name = \"%s\";",
+11:58 < jtanx> sql injection right there
+11:58 < sam_moore> I know
+11:58 < sam_moore> That's why Login_Handler removes all non alpha-numeric characters from the user name
+11:58 < jtanx> the password?
+11:58 < sam_moore> The password isn't part of the MySQL query
+11:58 < sam_moore> Only the user name
+11:58 < jtanx> oh right
+11:58 < sam_moore> So the password can contain any characters
+11:59 < jtanx> yeah
+11:59 < jtanx> I know with sqlite you can use placeholders
+11:59 < jtanx> then you 'bind' stuff to those placeholders
+11:59 < sam_moore> I think you can with MySQL too
+11:59 < jtanx> probably
+11:59 < sam_moore> Feel free to change it if you want, I figured it was safe if username was already checked for bad characters
+12:00 < jtanx> yep
+12:03 < jtanx> Pneumatics and electronics wants to test the system this wednesday, starting from 10am
+12:03 < sam_moore> That provides a convenient reason to not work on ENSC1001
+12:03 < sam_moore> So I'll be there
+12:03 < jtanx> Hahaha
+12:08 < jtanx> nneded php5-gd
+12:08 < jtanx> these username/password restrictions are attrocious
+12:57 < sam_moore> The UserCake ones?
+12:57 < jtanx> yeah
+12:57 < sam_moore> Also, sorry I'll be late today
+12:57 < jtanx> that's ok
+12:58 < sam_moore> We're getting there...
+12:59 < sam_moore> The question is, do they want a finished project, or do they want a report on an unfinished project
+12:59 < jtanx> hahaha
+12:59 < sam_moore> Because we'll have to devote a lot of time to the report
+12:59 < jtanx> yes
+13:00 < sam_moore> We've looked into every layer of software from linux kernel drivers to databases and human computer interaction...
+13:01 < jtanx> o.o
+13:01 < sam_moore> I think we can conclude that they are all horrible hacks tied together with shoelaces
+13:01 < jtanx> about usercake
+13:02 < jtanx> is it just
+13:02 < jtanx> you have a set of pages
+13:02 < jtanx> and they're either accessible or not
+13:02 < jtanx> to the user?
+13:02 < sam_moore> Yep, and I know you're thinking we could put the API as one of those pages :P
+13:02 < jtanx> haha
+13:02 < sam_moore> But I think it's better to keep the API seperate from user management
+13:02 < jtanx> didn't think that
+13:02 < jtanx> but was just trying to understand usercake
+13:02 < sam_moore> Fair enough
+13:02 < jtanx> but since everything's in php
+13:03 < jtanx> we can do some templating
+13:03 < jtanx> instead of hacking it together with javascript
+13:03 < sam_moore> Sure
+13:03 < sam_moore> The main modification I wanted to make was a page that lets the admin upload a list of users and get rid of the registration page (or restrict it somehow)
+13:04 < jtanx> yeah
+13:04 < jtanx> but some things are better done in php
+13:04 < jtanx> like that whole 'load the sidebar in jaascript' is crap
+13:04 < jtanx> and the whole 'if not logged in, redirect the user with javascript' too
+13:04 < sam_moore> Feel free to add php to the main gui, it is probably a good choice
+13:05 < jtanx> okay
+13:05 < jtanx> once I figure out how stuff works
+13:05 < sam_moore> I'm just not experienced enough with this sort of web development stuff
+13:05 < jtanx> I can probably say it's a learing experience for everyone
+13:05 < sam_moore> Yes
+13:06 < sam_moore> I am pretty happy with how we've done this, even if it doesn't get finished
+13:06 < jtanx> Yeah, it's quite ok
+13:06 < sam_moore> I think we made good design choices
+13:06 < sam_moore> Probably the best one was when you convinced me to use FastCGI instead of writing a custom HTTP server :P
+13:07 < sam_moore> Or we'd be well and truly screwed when all the requirements for security and user management came along
+13:07 < jtanx> hahaha
+13:07 < jtanx> php
+13:07 < jtanx> custom webserver
+13:07 < jtanx> well
+13:07 < jtanx> it might have worked
+13:08 < jtanx> call php5-cli with system
+13:08 < jtanx> hahaha
+13:08 < sam_moore> I could probably do something like that with enough time
+13:08 < sam_moore> But it wouldn't really be worth it
+13:14 < jtanx> oh right
+13:14 < jtanx> you changed usercake to use crypt
+13:15 < jtanx> I'll change the password for the sd card image back to what we used before
+13:16 < jtanx> username will be ubuntu though
+13:18 < sam_moore> ok
+13:18 < jtanx> the internal memory still uses temppwd though
+13:20 < jtanx> if we use usercake we'd have to use php throughout the stuff anyway
+13:20 < jtanx> unless you want it to be publicly visible
+--- Log closed Mon Oct 21 14:11:57 2013
+--- Log opened Mon Oct 21 14:40:20 2013
+14:40 -!- Irssi: #mctxuwa_softdev: Total of 2 nicks [0 ops, 0 halfops, 0 voices, 2 normal]
+14:40 -!- Irssi: Join to #mctxuwa_softdev was synced in 3 secs
+--- Log closed Mon Oct 21 14:49:35 2013
+--- Log opened Mon Oct 21 15:08:16 2013
+15:08 -!- Irssi: #mctxuwa_softdev: Total of 1 nicks [0 ops, 0 halfops, 0 voices, 1 normal]
+15:08 -!- Irssi: Join to #mctxuwa_softdev was synced in 2 secs
+15:22 -!- jtanx_ is now known as jtanx
+22:14 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Tue Oct 22 2013
+09:35 < sam_moore> So... looking at our system diagram, we have "mains electricity" going directly into the BeagleBone
+09:35 < sam_moore> That should probably be fixed
+09:38 < sam_moore> Dammit isn't there an svg version somewhere
+10:06 < sam_moore> Oliver said Adrian's goal was to "teach us a lesson"
+10:07 < sam_moore> If the goal is to turn us into cynical bastards, I was already a cynical bastard before this unit, so I fail to see the point
+10:07 < sam_moore> ... Talking to myself, excellent sign
+10:39 < sam_moore> Hi Jeremy
+10:40 < sam_moore> Are you OK with the section I listed for you?
+10:40 < jtanx> Sure, it seems okay
+10:41 < jtanx> This is going to be a busy week
+10:42 < sam_moore> I basically told my ENSC1001 team that if I have to choose between failing two units, I will choose to fail ENSC1001
+10:42 < sam_moore> I am now "that guy"
+10:43 < jtanx> Urgh :(
+10:44 < sam_moore> The requirements for the diary in terms of software are a bit ridiculous
+10:44 < sam_moore> In the 21st century
+10:44 < sam_moore> You'd think we could use git
+10:44 < sam_moore> As opposed to writing down source code in our diary
+10:44 < sam_moore> ... writing down code...
+10:44 < sam_moore> By hand
+10:44 < jtanx> Yeah, the requirements for this whole unit have been quite a stretch\
+10:44 < sam_moore> In a diary
+10:44 < sam_moore> What the hell???
+10:44 < jtanx> I asked during the meeting if he wanted a printed copy of the code :P
+10:45 < sam_moore> One idea I have had that would have been good
+10:45 < sam_moore> Is to always make 2 git commits whenever you work on something
+10:45 < sam_moore> One when you start
+10:45 < sam_moore> And one when you finish
+10:45 < jtanx> good idea
+10:46 < sam_moore> So, does he want a printed copy of the code?
+10:52 < jtanx> nah
+10:58 < sam_moore> Damn, that might have been fun to hand in
+10:58 < jtanx> We could do it just for shits
+10:58 < jtanx> print out the doxygen manual too
+10:58 < sam_moore> Hahaha
+10:58 < sam_moore> The doxygen manual is probably bigger than the printed source code
+10:59 < jtanx> Get a quote from uniprint
+10:59 < jtanx> print and bind it
+10:59 < sam_moore> Sure
+10:59 < sam_moore> It won't help though
+10:59 < jtanx> yeah
+10:59 < sam_moore> The response to anything that looks like it was a large amount of work
+10:59 < sam_moore> is "you overcomplicated it!"
+10:59 < jtanx> ~.~
+11:02 < jtanx> okay, i'm leaving uni
+11:02 -!- jtanx [
[email protected]] has quit ["http://www.mibbit.com ajax IRC Client"]
+11:37 < jtanx> well, I guess now's a good time than any to learn LaTeX
+11:39 < sam_moore> Haha
+11:39 < sam_moore> You don't have to learn LaTeX
+11:39 < sam_moore> It's just, for a 30 page report
+11:39 < sam_moore> If I am the one collating it
+11:39 < sam_moore> I want to use LaTeX
+11:39 < sam_moore> Hang on, I'll submit something in a minute, I got sidetracked looking at flow chart applications
+11:41 < jtanx> that's ok
+11:41 < jtanx> I've always wanted to learn latex anyway
+11:43 < sam_moore> If you're good at programming you can pick up latex pretty easily
+11:43 < jtanx> yeah, it doesn't look to bad
+11:43 < sam_moore> The scary bit is all the preamble stuff
+11:43 < sam_moore> Which you just copy/paste from examples unless you actually want to change something majorly
+11:43 < jtanx> haha
+11:43 < sam_moore> The rest is just like any markup language, except a bit more verbose
+11:44 < sam_moore> I have a nice template structure from my thesis we can use
+11:44 < jtanx> Cool
+11:57 < sam_moore> https://github.com/szmoore/MCTX3420/tree/report/reports/final
+11:58 < sam_moore> Essentially every chapter gets a single .tex file in the chapters directory
+11:58 < sam_moore> report.tex determines the formatting and stuff, so the chapter.tex files don't have to have anything other than content
+11:58 < jtanx> Okay
+11:59 < sam_moore> I'm not sure if it builds under windows easily
+11:59 < jtanx> well
+11:59 < jtanx> one of the reasons why i hesitated to use latex was because it's something like a few gb to isntall
+12:00 < jtanx> it should build under windows fine
+12:00 < sam_moore> Ah
+12:00 < sam_moore> I think it's worth it
+12:00 < jtanx> I have no disk space to install it on my laptop
+12:00 < sam_moore> For something of this scale... using a standard word processor...
+12:00 < sam_moore> Haha
+12:00 < jtanx> but it's installed on my server
+12:00 < sam_moore> Just worry about the content, I can make it compile either way
+12:00 < jtanx> yeah
+12:01 < sam_moore> Also, do you know any good flow chart stuff? Other than omnigraffle which is OSX only
+12:01 < jtanx> ms visio
+12:01 < jtanx> defacto standard
+12:02 < jtanx> never particularly liked it though
+12:03 < jtanx> it's free of msdnaa, but of course you need a windows computer...
+12:03 < sam_moore> Yeah, that will ruin my productivity
+12:04 < sam_moore> I do have windows, but rebooting is not fun, installing windows equivelants of all the software I use under linux is not fun, wine is probably broken, and running my windows operating system off the hard disk as a VM can be done, but gives temperamental results
+12:07 < jtanx> hahaha
+12:15 < sam_moore> Hmm, I have LibreOffice draw
+12:15 < sam_moore> Maybe that doesn't suck
+12:16 < jtanx> I hate using Libre/Open*
+12:16 < jtanx> never formats properly
+12:17 < sam_moore> Yeah... just trying to join two shapes together nicely is taking more than 3 seconds, screw that
+12:17 < jtanx> hahaha
+12:17 < sam_moore> I'll try this "Dia" thing
+12:18 < sam_moore> Oh dear
+12:18 < sam_moore> There's "Dia"
+12:18 < sam_moore> And "Diagramly"
+12:20 < jtanx> what about graphviz
+12:28 < sam_moore> giffly looks good
+12:28 < jtanx> Any particular name for our server software?
+12:28 < sam_moore> Oh god, it needs a name
+12:28 < jtanx> I've just been referring to it as 'Server API'
+12:28 < sam_moore> Yeah :S
+12:29 < sam_moore> I have a friend who didn't name their software and had to give a report on it and the only thing anyone commented on was its lack of name
+12:29 < sam_moore> So the next time...
+12:30 < jtanx> >.>
+12:30 < sam_moore> He said "This part of the software is 'sabertooth' and this part is 'timberwolf'"
+12:30 < sam_moore> And they liked it
+12:30 < jtanx> Hahaha
+12:30 < jtanx> what
+12:31 < sam_moore> ...
+12:31 < sam_moore> What's the greek god of disaster?
+12:31 < sam_moore> Or exploding pressurised vessels
+12:32 < sam_moore> Demeter, goddess of failure...
+12:33 < sam_moore> Just stick with Server API for now
+12:35 < sam_moore> I think I'll use gliffy even though it requires me to sell my soul to whatever company owns it
+12:35 < sam_moore> Can't be worse than facebook
+12:35 < jtanx> ._.
+12:35 < jtanx> fair enough
+12:36 < sam_moore> For a "vector graphics" editor, "dia" just looks horrible
+12:36 < sam_moore> The lines don't alias properly at all
+12:36 < jtanx> does it generate svg output
+12:37 < sam_moore> gliffy does and I'm not looking back :P
+12:37 < jtanx> hahaha
+12:42 < sam_moore> gliffy is really nice
+12:42 < jtanx> which flow chart are you doing
+12:42 < sam_moore> At the moment, the sensors thread
+12:43 < jtanx> Okay
+12:43 < jtanx> ahh
+12:43 < jtanx> gliffy would have been handy for uml crap I had to do
+12:46 < sam_moore> If you want to start with flow charts, try and do one for how ajax goes from the client and then data comes back through the labyrinth of FastCGI calls :P
+12:47 < sam_moore> I have a feeling they will consider flow charts to be "documentation" and not "report" though :S
+12:47 < jtanx> We can put it in the report
+12:47 < jtanx> then write about it
+12:47 < sam_moore> Haha
+12:47 < sam_moore> I actually have some results from experiments which they keep going on about in the marking key
+12:48 < sam_moore> I'm not sure what we can do for the results of tests from the GUI
+12:48 < jtanx> yeah
+12:48 < sam_moore> At one point I had a graph in flot that was plotting the time it took to update the graph in flot
+12:48 < sam_moore> But I never saved it
+12:48 < jtanx> o.O
+12:49 < sam_moore> Something that might be nice is a cachegrind profile
+12:49 < sam_moore> Whenever I do a report on software I try and profile it somehow
+12:49 < sam_moore> Anyway... the focus has shifted from "make the system work" to "write a report"
+12:49 < jtanx> Yeah
+12:50 < sam_moore> So we're pretty much just going to leave the system in an almost finished state, but since it would take someone a few weeks to learn it, they'll just start again...
+12:50 < sam_moore> and fail in all the same ways next year :(
+12:50 < jtanx> Hahahaha, of course
+13:48 < sam_moore> This flow chart stuff is really annoying
+13:48 < sam_moore> How much detail needs to be included
+13:48 < sam_moore> Argh
+13:48 < jtanx> I just made one in visio
+13:48 < jtanx> high level crap
+13:49 < jtanx> but still annoying to make
+13:49 < jtanx> I was hoping to make the flow chart
+13:49 < jtanx> then comment on that
+13:49 < jtanx> in the text
+13:49 < sam_moore> Ok
+13:50 < jtanx> Do you think something like this is ok?http://i.imgur.com/acNVXME.png
+13:52 < sam_moore> That looks good
+13:52 < sam_moore> It's completely inconsistent with what my sensor flow chart looks like visually though
+13:52 < jtanx> :S
+13:53 < sam_moore> Should we try make them all look the same, or not bother?
+13:53 < jtanx> Hmm
+13:53 < sam_moore> I'm not sure if this works; can you access it like this: https://www.gliffy.com/go/html5/5007621?app=1b5094b0-6042-11e2-bcfd-0800200c9a66
+13:53 < jtanx> I have to login
+13:54 < jtanx> presumably your login
+13:54 < sam_moore> Yeah, ok, I'll just put it under figures
+13:55 < sam_moore> https://github.com/szmoore/MCTX3420/blob/report/reports/final/figures/sensor_thread.png
+13:57 < jtanx> Nice
+14:00 < sam_moore> Whatever, don't worry about consistency, just make the charts
+14:00 < jtanx> If we get time, maybe then
+14:24 < sam_moore> We don't have time, I just spent 6 hours making one diagram :S
+14:24 < sam_moore> Ok, only 4.5 hours so far, but still
+14:24 < jtanx> :S
+14:24 < jtanx> I've spent what, 30 mins deciding how to write this one paragraph
+14:25 < jtanx> This is ridiculous
+14:25 < sam_moore> Were you there when Oliver said that Adrian's goal with this unit was to punish us?
+14:25 < jtanx> Hahaha
+14:25 < jtanx> Nah I wasn't there
+14:26 < sam_moore> The whole point is apparently to make us realise that we need a project manager
+14:26 < sam_moore> Something that I'm pretty sure I could work out for myself thankyou very much
+14:26 < jtanx> >.o
+14:29 < sam_moore> I've pushed some sort of report layout thing
+14:32 < sam_moore> It looks like most of the marks are on the "Approach" section
+14:32 < sam_moore> Which reminds me, I need to finish adding up my hours...
+14:33 < sam_moore> For cost calculation we could go "We have an average of X lines per day. According to James Trevelyn, the metric is 15 lines per day. Assuming this means 8 hours full time work at $150 an hour... we need this much money."
+14:34 < jtanx> Yeah
+16:09 < sam_moore> Ok, I'm starting to get the hang of this
+16:09 < sam_moore> If I just don't sleep for the next week
+16:09 < sam_moore> We'll be fine
+16:09 < jtanx> :S
+16:10 < sam_moore> Dammit are we still testing this system on Wednesday?
+16:10 < jtanx> I think so
+16:10 < jtanx> I'm trying to push out as much of this as possible today, but I'm not getting that far...
+16:10 < sam_moore> Ok, it should be fine, we just need some minor changes
+16:10 < sam_moore> Like... actually putting all the sensors/actuators in the software...
+16:10 < sam_moore> All the logic to control them is there though
+16:10 < jtanx> Yeah, maybe...
+16:11 < sam_moore> Don't worry about shit like the microphone in the graph page; the data can be recorded and downloaded, that's good enough for it
+16:11 < jtanx> Yep
+16:12 < jtanx> I don't particularly see the use of the microphone anyway
+16:12 < sam_moore> I don't know either
+16:13 < sam_moore> I realised that doing something like PID control with the current sensor/actuator logic would be a pain...
+16:13 < jtanx> Will we need pid control?
+16:14 < sam_moore> I don't think so
+16:14 < jtanx> I hope not
+16:14 < sam_moore> Well... not if the pressure regulator is good
+16:14 < jtanx> Here's to hoping
+16:14 < jtanx> (and if electronics gets their PWM-to-analogue thing going)
+16:15 < sam_moore> At least it's sort of possible to make PID control work, if you can identify the sensor somehow in Actuator_Loop and then just look at (sensor->current_data.value)/(sensor->points_read)
+16:15 < sam_moore> (Because I was lazy and reused current_data to store the sum of the points read before averaging, rather than the actual most recent point)
+16:16 < sam_moore> ergh, we'll fix that if it needs fixing anyway
+16:23 < sam_moore> Actually, if the goal is just to plot pressure vs strain, we don't care exactly what the pressure regulator is *supposed* to be... we just blindly increase it and then plot the strain vs an actual pressure sensor instead
+16:24 < jtanx> That's true
+16:26 < sam_moore> I wonder how harsh they will be on the "you must have designed the system completely before you implement it"
+16:26 < sam_moore> Do we have to determine what every line of code is going to be before we write them?
+16:27 < jtanx> Well there's no way that can be the case
+16:28 < jtanx> If that were the case i think we'd still be stuck trying to write the basics
+16:28 < sam_moore> At a high level our design is still exactly what is on that block diagram from ages ago
+16:28 < sam_moore> At a lower level... it's been through a few changes
+16:53 < sam_moore> ... I'm at 13 pages, but a lot of them are blank
+16:55 < jtanx> Ideally it should be ~5 pages/person since there's 6 people...
+16:55 < jtanx> How it actually turns out, well...
+16:57 < sam_moore> Well
+16:57 < sam_moore> One flow chart == 1 page...
+16:57 < sam_moore> I'm pretty sure I need to make at least 3 flow charts...
+16:57 < jtanx> Hahaha
+16:58 < sam_moore> Hmmm, could we hand in 29 pages of flow chart and 1 page of text...
+16:58 < sam_moore> The "teamwork" process could be a fun flowchart to make
+16:58 < sam_moore> Put lots of skull and crossbones on it
+16:58 < jtanx> :P
+16:59 < sam_moore> I'm pretty sure if you just count the figures I wanted to include that would make more than 5 pages
+16:59 < sam_moore> Perhaps this is achievable then
+17:00 < sam_moore> At least, getting 30 pages is achievable, not sure about meeting the marking criteria
+17:00 < jtanx> Yeah
+17:09 < jtanx> I'm at about 2 pages, and I've barely even started on explaining anything
+17:09 < jtanx> just reasoning why we chose what we chose
+17:28 < jtanx> "So Adrian just made an LMS announcement and the report is now due on Friday Week 13 (5pm), which is slightly more reasonable."
+17:28 < jtanx> (Justin just emailed)
+17:56 < sam_moore> I wonder if James' refreshing new GUI will be ready to show off by Tuesday
+17:56 < jtanx> Hehe
+17:57 < jtanx> Hopefully
+17:58 < sam_moore> LMS has two reports...
+17:58 < sam_moore> "Individual Report" and "Final Report"
+17:58 < jtanx> really
+17:58 < jtanx> why
+17:59 < sam_moore> Maybe the individual report is for the peer assessment mark?
+17:59 < jtanx> ah
+17:59 < jtanx> the marks on lms are depressing me
+18:00 < sam_moore> The progress report marks?
+18:00 < sam_moore> They are pretty depressing
+18:00 < jtanx> the quiz marks and soldering lab
+18:00 < sam_moore> Oh those
+18:00 < sam_moore> They are even more depressing
+18:01 < sam_moore> Wait, this maths doesn't make sense
+18:01 < sam_moore> The meetings are worth 52/1010
+18:01 < sam_moore> The tutorials are worth 808
+18:01 < sam_moore> The soldering video is 100
+18:01 < jtanx> it's lms being screwy
+18:01 < sam_moore> And our final report is worth 23?
+18:02 < jtanx> the quiz marks and tutorial is marked outof 100%
+18:02 < jtanx> I don't know what the others are marked out of
+18:02 < jtanx> (well tutes out of 4)
+20:22 -!- jtanx_ is now known as jtanx
+21:14 < sam_moore> I just did a test that I probably should have done ages ago, but it confirms my assertion that C is much better (at least in terms of performance) for multithreaded stuff than python
+21:14 < jtanx> well yeah
+21:14 < jtanx> but then how much performance do you require
+21:14 < sam_moore> All the performance
+21:15 < jtanx> :P
+21:15 < sam_moore> At the fastest possible sampling rate, python is up around 0.01s in terms of the standard deviation of the distribution you get
+21:15 < sam_moore> So that's pretty bad
+21:18 < sam_moore> That's on a multicore processor actually
+21:18 < sam_moore> I guess I could repeat the test on the actual beaglebone, but I think the graph proves the point
+21:20 < sam_moore> ... Anyway, they said they wanted results of tests and things... so that's a test we can put in if we need to.
+21:21 < jtanx> Yeah
+21:24 < jtanx> https://github.com/niklasvh/html2canvas
+21:25 < jtanx> oh that's cool
+21:41 < sam_moore> Your section of the report is really good
+21:41 < jtanx> Really?
+21:41 < jtanx> I thought it was really wishy washy
+21:41 < sam_moore> Well it justifies the design choice pretty well
+21:42 < jtanx> Thanks
+21:42 < sam_moore> At one point people were seriously discussing using things other than HTTP
+21:43 < jtanx> What could we have used
+21:43 < jtanx> designed our own protocol?
+21:43 < sam_moore> Yeah, which would have sucked, that's what I had to explain
+21:44 < jtanx> Yeah
+21:44 < sam_moore> It was something along the lines of "why do we need to do all this complicated web stuff, can't we just have one device talking to another device over some kind of serial cable"
+21:44 < jtanx> I could imagine the heartache involved in trying to use some custom protocol
+21:44 < jtanx> hahaha
+21:44 < sam_moore> In the first place... you then have to build two custom devices as well as write a custom protocol...
+21:46 < jtanx> Yeah
+21:46 < sam_moore> We did need a raspberry pi or beaglebone, whether or not using an arduino as well for low level stuff would be better I'm not sure
+21:47 < jtanx> Hmm
+21:47 < sam_moore> I don't think it would have been worth the effort needed to get the RPi/BBB to talk to the arduino
+21:47 < jtanx> An arduino may have been better for all the gpio/adc stuff I guess
+21:47 < jtanx> but yeah
+21:47 < jtanx> the communication between the device and the arduino
+21:48 < sam_moore> Well you'd have a request coming in via HTTP, and then that would have to be sent over USB to the arduino to do the appropriate hardware control
+21:48 < sam_moore> Which would probably make it difficult to make the sensors/actuators independent of the client
+21:49 < jtanx> Well, there's also the option of i2c
+21:49 < jtanx> but yes
+21:49 < jtanx> an extra layer of communication
+21:49 < jtanx> :/
+21:49 < sam_moore> Either way, you have to store the data somehow... and you don't want it to be dependent on the client request...
+21:50 < sam_moore> The more I think about it, the less I like it...
+21:51 < sam_moore> So I'm glad we went with the BeagleBone even though it's gpio/adc/pwm control is terrible
+21:51 < jtanx> Hahaha
+21:51 < jtanx> love/hate relationship with the bbb
+21:52 < sam_moore> You'd need to have interrupt handlers and some kind of synchronisation going on
+21:52 < sam_moore> You still need mutexes and conditionals with threads, but it's a lot easier
+21:53 < sam_moore> ... and we'd still need the multithreaded stuff anyway, because we'd still have sensors on the actual RPi/BBB to deal with
+21:53 < sam_moore> Yep, it would have been worse
+21:53 < jtanx> Yeah
+21:54 < sam_moore> We should definitely note this in the report somewhere
+21:55 < jtanx> Yeah
+21:55 < jtanx> Help justify why we agreed to the bbb
+21:55 < sam_moore> Well we did sort of agree to it because of that
+21:55 < sam_moore> It was partly "Hmm, we only have to write code for one device"
+21:56 < sam_moore> And partly because electronics wanted it to avoid having to build the extra hardware
+21:56 < sam_moore> And partly because if electronics wanted it then we wouldn't have to write our own BOM and order things :P
+21:56 < jtanx> :P
+22:18 < jtanx> MySQL Database BLARGH
+22:18 < jtanx> hehe
+22:21 < sam_moore> Do my thread flow charts make sense?
+22:22 < sam_moore> It's hard to know objectively
+22:22 < sam_moore> But I suspect looking at them for too long may cause the brain to shut down
+22:24 < sam_moore> Dammit, I can't remember if tomorrow is supposed to be some important assessment thing for ENSC1001 or not
+22:24 < jtanx> o.o
+22:24 < jtanx> I'm still trying to familiarise myself with the meaning of all the flow chart symbols
+22:24 < jtanx> but it seems okay
+22:24 < jtanx> don't you have to give a presentation or something for ensc1001
+22:25 < sam_moore> Yeah, but it's alright, that's next week
+22:25 < sam_moore> All the things are due next week
+22:26 < sam_moore> That's all that matters to me right now, because I want to sleep
+22:26 < jtanx> :S
+22:26 < sam_moore> Next Tuesday I will hate myself for sleeping this Tuesday
+22:26 < sam_moore> But Sam from next Tuesday is a jerk anyway
+22:26 < sam_moore> I never liked that guy
+22:26 < jtanx> Hey, sleep is important
+22:27 < jtanx> One thing about the flow charts, doesn't fatal just call exit(), so no deinitialisation happens
+22:27 < sam_moore> Um, sort of
+22:27 < sam_moore> But when the program exits, Cleanup gets called
+22:27 < sam_moore> Which calls the deinitialisation functions
+22:27 < jtanx> When did that get enabled
+22:28 < sam_moore> Cleanup has been there for ages
+22:28 < sam_moore> It's just been empty most of the time
+22:28 < jtanx> Ah
+22:28 < sam_moore> Although, I'm not sure if calling exit() is the best way to do it when you have multiple threads
+22:28 < jtanx> Meh
+22:28 < jtanx> when you have a fatal situation
+22:29 < sam_moore> Software isn't going to help?
+22:29 < jtanx> no
+22:29 < sam_moore> I was planning on having exit called with different error codes
+22:29 < jtanx> but what can you do with that
+22:30 < sam_moore> You can restart the server using run.sh
+22:30 < jtanx> but with the different error codes?
+22:30 < sam_moore> Or you can start a quick and dirty program that will make sure everything's deinitialised
+22:30 < jtanx> Ah
+22:30 < jtanx> I guess that could work
+22:30 < sam_moore> One error code for "really bad thing happened, we're going to die"
+22:30 < sam_moore> And one for "Something dumb happened, restart the server"
+22:31 < jtanx> About the graphs changing colours
+22:31 < jtanx> is it okay to just add a legend
+22:31 < sam_moore> It is OK to do whatever is the minimal work for the maximum reward
+22:31 < jtanx> hahaha
+22:31 < jtanx> well
+22:32 < jtanx> it was really easy to add the legend
+22:32 < sam_moore> Good, problem solved
+22:32 < jtanx> :P
+22:33 < jtanx> For the actuators
+22:33 < jtanx> did you remove that fatal call
+22:33 < jtanx> when the value was not safe?
+22:33 < sam_moore> I think I did
+22:33 < jtanx> Okay
+22:33 < sam_moore> It reports an error and doesn't set the actuator
+22:33 < sam_moore> And in theory it cancels the remaining steps
+22:33 < jtanx> That's good
+22:33 < sam_moore> Meaning the actuator just stays at the last safe value
+22:35 < sam_moore> Ah, it doesn't cancel the steps, but that can be easily changed
+22:35 < sam_moore> But currently it would just continually report the error until all the steps were finished
+22:36 < jtanx> either way's fine
+22:37 < jtanx> what's the default sample rate
+22:38 < sam_moore> It used to be 1s
+22:38 < jtanx> it's just that overnight it's generating about 2G of data
+22:38 < jtanx> which doesn't sound like 1s
+22:39 < sam_moore> Then it most likely isn't anymore
+22:39 < sam_moore> Nope, it's now 1e-4 seconds
+22:39 < sam_moore> Changed for the microphone test
+22:39 < jtanx> ahh
+22:40 < sam_moore> Should probably make the starting sample rate an argument to Sensor_Add
+22:40 < jtanx> I was wondering why it was consuming 30% cpu on idle
+22:40 < jtanx> ls
+22:40 < sam_moore> Ergh, if the microphone is running with everything else, it will generate a lot of data
+22:41 < jtanx> Yeah
+22:41 < sam_moore> Fortunately I added averaging
+22:41 < sam_moore> And apparently they just want an average from the microphone
+22:41 < sam_moore> Or a "level"
+22:41 < sam_moore> Or something
+22:41 < jtanx> oO
+22:42 < sam_moore> We'll just have the microphone sample at 1e-6 and have 1e6 averages per point
+22:42 < sam_moore> (ie: 1 point gets recorded every second)
+22:46 < sam_moore> Hmm, or you could make the microphone's ReadFn only succeed if the last pressure reading is higher than a certain value
+22:46 < sam_moore> But that's getting complicated
+22:49 < sam_moore> Good night anyway
+22:52 < jtanx> Okay
+22:53 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Wed Oct 23 2013
+23:01 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Thu Oct 24 2013
+14:47 < jtanx> Hey
+17:51 < jtanx> huh
+17:51 < jtanx> it was surprisingly easy to add post support
+17:56 < sam_moore> That's cool
+17:56 < jtanx> you just fgets from stdin instead
+17:56 < jtanx> it's in the same format too
+17:56 < sam_moore> Excellent
+17:57 < jtanx> we probably do have to unescape html strings though
+17:57 < jtanx> like if someone had a comma in their password
+17:57 < sam_moore> If we had a progress report we could put "potential gaping security leak plugged"
+17:57 < jtanx> Hahaha
+17:57 < jtanx> but it still allows the get request version
+17:57 < sam_moore> Oh well
+17:57 < jtanx> but then that's your own fault
+17:57 < sam_moore> Yep
+17:59 < sam_moore> Doesn't look like the IRC channel will get a mention in the "communication" section of the report :(
+17:59 < sam_moore> Oh no wait, it does
+17:59 < sam_moore> Good
+17:59 < sam_moore> ... That "overall schedule"...
+17:59 < jtanx> Haha
+17:59 < sam_moore> I started it, and quickly realised it was a waste of time
+18:01 < sam_moore> Also, need to hate on the beaglebone less
+18:01 < sam_moore> Otherwise they might try and do something stupid like replace it next year
+18:01 < jtanx> That would be stupid
+18:01 < sam_moore> Yeah, it was a pain, but probably still one of the best things to use
+18:02 < sam_moore> RPi with dedicated ADC/DAC modules would probably have been best
+18:02 < sam_moore> Distributed system of arduinos.... noooo
+18:02 < jtanx> Yeah
+18:02 < jtanx> RPi with ADC/DAC would have been cool
+18:02 < jtanx> but only because there's more support for the RPi
+18:02 < sam_moore> Yes
+19:19 < jtanx> hmm
+19:20 < jtanx> maybe I should enable POST only for the login module?
+19:20 < jtanx> Right now, if POST and GET data is received, the GET data is discarded in place of the POST data
+19:28 < jtanx> Yeah, okay I only enabled it for login
+22:38 < jtanx> Hahahahaha
+22:39 < jtanx> I passed our code through ohloh - https://www.ohloh.net/p/MCTX3420
+22:39 < jtanx> Apparently it's work 3 years of effort, and is valued at $150k
+22:49 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Fri Oct 25 2013
+09:56 < sam_moore> Um... we didn't make our first commit in 200
+09:56 < sam_moore> * 2000
+09:56 < sam_moore> 10 developers???
+09:57 < sam_moore> There are 6 of us
+09:57 < sam_moore> And some people contributed about 2 lines of source code...
+09:57 < sam_moore> Mostly written in JavaScript
+09:57 < sam_moore> Really?
+09:57 < sam_moore> Is that counting the jQuery UI guff?
+09:58 < sam_moore> That's annoying, because the C part of the project is like 50% comment lines
+09:58 < sam_moore> And it says "low number of comments" based on the JavaScript :S
+09:59 < sam_moore> Still... this is really cool
+10:00 < jtanx> hahaha
+10:00 < jtanx> the 2000 commit was because we made commits on the bbb
+10:00 < sam_moore> ok...
+10:00 < jtanx> but it lacks an rtc
+10:00 < sam_moore> Where do we get the extra 4 developers from?
+10:00 < sam_moore> "Debian" is one
+10:00 < jtanx> and for some reason the time didn't get updated
+10:01 < jtanx> umm
+10:01 < jtanx> hmm
+10:01 < jtanx> Ubuntu user?
+10:01 < sam_moore> Oh, "Callum" and "Callum-" are treated seperately -_-
+10:01 < jtanx> oh
+10:01 < sam_moore> That's still only 8
+10:02 < jtanx> the results are a bit skewed
+10:02 < jtanx> because a lot of the javascript is just from other libraries
+10:02 < jtanx> well at least i think so
+10:04 < sam_moore> Yeah
+10:05 < sam_moore> Is it easy to just pass a subset of the code through?
+10:08 < jtanx> Yep - you have to set what's ignored
+10:08 < jtanx> I've just set it to ignore all *.min.js files (essentially all external js files)
+10:08 < jtanx> But it won't get updated for a while
+10:09 < jtanx> I've got to go for ~ 2 hrs
+10:10 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+21:20 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sat Oct 26 2013
+15:10 < Callum> just finished the code to get the edge. atm it just returns the position on their object. was thinking we'd just use the timestamp and go this was the additional width at this time, additional width at time +1, so rate of change is 2*difference etc
+15:11 < Callum> also pushing 3 images to testing (actually i should go abck and push original too) but to show it blurred, after canny and with the found edge imposed over it (without w.e values i had set at the time..)
+15:15 < jtanx> Nice
+15:16 < Callum> ok merged
+15:17 < Callum> i might need some help merging this into the server code too
+15:18 < Callum> just to make sure its all good
+15:34 < jtanx> Sure
+15:34 < jtanx> I'm really busy right now though with this other crappy project that I have to do
+15:35 < jtanx> If not today, then maybe during tomorrow's meeting (if we're having a meeting then?)
+16:07 < Callum> we were meeting tomorrow? also i have an assignment due monday i havent started. was going to try and work through that and work on another project i have due..as well as this
+16:07 < Callum> still need to start my writeup for this.
+16:40 < Callum> also, if the image is completely black, the read function should return false (havent yet tested this but it should be the case)
+16:53 < Callum> also looking at justins diagram, why isnt the microscope not included?
+16:54 < Callum> or is it just both under "camera"
+17:01 < jtanx> Yeah
+17:01 < jtanx> I think it's just under "camera"
+17:02 < Callum> ok.
+17:02 < jtanx> I dunno, I thought we should try to meet some time next week
+17:02 < jtanx> monday's our usual meeting time
+17:02 < Callum> you said tomorrow though didnt you?
+17:03 < jtanx> Ohh
+17:03 < jtanx> sorry
+17:03 < jtanx> my bad
+17:03 < jtanx> I meant monday
+17:03 < Callum> was going to say, my body clock so out of wack its sunday already?
+17:03 < Callum> yea. if i can get the assignment done tomorrow il be happy to spend most oif the day trying to finish some of this off
+17:03 < jtanx> Haha mine is
+17:03 < Callum> to be fair, i normally work saturdays
+17:03 < Callum> i took it off to do work.
+17:04 < jtanx> :/
+17:04 < Callum> so it should feel like a sunday
+17:04 < jtanx> I had this assignment where I thought I had completed it, but when I reread the specs I found out that I missed a large portion of it
+17:05 < Callum> ouch
+17:05 < Callum> what assignment was this for?
+17:05 < jtanx> cits3242
+17:05 < jtanx> some programming unit
+17:05 < Callum> figured by the cits. :p
+17:05 < jtanx> hehe
+17:06 < jtanx> yeah, if it wasn't for that i'd be solely working on this project right now
+17:07 < Callum> yea iv kind of been working on 3 or 4 things all at once. and not gotten far in anything.
+17:07 < jtanx> yeah, it's always crap when things are due at the same time
+17:08 < jtanx> but 3-4 things at once? that's harsh
+17:12 < Callum> umm. assignment due tomorrow i havent started. i have anoither group project but we only really have 2 members and wev barely done anything (due friday, meant to have 4/5 members)
+17:12 < Callum> physics assignment also due on friday
+17:12 < Callum> just trying to figure out how to get it all done
+17:13 < Callum> not going to be a fun week. then after this weeks over its major catchup in the 3 units i have exams for
+17:13 < Callum> oh and this tute adrian decided to give us...should probably look at that some time too
+17:16 < Callum> whats the model for the microscope? cant find anything in dropbox
+17:22 < Callum> they are using the microscope only on the non-exploding one im assuming?
+17:23 < jtanx> Yeah
+17:23 < jtanx> the microscope
+17:23 < jtanx> it's a kaiser baas something
+17:23 < jtanx> KBA03030
+17:24 < Callum> thanks
+17:57 -!- Callum [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sun Oct 27 2013
+15:08 < sam_moore> Blergh, what are we going to put in the "Results" part of this report?
+15:09 < sam_moore> "We plugged it all in and it didn't explode" ?
+15:13 < sam_moore> Also it looks like gliffy only lets you export one svg on the trial account
+15:14 < sam_moore> And if the image isn't exactly A4 size, pdf is terrible
+15:14 < sam_moore> So the remainder of my figures will be png
+15:20 < sam_moore> Do we need to find references for all these things that we worked out and/or already knew ourselves...
+15:20 < jtanx> haha
+15:21 < sam_moore> I feel like referencing git commits
+15:21 < jtanx> Yeah I was going to do that
+15:21 < sam_moore> We should do that
+15:21 < jtanx> results
+15:21 < jtanx> it seems to work
+15:21 < sam_moore> ...
+15:21 < sam_moore> I put in a "Customer Satisfaction" section under results
+15:22 < jtanx> :P
+15:22 < sam_moore> It says "No matter what we did, the customer was not satisfied"
+15:22 < sam_moore> Next year they'll probably be told the beaglebone is stupid and start doing it all on an arduino
+15:22 < jtanx> mm probably
+15:22 < sam_moore> And then get told that it needs a user management system...
+15:23 < jtanx> hahahaha
+15:23 < sam_moore> I'm having trouble with what level of assumptions I should make about the reader's knowledge
+15:23 < sam_moore> Do they know what a thread is?
+15:24 < sam_moore> Do they know what "high level" and "low level" mean
+15:24 < jtanx> Thats... what I was having difficulty with too
+15:24 < sam_moore> Do they know what a kernel is?
+15:24 < jtanx> how far back do you have to explain terminology
+15:24 < sam_moore> Or context switching...
+15:24 < sam_moore> Argh
+15:24 < jtanx> write a treatise on multithreaded computing
+15:24 < sam_moore> :S
+15:24 < sam_moore> This is rather simple multithreaded stuff really
+15:26 < sam_moore> I think we need a "terminology" section
+15:27 < jtanx> THat would be good
+15:30 < jtanx> oh yeah
+15:30 < jtanx> we should be able to use commas again
+15:30 < jtanx> for that actuator step thing
+15:30 < jtanx> because it decodes the string first
+15:31 < jtanx> not sure if that will introduce any security issues though
+15:32 < sam_moore> Who cares, ship it
+15:33 < sam_moore> But I don't think so?
+15:33 < jtanx> :P
+15:33 < jtanx> maybe
+15:33 < jtanx> I dunno
+15:33 < sam_moore> sscanf can at most read to the end of the string
+15:34 < jtanx> since it decodes %hh to the hex value
+15:34 < jtanx> I mean if you give it a url encoded string
+15:34 < jtanx> with %01
+15:34 < jtanx> it would change that to the character 0x01
+15:34 < jtanx> which is like some control code
+15:34 < sam_moore> Hmm
+15:34 < jtanx> we could limit it so anything less than 0x20 is a space
+15:34 < sam_moore> Just do that then
+15:35 < jtanx> but it's probably important to url decode strings
+15:35 < jtanx> what if someone had a , in their password
+15:35 < jtanx> or weird characters
+15:35 < sam_moore> God dammit
+15:35 < sam_moore> call isprint() ?
+15:35 < jtanx> nah I mean
+15:36 < jtanx> it should be fine if we convert anything < 0x20 to a space
+15:36 < jtanx> but it's better that we're url decoding stuff
+15:36 < sam_moore> Ok
+15:36 < jtanx> because if we didn't, the password string would be like %2d instead of -
+15:36 < jtanx> for example
+15:36 < sam_moore> Yeah, that would suck
+15:37 < sam_moore> Do you think Rowan and/or James will write their parts of the report?
+15:37 < jtanx> Maybe, I dunno
+15:38 < jtanx> Rowan was trying to copy the wiki, which was written mostly by Justin?
+15:38 < sam_moore> Yeah, that's not really cool
+15:38 < jtanx> :/
+15:38 < sam_moore> I don't think there's much that can be just put into the report from the wiki anyway
+15:38 < sam_moore> It's too informal
+15:38 < sam_moore> And has a lot of "TODO: Fill this in" pages
+15:38 < jtanx> Yeah, they're counted separately anyway
+15:39 < jtanx> as in, there's a specific mark for wiki pages
+15:39 < sam_moore> Oh dear
+15:39 < jtanx> (or equivalent documentation afaik)
+15:39 < sam_moore> Every area there's a mark for is just another area they can deduct marks for not liking
+15:39 < jtanx> Yeah, I'm not liking it very much
+15:40 < sam_moore> Are we supposed to talk about the other subsystems or focus on our own?
+15:40 < jtanx> I'm hoping to focus on our own really
+15:40 < jtanx> but I guess there would be overlap
+15:48 < jtanx> did you see the microscope stuff that callum did
+16:00 < sam_moore> I glanced at it
+16:00 < sam_moore> It's in the main directory not sensors/
+16:01 < sam_moore> Does it work?
+16:01 < jtanx> well from the test pictures it looks quite good
+16:01 < jtanx> not sure how well it will work with the real thing
+16:02 < sam_moore> Hahaha
+16:02 < sam_moore> If it works with what we were given, good enough
+16:02 < jtanx> Yep
+16:03 < sam_moore> We seem to end up having to actually implement all of sensors things
+16:03 < sam_moore> I guess I will add the calibration in at some point before Tuesday
+16:04 < jtanx> :/
+16:04 < sam_moore> It shouldn't be that hard, I've done it before
+16:04 < sam_moore> Convert raw value to nearest two indexes in an array
+16:04 < sam_moore> Interpolate between those two indexes
+16:05 < sam_moore> I think for the Microphone there's 1024 points because he tested it with a 10 bit ADC somehow
+16:05 < sam_moore> For other things...
+16:05 < sam_moore> There are 10 points
+16:05 < jtanx> 1024 points
+16:05 < jtanx> wait what
+16:06 < sam_moore> 1 point per ADC value
+16:06 < sam_moore> As in, I was sent a lookup table of ADC value -> dB level
+16:06 < jtanx> oh right
+16:06 < jtanx> yeah
+16:06 < jtanx> he was testing it on an arduino
+16:06 < jtanx> was the arduino calibrated properly
+16:07 < sam_moore> Lalala not listening...
+16:07 < jtanx> :P
+16:07 < sam_moore> Oh, it loks like I only have 20 points anyway
+16:09 < sam_moore> This calibration does assume that electronics uses exactly the same voltage divider that sensors guy used
+16:09 < jtanx> it's probably close enough
+16:09 < sam_moore> Well maybe
+16:09 < sam_moore> Just trusting the data sheet is probably close enough
+16:10 < sam_moore> I'm not sure I see the point in calibrating a device if you don't actually use the final setup to calibrate it...
+16:10 < jtanx> Yeah, true
+16:22 < sam_moore> Is the use of '*' in pointer names a "standard"... I always thought it was... how you made a variable a pointer
+16:22 < jtanx> Oh yeah that
+16:31 < sam_moore> God dammit I have no motivation left to do anything
+16:32 < jtanx> urgh
+16:32 -!- jtanx changed the topic of #mctxuwa_softdev to: :(
+16:34 < sam_moore> Should I put your part of the report into tex?
+16:34 < jtanx> Yeah, I guess
+16:34 < sam_moore> I think if I put your part and Justin's part combined with my hopelessly incomplete part...
+16:34 < sam_moore> we will actually have too many pages
+16:34 < jtanx> :/
+16:34 < jtanx> was there a hard limit?
+16:35 < jtanx> I probably need to cut down my section, too much rambling
+16:36 < sam_moore> I think it's fine
+16:37 < jtanx> I dunno
+16:37 < jtanx> I have the feeling I'm not following the guidelines correctly on what I'm supposed to talk about
+16:37 < sam_moore> We can't win either way
+16:37 < jtanx> Yeah, like where am I meant to find the references for half the stuff I did
+16:38 < sam_moore> Surely James Trevelyn would have got a few papers out of his Telelabs thing?
+16:39 < sam_moore> I'll leave it for now
+16:39 < jtanx> Okay
+16:41 < sam_moore> My section will be great when I actually include all those figures I refer to...
+--- Day changed Mon Oct 28 2013
+09:13 -!- jtanx_ is now known as jtanx
+10:04 -!- jtanx [
[email protected]] has quit ["http://www.mibbit.com ajax IRC Client"]
+13:02 < jtanx> damn, forgot to connect back my server
+13:21 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+19:33 < sam_moore> Are we demonstrating James' GUI tomorrow?
+19:45 < jtanx> I have no idea
+19:45 < jtanx> given that it doesn't work with our api, probably not?
+19:46 < jtanx> I can change the colour scheme to make it look similar...
+19:58 < sam_moore> No, don't worry
+19:58 < sam_moore> This is why we have git
+19:59 < jtanx> :/
+19:59 < sam_moore> Hang on, does it work with any of the API?
+19:59 < sam_moore> The API hasn't changed *that* much
+20:00 < jtanx> I don't know
+20:00 < sam_moore> The sensors API has not changed for months
+20:00 < jtanx> it has some of the javascript that got copied over
+20:00 < sam_moore> Except that "name" was added as an optional thing
+20:00 < jtanx> but the javascript's probably out of date
+20:00 < jtanx> his version is missing links to some pages also, last time I checked
+20:03 < sam_moore> Stick with the working GUI
+20:03 < sam_moore> Everyone knew about the testing on Wednesday morning and that GUI was the one that the people who actually showed up got working
+20:03 < sam_moore> I guess we could try the totally untested up until now GUI tomorrow morning at 8am
+20:04 < jtanx> This is... going to be awkward for the report
+20:04 < sam_moore> At some point between when the case team builds their box and the cans are connected to their amazing mounts
+20:06 < sam_moore> We'll put in a paragraph about how we have a "testing" GUI
+20:06 < jtanx> ._.
+20:07 < sam_moore> Which was designed purely from a point of view of allowing us to test the server and the experiment hardware
+20:07 < sam_moore> And thus is sorely lacking in Human Computer Interaction Industry Standards (is that a thing)
+20:07 < jtanx> Yep
+20:07 < jtanx> haha
+20:08 < sam_moore> I feel like tomorrow will be a waste of time
+20:09 < jtanx> unfortunately yeah
+20:09 < sam_moore> But I suppose if anyone needs to demonstrate that their thing actually does something it will be us, since our work is effectively invisible
+20:09 < sam_moore> ... Not unlike the case
+20:09 < jtanx> if that case doesn't turn up...
+20:09 < sam_moore> You don't really expect the case to turn up do you?
+20:09 < sam_moore> Although, maybe it will
+20:10 < jtanx> Well, one can only hope...
+20:10 < sam_moore> I think it could be fun to take bets on what the case would actually be if it turned up
+20:10 < jtanx> oh boy, your email is hilarious
+20:11 < sam_moore> I bet they just take the case that's currently in G19, put it on top of the system, and call it a day
+20:11 < jtanx> :P
+20:11 < sam_moore> Yeah, I know Alex
+20:13 < jtanx> oh, you merged usercake into the main repo too
+20:13 < sam_moore> Hi Callum
+20:13 < Callum> hey
+20:13 < jtanx> hey
+20:13 < sam_moore> jtanx: Didn't we want to do that?
+20:13 < sam_moore> Eventually at least
+20:13 < jtanx> yeah
+20:13 < sam_moore> It needs setting up on the beaglebone, I'm not going to worry about it
+20:14 < jtanx> I skinned it yesterday
+20:14 < sam_moore> I think we can just enable /etc/shadow authentication to demonstrate
+20:14 < jtanx> yeah
+20:14 < jtanx> the changes I made are still on the 'users' branch
+20:14 < jtanx> but it's not finished yet
+20:15 < sam_moore> We'll note stuff like this in "Recommendations" or "Work for the future" or something
+20:15 < jtanx> Yeah
+20:15 < jtanx> Working with usercake...
+20:15 < jtanx> it was absolute spaghetti code
+20:16 < sam_moore> Haha
+20:16 < sam_moore> It made sense to me
+20:16 < sam_moore> Sort of
+20:16 < jtanx> It makes sense
+20:16 < jtanx> but it's just... ugh
+20:16 < sam_moore> Pretty much everything is in funcs.php
+20:16 < jtanx> Yeah
+20:16 < sam_moore> They have an entire class that represents a new user
+20:16 < sam_moore> But when you search for users it returns a map/dictionary
+20:16 < jtanx> What I found so stupid
+20:17 < jtanx> is that when you create a user
+20:17 < jtanx> it doesn't return the id
+20:17 < jtanx> so you have to search the db to find the id of the user you just made
+20:17 < sam_moore> Hahaha
+20:18 < sam_moore> Callum: If you want to test the dilatometer, just hard code it as camera 0 and we won't bother plugging the other camera in tomorrow
+20:18 < jtanx> The quality from the other camera was really shit anyway
+20:18 < sam_moore> Or I guess if we really want to we can recompile the program with it hard coded
+20:18 < jtanx> sounds like a plan
+20:18 < Callum> ok
+20:19 < sam_moore> It only has to work for as long as Adrian wants to see it
+20:19 < jtanx> I wouldn't be surprised if adrian didn't bother to turn up, and sent adam instead though
+20:19 < Callum> probably be the case
+20:19 < Callum> :p
+20:19 < jtanx> it's baack
+20:24 < jtanx> wow
+20:24 < jtanx> usercake ships with html that's broken
+20:27 < sam_moore> I did not notice that
+20:28 < sam_moore> Well, you get what you pay for
+20:29 < jtanx> :P
+20:37 < jtanx> wat
+20:37 < jtanx> //Don't update, this fool is trying to update with the same password ¬¬
+20:37 < jtanx> from usercake
+21:13 < Callum> jaime did we end up finding a way to convert stuff from IplImage to Mat in open cv?
+21:13 < Callum> cant find a way...or a way to just capture straight to mat in C
+21:13 < Callum> which is fucked...Mat is meant to replace IplImage.
+21:13 < jtanx> Try check interferometer.c
+21:13 < jtanx> I think it does the conversion
+21:14 < sam_moore> Callum: I think I solved it at some point making interferometer.c
+21:14 < sam_moore> You can't capture straight to cvMat
+21:14 < sam_moore> It is retarted, yes
+21:15 < Callum> ah found it. thanks
+21:16 < Callum> also, i dont think you ever released IplImage sam :p
+21:17 < sam_moore> Meh
+21:17 < sam_moore> IplImage * img = cvQueryFrame(g_capture);
+21:17 < sam_moore> Whoops
+21:17 < Callum> what?
+21:17 < sam_moore> Accidental copy/paste
+21:18 < sam_moore> Well I was going to copy/paste the image conversion code but you found it
+21:18 < sam_moore> For completeness anyway
+21:18 < sam_moore> CvMat stub;
+21:18 < sam_moore> CvMat * background = cvGetMat(img, &stub, 0, 0);
+21:18 < sam_moore> And I still don't know what the stub is for...
+21:20 < Callum> ahaha
+21:22 < jtanx> stubs
+21:22 < jtanx> ahh
+21:24 < jtanx> okay
+21:24 < jtanx> updated usercake
+21:24 < jtanx> hopefully it still works
+21:25 < sam_moore> ...
+21:26 < sam_moore> I bet we get a segmentation fault or something
+21:26 < jtanx> :3
+21:26 < sam_moore> What did you update it to do anyway?
+21:27 < jtanx> make it look like the rest of our gui
+21:27 < sam_moore> Oh, nice
+21:27 < jtanx> only allow admins to login
+21:27 < jtanx> to that part
+21:27 < jtanx> but users can still change their password
+21:27 < sam_moore> Excellent
+21:27 < jtanx> oO
+21:27 < sam_moore> Woah, doppleganger
+21:27 < callum__> getting this weird compiler error: /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 20 has invalid symbol index 19
+21:27 < sam_moore> Uuuuuhh
+21:28 < jtanx> try make clean?
+21:28 < jtanx> make
+21:28 < callum__> yea logged onto laptop to copy/pasta
+21:28 < callum__> :p
+21:28 < callum__> still doing it. not sure if its something i did..coz i changed a bunch of stuff
+21:29 < sam_moore> make absolutely sure everything's cleaned
+21:29 < sam_moore> Including the sensors and actuators sub directories
+21:29 < sam_moore> I can't remember if I made make clean recursively do those
+21:30 < Callum> didnt help
+21:31 < jtanx> hmm
+21:31 < jtanx> apparently
+21:31 < jtanx> http://stackoverflow.com/questions/5528958/make-file-problem
+21:31 < jtanx> it's because more than one file is linking against the crt
+21:31 < jtanx> why is that
+21:31 < jtanx> when you added your module
+21:32 < jtanx> did you modify the makefile and add microscope.o or something
+21:32 < jtanx> or did you do something different
+21:32 < Callum> i havent added it to the makefile yet tbh
+21:32 < Callum> just been compiling it myself
+21:32 < jtanx> oh right
+21:32 < jtanx> well that is weird
+21:33 < Callum> yup.
+21:33 < jtanx> so what files are you compiling (and how)>
+21:33 < sam_moore> Can you push it to git?
+21:33 < Callum> alright
+21:34 < sam_moore> Use a new branch if you don't want to overwrite a working version (although it's git... you can always go back a few commits)
+21:34 < jtanx> you might have to update your git repo first
+21:34 < sam_moore> Good point
+21:34 < jtanx> i've just made some changes
+21:34 < sam_moore> Callum: Make a new branch
+21:34 < sam_moore> Easier that way, in case there are changes that need merging
+21:34 < sam_moore> It's `git checkout -b branch_name`
+21:34 < sam_moore> Make changes, commit
+21:35 < sam_moore> Then go `git push <github> branch_name`
+21:38 < Callum> done
+21:39 < callum__> https://github.com/Callum-/MCTX3420/tree/dilatometer/server/sensors
+21:40 < jtanx> Off topic, but:https://github.com/szmoore/MCTX3420/watchers
+21:40 < jtanx> who's skinnybabulu
+21:40 < callum__> ahahaha
+21:40 < callum__> wtf kind of name is that
+21:40 < sam_moore> callm__: Careful
+21:41 < sam_moore> They are watching us
+21:41 < sam_moore> (seriously, these logs all go into github :P)
+21:41 < Callum> assuming whoeever it is reads the logs.
+21:41 < sam_moore> With a name like skinnybabulu, you never know what they're capable of
+21:42 < jtanx> ~.~
+21:42 < Callum> ok. i'll watch my back then.
+21:42 < sam_moore> Actually, doesn't IRC support a mode for listening in on a channel without being listed in the names?
+21:42 < sam_moore> Not that you need that when you can look at all the logs
+21:42 < jtanx> I don't know
+21:42 < jtanx> I don't think so
+21:43 < sam_moore> It might be Kieran?
+21:43 < Callum> possibly
+21:43 < jtanx> it's probably one of the others
+21:43 < jtanx> yeah
+21:43 < sam_moore> Or maybe it's... dun dun dun... Adrian!
+21:43 < jtanx> oO
+21:44 < jtanx> what were you using to compile your code
+21:44 < Callum> does it compile for you?
+21:44 < jtanx> as in, by calling make?
+21:44 < Callum> nah i was compiling it using gcc
+21:45 < jtanx> oh
+21:45 < jtanx> what was your compile command
+21:46 < Callum> gcc dilatometer.c -o dila + all the libs/flags from Makefile
+21:46 < jtanx> Okay
+21:46 < jtanx> gcc microscope.c -std=gnu99 -Wall -pedantic -g -I/usr/include/opencv -I/usr/include/opencv2/highgui -L/usr/lib -lfcgi -lssl -lcrypto -lpthread -lm -lopencv_highgui -lopencv_core -lopencv_ml -lopencv_imgproc -lldap -lcrypt -o microscope
+21:46 < jtanx> that worked
+21:46 < sam_moore> jtanx: I think he's moved it to sensors/dilatometer.*
+21:47 < jtanx> oh right
+21:47 < sam_moore> Which is compiling for me
+21:47 < Callum> odd.
+21:47 < sam_moore> Hint: Edit the Makefile to have dilatometer.o as an object
+21:47 < sam_moore> Then you can just type `make dilatometer.o` without all the flags
+21:47 < sam_moore> Oh wait, but I commented out some of the flags
+21:47 < sam_moore> Whatever, you can uncomment them
+21:48 < jtanx> I can reproduce the issue
+21:48 < sam_moore> How?
+21:48 < jtanx> gcc dilatometer.c -std=gnu99 -Wall -pedantic -g -I/usr/include/opencv -I/usr/include/opencv2/highgui -L/usr/lib -lfcgi -lssl -lcrypto -lpthread -lm -lopencv_highgui -lopencv_core -lopencv_ml -lopencv_imgproc -lldap -lcrypt -o dilatometer -I..
+21:48 < sam_moore> Oh
+21:48 < sam_moore> Make sure the library flags are last in the gcc line
+21:49 < sam_moore> I'm not sure if it's still a problem, but with Ubuntu 10 or something it was an issue
+21:50 < sam_moore> I suggest adding dilatometer.o to the sensors/Makefile
+21:50 < sam_moore> Then try running make in the main server directory
+21:50 < sam_moore> That seems to work fine for me
+21:51 < sam_moore> I'm going to bed, see you tomorrow, hopefully I can wake up early enough
+21:51 < Callum> how do i just execute whats in dilatometer then?
+21:51 < jtanx> hmm
+21:53 < jtanx> ohh right
+21:53 < jtanx> I see
+21:53 < jtanx> in dilatometer.c you commented out the main function
+21:54 < jtanx> so of course you'll get linker errors
+21:54 < sam_moore> Yeah, I get that when I try and compile it as a stand alone binary
+21:54 < sam_moore> As an object file it works fine
+21:54 < jtanx> yeah
+21:54 < Callum> ah right. forgot i commented out main..
+21:57 < Callum> ok
+21:57 < Callum> well im getting a seg fault now
+21:57 < jtanx> use valgrind
+22:05 < Callum> just realised i had a CvMat i never used...
+22:05 < jtanx> :P
+22:05 < Callum> well i did. but i changed it something else but i kept it in global/cleanup
+22:06 < Callum> and only then it was used in testing :p
+22:06 < jtanx> haha
+22:06 < Callum> and i think i know the problem
+22:06 < Callum> forgot to convert it to gray with getting image from camera
+22:08 < Callum> woo another core dumpo
+22:08 < Callum> :D
+22:10 < jtanx> ._.
+22:17 < Callum> it appears to be in canny..
+22:17 < jtanx> you sure?
+22:18 < Callum> well printf before it shows up, but not after
+22:18 < Callum> tyring to make any sense out of valgrind
+22:19 < jtanx> update your code on github
+22:19 < jtanx> and I'll have a look
+22:19 < callum__> libv4l2: error setting pixformat: Device or resource busy
+22:19 < callum__> HIGHGUI ERROR: libv4l unable to ioctl S_FMT
+22:19 < callum__> libv4l2: error setting pixformat: Device or resource busy
+22:19 < callum__> libv4l1: error setting pixformat: Device or resource busy
+22:19 < callum__> HIGHGUI ERROR: libv4l unable to ioctl VIDIOCSPICT
+22:19 < callum__> OpenCV Error: Null pointer (NULL array pointer is passed) in cvGetMat, file /build/buildd/opencv-2.3.1/modules/core/src/array.cpp, line 2382
+22:19 < callum__> terminate called after throwing an instance of 'cv::Exception'
+22:19 < callum__> what(): /build/buildd/opencv-2.3.1/modules/core/src/array.cpp:2382: error: (-27) NULL array pointer is passed in function cvGetMat
+22:19 < callum__> that came out horribly
+22:21 < Callum> ok its pushed, use dilatometer.c from server
+22:21 < Callum> not sensors
+22:21 < jtanx> okay
+22:26 < jtanx> I can't compile the one in server
+22:26 < Callum> really?
+22:26 < jtanx> dilatometer.c:222:6: error: conflicting types for ‘Dilatometer_Read’
+22:26 < jtanx> In file included from dilatometer.c:8:0:
+22:26 < jtanx> dilatometer.h:13:15: note: previous declaration of ‘Dilatometer_Read’ was here
+22:26 < jtanx> dilatometer.c: In function ‘Dilatometer_Read’:
+22:26 < jtanx> dilatometer.c:224:43: error: ‘SAMPLES’ undeclared (first use in this function)
+22:26 < jtanx> dilatometer.c:224:43: note: each undeclared identifier is reported only once for each function it appears in
+22:26 < jtanx> In file included from dilatometer.c:7:0:
+22:26 < Callum> you on the branch?
+22:27 < jtanx> jeremy@pickle:~/git/callum/server$ git status
+22:27 < jtanx> # On branch dilatometer
+22:27 < Callum> ctually
+22:27 < Callum> i dont think that .h file is up to date
+22:27 < Callum> copy the one from sensors
+22:27 < jtanx> okay
+22:29 < jtanx> urgh linking errors
+22:30 < Callum> really?
+22:31 < jtanx> can you copy your compile command
+22:31 < callum__> gcc dilatometer.c -o dila -lfcgi -lssl -lcrypto -lpthread -lm -lopencv_highgui -lopencv_core -lopencv_ml -lopencv_imgproc -lldap -lcrypt -std=gnu99 -Wall -pedantic -g -I/usr/include/opencv -I/usr/include/opencv2/highgui -L/usr/lib
+22:31 < jtanx> okay that worked
+22:33 < Callum> does it seg fault for you?
+22:33 < jtanx> yeah
+22:33 < jtanx> after I press space
+22:33 < Callum> "line 2392"
+22:33 < jtanx> twice
+22:33 < Callum> somethings going wrong in canny IMO
+22:33 < Callum> but it could be because of what im passing it?
+22:33 < Callum> well must be. was working before
+22:33 < jtanx> wait
+22:33 < jtanx> so what's happening
+22:34 < jtanx> for me
+22:34 < jtanx> is that it's getting to 'hopeful'
+22:34 < jtanx> and probably looping to the next request?
+22:34 < Callum> wait. so not canny
+22:34 < jtanx> yeah
+22:34 < jtanx> because if you press space twice
+22:35 < jtanx> that means that it's getting past canny
+22:35 < jtanx> isn't it?
+22:35 < Callum> yea
+22:35 < Callum> its showing edges
+22:35 < Callum> hmm
+22:36 < jtanx> is it meant to run in a loop?
+22:37 < Callum> no. its meant to call it twice though. comment out Init and it will call read once
+22:38 < Callum> hmm i commented it out and got another error message
+22:38 < jtanx> you sure you're not freeing something that's about to be used
+22:38 < Callum> i only free stuff in cleanup though
+22:38 < Callum> and i only run that at the end
+22:39 < Callum> but something in cleanup is chucking its shit with me
+22:40 < Callum> "The first thing you need to know about Mat is that you no longer need to manually allocate its memory and release it as soon as you do not need it. While doing this is still a possibility, most of the OpenCV functions will allocate its output data manually."
+22:40 < jtanx> hmm
+22:41 < jtanx> if( g_capture == NULL)
+22:41 < jtanx> this check has to be before the createcameracapture
+22:41 < jtanx> otherwise you're creating twice
+22:41 < jtanx> if( g_capture == NULL)
+22:41 < jtanx> {
+22:41 < jtanx> g_capture = cvCreateCameraCapture(0);
+22:42 < jtanx> //If cvCreateCameraCapture returns NULL there is an error with the camera
+22:42 < jtanx> if (g_capture == NULL)
+22:42 < jtanx> {
+22:42 < jtanx> result = false;
+22:42 < jtanx> }
+22:42 < jtanx> }
+22:42 < Callum> no, thats testing to see if capture has worked
+22:42 < jtanx> that worked for me though
+22:42 < jtanx> fixed the issue
+22:42 < jtanx> or not
+22:42 < jtanx> it lasted longer though
+22:42 < Callum> ahaha
+22:43 < jtanx> but it's definitely part of the issue
+22:44 < Callum> ok i see what yoru saying now
+22:45 < jtanx> now the problem's witht he cvreleasemat
+22:45 < Callum> yea
+22:45 < Callum> dont know why though
+22:49 < jtanx> because it's opencv
+22:49 < jtanx> oh well
+22:49 < jtanx> I'm going to bed
+22:49 < Callum> hah good reasoning
+22:49 < Callum> alright
+22:49 < Callum> what time is the thing tomorrow? 9?
+22:49 < jtanx> see you tomorrow, I guess
+22:49 < jtanx> yeah but probably going to get there at 8 to set stuff up
+22:50 < Callum> that means getting up at 6 though :/
+22:50 < jtanx> :/
+22:50 < jtanx> adrian better be there
+22:50 < Callum> also
+22:50 < jtanx> okay i'm out, bye
+22:51 < Callum> its only RGB release
+22:51 < Callum> which is fucking it up
+22:51 < Callum> other 2 are fine
+22:51 < jtanx> hmm
+22:51 < jtanx> comment it out?
+22:51 < jtanx> pfft who cares about memory leaks
+22:51 < jtanx> :P
+22:51 < Callum> haha
+22:53 < Callum> i know noones there but (with g_srcRGB mat not released) i have definitely 72bytes lost, indirectly 240 bytes and possibly 16Mb
+22:54 < Callum> and with all mats not released, same except possible loss of 17Mb
+23:16 -!- callum__ [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 23.0/20130803215302]"]
+--- Day changed Tue Oct 29 2013
+06:48 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+12:31 < Callum> sam have you pushed the stuff we did today?
+12:31 < sam_moore> Not yet, sorry
+12:32 < sam_moore> It was mostly on the BBB
+12:44 < Callum> its ok, just let me know when you do
+12:44 < Callum> so i can go back and do what i need to do, il just do something else for now.
+12:57 < sam_moore> The dilatometer is pushed now at least
+13:00 < Callum> ok. thanks. il keep working on the report anyway.
+13:01 < Callum> did you want it by tomorrow or end of tomorrow?
+13:05 < jtanx> I guess i should work on this report too
+13:25 < Callum> aand im back
+13:28 < jtanx> hello
+18:52 < Callum> should i make the capture function pass a CvMat or do a bool and pass a CvMat pointer.
+18:53 < Callum> actually. looking at out image code...it encodes the IplImage file to CvMat. so the capture file will have to deal in IplImage and then dilatometer will need to convert it to CvMat itself
+18:54 < sam_moore> It's up to you
+18:54 < sam_moore> I thought it was easier to work with the CvMat, so it might be better to convert to CvMat
+18:54 < sam_moore> But if the image code only works with IplImage just do it that way
+18:54 < Callum> i think we encoded it so it was compressed?
+18:54 < Callum> and encode takes IplImage afaik
+18:54 < Callum> and turns it into a CvMat
+18:55 < sam_moore> Ok
+18:55 < Callum> not sure if we can encode a CvMat outright. in the end the image code ends up in a CvMat file anyway
+18:55 < Callum> also whats the FCGI stuff in image for?
+18:55 < sam_moore> If the image module sends a CvMat to the user and the dilatometer requires a CvMat
+18:56 < sam_moore> The base function should probably return a CvMat
+18:56 < sam_moore> Maybe give it some arguments to determine if it's compressed or not
+18:56 < sam_moore> The FCGI stuff is all basically how the request gets handled
+18:56 < sam_moore> FCGI_Loop gets the request
+18:56 < sam_moore> There's a whole bunch of string parsing and login checking and stuff
+18:56 < sam_moore> It works out which function to call
+18:57 < sam_moore> Then calls say "Image_Handler" or "Sensor_Handler" or whatever
+18:57 < sam_moore> That function determines what key/value pairs it needs
+18:57 < Callum> also, for capture, 0 is default. -1 is any.
+18:57 < sam_moore> So there's a special helper function FCGI_ParseRequest which will take some structs and fill the requested variables after parsing the string
+18:58 < sam_moore> Yeah, -1 is any
+18:58 < Callum> 1+ is ID of specific camera
+18:58 < sam_moore> Ok
+18:58 < sam_moore> Again, the Image_Get or whatever it is called should probably take an integer identifying the camera
+18:58 < sam_moore> If possible
+18:59 < jtanx> hmm
+18:59 < jtanx> http://unix.stackexchange.com/questions/77170/how-to-bind-v4l2-usb-cameras-to-the-same-device-names-even-after-reboot
+18:59 < jtanx> may not work wiht opencv though
+18:59 < sam_moore> Callum: Just try and get something that's reasonable written, then it can be adapted or built upon if needed
+19:00 < Callum> im just trying to make sense of the fcgi stuff in image handler
+19:00 < Callum> also, is there a reason width and height is hardcoded to 800x600?
+19:00 < jtanx> defaut value
+19:00 < jtanx> user can change it by specifying width and height
+19:01 < Callum> ok
+19:01 < sam_moore> Callum: FCGI stuff is a bit confusing I guess, but it's a lot nicer than it was before jtanx wrote FCGI_ParseRequest
+19:01 < sam_moore> It used to be like a billion calls to "strcmp" and things
+19:01 < Callum> should i just copy the capture code from image into its own functrion then?
+19:01 < Callum> instead of using my one
+19:01 < Callum> ?
+19:01 < sam_moore> Just think of it as automatically filling in the variables you need based on their names
+19:02 < sam_moore> Callum: You can use either one, I think they both work
+19:02 < sam_moore> Don't be afraid of just trying something
+19:02 < sam_moore> If it breaks things we always have git
+19:03 < jtanx> oh yeah, that was the other thing I should mention
+19:03 < jtanx> you can't have two cameras open
+19:03 < jtanx> e.g you can'thave cvCreateCameraCapture
+19:04 < jtanx> for one camera
+19:04 < jtanx> while you have another one open
+19:04 < jtanx> otherwise the program crashes- it gets killed because there's not enough usb bandwidth or something
+19:04 < sam_moore> A mutex should solve that
+19:04 < sam_moore> (I love mutexes)
+19:04 < Callum> well we dont ever plan on having 2 cameras at once?
+19:04 < Callum> we should note it in report though
+19:05 < jtanx> well just saying, because thne you'd haveto explicitly turn off/free the other camera before using the other
+19:06 < sam_moore> Use a mutex to make sure you can never have two captures open
+19:06 < sam_moore> And yes, we should note it in the report
+19:07 < sam_moore> https://github.com/szmoore/MCTX3420/blob/master/server/sensors/strain.c
+19:07 < sam_moore> Start at line 102
+19:08 < sam_moore> The way it works is:
+19:08 < sam_moore> When you get to mutex_lock
+19:08 < sam_moore> If no thread is executing the code between there and the unlock, the thread will execute it all
+19:09 < sam_moore> Otherwise it will wait until the thread that is executing gets to the unlock
+19:09 < sam_moore> Then execute it
+19:09 < sam_moore> So...
+19:09 < Callum> ok
+19:09 < Callum> sso pretty much lines 102,103 and 122?
+19:10 < sam_moore> Yes, in whichever function gets the images, and make sure anything to do with the camera capture is between them
+19:10 < sam_moore> ie: create, use, and free it
+19:10 < Callum> yep
+19:11 < Callum> alright
+19:15 < sam_moore> Callum: gliffy is nice if you want to make flow charts for the image related stuff
+19:15 < sam_moore> This report is going to be hard to write...
+19:15 < Callum> gliffy?
+19:15 < Callum> we dont have nearly enough time to write it..
+19:15 < sam_moore> www.gliffy.com
+19:15 < jtanx> or you could use ms visio
+19:15 < Callum> i planned to be atleast half done by now :/
+19:16 < Callum> i have visio on my PC somewhere. although i couldnt get the stupid thing to register so long passed trial :p
+19:16 < jtanx> about the report, where do you want me to place my content
+19:16 < sam_moore> Make a flow chart, it'll take at least a page
+19:16 < jtanx> as in how should this be laid out
+19:16 < jtanx> i think there was a bit of overlap between some of the diagrams
+19:17 < Callum> umm
+19:17 < Callum> i just tried chucking a CvMat into encode
+19:17 < Callum> and it seems to not have given me errors
+19:17 < sam_moore> Always good
+19:17 < Callum> but make isnt fully compiling because im missing something
+19:18 < jtanx> is it the mysql stuff
+19:18 < Callum> yup
+19:18 < sam_moore> Oh, sorry, I didn't realise
+19:18 < sam_moore> It probably won't like to compile on things without mysql anymore :S
+19:19 < sam_moore> ... We're getting to the point where we actually need a configure script to generate the Makefile
+19:19 < sam_moore> And that's a bit terrifying
+19:19 < jtanx> the easy way is to install mysql
+19:19 < jtanx> libmysqlclient-dev
+19:19 < jtanx> buut not ideal
+19:19 < sam_moore> Ok, about the layout of the report
+19:20 < Callum> is it the last thing to compile?
+19:20 < Callum> i can just assume its all ok. :P
+19:20 < sam_moore> Haha
+19:21 < sam_moore> Installing mysql is probably the best way to check
+19:21 < sam_moore> Alternately you can try comment out all the mysql guff, but that will probably take longer :S
+19:22 < jtanx> about Login_Shadow
+19:22 < jtanx> just found there's fopen without fclose
+19:22 < sam_moore> :O
+19:22 < Callum> oh noes!
+19:22 < Callum> we all gon fail
+19:22 < jtanx> :P
+19:22 < sam_moore> Yeah, there are undoubtably going to be problems with it
+19:23 < sam_moore> It's not fair to expect everything to get implemented *and* there to be absolutely no problems
+19:23 < jtanx> yeah
+19:23 < jtanx> that's true
+19:23 < sam_moore> We barely have time to test anything
+19:23 < sam_moore> It's just "Get it working and stick it in, the thing doesn't segfault, good, move on!"
+19:23 < Callum> good plan.
+19:23 < sam_moore> I think I broke the pressure regulator with the sanity check by the way
+19:24 < jtanx> Well, with what they've been asking us to do, what can you do
+19:24 < sam_moore> So good save whoever distracted him when I was demonstrating that and it wasn't working even when I put proper values in...
+19:24 < jtanx> Hahaha
+19:24 < Callum> :p
+19:24 < sam_moore> I was just like "As you can see... when you put bad values in it says bad value"
+19:25 < sam_moore> Really hoping that they didn't notice that it was a pretty reasonable value...
+19:25 < sam_moore> What I would love to do
+19:25 < sam_moore> Is plot overnight memory/cpu usage of both the beaglebone and the computer running the gui
+19:26 < sam_moore> I think the JavaScript is the weak point in terms of how much you can actually show in the gui
+19:26 < sam_moore> It seems to just shit itself trying to plot the microphone for example
+19:26 < sam_moore> Yet you can still download all the data and plot it in something else
+19:27 < jtanx> it's probably because it's just consuming too much memory, trying to store that many points
+19:27 < jtanx> if at any one point in time you reduce that, it should be fine
+19:27 < sam_moore> Yeah...
+19:27 < sam_moore> Anyway... report layout
+19:28 < sam_moore> Chapter 1 and 2 are mostly Justin's stuff
+19:28 < jtanx> Okay
+19:28 < Callum> should i change default width/height to 1600x1200?
+19:28 < sam_moore> Callum: Sure, why not?
+19:28 < sam_moore> Chapter 3 and 4 are "Design implementation" and "Results"
+19:28 < Callum> just making sure it wont break anything :P
+19:28 < sam_moore> But...
+19:29 < sam_moore> I was thinking of just doing "Design implementation" and "Discussion"
+19:29 < Callum> the C170 also 1600x1200 right?
+19:29 < sam_moore> So... when you write your report, do two bits (if you can)
+19:29 < sam_moore> One focusing on what the system is
+19:29 < sam_moore> And one focusing on why we made the decisions to make it that way
+19:29 < sam_moore> If that makes any sense :S
+19:29 < sam_moore> Honestly
+19:30 < jtanx> Yeah that makes sense
+19:30 < Callum> hmm. if you think it would be better that way.
+19:30 < Callum> wouldnt it seem disjointed that way though?
+19:30 < jtanx> I should probably cut down some explanation text then
+19:30 < sam_moore> Callum: The image processing is a bit more difficult, because we didn't have many choices with it
+19:30 < sam_moore> Callum: No, I think it will seem better
+19:30 < jtanx> add more 'how it works'
+19:30 < sam_moore> Because at the moment it's easy to get distracted
+19:30 < sam_moore> When you are explaining how it works
+19:30 < Callum> umm. why is num > 1 invalid?
+19:30 < jtanx> Camera 0 or 1
+19:31 < jtanx> there can only be two cameras connected
+19:31 < sam_moore> Like, I kept getting sidetracked about the design changes we made
+19:31 < Callum> -1,0 and 1 all do the same thing if theres only 1 camera connected :p
+19:31 < Callum> if tehres 2 cameras one would be 2
+19:31 < Callum> 0 is default
+19:31 < sam_moore> But someone who wants to know how it works will just want a section that says "This is how it works"
+19:31 < jtanx> nah
+19:31 < jtanx> if there's two
+19:31 < jtanx> its 0 or 1
+19:31 < sam_moore> Lastly...
+19:31 < jtanx> to switch between them
+19:31 < sam_moore> We should have a recommendations section
+19:31 < Callum> you sure? and yea definitely
+19:31 < jtanx> I tested it ont he bbb
+19:31 < Callum> more of a "what still needs to be done" but thats the same thing
+19:31 < Callum> hmm ok
+19:31 < jtanx> that's how I know it works
+19:32 < sam_moore> Basically if you have any recommendations on what should and shouldn't be done, make some dot points and a sentence explaining it
+19:32 < sam_moore> ...
+19:32 < sam_moore> I really don't have time to email everyone all that
+19:32 < sam_moore> Justin's stuff is pretty good as it is though, it's just James and possibly Rowan that need to be informed/asked
+19:33 < jtanx> yeah justin's was pretty good
+19:33 < Callum> wheres testing go? in "what" the system is?
+19:34 < sam_moore> I'd put testing in the discussion
+19:34 < sam_moore> ie: we have "What" the system is, and "How" it got to be that way
+19:34 < Callum> so, design choice for testing>?
+19:34 < sam_moore> Yes
+19:34 < Callum> i guess that gives me something to populate design choice
+19:34 < Callum> considering i dont have much otherwise..'
+19:34 < sam_moore> Callum: If you could mention the interferometer that would be great
+19:35 < Callum> mention, how much?
+19:35 < sam_moore> Well, it is a design choice, mostly by sensors I'll admit
+19:35 < sam_moore> But we did have an algorithm for it
+19:35 < Callum> just we were told it would be necessary, algorithm was written and provide a couple of testi mages?
+19:36 < sam_moore> Yes, explain the algorithm if you feel the need
+19:36 < sam_moore> There is an email I sent that explains it... not very clearly :S
+19:36 < sam_moore> There are also graphs of how well it performs
+19:36 < Callum> well. if i need to buff it up a bit and i have the time il do so
+19:36 < sam_moore> I'm sure we have enough content
+19:36 < Callum> buuut im doubtful
+19:36 < sam_moore> There are tonnes of things to find to write about
+19:36 < sam_moore> Alright, no problem
+19:36 < sam_moore> Speaking of which
+19:37 < Callum> welll. im more worried about my contribution to the report.
+19:37 < Callum> need to make it as even as possibl;e
+19:38 < jtanx> we're working off the master branch now right?
+19:38 < sam_moore> Yes
+19:38 < jtanx> (for the report)
+19:38 < jtanx> okay
+19:39 < sam_moore> Callum: Just try and get 5/6 pages done then
+19:39 < Callum> ok. should be possible if i include lots of images :p
+19:39 < jtanx> Kinda worried about Rowan...
+19:40 < Callum> Yea.
+19:40 < sam_moore> I'm not sure what we can get him to write
+19:40 < Callum> meeting on monday he kinda rocked up hell late, wondered abotu and left barely saying anything
+19:40 < sam_moore> At one stage I thought he'd be doing some GUI design
+19:41 < sam_moore> There were lots of opportunities for people less inclined to do coding to help with that
+19:42 < sam_moore> Anyway
+19:42 < sam_moore> I really need to do something else
+19:43 < sam_moore> Hell, I'm going to have a hard time doing my part of the report by Wednesday, let alone editing everything
+19:43 < jtanx> :/
+19:44 < Callum> umm. should i clean the image stuff each time or just leave it til the end? (only issue i can see is if the image size changes)
+19:52 < Callum> jeremy if i was to call your handler function what do you pass it?
+19:52 < Callum> whats context/params from?
+19:52 < Callum> because if i wanted to call that from dilatometer?
+19:52 < jtanx> okay
+19:52 < jtanx> let's just explain a few things first
+19:53 < jtanx> Image_Handler is never called by anything else apart from some fastcgi function, and only when a request comes in from a user
+19:53 < jtanx> Say a user types in /image?width=800&height=600
+19:53 < jtanx> there's this thing called the fastcgi request loop
+19:53 < jtanx> it picks up the request
+19:53 < jtanx> It determines that it's after the image module
+19:53 < jtanx> so it calls Image_Handler
+19:54 < Callum> hmm. thought it was somethign like that. but is there a way to encorporate it into it so i can call it from dilatometer or should i just scrap your code and use my much soimpler image get functino
+19:54 < jtanx> well
+19:54 < jtanx> it depends on what you want to do
+19:54 < jtanx> if you want to return an image to the user, you have to use the framework
+19:54 < jtanx> I think you're getting confused over what it should be doing
+19:55 < jtanx> So from what I understand
+19:55 < Callum> yea hang on
+19:55 < jtanx> you have an image get function?
+19:55 < jtanx> If you just want to get an image for internal use, you don't use that fastcgi stuff
+19:56 < Callum> yea for dilatometer
+19:56 < jtanx> the fastcgi stuff is for when you want to return a response to the user
+19:56 < Callum> yea i was a little confused on how to separate the get iomage function so its usable by both image.c and dilatometer.c
+19:57 < jtanx> hmm
+19:57 < Callum> do we need the cv set capture propery width/height stufF?
+19:57 < Callum> and brb food
+19:57 < sam_moore> Try and think about what image.c and dilatometer.c are currently doing in common
+19:57 < sam_moore> Callum: If in doubt, make a function argument
+19:57 < sam_moore> Within reason :P
+19:57 < Callum> yea, issue i come across is my capture isnt trying to set width/height
+19:58 < sam_moore> Does it use a default?
+19:58 < jtanx> yea, you need to set capture widh/height
+19:58 < jtanx> otherwise it will be some random setting
+19:58 < Callum> iv never done it and its been fine?
+19:58 < jtanx> but you only need to set it when you initialise it, or if you want to change resolution
+19:58 < jtanx> on the beaglebone, default resolution is like 320x240 pixels or something like that
+20:20 < jtanx> hmm
+20:21 < jtanx> should we have a section on beaglebone setup or something
+20:21 < Callum> well we want them to be able to use it
+20:21 < jtanx> yeah
+20:21 < Callum> but that could go under wiki?
+20:21 < Callum> with brief description in report?
+20:21 < jtanx> True
+20:21 < jtanx> that would probably make more sense
+20:32 < sam_moore> 1. ssh to beaglebone 2. run server 3. see wiki for more details 4. By the way, write an /etc/init.d script to stop having to do this
+20:32 < sam_moore> Well, 4. can be a recommendation
+20:32 < jtanx> well what stuff did we install
+20:32 < sam_moore> Oh yeah
+20:32 < jtanx> what os did we use and how did we load it
+20:32 < sam_moore> We need a section on server setup
+20:32 < sam_moore> Le sigh
+20:32 < jtanx> Okay
+20:32 < jtanx> should that be part of the report or wiki
+20:32 < sam_moore> Report I think
+20:33 < jtanx> I guess I should look into that
+20:33 < sam_moore> Another recommendation...
+20:33 < sam_moore> Write a configure script :P
+20:33 < jtanx> Haha
+20:33 < sam_moore> Make a debian package...
+20:33 < jtanx> effooorrrrrt
+20:33 < sam_moore> That's why it's a recommendation Jeremy
+20:33 < jtanx> :P
+20:33 < sam_moore> You recommend that it get done *later*
+20:33 < sam_moore> You don't have to actually do it
+20:34 < jtanx> I like how our dependencies have ballooned from when we first started
+20:34 < sam_moore> Haha
+20:34 < sam_moore> It's mostly the user management stuff
+20:34 < sam_moore> That pulled in ldap, crypt, mysql...
+20:34 < jtanx> Yeah
+20:34 < jtanx> at least it's versatile!
+20:34 < sam_moore> mysql itself is like 4 link flags
+20:34 < sam_moore> opencv was always there though
+20:34 < sam_moore> That's like a billion link flags
+20:34 < sam_moore> Some we probably don't need...
+20:35 < jtanx> I don't understand why `pkg-config --libs opencv` doesn't work
+20:35 < sam_moore> Recommend someone work out why it doesn't work...
+20:35 < sam_moore> :P
+20:35 < jtanx> Hahaha
+20:35 < sam_moore> We could just make 30 pages of one line recommendations...
+20:35 < sam_moore> I think some recommendations of "Do *not* do this" might be good to
+20:36 < jtanx> Yeah
+20:36 < sam_moore> ie: I actually looked into RT linux
+20:36 < sam_moore> Admittedly I ran it on a laptop
+20:36 < jtanx> well
+20:36 < sam_moore> Which has other processes
+20:36 < sam_moore> But still
+20:36 < sam_moore> It's not that much better
+20:36 < jtanx> mm
+20:36 < sam_moore> So "Do *not* spend 6 months making RT linux work on the BeagleBone"
+20:37 < jtanx> I'm still amazed that that code to enable the pins works
+20:37 < jtanx> 'enable in a particular order'
+20:37 < sam_moore> "Do not ever touch the kernel or pin control code, ever"
+20:37 < jtanx> especially that pwm stuff
+20:37 < sam_moore> There are still problems with that
+20:37 < jtanx> ahahaha
+20:37 < sam_moore> You have to reboot to change the period I think
+20:37 < jtanx> hmm
+20:37 < sam_moore> Don't fix it
+20:37 < jtanx> solution: try another pwm
+20:37 < sam_moore> We can just note it somewhere
+20:38 < jtanx> yep
+20:38 < sam_moore> Actually that's a good point
+20:38 < sam_moore> Is someone going to write about the pin control saga
+20:38 < jtanx> urgh
+20:38 < sam_moore> I started it, but you finished it...
+20:38 < sam_moore> I thought I solved it, but you seemed to rewrite 90% of the code :P
+20:38 < jtanx> :P
+20:53 < Callum> ok think iv done everything but the static variable/determining change of width rather than just edge
+20:54 < Callum> ..and then to continue the report
+20:58 < Callum> is there any way for me to tell if this is the start of a new experiment?
+20:58 < Callum> because if it is i need to reset last position dont i?
+20:58 < jtanx> Well
+20:58 < jtanx> Dilatometer_Init should be called everytime an experiment is started, afaik
+20:58 < sam_moore> Yes
+20:58 < sam_moore> Sigh, another recommendation
+20:58 < Callum> ok
+20:58 < Callum> well, is it?
+20:59 < sam_moore> Callum: Yeah, it is
+20:59 < sam_moore> I was just thinking
+20:59 < sam_moore> When an experiment isn't started, because it was sort of hacked in, you can't ask the server what sensors/actuators it has
+20:59 < sam_moore> It should just be a matter of having an extra init function
+20:59 < sam_moore> a sort of
+20:59 < sam_moore> init_init
+20:59 < sam_moore> if you will
+20:59 < sam_moore> I'm going crazy
+21:00 < jtanx> or Dilatometer_Start
+21:00 < jtanx> or Dilatometer_Stop
+21:00 < sam_moore> Well you can change the names easily
+21:00 < jtanx> Dilatometer_init for once off init
+21:00 < jtanx> Yeah
+21:00 < sam_moore> I don't think that's even necessary
+21:00 < sam_moore> Just seperate out the population of that array from the initialisation/uninitialisation of the devices
+21:01 < sam_moore> So the array is only populated once, not every time the experiment is started
+21:01 < jtanx> yeah
+21:05 < Callum> if no edge is found should i return 0?
+21:05 < Callum> wait, that would relate to no expansion
+21:08 < sam_moore> Return false remember
+21:08 < Callum> ah right forgot i was already doing that and it wouldnt actually record the value
+21:08 < Callum> :p
+21:10 < Callum> also iv added a SCALE to h but just made it 1. if we actually manage to calibrate the thing we can just change that/
+21:13 < Callum> ok. think im done
+21:16 < sam_moore> Cool, good work
+21:16 < Callum> how do i access the server stuff again?
+21:16 < Callum> to make sure it works
+21:16 < sam_moore> We can test it tomorrow after/before the strain gauges
+21:16 < Callum> or that
+21:16 < Callum> also bloody thing pushed to my branch xD
+21:16 < sam_moore> Callum: You can also run it on your laptop
+21:17 < Callum> yea thats what i meant. iv done ./run.sh
+21:17 < sam_moore> Ah
+21:17 < Callum> how do i access it from there again?
+21:17 < sam_moore> You probably need to setup nginx
+21:17 < sam_moore> Install nginx
+21:17 < Callum> we set it up before
+21:17 < sam_moore> There is a server_configs directory or similar
+21:17 < Callum> well jeremy did
+21:17 < jtanx> okay
+21:17 < jtanx> umm
+21:18 < jtanx> is nginx started?
+21:18 < jtanx> try
+21:18 < jtanx> /etc/init.d/nginx restart
+21:18 < jtanx> Once started, run the run.sh script
+21:18 < sam_moore> Well
+21:18 < Callum> config gile blah blah test failed?
+21:18 < sam_moore> You should check that you can get the index to appear at "https://localhost" first
+21:18 < Callum> file
+21:19 < jtanx> what did you run?
+21:20 < Callum> the restart
+21:20 < jtanx> hmm
+21:20 < sam_moore> Callum: https://github.com/szmoore/MCTX3420/tree/master/server-configs
+21:20 < jtanx> okay
+21:20 < jtanx> yeah go to that folder
+21:20 < jtanx> chmod +x
+21:20 < jtanx> the .sh files
+21:20 < sam_moore> You need to update all the config files; they have changed a lot
+21:21 < jtanx> chmod +x gen_ssl_cert.sh install.sh
+21:21 < jtanx> sudo ./install.sh
+21:21 < Callum> tbh
+21:21 < Callum> this sounds like too much time/effort
+21:21 < sam_moore> Well you did ask
+21:21 < Callum> when im already low on time
+21:21 < jtanx> running that install script shoul install everything
+21:30 < jtanx> we need like a glossary of terms
+21:31 < jtanx> all this HTTP, JSON, TLS/SSL, FastCGI, FCGI terms...
+21:32 < sam_moore> Sure...
+21:32 < sam_moore> The entire report will just be a glossary :S
+21:32 < jtanx> :/
+21:32 < sam_moore> Thread: Not like the ones in your shirt
+21:32 < sam_moore> Thread: Like a process, but not really. Executes a process.
+21:33 < sam_moore> Stupid terminology
+21:33 < jtanx> Yeah
+21:33 < sam_moore> process is a perfectly valid way to say "It does a thing"
+21:33 < sam_moore> But if you start referring to threads and processes in the context of computers...
+21:33 < sam_moore> Argh
+21:33 < jtanx> their eyes shall gloss over as they read this report
+21:33 < sam_moore> Haha
+21:43 < Callum> just merged my stuff too
+21:46 < sam_moore> I wonder if they will hire some random software engineering student to finish this
+21:46 < sam_moore> Personally I would quite like to work on it and actually get paid
+21:46 < Callum> idno. do they actually intend on using it?
+21:46 < jtanx> ._.
+21:46 < sam_moore> Callum: I think they do...
+21:47 < jtanx> Yeah, I wouldn't mind working on this if I got paid
+21:47 < Callum> ok i just lost connection to channel?
+21:47 < jtanx> Looks like it
+21:47 < sam_moore> You didn't miss anything
+21:48 < Callum> ok. so can we demand our 100K >?
+21:48 < sam_moore> Hahaha
+21:48 < jtanx> Unfortunately, software developers are often underpaid
+21:50 < sam_moore> Meh, I'd work on this for the job experience more than the money
+21:50 < sam_moore> Counting as vac work would be nice...
+21:50 < jtanx> Yeah, that would be great
+21:51 < Callum> heck i wouldnt mind actually learning how this shit works :p
+21:51 < sam_moore> Yeah, I know Jeremy and I sort of took ownership of a lot of the code base
+21:51 < sam_moore> But in our defence, we actually have a working system
+21:52 < sam_moore> For some definition of working
+21:52 < jtanx> Hmm
+21:53 < jtanx> if I start talking about javascript and ajax
+21:53 < jtanx> that really pushes the content out
+21:53 < jtanx> actually just trying to explain why we used what we did pushes it out
+21:53 < sam_moore> I was going to explain why we used HTTP and threads at the same time
+21:54 < sam_moore> It's just a sentence or so though
+21:54 < sam_moore> ...
+21:54 < sam_moore> Ok, it's a paragraph, whatever
+21:54 < sam_moore> I emphasised that the user could basically shut down their machine without stopping the experiment
+21:54 < sam_moore> I've found it's pretty hard to get accross the distinction between the GUI and the backend/server to people
+21:55 < jtanx> Yeah
+21:55 < Callum> some people..
+21:55 < jtanx> I've practically written about the 'communication' between the user and system
+22:13 < Callum> sam, will you be putting the design choices before or after the final system stuff in report?
+22:17 < sam_moore> After
+22:17 < sam_moore> They will want to read the actual implementation details first
+22:17 < Callum> hmmok
+22:28 < Callum> god its hot in my room..
+22:28 < jtanx> it's pretty cool outside...
+22:28 < Callum> hence why i was confused why its hot in my room
+22:29 < Callum> could be somewhat due to the fact i justfinished a coffee. :p
+22:29 < jtanx> ~.~
+22:29 < Callum> ^^
+22:29 < Callum> but yea. i intend on getting most of this report done tonight
+22:29 < Callum> not so much that sam can have it on time, so i can do my other work. :p
+22:30 < Callum> geng4402 project is going to kill me. rest of my group is being quite useless
+22:30 < Callum> and we're so far behind
+22:32 < jtanx> :|
+22:34 < Callum> one of them even dropped the unit
+22:34 < Callum> groups of 4/5
+22:34 < Callum> we had 4. 2 ppl done nothing all semester
+22:34 < Callum> 1 drops out
+22:34 < Callum> so we have 3. with 1 person doing practically nothing (hes trying to help now but...he spent all day stuck on shit)
+22:40 < Callum> jeremy before you were saying that image handler handles requests from the server right?
+22:40 < jtanx> yeah
+22:42 < jtanx> okay
+22:43 < jtanx> just with Camera_Getimage
+22:43 < jtanx> since you open/close the camera capture
+22:43 < Callum> yea?
+22:43 < jtanx> I think that's slow
+22:43 < Callum> umm. well sam said to do that inside the mutex
+22:43 < jtanx> and that makes the mutex unnecessary
+22:44 < jtanx> it's more like
+22:44 < Callum> hmm
+22:44 < Callum> true
+22:44 < jtanx> if you kept the camera initialised
+22:44 < jtanx> check to see which is initialised
+22:44 < jtanx> if it is the one we're after, then we're fine
+22:44 < jtanx> otherwise release it and enable the other one
+22:54 < Callum> mm. should i do the same with the mats in the handler?
+22:55 < jtanx> I'm not sure
+22:55 < Callum> i'd need to make sure all the parameters are the same (but really only width/height. nothing else should change really)
+22:56 < Callum> is it necessary?
+22:57 < jtanx> I think the mats should be left
+22:57 < jtanx> because I think you do need to free them each time?
+22:57 < jtanx> otherwise you'd have a matrix that you haven't freed
+22:57 < jtanx> and then you overwrite the pointer anyway
+22:57 < Callum> well you can reuse it.
+22:57 < jtanx> okay
+22:57 < Callum> and besides in documentation it even says you dont need to release CvMats
+22:58 < Callum> buut..yea
+22:58 < sam_moore> Guys
+22:58 < Callum> Sam
+22:58 < sam_moore> You probably want to be able to get images from the dilatometer camera for non dilatometer purposes
+22:58 < Callum> which you can?
+22:58 < sam_moore> Well you could if you just had the (admittedly inefficient) mutex and reinitialise things all the time
+22:59 < sam_moore> Not sure if it's easy to do it the way jeremy is discussing
+22:59 < sam_moore> Whatever, can't think straight
+22:59 < Callum> iv changed it to the way jeremy described it
+22:59 < Callum> i think
+22:59 < Callum> as long as you pass it 0
+22:59 < Callum> which is what dilatometer is currently passing
+23:00 < Callum> it wont reinitialise capture
+23:00 < sam_moore> Alright then, we'll see if it works tomorrow
+23:02 < jtanx> 12pm was it
+23:04 < jtanx> okay, I'm out for today
+23:06 < Callum> oh shit its that late already?
+--- Day changed Wed Oct 30 2013
+00:20 -!- Callum [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+12:31 -!- jtanx_ is now known as jtanx
+19:17 < jtanx> :O
+19:17 < Callum> what i miss?
+19:17 < jtanx> 4 people on at once
+19:17 < jtanx> nothing
+19:17 < Callum> haha. ok.
+19:17 < jtanx> no discussion as of yet
+19:18 < Callum> well. i came on mainly to say i likely won't be at demonstration tomorrow. unless it doesnt start til 12. got a physics thing i should go to at 11
+19:18 < jtanx> ok
+19:18 < jtanx> btw
+19:18 < jtanx> our beaglebone got fried this afternoon
+19:18 < jtanx> poor snoopy
+19:18 < Callum> D: how?
+19:18 < jtanx> um
+19:18 < jtanx> we were testing out the multiplexer
+19:19 < jtanx> and for some reason the power supply got cut
+19:19 < jtanx> when we powered it back on, it didn't work anymore
+19:19 < jtanx> it might have been that current flowed back into the gpio pins or something
+19:19 < jtanx> or maybe their power supply is dodgy
+19:20 < Callum> hmm
+19:20 < Callum> i know, lets plug it into the other one to try! *fries other BBB*
+19:20 < Callum> yup its powersupply
+19:20 < jtanx> we're down to one beaglebone now, which is the one that electronics ordered in after the first one blew
+19:20 < jtanx> and yeah
+19:20 < jtanx> not likely that'll be connected
+19:20 < jtanx> before they fix their electronics
+19:28 < Callum> yea.
+19:28 < Callum> well im pretty much done with my part of report i think
+19:28 < Callum> just need to edit it
+19:28 < jtanx> that's good
+19:28 < Callum> also why is oracle making me create an account to install java? ..
+19:29 < jtanx> really
+19:29 < Callum> atleast it is through the link in the tute assignment
+19:29 < jtanx> you probably have a later version installed than that link anyway
+19:29 < jtanx> don't install that old crap
+19:30 < Callum> java -version aint returning anything. aint recognising java
+19:30 < Callum> i dont think iv installed it since i reformatted
+19:30 < Callum> ahah
+19:30 < jtanx> is this on windows or linux?
+19:30 < Callum> windows
+19:30 < jtanx> okay, so just go to the java website and install it
+19:31 < jtanx> and uncheck that crap to install the ask toolbar
+19:31 < jtanx> http://www.java.com/en/download/index.jsp
+19:31 < Callum> wait. jre7 is in prog files
+19:31 < Callum> il just install it and see if it works
+19:31 < jtanx> yeah
+19:31 < jtanx> was about to say
+19:32 < Callum> so how longs this thing take?
+19:33 < jtanx> I dunno
+19:33 < jtanx> not too long
+19:33 < Callum> aha. dno. did it in my sleep.
+19:33 < Callum> :p\
+19:33 < jtanx> you just click some buttons
+19:33 < jtanx> it adds stuff to the display
+19:34 < Callum> comment providing feedback on experience...fuck those questions
+20:59 < Callum_> what did you guys say for the feedback?
+20:59 < jtanx> I had like two lines
+20:59 < jtanx> 'it was interesting'
+20:59 < jtanx> :/
+20:59 < Callum_> ahah. was a "good" experience.
+21:14 < Callum_> is his example for the transferring an ascii code wrong? :S
+21:15 < jtanx> I dunno
+21:15 < jtanx> what do you mean
+21:15 < jtanx> (I didn't watch the lecture btw)
+21:15 < Callum_> i havent either
+21:16 < Callum_> but in his notes
+21:16 < Callum_> haha
+21:16 < jtanx> Okey
+21:16 < jtanx> I found it confusing
+21:16 < jtanx> like logic 0 is up
+21:16 < jtanx> and logic 1 is down
+21:16 < jtanx> space vs mark
+21:16 < jtanx> then on the next chart it's reversed
+21:16 < Callum_> wait logic 0 is up?
+21:16 < jtanx> I dunno
+21:16 < Callum_> yea.
+21:16 < jtanx> I looked at an online example and it was
+21:17 < jtanx> I just followed an online diagram
+21:17 < jtanx> like the one on this page:
+21:17 < jtanx> http://academic.evergreen.edu/projects/biophysics/technotes/electron/serial.htm
+21:17 < jtanx> (scroll all the way down)
+21:17 < Callum_> thanks
+21:19 < Callum_> yea
+21:19 < Callum_> his is right
+21:19 < Callum_> its just
+21:19 < Callum_> you'd think
+21:19 < Callum_> he'd mention its active low?
+21:19 < jtanx> meh
+21:19 < Callum_> oh well
+21:55 < Callum> do we need to hand in our diary?
+21:56 < jtanx> yep
+21:56 < jtanx> not sure how though
+21:56 < Callum> when/where?
+21:56 < Callum> yea
+21:56 < Callum> thats what i wasj ust thinking
+21:56 < jtanx> that reminds me
+21:56 < jtanx> I need to update it
+21:57 < Callum> also it says in something on lms theyd check it during the semester
+21:57 < Callum> LOL
+21:57 < jtanx> well
+21:57 < jtanx> trevelyan looked at it
+21:57 < jtanx> once
+21:57 < Callum> i havent even seen trevelyan once
+21:58 < jtanx> he was at one of the 9am lectures because adam couldn't make it or something
+21:58 < Callum> fair enoughj
+22:10 < jtanx> herp derp
+22:10 < Callum> what?
+22:10 < jtanx> didn't push to git
+22:10 < Callum> ahaha
+22:10 < jtanx> had the console open waiting for me to type in the password
+22:44 -!- jtanx changed the topic of #mctxuwa_softdev to: ^-_-^
+22:52 -!- Callum [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Thu Oct 31 2013
+00:28 < Rowan> im not entirly sure what i should be writing about. i never had a specific role ... just sorta butterflied around
+00:29 < Rowan> learnt a huge amount although havnt done any work that has been needed or used in any final product.
+09:36 < jtanx> I added in some wiki pages last night, about the operating system, required packages and a special mention on pwm control
+09:39 < jtanx> hey
+09:39 < sam_moore> Hi, have to leave for bus now
+09:39 < jtanx> okay
+09:58 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+16:42 < Rowan> still not entirely sure what i can be helping with. james says hes done with the gui part. should i just ignore him and start again with it mayself
+18:54 < sam_moore> Rowan: James has covered stuff like the design process and library selection etc
+18:55 < sam_moore> It would probably be good to discuss how the GUI is actually meant to work, how people are supposed to use it
+18:55 < sam_moore> Things like: There is a menu bar to go between different pages
+18:55 < sam_moore> List each page and give an overview of what it does
+18:55 < sam_moore> I suggest you have a look at github for the MCTXWeb testing GUI as it is the most complete
+18:55 < sam_moore> And we were using it this week and showing it to Adrian
+18:56 < sam_moore> So, I suggest you read James' section first, then just cover anything you think he's missed
+18:58 < sam_moore> jtanx: The report is looking good, I'm going to add your and my sections last
+18:58 < jtanx> Okay, that's fine
+18:58 < jtanx> Sorry for leaving so abruptly
+18:58 < sam_moore> There is a lot of stuff I can potentially write about, so I think the best idea is to just put all the other stuff in and then work around it
+18:58 < sam_moore> That's OK
+18:58 < sam_moore> Nothing really got done
+18:59 < jtanx> Sure
+18:59 < sam_moore> I ended up getting a bit pissed off with the other teams :S
+18:59 < jtanx> :/
+18:59 < sam_moore> They wanted to test the dilatometer...
+18:59 < sam_moore> And the pressure sensors...
+18:59 < sam_moore> And the microphones...
+18:59 < jtanx> did any of that get tested?
+18:59 < sam_moore> And the can wasn't holding pressure...
+18:59 < sam_moore> Nope
+18:59 < sam_moore> You know how it is
+18:59 < sam_moore> They needed to refocus the dilatometer...
+18:59 < sam_moore> So then someone says "While they do that, we'll test the pressure sensors"
+18:59 < sam_moore> Then everyone gets distracted...
+18:59 < jtanx> ....
+19:00 < sam_moore> Then that gets delayed somehow...
+19:00 < sam_moore> Then the people say "We focused the dilatometer!"
+19:00 < sam_moore> And you try and go back to doing that...
+19:00 < sam_moore> Then someone says "Are we testing the pressure sensors"
+19:00 < jtanx> -.-
+19:00 < sam_moore> And you go, "Well, since the dilatometer isn't working, we'll go back to that!"
+19:01 < sam_moore> Then someone says "What if you just do this little thing to the dilatometer..."
+19:01 < sam_moore> Blergh
+19:01 < jtanx> that sounds stupid
+19:01 < sam_moore> I think that edge detection was really the wrong way to do that dilatometer algorithm
+19:01 < sam_moore> Looking at the images...
+19:02 < sam_moore> It'd be far more reliable to just locate the change between dark and light pixels directly
+19:02 < sam_moore> But either way
+19:02 < jtanx> Yeah, now that I think about it,that'd make more sense
+19:02 < jtanx> would reduce cpu usage too
+19:02 < sam_moore> There are all these creative ways people kept coming up with
+19:02 < sam_moore> That basically boil down to
+19:02 < sam_moore> Making a different image
+19:02 < sam_moore> And then processing that
+19:03 < sam_moore> When really... you should just look at how to process the image you already have
+19:03 < jtanx> Yeah
+19:03 < sam_moore> Kieran's mathematica image thing looks horrendously complicated to analyse
+19:03 < jtanx> Really trying to complicate something that sholdn't be
+19:03 < jtanx> Ah... Kieran
+19:04 < jtanx> Seems to always come up with overly complicated plans
+19:04 < sam_moore> I said "If you can make an algorithm that will take whatever you want to do and spit out a number, we can put it in the software"
+19:04 < sam_moore> "If you come up with an algorithm that says "Make an image and then quantify it somehow" it will not work"
+19:04 < jtanx> Yeah
+19:05 < sam_moore> Unrelated, but about the whole "strain sensors aren't used on the exploding can but get shown in the gui"
+19:06 < sam_moore> I say it doesn't matter
+19:06 < sam_moore> They don't have to plot those sensors
+19:06 < sam_moore> Just put it in the documentation. When you use the exploding can, these sensors are effectively meaningless.
+19:06 < jtanx> Yeah
+19:06 < jtanx> that's fine too
+19:07 < jtanx> future work, if they run out of other things to do
+19:07 < sam_moore> Yeah, but even in future work I wouldn't really want to deal with that issue
+19:07 < sam_moore> It makes the system less flexible to have to specify the sensors you want to appear in the API
+19:07 < jtanx> I guess
+19:07 < sam_moore> Perhaps do it in the GUI
+19:07 < jtanx> perhaps
+19:08 < sam_moore> There's no harm in the server allowing those API requests
+19:08 < sam_moore> But you can hide unused things in the GUI
+19:08 < sam_moore> Enough of that
+19:08 < sam_moore> To the report
+19:08 < sam_moore> Currently adding James' stuff, it seems to fit well
+19:08 < jtanx> That's good
+19:09 < jtanx> do we need more references or something
+19:09 < sam_moore> I've largely abandoned the idea of a chapter of what the system is vs a chapter of the design considerations
+19:09 < sam_moore> Just discuss things as they come up
+19:09 < jtanx> Okay
+19:09 < jtanx> fair enough
+19:10 < sam_moore> References might be good
+19:10 < sam_moore> I suppose for things like the binary search you can reference a wikipedia page on it?
+19:10 < sam_moore> Or for things like "What a thread is"
+19:10 < jtanx> with software it's a bit hard
+19:11 < sam_moore> Yeah, even if you use a known algorithm it still gets dramatically altered based on what you want to do with it
+19:11 < jtanx> Yeah
+19:11 < sam_moore> Rowan: If you are still here, a glossary of terms is also potentially useful
+19:11 < sam_moore> I think we have one in the wiki?
+19:11 < jtanx> But realistically, what sort of 'formal' references are there for software
+19:11 < sam_moore> Stack overflow?
+19:11 < jtanx> the wiki has a glossary, but it could be expanded
+19:12 < jtanx> stack overflow as a formal reference?
+19:12 < sam_moore> Haha
+19:12 < sam_moore> Reference any library we use
+19:12 < sam_moore> They aren't formal though
+19:12 < jtanx> It'll have to be good enough
+19:12 < sam_moore> Look, we didn't use any formal academic references
+19:12 < sam_moore> So we can't reference them
+19:13 < jtanx> Yeah
+19:13 < sam_moore> Computer Science papers would be next to useless on this anyway
+19:13 < jtanx> pretty much
+19:13 < sam_moore> Unless you can find the original paper on things like binary searches
+19:13 < jtanx> ugh
+19:13 < sam_moore> Or whoever first coined the term "thread"
+19:13 < sam_moore> Digging through papers from the 1970s/80s ...
+19:13 < jtanx> pretty sure, binary search is like common knowledge in computing by now
+19:13 < sam_moore> It is taught in first year
+19:14 < sam_moore> It is probably one of the few things that is taught at UWA that was employed in this project...
+19:14 < jtanx> Okay, so lets reference CITS1210
+19:14 < sam_moore> Ahahaha
+19:14 < jtanx> I think it was acceptable
+19:14 < jtanx> reference material from previous units
+19:14 < sam_moore> yes, do that
+19:14 < sam_moore> I can reference my honours course on multithreading :P
+19:14 < jtanx> yeah
+19:14 < jtanx> that's good :P
+19:16 < sam_moore> Rowan: I said some stuff earlier, you may need to scroll back to see it if your IRC client doesn't notify you
+19:18 < sam_moore> jtanx: Should we make "Read the IRC chatlogs" a recommendation? :P
+19:18 < jtanx> Yeah, it would be helpful I guess
+19:18 < jtanx> lots of text to scrawl through though
+19:18 < jtanx> "Read IRC chatlogs" and "commit history" of git repository
+19:18 < sam_moore> If you look though you can find design discussions
+19:18 < sam_moore> Even some links to things
+19:19 < sam_moore> The git commit history also has some design changes
+19:19 < sam_moore> Eg if someone were considering using SQlite...
+19:19 < sam_moore> I think I put the performance tests in testing
+19:20 < sam_moore> But if they ignored those, there is code that uses SQlite which could be helpful
+19:20 < Rowan> yep just finished reading through it .. ill put together some stuff after i shower :\
+19:20 < sam_moore> Ok, thanks
+19:20 < jtanx> You'd have to go back to the very first commits to see the sqlite code afaik
+19:21 < jtanx> but yeah, since we ran a full blown mysql server on it...
+19:23 < Rowan> did you guys learn all this over this sem. or was it by part from databases and cits1210?
+19:24 < Rowan> and other units..
+19:24 < sam_moore> I knew very little about databases before this project
+19:24 < jtanx> um
+19:24 < jtanx> I'd say most of it was from my own learning
+19:24 < sam_moore> I know a reasonable amount about pthreads due to a course I did last year which involved much more complicated stuff than this
+19:25 < jtanx> databases didn't really help...
+19:25 < sam_moore> Well no
+19:25 < jtanx> bah that unit was shit
+19:25 < sam_moore> I never did Databases
+19:25 < Rowan> i though sqlite and cgi stuff was covered in the database unit?
+19:25 < jtanx> sqlite yeah, cgi no
+19:26 < sam_moore> I've used CGI before, but not that much
+19:26 < sam_moore> When I tested it I realised it would be an absolute pain to synchronise everything
+19:26 < jtanx> pretty much all of the web stuff for this unit, I learnt during this course
+19:26 < sam_moore> I've done low level network programming as a hobby
+19:26 < sam_moore> So I was going to write a custom HTTP server
+19:26 < sam_moore> But fortunately Jeremy found FastCGI
+19:26 < sam_moore> Which I'd never heard of
+19:26 < Rowan> yeha
+19:26 < sam_moore> So there is a lot of stuff I've learned I would say
+19:27 < Rowan> i really gotta learn more of this. i hated this unis cos ive been so pathetically useless ...
+19:27 < Rowan> ive learnt heaps aswell
+19:27 < Rowan> but no where near enough
+19:27 < Rowan> what was your multithreading honours thing you mentioned?
+19:28 < sam_moore> That was for Physics
+19:29 < sam_moore> Parallel Programming
+19:29 < jtanx> you should have used f# :P
+19:29 < sam_moore> We didn't cover f# since I suspect it is not great for low level type stuff
+19:30 < jtanx> I guess not, but apparently functional code is really good for parallelisation
+19:31 < sam_moore> Maybe...
+19:31 < sam_moore> Well, OpenMP is much nicer than pthreads in a lot of cases
+19:31 < sam_moore> It's really simple to make things parallelised
+19:31 < jtanx> have you heard of multithreading without locks
+19:31 < sam_moore> But it's terrible for communicating between threads
+19:32 < sam_moore> Great for doing something like a for loop where each thread calculates part of an array
+19:32 < Rowan> -----> should we have general info about the BBB in the glossary?
+19:32 < sam_moore> That might be useful
+19:33 < sam_moore> We are probably going to go over the 30 pages
+19:33 < jtanx> well
+19:33 < jtanx> lsat I heard, weren't sensors at ~50 pages
+19:33 < sam_moore> Yeah
+19:33 < sam_moore> Write all the things
+19:33 < sam_moore> If people are free tomorrow we will have to have a group meeting if we are over 30 pages
+19:33 < sam_moore> But...
+19:34 < sam_moore> Even though LaTeX uses a large amount of space by default
+19:34 < sam_moore> It can also be tweaked...
+19:34 < sam_moore> Definitely going with 10 point font
+19:34 < jtanx> sounds like a plan
+19:36 < sam_moore> jtanx: OpenMP has a lot of implicit locks by the way
+19:36 < Rowan> im not able to come in tomorrow though. . . i need to stop doing unit i need to be present for.
+19:36 < sam_moore> Which is why it's easy to do stuff with
+19:36 < jtanx> um
+19:36 < jtanx> doesn't rowan have to sign the coversheet
+19:36 < sam_moore> Yeahhhh
+19:37 < sam_moore> We could get a "digital" signature?
+19:37 < jtanx> maybe
+19:37 < sam_moore> One of my friends got a digital signature from their honours supervisor...
+19:37 < jtanx> hahaha
+19:37 < sam_moore> It was a png file containing their signature
+19:37 < jtanx> that could work
+19:38 < jtanx> there's a digital copy of the cover sheet somewhere
+19:38 < jtanx> I figured out why the wiki git repository wasn't cloning properly
+19:38 < jtanx> you can't have colons (:) in the filename on windows
+19:38 < sam_moore> Ahaha
+19:38 < jtanx> :/
+19:39 < sam_moore> Having two people that know linux already is really good for this project by the way...
+19:39 < jtanx> Yeah
+19:39 < sam_moore> I suspect someone who hadn't used linux before would have serious difficulties...
+19:40 < jtanx> ahh yeah that would be a problem
+19:41 < sam_moore> Dinner time
+19:41 < jtanx> Okay
+19:43 < jtanx> aha
+19:43 < jtanx> you can push to the wiki repository
+20:19 < sam_moore> Hmm
+20:20 < sam_moore> Could you push non plain text files to the wiki repository
+20:20 < jtanx> yep
+20:20 < jtanx> I pushed some images
+20:20 < sam_moore> It would be a good way to organise all documentation
+20:20 < jtanx> so all the images reside in the wiki repo
+20:20 < sam_moore> That's good
+20:20 < jtanx> well all of mine
+20:20 < jtanx> I should convert all of those imgur links
+20:20 < sam_moore> We could have put all the documentation and report cruft in the wiki repo!
+20:21 < sam_moore> Oh well, that's good to know for next time I use GitHub for something
+20:21 < jtanx> except half the stuff won't show up on my computer, with them fancy colons
+20:21 < sam_moore> Haha
+20:21 < sam_moore> No problem for me :P
+20:21 < sam_moore> Join us...
+20:21 < jtanx> bah
+20:21 < sam_moore> Any problem can be solved with sufficient use of `apt-get install`
+20:22 < jtanx> I don't think it would be a good idea to put all documentation on the project wiki
+20:22 < sam_moore> Oh?
+20:22 < jtanx> because github doesn't provide the same overview
+20:22 < sam_moore> Hmm
+20:22 < jtanx> you know how you can see the commit history and stuff for a normal repo
+20:22 < sam_moore> Yeah
+20:22 < jtanx> it doesn't have the same thing
+20:22 < sam_moore> But you can do that for the wiki if you clone it as a normal repo...
+20:22 < sam_moore> And...
+20:23 < jtanx> yeah
+20:23 < sam_moore> You can make post commit hooks for repos...
+20:23 < jtanx> but you can't visualise it as easy on github
+20:23 < sam_moore> Alright, fair enough
+20:23 < jtanx> oh right
+20:23 < sam_moore> It might be possible to hack together post commit hooks to have the wiki and an overview of other files in it
+20:24 < jtanx> quite possibly yeah
+20:24 < jtanx> but that's a hack
+20:24 < sam_moore> It might be a better suggestion for GitHub to start adding features for repos that aren't just for coding purposes
+20:24 < jtanx> hmm
+20:25 < sam_moore> Depending on how good the markup language is, you could probably do a report through GitHub entirely
+20:25 < jtanx> quite possibly
+20:25 < jtanx> with github you can have your choice of markup language
+20:25 < sam_moore> Of course, people's brains tend to shutdown when they have to use anything that isn't WYSIWYG
+20:26 < sam_moore> Which may explain why Labview is popular...
+20:26 < jtanx> huh
+20:26 < jtanx> I just realised
+20:26 < jtanx> When you set an image link
+20:26 < jtanx> and say it's imgur
+20:26 < jtanx> github caches it or something
+20:27 < sam_moore> ... Interesting
+20:27 < jtanx> so it appears as if it;s coming from github
+20:27 < sam_moore> I'd still put the images in the wiki repo
+20:27 < jtanx> yeah
+20:27 < jtanx> ...just that there are /so many/ images to convert
+20:28 < jtanx> right
+20:28 < jtanx> time to get out notepad++
+20:28 < sam_moore> I didn't mean you should actually convert all the images...
+20:29 < sam_moore> Just in future it's probably better to do it that way
+20:29 < sam_moore> Our whole repo should be structured more cleanly
+20:30 < sam_moore> Seperate branches probably
+20:30 < sam_moore> Store some install scripts in the master branch that will pull from the other branches...
+20:31 < jtanx> hmm
+20:31 < jtanx> I think I heard that you could have a git repository
+20:31 < jtanx> that links others
+20:31 < sam_moore> That could also work, branches are nice though
+20:31 < jtanx> yeah
+20:31 < sam_moore> git pull <source> server
+20:31 < sam_moore> or `git pull <source> website
+20:31 < sam_moore> etc
+20:32 < jtanx> sounds googd
+20:44 < jtanx> the pressure signal from the regulator was never used
+20:44 < jtanx> right?
+20:54 < sam_moore> Nope, but it could be in future work
+20:54 < sam_moore> Eg: This afternoon
+20:54 < jtanx> haha,okay
+20:54 < sam_moore> The pressure regulator was taking a very long time to reach the values specified
+20:54 < sam_moore> Although
+20:55 < sam_moore> I suspect that might be to do with the fact that Omid had the mains pressure turned down ridiculously low
+20:55 < jtanx> hmm
+20:55 < sam_moore> Like, the higher the mains pressure, the faster the pressure increases when the regulator is active, so the less time it has to wait
+20:56 < sam_moore> I guess it just vents air when it's over pressurized and uses PID
+20:56 < jtanx> most likely
+20:57 < sam_moore> But yeah, there were a lot of times when the mains pressure was cut completely for some reason and the regulator was struggling to set the pressure :S
+20:57 < jtanx> Yeah
+20:57 < jtanx> didn't sound healthy
+20:57 < sam_moore> Even when it was set to zero it would do it though
+20:57 < jtanx> I like how we're so careless with what, $800 equipment
+20:58 < sam_moore> Haha
+20:58 < sam_moore> Apparently the strain gauge circuit is now behaving fine...
+20:58 < sam_moore> the suggestion of testing them was raised...
+20:58 < sam_moore> But that was before I got angry and said "I still have to collate our report and it's 5pm!"
+20:58 < jtanx> Yep
+20:59 < jtanx> A bit too late for that
+20:59 < sam_moore> And if we broke the BeagleBone at 5pm on the second last day of semester...
+20:59 < sam_moore> So much shitstorm
+20:59 < sam_moore> I should have let someone else tell Adrian that snoopy got killed :S
+20:59 < sam_moore> He asked me all these questions about why it happened!
+20:59 < jtanx> :/
+21:00 < sam_moore> "Electronics designed the circuit, I don't know!"
+21:00 < sam_moore> "Don't fingerpoint!"
+21:00 < sam_moore> :S
+21:00 < jtanx> that was stupid
+21:00 < sam_moore> It's fair enough I guess
+21:00 < jtanx> I guess
+21:00 < sam_moore> We should have stopped the testing as soon as that reset button went wierd
+21:01 < jtanx> yeah, well I blame not enough sleep
+21:01 < sam_moore> Yeah, 3 hours sleep the night before...
+21:01 < sam_moore> s/night/morning/ because technically it was the same day...
+21:01 < jtanx> :S
+21:02 < sam_moore> James' section is in the report
+21:02 < jtanx> Cool
+21:03 < sam_moore> 3 pages when put into 10 point font with the figures
+21:03 < sam_moore> Justin's is 6 pages with 10 point font though
+21:03 < jtanx> Okay
+21:04 < sam_moore> The stuff I currently have in my section is 6 pages with 3 pages of figures... but it is referencing figures that aren't included yet :S
+21:04 < sam_moore> Oh well, I'm not taking ownership of the report
+21:04 < jtanx> urp
+21:05 < sam_moore> I've put in exactly what James wrote with no changes
+21:05 < sam_moore> Except a spelling mistake I think
+21:05 < sam_moore> It's a good overview of the libraries to be fair
+21:06 < sam_moore> I really like how "dilatometer" is underlined by the spell checker in the powerpoint slide
+21:06 < sam_moore> Shows it's authentically done in power point
+21:07 < sam_moore> Rowan's sent me me stuff that has screen shots mostly of the "testing" GUI
+21:07 < sam_moore> That's good, because I wanted to put those in
+21:07 < jtanx> Which 'testing gui'
+21:07 < sam_moore> The one we actually used today
+21:08 < sam_moore> Well... some version of it
+21:08 < jtanx> Ah, right
+21:08 < sam_moore> I'm going to update some of the figures, eg: the graph page doesn't show a graph, which can easily be fixed
+21:09 < sam_moore> Annoyingly, all the references and citations are currently giving [?] and ??
+21:09 < sam_moore> Probably because I copied the template from the ENSC1001 report where I screwed up the references somehow
+21:13 < sam_moore> ... Actually using the write references file would be good...
+21:13 < jtanx> What's that?
+21:13 < sam_moore> s/write/right
+21:13 < sam_moore> references/refs.bib
+21:14 < jtanx> ohh right
+21:14 < jtanx> was that vim notation
+21:14 < sam_moore> The s/ yeah
+21:15 < sam_moore> It's for a regex replace
+21:15 < sam_moore> Oddly enough, I tend to use it in IRC more than in actual vim...
+21:15 < jtanx> ~.~
+21:15 < sam_moore> #ucc used to have a regex bot that would interpret it
+21:15 < sam_moore> And do the replace on the last line you said...
+21:15 < sam_moore> Then spit it back out
+21:15 < sam_moore> It got abused and then removed
+21:15 < jtanx> I can imagine...
+21:15 < sam_moore> s/.*/I AM TERRIBLE
+21:16 < sam_moore> Sorry, the reason it got abused
+21:16 < sam_moore> Was because it was the last line *anyone* said that matched the regex
+21:16 < sam_moore> Not just your own
+21:16 < jtanx> well, that could have been fixed
+21:16 < jtanx> but perl scripts... ugh
+21:16 < sam_moore> Probably
+21:17 < sam_moore> I think it might have been a python bot, but I'm not sure
+21:17 < jtanx> huh
+21:17 < jtanx> never heard of a python irc bot
+21:17 < sam_moore> I wrote a bash IRC bot...
+21:17 < sam_moore> It doesn't actually say anything
+21:17 < jtanx> then what does it do?
+21:18 < sam_moore> It reads the channel and pipes things to text to speech
+21:18 < sam_moore> It is amazing
+21:18 < jtanx> uhh
+21:18 < jtanx> whyyyyy
+21:18 < sam_moore> To use it you have to run irssi in screen and setup log files
+21:18 < sam_moore> The script itself periodically parses the log files...
+21:19 < sam_moore> Passes them through a regex to get rid of things that don't pronounce well (eg: 21:18 < sam_moore> becomes "sam moore says")
+21:19 < sam_moore> Then says them through festival
+21:19 < sam_moore> Best thing I ever did
+21:20 < jtanx> Riiiiight
+21:20 < jtanx> sounds useful....
+21:20 < jtanx> *cough*
+21:20 < sam_moore> Well it can be told to only say lines that include a regex
+21:20 < sam_moore> The idea being you go "clubroom: You over there, pick up that rubbish"
+21:20 < sam_moore> And it plays that over the clubroom speakers...
+21:21 < jtanx> that would be creepy
+21:21 < sam_moore> I gave it the closest sounding voice to GladOS that I could find
+21:22 < sam_moore> Which isn't very close, but it's very disconcerting
+21:22 < jtanx> ...
+21:29 < sam_moore> References are fixed
+21:30 < sam_moore> I always screw up the .bib file
+21:32 < sam_moore> I will admit, LaTeX is a very complicated way to produce a document :P
+21:32 < sam_moore> But it looks nice
+21:33 < jtanx> Yes, it is complicated
+21:34 < jtanx> But I'll admit that it does look nice too
+21:34 < jtanx> I definitely know it's better for stuff that involves a lot of equations and the like
+21:34 < sam_moore> Once you've had to include mathematical equations you start to appreciate it a lot more
+21:34 < sam_moore> I quite like it for figures though
+21:34 < sam_moore> \includeimage
+21:34 < sam_moore> You can change the image or whatever you like
+21:34 < sam_moore> Don't have to reimport it
+21:34 < jtanx> Yeah, using MS Word with equations is... not fun
+21:35 < sam_moore> Don't have to screw around with moving where the image is in the text...
+21:35 < sam_moore> If you actually want to have the image somewhere other than just the centre of the page though it could get painful
+21:35 < sam_moore> But why would you want that anyway
+21:35 < jtanx> It looks nice?
+21:36 < sam_moore> Well if you write the document in columns (lots of papers do), centre of page/centre of column is the same
+21:36 < sam_moore> It never looks nice to have a figure randomly to the side with the width of the text changing to fit it in...
+21:42 < sam_moore> Should I put in Rowan's stuff now or wait until tomorrow morning?
+21:42 < sam_moore> He said he wanted to change a lot of it
+21:42 < sam_moore> I'll do Callum's next
+21:42 < jtanx> Hmm
+21:43 < jtanx> Maybe just leave some space for it for now
+21:55 < sam_moore> We'll be pushing it...
+21:56 < sam_moore> Although we can maybe fit some figures in at the end of chapters
+21:56 < jtanx> Appendix?
+21:56 < jtanx> Urgh
+21:56 < sam_moore> Yeah, appendix everything :P
+21:57 < sam_moore> It won't get read, but it's important that the stuff we care about is in the report...
+21:57 < jtanx> :/
+21:57 < jtanx> I really wonder just how much they will understand, or care to understand
+21:58 < sam_moore> It doesn't matter to me, it's more about personal satisfaction of knowing everything is covered
+21:58 < sam_moore> Because I'm not going to remember this project in detail and I'd like to have a good report to be able to look at later :P
+21:59 < sam_moore> Or maybe I will remember the project in detail...
+21:59 < jtanx> Haha
+21:59 < jtanx> Well, I must say this has been the most interesting project that I've been involved in to date
+22:00 < sam_moore> It's pretty cool that we covered so many layers of software yeah
+22:00 < jtanx> Yeah, that was cool
+22:01 < jtanx> I don't really know what to say about the content side of this unit though
+22:01 < jtanx> I can't say I learnt that much
+22:01 < sam_moore> Well, as a result of the teaching, or the project?
+22:02 < jtanx> The teaching, I guess
+22:02 < sam_moore> I didn't really learn that much from the tutorials, although it would have been damn helpful if I did this unit *before* my honours project last year
+22:02 < jtanx> Well, I felt that a lot of material was covered, but so briefly that I didn't learn much
+22:02 < sam_moore> I pretty much made every single rookie mistake he went through in terms of signals/noise/data processing
+22:02 < jtanx> :P
+22:02 < jtanx> Well, you learn more by making mistakes
+22:03 < sam_moore> I was like "There's a fucking capacitor in the system and I don't know why!"
+22:03 < sam_moore> Well... now I think I know why at least
+22:03 < jtanx> Or so they say
+22:03 < jtanx> hahaha
+22:03 < sam_moore> I still don't know why having the DAC on a multiple of 50 was causing the ADC input to drop by exactly 100 channels...
+22:04 < jtanx> uhhhhh
+22:04 < sam_moore> The only explanation is that there was an invisible "if (dac % 50 == 0) adc -= 100;" somewhere...
+22:04 < jtanx> Was this for your honours project?
+22:04 < sam_moore> Yeah, I don't want to think about that again, too painful...
+22:05 < sam_moore> Yes
+22:05 < jtanx> Okay
+22:05 < sam_moore> Not an issue for us as far as I know
+22:05 < jtanx> filtering?
+22:05 < sam_moore> It was too regular though
+22:06 < sam_moore> It also only happened if the dac was stepping in 25 or something wierd
+22:06 < jtanx> Weird...
+22:06 < sam_moore> Great success...
+22:06 < sam_moore> I just got LaTeX to compile a reference inside the references section
+22:07 < jtanx> ....
+22:07 < sam_moore> So... normally to do references you go 'pdflatex; bibtex; pdflatex; pdflatex'
+22:07 < sam_moore> I have no idea why, you just have to do it
+22:07 < sam_moore> But if you put a \cite in the actual refs.bib file, that ends up as an undefined reference.
+22:07 < sam_moore> The solution
+22:08 < sam_moore> is 'pdflatex; bibtex; pdflatex; pdflatex; bibtex; pdflatex; pdflatex'
+22:08 < sam_moore> I do not know why pdflatex needs to be run 5 times...
+22:08 < jtanx> wtf
+22:08 < jtanx> yeah, like why do you need to run pdflatex twice in a row
+22:09 < sam_moore> Well I can try not doing that and see if it breaks it...
+22:09 < sam_moore> You need it at least once because bibtex takes your original output and magically links all the references
+22:09 < sam_moore> Not sure why twice...
+22:10 < sam_moore> Nope, you appear to need it twice :S
+22:10 < sam_moore> Do not question the power that is LaTeX
+22:11 < jtanx> LaTex seems quite esoteric
+22:12 < sam_moore> Apparently when Knuth dies the last version of tex released becomes the final version and any remaining bugs are classified as features...
+22:12 < sam_moore> Also the version number becomes \pi
+22:13 < jtanx> Hahaha
+22:13 < sam_moore> That could be quite a problem if Linus Torvalds had a similar will...
+22:18 < sam_moore> I'm sort of being a bit cunning about adding information to people's sections...
+22:18 < sam_moore> When they mention a library I add a reference to it
+22:18 < sam_moore> And then add a "note" section...
+22:18 < sam_moore> :S
+22:19 < jtanx> Good enough
+22:19 < sam_moore> I wonder if I should add references to filenames...
+22:20 < jtanx> as in, 'sensors.c'?
+22:20 < sam_moore> eg: Where Callum mentions "image.c" I could link that to the current version of image.c in GitHub?
+22:20 < sam_moore> Yeah, that
+22:20 < sam_moore> That could be good
+22:20 < jtanx> Yeah, that might be good
+22:21 < sam_moore> \href command
+22:23 < jtanx> Okay, just about made the wiki page for administration stuff
+22:29 < sam_moore> Cool
+22:29 < sam_moore> I think some of Callum's description is actually not implemented yet :S
+22:29 < jtanx> :/
+22:29 < sam_moore> I don't think dilatometer.c currently has a static variable
+22:29 < sam_moore> Oh wait, it might have...
+22:29 < sam_moore> Not sure
+22:29 < sam_moore> Oh well
+22:30 < jtanx> the dilatometer code is a bit of a mess right now...
+22:30 < sam_moore> I'm just happy it got written
+22:30 < jtanx> Yeah
+22:31 < sam_moore> Ok, that's it
+22:32 < sam_moore> I need to define a latex command to automatically reference files in our github
+22:32 < sam_moore> Because having \href{https://github.com/szmoore/MCTX3420/blob/master/server/image.c}{\emph{image.c}} everywhere is *really* painful
+22:32 < jtanx> Yeah...
+22:33 < jtanx> sort of like a macro
+22:33 < jtanx> ?
+22:34 < sam_moore> Pretty much
+22:34 < sam_moore> \newcommand{\gitref}[2]{\href{https://github.com/szmoore/MCTX3420/blob/master/#1/#2}{\emph{#2}}
+22:34 < sam_moore> Should work
+22:34 < jtanx> Okay
+22:37 < sam_moore> I think this description of the OpenCV stuff would have been more effectively conveyed with a flow chart and some notes...
+22:38 < sam_moore> First we call this function, then we call this function passing these arguments...
+22:38 < sam_moore> Is really hard to read
+22:38 < sam_moore> Probably harder than just reading the source code
+22:38 < jtanx> ... assuming the person knows how to read source code
+22:39 < sam_moore> I suppose
+22:40 < jtanx> I just realised something
+22:40 < jtanx> When you do 'force' on starting a new experiment
+22:40 < jtanx> I don't think the old files are deleted, just overwritten
+22:40 < jtanx> so if for some reason the sensors/actuators change
+22:41 < jtanx> there may be old files still present
+22:42 < sam_moore> File it as a bug under github
+22:42 < sam_moore> ...
+22:42 < sam_moore> Actually if we file everything that doesn't work as a bug...
+22:42 < sam_moore> Then we can go "Recommendations: See the bugs and open issues on github"
+22:42 < jtanx> that would be future work?
+22:42 < sam_moore> Yep
+22:42 < jtanx> yeah
+22:42 < jtanx> good idea
+22:43 < sam_moore> We could have been more rigorous with our use of the issues system on github
+22:43 < sam_moore> But oh well
+22:43 < jtanx> yeah
+22:43 < sam_moore> Issue: PWM doesn't work
+22:43 < sam_moore> springs to mind
+22:44 < sam_moore> Then we could have tracked exactly when/how it was fixed and all our notes...
+22:44 < jtanx> it doesn't?
+22:44 < jtanx> oh right
+22:44 < jtanx> yeah, that would have been handy
+22:44 < sam_moore> Nicer than the technical diary
+22:52 < sam_moore> Callum refers to himself in the first person a lot in his section
+22:52 < sam_moore> Even in a report written by a single author you're still meant to use "We"
+22:52 < jtanx> :/
+22:52 < sam_moore> In a report written by multiple authors...
+22:53 < sam_moore> Who the hell is "I" ?
+22:53 < sam_moore> Unless you say "This section was written by me, <insert name>" at the start of each section
+22:54 < jtanx> Even then, I think "I" is a bit too informal
+22:54 < sam_moore> Yes, I will ask him if it's OK to change it tomorrow
+22:54 < sam_moore> Haha
+22:54 < sam_moore> There's also a bit of implied finger pointing at the sensors team :P
+22:54 < jtanx> :p
+22:55 < sam_moore> "From the graphs"
+22:55 < sam_moore> What graphs...
+23:10 < sam_moore> Compiling other people's sections takes longer than I expected :S
+23:10 < sam_moore> It's mostly copy/paste
+23:10 < sam_moore> But I decided to use monospace wherever a function or variable is referred to inline...
+23:11 < jtanx> :S
+23:13 < sam_moore> Oh well, sleep is for the weak
+23:13 < sam_moore> It's coming together surprisingly well though
+23:13 < sam_moore> ...
+23:13 < jtanx> We're almost there...
+23:13 < sam_moore> I'll get to your bit and have to fit in 100 pages won't I :P
+23:13 < jtanx> Hopefully not :S
+23:29 < sam_moore> Approaching 27 pages...
+23:29 < sam_moore> I think my bit needs some rewriting
+23:30 < sam_moore> Oh, right, we have some basically empty chapters
+23:30 < sam_moore> ...
+23:30 < sam_moore> We don't need that chapter
+23:30 < sam_moore> Introduction, Design, Conclusions
+23:30 < sam_moore> Good enough
+23:31 < sam_moore> I'd have to edit people's work to make it fit in 4 chapters, and as well as being unfair, we also do not have that kind of time left
+23:33 < sam_moore> Have you covered everything you want to cover?
+23:33 < sam_moore> Either you or Rowan is next
+23:33 < sam_moore> To be assimilated
+23:34 < sam_moore> Into the master report
+23:34 < jtanx> I hope so
+23:37 < sam_moore> Right then, here I go
+--- Day changed Fri Nov 01 2013
+00:04 < jtanx> Alright, I think that's it for me today
+00:05 < jtanx> I'll go through it tomorrow if we need to edit anything...
+00:25 < sam_moore> ... 12 pages... :S
+00:58 -!- Callum [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+03:08 < sam_moore> Oh hi Calum
+03:09 < sam_moore> Heh, I suppose people are staying up late fretting about the report since I haven't updated it in a while...
+03:09 < sam_moore> Mwuhahaha the power
+05:43 < Callum> so you've pulled an all nighter too then i take it?
+06:50 < Callum> morning jeremy
+06:50 < jtanx> morning Callum
+07:20 < jtanx> stupid server
+07:20 < jtanx> losing time...
+08:26 < jtanx> just ran a spellcheck
+08:26 < jtanx> hopefully haven't broken anything...
+08:27 < jtanx> the refs.bib on github is out of date
+09:43 < jtanx> damn
+09:43 < jtanx> running out of time to edit this...
+09:44 < jtanx> I'll be at uni from 12pm onwards
+09:44 < jtanx> I managed to cut it down a small amount, but not nearly enough
+09:45 < jtanx> I have a feeling that shrinking some of the images may help to reduce it, or to move some to the (an) appendix like the pinout diagram
+09:45 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+12:18 < jtanx> just saw the extension...
+12:21 < jtanx> how do you cite a subsection
+12:21 < jtanx> No extra software should be required from the client. Detailed reasons for this choice are outlined in Section ??
+12:23 < jtanx> oh, right
+12:23 < jtanx> \ref{Alternative Communication} --> \ref{Alternative Communication Technologies}
+12:35 < jtanx> There are a few references that are not linking properly
+12:48 < sam_moore> Yes, sorry, I screwed up the labels a bit
+12:48 < sam_moore> I had them all fixed, and then I decided to name the labels logically (ie: Actually after the section)...
+12:48 < sam_moore> So now it's broken again
+12:48 < jtanx> Haha
+12:49 < jtanx> So I guess we're meeting not today, but on monday?
+12:49 < sam_moore> Yeah, sure
+12:49 < jtanx> okay
+12:49 < jtanx> I'm in g19 right now, but I'll probably go soon then
+12:51 < sam_moore> I think the report is pretty good
+12:51 < jtanx> Yeah, it looks good
+12:51 < sam_moore> It always seems like there are bits missing though
+12:51 < jtanx> I'm glad you stuck with LaTeX after all :P
+12:51 < sam_moore> Yes...
+12:51 < sam_moore> It's all worth it for \gitref
+12:51 < jtanx> Hahaha
+12:51 < jtanx> the clicky links is cool
+12:52 < jtanx> it doesn't list out those links though, does it?
+12:52 < jtanx> like a reference
+12:52 < sam_moore> Hopefully that makes up for some of the disorganisation
+12:52 < sam_moore> No, it doesn't list them as references
+12:53 < sam_moore> We could probably make Rowan's figures nicer by redoing them with a "connected" system, but I don't want to edit other people's stuff more than necessary
+12:53 < jtanx> Yeah
+12:53 < sam_moore> Since it seems like doing that will get me in trouble
+12:54 < jtanx> The only thing that irks me a bit is the first-person stuff in the camera section
+12:54 < jtanx> But as you said...
+12:54 < sam_moore> I'm not sure I got the camera figures right
+12:55 < jtanx> time for more proofreading!
+12:55 < sam_moore> They were all over the place and underneath each other and not labelled when I downloaded the document
+12:55 < jtanx> :S
+12:55 < sam_moore> I think I screen shotted the right ones, but even in google docs some of them were underneath each other
+12:56 < jtanx> google docs doesn't display them properly I think
+12:56 < jtanx> I can upload a pdf version
+12:56 < jtanx> ...if I can find the current version
+12:58 < sam_moore> It's interesting that the dilatometer wasn't working so well the other day
+12:58 < sam_moore> Given that those test images look pretty close to the real image
+12:58 < sam_moore> And they seem to show good results
+12:58 < jtanx> Yeah, it was a bit disappointing
+12:58 < sam_moore> Although I guess that is just one frame
+12:59 < sam_moore> I forgot, we need to recommend that the edge detected image can be shown through the API somehow
+12:59 < sam_moore> ...
+12:59 < sam_moore> I think the best way to do that is just to add the canny edge algorithm to "image.c" and allow Image_Handler to call it if needed
+13:00 < sam_moore> Abstract out all the image procesing stuff to "image.c" and then the dilatometer "sensor" will eventually just become a set of wrapper functions :P
+13:01 < jtanx> Yeah, i think there needs to be some redesign of that image stuff
+13:01 < sam_moore> The way all the other sensors/actuators work is that as much stuff as possible is abstracted out to make it really easy to customise them
+13:02 < sam_moore> Eg: If you were manually doing the file system operations for each actuator/sensor... eww
+13:02 < sam_moore> Images should be similar
+13:02 < jtanx> ummm
+13:02 < jtanx> yeah
+13:03 < jtanx> not sure if it's useful, but...
+13:04 < jtanx> https://drive.google.com/a/student.uwa.edu.au/file/d/0ByHupdgjAZ9XaHF6djdJc0RvLVE/edit?usp=sharing
+13:04 < jtanx> callum's stuff in pd
+13:04 < jtanx> f
+13:31 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+21:20 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sat Nov 02 2013
+21:28 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Sun Nov 03 2013
+15:21 < jtanx> hello
+15:21 < Callum> hey
+15:22 < jtanx> how's life
+15:22 < Callum> ok
+15:22 < Callum> that appendix reference
+15:23 < jtanx> yeah?
+15:23 < Callum> was because i put the canny edge figures in an appendix
+15:23 < jtanx> okay, so would that now be figure 2.17
+15:25 < Callum> technically no, im reffering to 2.17 C-F but without the edge line superimposed onto it
+15:25 < jtanx> sure
+15:26 < Callum> also is the other thing you were referring to when i said graphs instead of figures?
+15:26 < Callum> must of glanced over that in my proof read
+15:26 < jtanx> "The results can be seen in figure 2.14. From the graphs (Figure ??)
+15:27 < Callum> change graphs to figure
+15:27 < jtanx> figure 2.17 again?
+15:27 < Callum> no
+15:27 < Callum> its referring to 2.14 still
+15:27 < jtanx> okay
+15:27 < jtanx> seems a bit redundant, with the previous sentence
+15:28 < Callum> yea. remove previous sentece and say From figure 2.14 it can be..
+15:28 < jtanx> Sure
+15:33 < Callum> also
+15:33 < Callum> 2.17A and B are the same thing?
+15:33 < Callum> ones meant to be grayscale
+15:33 < jtanx> so they are...
+15:33 < jtanx> woops
+15:44 < jtanx> okay, it should be fixed (in my repo for now)
+15:50 < Callum> thanks
+15:57 < jtanx> no problem
+17:32 < jtanx> Callum: are you sure you want to leave your section in first person?
+17:33 < Callum> hmm. has everyone else done 3rd?
+17:33 < jtanx> I think the rest of it is in 3rd
+17:34 < jtanx> it's up to you though
+17:34 < Callum> well the way i understood it was we were writing about what we did, but if the rest is in 3rd then should probably change it to be consistent
+17:34 < Callum> we did individually*
+17:34 < Callum> probably doesnt matter
+17:34 < Callum> better to go with consistency
+17:36 < Callum> most of mine is in 3rd anyway ahah.
+17:37 < Callum> just change the first person ones to third then. or i can..but il need to learn how to modify this stuff
+17:37 < jtanx> you can just modify your original .doc one and I can probably then make the changes
+17:37 < jtanx> if you feel more comfortable with that
+17:37 < Callum> it would be easier to modify the final one surely
+17:38 < jtanx> Okay
+17:38 < jtanx> Well the stuff is in Design.tex
+17:38 < jtanx> hmm
+17:38 < jtanx> I should probably just merge my stuff first
+18:07 < Callum> hmm i should probably go through and fix/make sure references to images are right. i originally had 5 edges images, and sam im presuming? removed the one i was using in the progression
+18:08 < jtanx> probably
+18:08 < Callum> as i split it in two (one set of images shows 1 images progression, other just shows the end for different values)
+18:08 < jtanx> he had some issues reading your original images correctly afaik
+18:09 < Callum> hmm. il look into it soon
+18:37 < Callum_> yea the images arent referenced properly
+18:39 < Callum_> also make reference to an image he removed
+18:48 < Callum_> can the figure removed be added back and 2.17F be moved to before the current 3?
+18:48 < Callum_> or atleast just the second request
+18:48 < Callum_> zz. by current 3 i mean the 3 before it
+18:48 < jtanx> well, what figure are you referring to that's been removed?
+18:48 < Callum_> in my original document
+18:48 < Callum_> 2D
+18:48 < Callum_> 2C*
+18:49 < Callum_> but as 2F is the same original image
+18:49 < Callum_> i can just change the values i refer to
+18:49 < Callum_> 2.17F
+18:49 < Callum_> i must sound pretty confusing right now.. :p
+18:49 < jtanx> yes...
+18:50 < Callum_> ok. 2.17A,B,F are all from the same original image, C,D,E are from another (which i dont actually show anywhere..oh well)
+18:51 < Callum_> in my text i refer to an image which is comment to A,B,F but isnt actually there. but i can change the values i say is used to make it equivalent to F
+18:51 < Callum_> TBH i'd probably prefer to have 2 figures, one to show the progression of the images and another to add some more examples. but if thats too hard to do its ok. i can work with wahts there
+18:52 < Callum_> progression of 1 image*
+18:57 < Callum_> get that? :P
+18:59 < jtanx> sort of...
+18:59 < jtanx> I don't know
+18:59 < jtanx> split figure 2.17 into two
+19:00 < jtanx> you're updating the text?
+19:02 < Callum_> yea
+19:02 < Callum_> i can just leave it as 1 figure, iv switched F and C
+19:02 < jtanx> okay
+19:08 < Callum_> Also. I think the majority of this should be moved down into the results section
+19:08 < Callum_> so its actually next to/after what its referring to
+19:12 < Callum_> this automatically numbers stuff yea? so if i want to split a figure all i need to do is copy the format and halve it?
+19:12 < jtanx> I'm not sure
+19:12 < jtanx> but I'd think so
+19:12 < jtanx> so long as you name it appropriately
+19:12 < jtanx> do you have latex installed
+19:12 < Callum_> yea
+19:13 < jtanx> okay
+19:15 < Callum_> wait. bi'
+19:15 < Callum_> no
+19:15 < Callum_> i was saying yea to labelling
+19:15 < jtanx> right
+19:28 < Callum_> ok well iv fixed the referencing. just left it as 1 figure
+21:18 < Callum_> so when are we meeting tomorrow then?
+21:18 < jtanx> we have to
+21:18 < jtanx> oh right when
+21:18 < jtanx> I dunno
+21:18 < Callum_> haha
+21:51 < jtanx> before 5pm? :P
+21:51 < Callum_> sounds good. 4.59 it is :p
+21:52 < Callum_> but if we dont set a time il probably end up getting there around 11/12, maybe a bit earlier. depends when i can drag myself out of bad
+21:52 < Callum_> bes
+21:52 < Callum_> ugh the place you sleep Dx
+21:53 < jtanx> haha
+21:54 < jtanx> okay, well 11am sounds good I guess
+23:40 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Mon Nov 04 2013
+08:43 < sam_moore> The report looks good (enough)
+08:43 < jtanx> :S
+08:44 < sam_moore> I hope this is just a matter of showing up and printing it and there aren't any last minute "Edit the entire thing!" issues...
+08:44 < jtanx> Yeah, I hope not
+08:44 < sam_moore> Maybe I'll show up early and print it and then we can just hand it in once everyone arrives?
+08:44 < jtanx> That may work...
+08:44 < jtanx> How much does it cost to print it?
+08:44 < sam_moore> I don't even know
+08:44 < sam_moore> It would have to be in colour
+08:45 < sam_moore> So, 50c a page? 50 pages?
+08:46 < jtanx> about $4/person
+08:46 < sam_moore> Gah there are still mistakes in the glossary
+08:46 < sam_moore> I don't even care...
+08:47 < jtanx> Rowan never got around to fixing it... unless he plans to fix it when we meet?
+08:47 < jtanx> I was looking at the sensors team report... it's like 35MB and ~70 pages long
+08:49 < sam_moore> Huh
+08:49 < sam_moore> I guess they did do some stuff after all
+08:50 < sam_moore> :P
+08:50 < jtanx> :P
+08:50 < jtanx> just a small font issue again
+08:50 < jtanx> implemented â\80\93and
+08:50 < jtanx> that introduction paragraph
+08:50 < sam_moore> Yeah it sucks copy/pasting from openoffice into plain text
+08:51 < jtanx> Yeah
+08:51 < jtanx> it copied it as an en-dash and not hyphen-minus
+08:51 < sam_moore> Fixed
+08:51 < jtanx> Cool
+08:51 < sam_moore> I'll fix the glossary I guess
+08:51 < jtanx> :/
+08:51 < sam_moore> That will be the first thing anyone turns to when they are confused
+08:51 < sam_moore> And if it is wrong...
+08:52 < jtanx> ...
+08:55 < sam_moore> It's never bothered me until now that server/client refers not only to an individual process, but also to the physical machine it runs on
+08:56 < sam_moore> I wonder if it's clear what "server" we are talking about in context
+08:56 < sam_moore> (This is why I changed the "Server Configuration" to "BeagleBone Configuration"
+08:56 < jtanx> Yeah, that might get a bit confusing
+08:57 < jtanx> Hmm
+08:58 < jtanx> Server used in multiple contexts
+09:00 < jtanx> what else has our software on the bbb been referred to? I've just called it 'server program'
+09:05 < sam_moore> Yes, it's just always been called server, too late to change that now
+09:06 < sam_moore> It *is* a server
+09:07 < jtanx> Yeah
+09:07 < sam_moore> Ok, I don't need to explain "Operating System" in the glossary
+09:07 < sam_moore> I'll stop at "Threads"
+09:08 < sam_moore> I added CSS as well
+09:08 < jtanx> Ah... forgot about that one
+09:09 < sam_moore> That's it
+09:09 < sam_moore> No more changes!
+09:09 < sam_moore> It's done!
+09:09 < sam_moore> I'm putting it on a USB
+09:10 < sam_moore> As soon as I get to university I am going straight to the printers
+09:59 -!- jtanx [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+11:07 < jtanx_> uhh
+11:07 < jtanx_> so where are we meeting
+11:13 < jtanx_> actually, never mind I've just seen the emails
+11:16 -!- jtanx_ [
[email protected]] has quit ["http://www.mibbit.com ajax IRC Client"]
+11:17 -!- jtanx_ is now known as jtanx
+14:11 -!- james_ [
[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+20:14 -!- Irssi: #mctxuwa_softdev: Total of 2 nicks [0 ops, 0 halfops, 0 voices, 2 normal]
+--- Day changed Tue Nov 05 2013
+--- Day changed Wed Nov 06 2013
+11:54 -!- Irssi: #mctxuwa_softdev: Total of 1 nicks [0 ops, 0 halfops, 0 voices, 1 normal]
+--- Day changed Thu Nov 07 2013
+--- Log closed Fri Nov 08 00:28:13 2013