« first day (273 days earlier)      last day (2128 days later) » 

00:49
Ah nevermind on the ribbon... I've figure that out...
This is so much Fun!
 
5 hours later…
05:38
@IvoFlipse I'm headed to bed. I'll be up in a few hours though... I've updated the prog quite a bit, but still a lot more to go... I think you might be slighty proud of me :P Anyways... talk to you laters
 
4 hours later…
10:07
@DMA57361 I tweaked the layout somewhat, so you can finally read all the values in the list with contacts
though ironically I haven't used it myself at all :P
I was at first planning of color coding it, so you knew which contacts are outliers
but I already have a much nicer interface for that below
you found out how to expand the main image as well then
So I might just reverse it and just show the contact number + prediction (not even sure if that's really needed)
@DMA57361 I made the mistake to create a self.axes.add_subplot(111) where I should have done: self.axes.add_axes([0,0,1,1])
I was basically making figures with a lonely subplot, which is pretty stupid :P
ah, still, looking better now :)
indeed
I'm now going to add a tooltip to the measurementname, because you can't read the full name
I'm sure I'll be able to make use of that elsewhere as well
10:49
jezus isn't there any tutorial that explains how to properly add tooltips?
11:03
Now I know how the COP should be
 
2 hours later…
13:19
Look @DMA57361 at least now I get to figure out how the COP should be
it seems there's an offset in the images, which screws with the COP :\
probably because I've aligned all the images, whereas the COPs aren't necessarily
man that's such a major bummer...
mask = contact > 0.001 * contact.max()
                ny, nx = contact.shape
                y, x = np.mgrid[:ny, :nx]
                ymin, ymax = y[mask].min(), y[mask].max()
                xmin, xmax = x[mask].min(), x[mask].max()
                x, y = np.shape(contact[ymin:ymax,xmin:xmax]
There's the evil
oh thank god, it seems that's postprocessing
ah, so fixable?
@DMA57361 well I need a different way to standardize the contacts
the 'best' way would be to take each contact and rotate it so the least squared difference is the smallest
along with the COP lines
@DMA57361 Well the problem in these lines of code is that it cuts off parts of the image, making them no longer fit
either I need to do the same to the COP or not at all
@DMA57361 Though you're right, if I translate the contacts, everything else should get translated just as much...
the problem is that the translation right now is like a black box. I just trim off the edges, but don't register how much that was
def calculate_cop(self, data):
        copx, copy = [],[]
        y, x, z = np.shape(data)
        xcoord, ycoord = np.arange(1, x+1), np.arange(1, y+1)
        tempx, tempy = np.zeros((y, z)), np.zeros((x, z))
technically if I know the shape of the contact after 'trimming' I could pass that along to other results
the downside is that I've already calculated all results and stored them in the database
so my safest bet is to create a post-processing feature that simply does all calculations again
that sounds like it makes sense
brain's not really in gear today - wisdom tooth putting me off everything atm
13:33
@DMA57361 auch, needs to get pulled?
My brains have been in low gear all week, so I'm just aiming for the lowest hanging fruit
and helped Kronos built his app
so I just keep working, but don't have to strain myself
@IvoFlipse naa, just growing a bit, it'll stop in a day or so, then probably won't bother me again for a few months, it's just really distracting in the meantime
@IvoFlipse yeah? how's that going?
nice
well I added a second tab, though I misunderstood him somewhat
does it have a working backend too?
13:36
yeah, though very meager
if you press it twice, it will calculate the time difference
still, not bad for a few days work (or is it more already?!)
when you press the + button it will sent it to the controller
press the save button and it will sent it to the model and store it in a sqlite database
but because there's no textfields for doctor + patient, I couldn't generate any unique ids
so it just runs once right now
but still :P
this is like 2-3 evenings work
@IvoFlipse quite, given the time span it's a very good start
Also wasted some time getting this to look like it does
@IvoFlipse lol, which option do I choose?!
13:38
First I refactored the code to switch between tabs, turns out I have a lot of useless code in my own app :P
so that was a useful lesson, hehe
and that min/max/mean are in a list
so basically it makes a combo of label + textcontrol for each item in the list
you've effectively got yourself a ribbon/tab/page based UI framework going
@DMA57361 Yeah pretty much :)
nice
I just copy pasted my own 'framework' and removed all the redundant code
turns out he wanted those 3 buttons on top to be min/max/mean or something
because he wanted to display some statistics here
the theory is, that while you measure a certain time/task, that's not effectively the time you spend on it
the more tasks, the less likely its very correct, so you apply some statistics to lower their values
remind me to support floats instead of rounded numbers :P
else he'll get weird results, hehe
lol, indeed
I really need to do some more dev work
just haven't really had the motivation for it lately
13:42
but this way he just creates an instance of these things for every result he wants and the rest is easy :)
you're welcome to pitch in ;P
I'm tempted to start hacking with Kinect, but I also want to learn more statistics and I still have to finish up some other features
@IvoFlipse yeah, but I've not really playing with wxPython and those bits, so potentially be more of a hindrance
It all looks like a mountain of work :(
@IvoFlipse yeah, spotting a tweet WRT to the SDK being released
@DMA57361 So hasn't Kronos, but he's documenting what the heck it does
well the SDK is .NET so unless I can get ironpython to work, that's not an option
but when I saw what others did with the other driver, I don't need the current version of the SDK to mess around
@IvoFlipse ah well that's not surprising, but still a little irritating
13:44
I could try to learn C#, but I feel like I have so much to learn in Python still
though I do feel I'm getting more proficient now
learning a different language can make you better at the first one
makes you approach problems from a different perspective
that said, it's always a fairly large time investment to do so properly
just need a plan de campagne for my statistics, because it shouldn't have to be difficult. After all I built the population part in one week, so rewriting it shouldn't take much longer either
@DMA57361 I'm also afraid I'll like the tools a lot and wanting to rewrite a lot of my python code :P
and obviously I'm not getting paid at the moment, so I need results. Learning a new language won't give me that :)
@IvoFlipse lol, well yes, but that always happens ;)
I do think that with C# a lot of graphical work would be a lot easier
OpenGL tutorials for Python are pretty meager imho
yeah, on both counts
13:47
though I'm going to try and bite the bullet anyway, because then I'm really no longer dependent on libraries and such
biting the bullet on learning OpenGL regardless of the language that is
@IvoFlipse what libraries are you trying to drop?
well Matplotlib can't do animations fast enough, glumpy doesn't work in wxpython etc
besides OpenGL doesn't allow dynamic typing as much as Python, so it will give me the different perspective ;)
there's very few things that allow dynamic typing as much as Python... :P
13:49
And I'm hoping it will allow me to understand something like CUDA, which would prove to be useful on my datasets
yeah, there's quite a bit of potential there I suppose
@DMA57361 true, but you can't change a frame that's drawn on the screen right now. So you need to learn how to cope with that
@DMA57361 yeah I mean if I have to calculate something on dozens of arrays, those are easy calculations, just need to do it very often
doing them in parallel would be awesome
@IvoFlipse you can't do that with anything... can you? isn't it usually redrawn or flipped with a buffered frame isn't it? :/
@DMA57361 yes, but in Python your used that mostly anything is mutable and it won't complain
@IvoFlipse yeah, Python can thread and/or multiprocess, but not very efficiently from what I've read WRT the global interpreter
13:51
@DMA57361 that's why you interface with CUDA and let that handle it
indeed!
gah, stupid tortoisehg
Now I get why this looked so weird, that was because the offset, not because the axis was flipped
its like 1 pixel to far in front for y, and a whole bunch for x
that's why I loaded the human measurements :P
I know very well what that should looked like, hehe
I was actually surprised the program worked so well on those measurements
but it craps out by the low pressures in the middle of the foot
@IvoFlipse how so?
In the normal software it looks like there's actual pressure there, while in my alternate reality it turns out not that much
its all below 1.0 N, that's indeed not a lot
some pressure is even 0.1
ah, quite a different ball game then in some ways
13:59
> thresh = data > (0.05 * data.max())
that's what messes it up
that's from Joe's code
but honestly anything over 0 is fine
yeah... probably
now it might mess up in small dogs though, like merge them over time because they're too close
got the TimeMotion prog going from Kiln btw, looking good up close :)
we'll see
@DMA57361 ah good :)
well I'm sure you can make a bit more sense of it than Kronos
had to fight with mercurial more than anything :P the copy-paste job on machine was looking in the wrong place for some certificate file, oh well
haven't look at the code yet thou I'll admit, but that widget inspector looks snazzy
is it part of the library?
14:01
yeah part of wxpython, its loaded on MainView
you can comment it out when it gets annoying
but its very useful for inspecting the sizers
it highlights parts as well
@IvoFlipse yeah, spotted that. I imagine it's very helpful
may or may not be an issue, but it's too tall for my screen res and there's no scroll bar to compensate...
that's due to the button size
I couldn't find a way to wrap the text on togglebuttons (annoyed me to death)
might actually just make my own togglebuttons just to work around it
but they're a tad too large
hence they don't really fit no
btw, that repository has a floating head quite a way down, don't know if it needs merging
@DMA57361 probably just needs closing off
and you can tell it to ignore *.pyc files, so that they never get in the way on other screens
14:07
Kronos kept making stupid changes while I had make major changes, very annoying :P
ah, that helps
though we use mercurial in Eclipse, which doesn't have all the tortoise features :\
ah, just drop a .hgignore file in the base dir with the contents:
syntax: glob
*.pyc
ah, I also want it to ignore any Eclipse files :P
ah
well add more ignores for that then
can I just put in the names of files to ignore?
probably...
I create the above with thg, so I'm not sure what the format is tbh
yeah
just syntax: glob
14:17
It didn't crap out, but I push the small tweaks
oh I need to add syntax: ?
syntax: glob
*.pyc
.settings
.pydevproject
.project
yeah, that looks good to me :)
thou .settings is already in the repo, as I have a copy here... so you might need to remove that
I told it to forget
f/e
if you haven't, you need to also need to add the .hgignore file to the repo, not sure I mentioned that bit
oh no, there it is, hadn't refreshed
I hadn't deleted them before updating hgignore
but Kronos might not had known how to keep Eclipse stuff out
I fear adding Eclipse stuff is what created those nested folders
well anything in the repo folders that shouldn't be shared should ideally be ignored I guess
14:31
I wonder should I make a config file something with a .ini extension or just a python file that's mutable?
for what purpose?
I want to set a default location where the database is
oic, that sort of thing
correction, where the measurement files are
which you load in the software
now I have to browse there, very annoying
I'll just set it to C, just to be save. Once I have a settings tab I'll let them change it
and obviously now I need to parse that file and retrieve the path
yup
wow, 7000 for that blog post so far :D
14:36
yeah, though its off HN front page
still 7k is impressive
yeah
Stumbleupon brings in masses too
14:50
sp = wx.StandardPaths.Get()
self.currentFolder = sp.GetDocumentsDir()
hmm that would have been useful too
strangely enough it doesn't actually use my default directory :\
odd
however, I've gotta head home, will see you later at some point :)
the file dialog is better than what I had before though
Ah I do need the : in C\\
hi @Pete
morning @KronoS
15:16
Mornin @IvoFlipse I'm gonna go take a shower and then get some things done around the house, and then get back to working on the app... did you take a look?
15:34
@KronoS Uhm I didn't spot any differences
besides I'm out for dinner in 30 mins, just so you know
@IvoFlipse that's fine... but it should've updated....
Indeed you should :P
I changed some small things, so you'll have to merge the changes
so how do i do that? I added to the ribbon pretty significanltly and changed which panels appeared according to which tab was open
@KronoS Just commit, then pull my code. It will ask you what to do
Says there aren't any changes... :(
when you run it, do you have 'main' 'database' 'task tracker' 'statistics' and 'results' in the ribbon?
like that
15:42
nope
but I'll check again
Hmmmm... Weird
I do now
but I don't have the different buttons :\
Ok! Does it also have the correct views for the tabs?
your main tab is empty?
@IvoFlipse yes
but task tracker and statitics are not
15:44
no I don't have that
I just ran a push... maybe that was the issue
seeikng the changes now
Oh yep that was it... weird I swore that I ran a push last night before going to bed
your main panel is borked :P
@IvoFlipse ya I know... I'm still trying to figure that out :P
Was just trying to add a title to the View... didn't quite work yet... but getting there lol
15:46
You need to add self.SetSizerAndFit(self.mainSizer) to mainpanel I believe
good :)
Oh that's better... positioning is all off... but better :)
and you haven't added mainpanel to panelsizer
ah, and you hadn't added panelsizer to mainsizer
hence it looks so weird
though this makes for a weird size :\
the size of main panel determines the size of the entire app
that's 'odd'
@IvoFlipse how do i add it to panelsizer... I don't see the file so I assume it's a bit of code within 'mainpanel'
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
        self.mainSizer.Add(self.RibbonPanel, 0, wx.EXPAND)
        # panelsizer will contain all other 'screens' in the future
        self.panelSizer = wx.BoxSizer()
        # I've added this panel to 'force' them in the right place
        self.panelSizer.Add(self.TaskTrackerPanel, 1, wx.EXPAND)
        self.panelSizer.Add(self.StatsPanel, 1, wx.EXPAND)
        self.panelSizer.Add(self.MainPanel, 1, wx.EXPAND)
        self.mainSizer.Add(self.panelSizer, 1, wx.EXPAND)
this is in mainframe
Ah....
why is your code indented like that? it's not here
15:52
I don't know
that's me copy pasting in Chrome
Oh ok... well I got it to work! :)
great :)
Pushed...
thanks @IvoFlipse
yw :)
are you liking your app? :)
I'm going to go get some other stuff done around the house and then get back on this..
@IvoFlipse YES!!!!!
15:55
We should add some fields for adding the user/doctor + patient
so we can generate more unique database ids
then the database should be working as well
Ya I've been thinking about that... I'm going to put a .txt file in the repo here in a bit with everything that I can think of that goes into the app...
things like how to do patient ID and other things as well...
btw you should try and leave as many non Python code out of commits, FYI :)
@KronoS with the superuser account you can add a Wiki on Kiln/Fogbugz
@IvoFlipse So I shouldn't do the .pptx and the .txt then?
@IvoFlipse What?! Really? How?
@KronoS That you can, but the Eclipse files can cause some nasty problems I believe
anyway, I need to get going :)
@IvoFlipse I'm assuming that eclipse doing that and not me...
@IvoFlipse have fun!
15:59
@KronoS indeed it is, but because you might accidentally select too many files :)
see you later
laters
 
4 hours later…
20:04
hey @IvoFlipse you around?
yeah but no
watch a ted presentation
+ playing league of legends
which one? the physics one?
but shoot anyway
about being in two places at once?
actually its a stanford one, my bad: youtube.com/watch?v=AY4ajbu_G3k
watched that too, but didn't really pay attention
20:12
It's pretty cool actually...
well I'll leave you be for a bit...
no, feel free to ask a question
I'm just wondering if you were around. Right now I'm going to be working on creating a 'close' button for the main screen ribbon
lol ok I might...
@KronoS what for? because the X does just that
not if I make it full screen
the code bit that you put into the MainView
which is what I would like
you mean those buttons fall off the screen?
20:15
Yep... the min, max, and close buttons are gone
oh those buttons
but what would you need buttons for?
besides buttons should be on the ribbon ;)
that's what I mean... it's a button on the ribbon for the mainpanel view
ah, but why did you call it a close button? :P
cuz it'll close the program
hey so on the ribbonpanel
there's the lines where we create the button for each tab view
on the line of self.name.AddSimpleButton(ID_SOMENAME, "title name', wx.Bitmap(icon_name),"")
where is the ID_whatever defined
the ID is so you have control over what button to call
each button has an id
you use it to assign functions to it
20:26
so where do I define those "ID's"
Oh wait... I see up top... but what's the +1 and the +2 for?
each id has to be unique
so I increment them each new id I create
could have done newId() too I believe
why is ADD the Highest?
Huh... now my app doesn't pull up...
weird
Ah it's cuz it automatically runs the sys.exit() command
20:45
highest are id's above those wx assigns automatically
ok... I guess lol :P
I'll just take it as it just works for now... I'll understand the more specifics later...
just did a push.. the app now runs in full screen and has a close program button on the ribbon
you don't neeeeeeed that button
theres _ [ ] X
Huh?
where?
I'm not seeing it @IvoFlipse
21:06
    #self.frame.ShowFullScreen(True, style=wx.FULLSCREEN_ALL)
disable that line
x, y = wx.DisplaySize()
wx.Frame.__init__(self, parent, id, pos=(0, 0), size=(x, y-40))
enable those two
that makes it full screen
oh and change setsizerandfit to setsizer (its above it I believe)
got this error
> wx._core.PyDeadObjectError: The C++ part of the MainFrame object has been deleted, attribute access no longer allowed.
I think you forgot to comment out a line in mainframe
you mean this line:
> self.SetSizerAndFit(self.mainSizer)
I did that and it still gave the same error
#wx.Frame.__init__(self, parent, id, pos=(0, 0))
on top
Ah ok I see now... well it was still good for me to do this cuz now I'm getting a little more the hang of things
21:11
hehe, well that's great
are you liking it? ;)
@IvoFlipse yep!
if you get the newest push you'll see that I added a 'system' panel to the main ribbon
you can remove the popup btw by commenting out a line on mainview
@KronoS Well the close program is no longer needed :)
I should add settings myself as well
though I'd add that as a tab instead
but the opinions about that vary
@IvoFlipse ya I know... but it works which made me happy. and wasn't hard to do. Anyways I've gotta head. going to be talking to my apartment complex about them forging my signatures
l8rs
@KronoS :O well good luck in that case
 
1 hour later…
22:23
YO fake programmers
Does that include AHK?
5
Q: iCade bluetooth keyboard mappings for MAME?

Jeff AtwoodI just got an iCade -- it is technically for an Apple iPad, but it is basically a generic bluetooth keyboard arcade controller. It's great! But once I paired it with my laptop as a bluetooth keyboard for testing, I discovered something odd that does not bode well for using the iCade with MAME....

↑ This looks like a task for you!

« first day (273 days earlier)      last day (2128 days later) »