IRC Log Viewer » #firebreath » 2010-10-22

IRC Nick Time (GMT-7) Message
taxilian 09:10 g'morning, everyone
nitrogenycs 09:10 good afternoon :)
kylehuff 09:10 whats so good about it?? oh yeah, thats right; its friday!
taxilian 09:10 hehe
yeah, no kidding
kylehuff: are you on linkedin?
or nitro?
(or anyone else in here that I've missed?)
kylehuff 09:10 linkedin yeah
taxilian 09:10 add me? [email protected]
kylehuff 09:10 yeah; if I can remember how to log in...
taxilian 09:10 lol
that's always the trick… :-P
I'm just looking ahead, I'll probably be looking for a new job in March, wanting to keep my various networks in place in case I need recommendations or anything from people who know my work =]
and it's nice to have different ways to stay in touch with people
kylehuff 09:10 yeah, I can see that... but what if I hate you?
taxilian 09:10 then I won't use whatever recommendation you write for me some day… ;-)
"Taxilian is a jerk. He must be depriving a village somewhere of its idiot. He is the sort of person that sets low standards for himself daily and consistently fails to meet them." ;-)
kylehuff 09:10 lol
taxilian 09:10 "Taxilian has really impressed me in that when he struck rock bottom he actually started digging"
kylehuff 09:10 ROFL
dude, other people in the office look at me funny when I bust out laughing...
taxilian 09:10 LOL
nitrogenycs 10:10 no, i'm not on linkedon
taxilian 10:10 ok; I won't try to add you, then ;-)
taxilian 10:10 I have added a features page to; feel free to add anything I missed =]
neilg_ 13:10 Hey! Quick question... I don't see anything storing the width or height of the plugin window within FB. Am I maybe missing something or should I add that?
(I now have 2 out of 3 plugins switched over from NPAPI to FB which are working in all the browsers I've tried!)
Well, I see it doing it for X11 but not Windows at any rate. I'm just going to go ahead and add it... :)
amackera 14:10 neilg_: you can use GetWindowRect(win->getHWND(), &rect) to get the window's bounds
feel free to add it to the window class though, then the plugin developer doesn't need to know that winapi function
taxilian_away: what was that javascript call to refresh the plugin list?
ah navigator.plugins.refresh(false)
neilg_ 14:10 amackera: I'd tried that but the size of the window is 0 by 0 when I get the attached message
(Through IE)
Oh, good. Just an IE thing...
neilg_ 14:10 It also doesn't fire a resized event later either. Hmm...
amackera 14:10 man trying to farm out testing to MTurk is proving harder than i initially thought it would be
taxilian 14:10 amackera: yep, you found it =]
neilg_: you need to not just check the size of hte window, but handle the resize event (which might not yet be plumbed in)
neilg_ 14:10 Yup, I tried to handle it but didn't get one (so I'd assume it's not plumbed in yet). :)
taxilian 14:10 feel free to add that =]
neilg_ 14:10 I'm getting there. ;)
Do you know where the param tags are handled when creating a plugin instance through IE? I have a strange issue where params are making it through Firefox but not through IE... :(
taxilian 15:10 neilg_: they are handled in FBControl.h
where are you trying to access them?
and how are you putting them in from html?
the function in FBControl.h you're looking for starts on line 142
neilg_ 15:10 Actually, I may have been a fool and it just worked in Firefox by chance... I just realised that I forgot to pass in a FB::StringList when constructing the new plugin instance
I may well be about to kick myself...
Yes - I was a fool. :)
This is awesome, I now have our games working across IE, Firefox, Opera, Chrome and probably Safari too! =)
taxilian 15:10 neilg_: I'll tell you a secret… in firefox, you don't have to provide a stringlist for it to work
but on IE, you have to ask for them by name
neilg_ 15:10 Right, it totally makes sense now I've solved it :)
taxilian 15:10 most things are like that =]
in fact, FireBreath itself is a (fairly large) living testament to that principle.. it's really not that complicated, but boy figuring out how to do it to start out with....
neilg_ 15:10 Sure, I can totally see that. In fact... I know this first hand!
taxilian 15:10 =]
neilg_ 15:10 Supporting two (or more) different things that do things in a similar - but not quite the same - way is a nightmare
taxilian 15:10 but see, that's why we like having people like you on the project. in my experience, people who have done it themselves don't complain about anything on FireBreath, and they tend to have ideas that they're willing to contribute =]
they know enough to understand why we do things the way we do
none of this "Why are you using cmake? that's so lame!" stuff :-P
neilg_ 15:10 That's why I pushed for us to use FB - so I can help out if there are problems but not have to start from scratch
taxilian 15:10 and that's exactly why I wrote it =]
neilg_ 15:10 I don't like CMake but I perfectly understand why you use it. It's a powerful tool - just... broken. :)
taxilian 15:10 hehe. it's possible we could do all of this with scons, but at this point there isn't a compelling enough reason to change and force everyone to learn yet another tool
neilg_ 15:10 Anytime I have to delete my build directory in order for CMake to work again... it makes me silently weep. lol
taxilian 15:10 hehe. yeah… but just think how much harder it would be without it?
neilg_ 15:10 I wouldn't recommend SCons either - we used it at my last company and it was a bit of a nightmare too. CMake is more useful than SCons if only because it generates pretty decent Makefiles or solutions that tend to work
It just doesn't handle changes once they've been generated very well
SCons on the other hand gets exponentially slower with each file (or dependency) that it has to track
taxilian 15:10 interesting; I've heard a lot of good things about scons, so good to hear some of the other side as well
neilg_ 15:10 I haven't seen that with CMake (yet)
taxilian 15:10 just wait 'til you see what I'm working on right now… trying to set up a standard way for providing integration with common libraries
currently I have openssl and curl
neilg_ 15:10 OTOH using SCons means there IS no generation involved so... It's all swings and roundabouts.
taxilian 15:10 put add_firebreath_library(curl) in your PluginConfig.cmake and it'll actually check to see if you have it on your system and on windows if it doesn't find it pull the binaries down from source control
neilg_ 15:10 I've learned to never complain about why people choose to use certain things or not unless I know of something that's very obviously better. Generally speaking people tend to choose things for reasons that make sense!
taxilian 15:10 I actually really like the fact that cmake generates a project; I'm sorry, but Visual Studio is IMHO the absolute best tool for C++ development on windows
I tend to agree =]
neilg_ 15:10 That's awesome so long as it's optional. We also have libcurl and OpenSSL dynamically linked into our projects. :)
taxilian 15:10 completely optional
neilg_ 15:10 You can still use SCons inside of Visual Studio but it becomes more complicated. I agree with you though, it's a fantastic tool. Paired up with Visual Assist and I can code faster than I can anywhere else (in C++)
taxilian 15:10 on windows static linking is often preferable for those two because plugins with dll dependencies sometimes have odd issues
Visual Assist? not familiar with that
neilg_ 15:10
Definitely look into it because it's a fantastic add-on to Visual Studio. Helps out with code completion, better highlighting, refactoring... I find it hard to work without it these days!
taxilian 15:10 hmm. that's probably too expensive for me, unless it's ridiculously useful...
I may try it, though
hmm. academic license, though… that might make it doable
(gotta remember that I'm on the 20 hr/ week of work college student budget… :-P)
I think I'll download the trial, though
neilg_ 15:10 I agree with you about static linking (and since I've mostly coded for consoles it totally makes sense). However we have a very modular system so we load things dynamically. It certainly has its pros and cons!
taxilian 15:10 yeah; on Mac and Linux firebreath will automatically link to curl and openssl dynamically
neilg_ 15:10 I highly recommend it. I've been using it since 2001 or 2002 and it just makes me so productive.
taxilian 15:10 also if it finds openssl already installed (not sure exactly how it looks, TBH) it'll use that instead of pulling one down
but it's a good example of how external libraries can be added to FireBreath in convenient ways
neilg_ 15:10 Oh, is that using the CMake scripts?
taxilian 15:10 yes
and FindCurl
if that fails, then it pulls it down
neilg_ 15:10 I can definitely see why you'd want to add it and why people would find it useful
taxilian 15:10 I'm actually adding in an HTTPClient class that uses openssl and curl to make http requests and do uploads
though the proxy stuff is obnoxious :-/
neilg_ 15:10 Are you able to get hold of the certificate store from the browser to authenticate SSL connections?
taxilian 15:10 nope
current plan is to compile the certificates we're willing to accept into the plugin
however, for a plugin that may not be a bad thing
particularly if I can find a way to automate it
neilg_ 15:10 Currently we download files using OpenSSL and libcurl but we were thinking about switching to using the browser to download instead so that we didn't have to deal with proxy issues!
It was either that or have some kind of utility where proxy settings can be configured
taxilian 15:10 if you don't need the advanced control I would definitely do that
in Firefox 3.6 we can (finally) get the proxy settings from the browser
can't rely on that
neilg_ 15:10 Right. That's exactly the problem we've faced
But we also need to authenticate the SSL connections which is easy using libcurl
taxilian 15:10 yeah
it's a problem I'm very familiar with
and there is no good solution, unfortunately
neilg_ 15:10 It would be quite a security risk if we let the browser download and execute arbitrary code
That's pretty much where we ended up too. :/
taxilian 15:10 the way most plugins do it is to rely on the IE proxy config
neilg_ 15:10 Right, it makes sense - but I hate doing anything that seems like a hack. Unfortunately it's probably the most likely way to work... But will only work on Windows!
taxilian 15:10 yep
on Mac there is a system proxy config you can grab
neilg_ 15:10 I haven't looked into that yet but I know I'll have to in the near-future
taxilian 15:10 I'm glad to have you around; I hope you stick around for awhile =] it's good to have others around who understand the playing field… I've found that when I make decisions without any feedback I tend to have to change them later, so I like to have people I can get suggestions from =]
I actually may add a proxy abstraction to FireBreath for getting it whenever possible
neilg_ 15:10 Sure, I'll be around for a while. There are some changes I've made locally and some more I'd like to make so I'll definitely be around. :)
taxilian 15:10 I look forward to seeing those changes ]
I may put out RC2 today; there aren't a lot of changes from RC1, but then the hope is that there won't be =]
mainly it's the stuff I fixed for you and the ability to return a NULL object
neilg_ 15:10 I'm glad for the same reason to find other people who are working on plugins. They're so powerful - I don't understand why they're so badly documented. It's weird!
taxilian 15:10 well, when you really think about it
neilg_ 15:10 That's cool, I'll definitely pull that down
taxilian 15:10 there are very few really good reasons to use a plugin
or at least relatively few
and aparently most people who understand them aren't really all that interested in helping others understand them
neilg_ 15:10 Well, if you're trying to enhance the web in ways that HTML5 won't provide - and you want to avoid Flash... Your options are pretty limited!
I see your point for sure though
taxilian 15:10 I mean, does anyone else think it's a little weird that nobody from Mozilla has bothered dropping in and saying "Hey, guys, things would work better with our browser if you ….", knowing that a lot of people will be using FireBreath to create plugins for their product?
or Chrome, for that matter
neilg_ 15:10 We now have hardware accelerated 3D games across multiple browsers running native code. That's the power of plugins! :)
taxilian 15:10 yep =]
amackera 15:10 taxilian: that does seem strange
neilg_ 15:10 You're right though, it is strange. Maybe FireBreath hasn't quite reached critical mass yet? Though I was surprised to see as many people using FB as there are
Given how poorly documented it all is
(Writing plugins, not FireBreath!)
taxilian 15:10 oh, the project is definitely still growing… however, it's recently started to grow quite a bit faster
neilg_ 15:10 I just realized how badly that sounded. :)
taxilian 15:10 lol. that's okay =]
neilg_ 15:10 With this many people using FB there's clearly a niche for writing plugins - I have no idea why it's so hard to find good solid documentation
There, that's what I meant to say in the first place ;)
taxilian 15:10 hehe. it's just as hard to find people who know how to write them
One of the best resources for learning about NPAPI out there are the blog posts I wrote on colonelpanic… and while they're not bad, that's still really sad
neilg_ 15:10 This is true. I've always wondered if plugin documentation was intentionally hidden because of security concerns. But if that's the case then it's security through obscurity and that's the worst kind there is!
taxilian 15:10 very true
I just hope I can find another job that keeps me working on FireBreath when Facebook is done with me =]
neilg_ 16:10 Sounds like the sort of project that Google could get behind
taxilian 16:10 heh. well, we'll see what happens. I finish school (finally) in April, so I'll have a little more flexibility with work
amackera 16:10 Kerckhoff's principle:'_principle (about the security through obscurity thing :P)
neilg_ 16:10 That's an interesting article
taxilian 16:10 yeah; I've heard of this, but never seen it written down like that. didn't know what it was called
amackera: how are things?
amackera 16:10 hey not bad
this testing thing is killing me
taxilian 16:10 I have been there :-/
let me see if Jarom is around and could drop in
amackera 16:10 I think I'm just bound by the nature of the problem
i need to test on real hardware
there's no real way around it
taxilian 16:10 probably; but he has more experience with testing plugins than anyone else of us, including with outsourcing the testing
amackera 16:10 ah, ok
taxilian 16:10 he's on gtalk, but dunno if he's at his computer or not
amackera 16:10 it's ok, what's his email? maybe i'll just shoot him an email
taxilian 16:10 [email protected]
he's on the list as well
*he wrote fbgen, mostly)
neilg_: I installed Visual Assist and it's now parsing the project… we'll see if it's as useful as you say =]
neilg_ 16:10 It may take a little while to get used to... but I think you'll like it. I'd be surprised to hear of somebody who doesn't. :)
taxilian 16:10 =]
and when the trial license runs out maybe I'll finally reinstall my windows VM… :-P
neilg_: is there a hotkey for "Files in solution" and/or "Symbols in solution"?
neilg_ 16:10 Yes, files (by default is Shift+Alt+O)
Symbols is Shift+Alt+S
taxilian 16:10 awesome. this I like =]
neilg_ 16:10 Now click on a variable and hit Alt+G
It takes you to the definition
You can switch between the source and header files with Alt+O
taxilian 16:10 oh, the alt+o has long been missing
can't believe VS still doesn't have it
that's nicie
neilg_ 16:10 It does more than that too (like finding all references and refactoring) but those are the shortcuts I most often use
taxilian 16:10 nice
neilg_ 16:10 I don't think this is from VA, I think it's in Visual studio but if you hold down Ctrl then press K then C then it comments out that line (or any selected lines)
Ctrl + K, U uncomments
taxilian 16:10 yeah, that's VS
neilg_ 16:10 My favourite shortcuts. :)
(Yes, I'm a geeky developer)
taxilian 16:10 those are pretty much mine as well
I use vim when I'm not doing C++ in windows, and those are pretty much the shortcuts I use most in my vim config
or the actions, anyway
shortcuts differ
neilg_ 16:10 Vim isn't for me I'm afraid. One of my team members is a python guy who mostly codes on Linux and that's what he uses nearly all the time
I can use it but I just prefer Emacs. I know, I know, religious war... lol
taxilian 16:10 why'd you have to tell me that? I think the book of Vim commandments says I have to ban you from the channel now…. ;-)
neilg_ 16:10 Fine. I prefer sed! ;)
taxilian 16:10 lol
neilg_ 16:10 Right, I'm off now. Weekend time! Have a great weekend everybody, see you on Monday!
taxilian 16:10 did you see my post on how I got the doxygen stuff integrated?
I used sed at one point in that
take care
neilg_ 16:10 Bye!
nirvdrum 16:10 Use PyCharm!
taxilian 16:10 PyCharm?
amackera 16:10 PyCharm?
taxilian 16:10 syntax checker?
mrahCyP backwards?
amackera 16:10 ⸮sdrawkcab PyCharm
gnight all, i'm headed out early today
taxilian 17:10 l8r all
taxilian 19:10 cygmatic: you here?
cygmatic 20:10 kind of
taxilian 20:10 I like it, I think; the only problem is, of course, that it's impossible to implement without causing a breaking change. however, once it's there we have a lot more control
I say we put it in for 1.3; thoughts?
maybe leave the mimetype out for now, but we can add one later that calls the old method by default; then you don't have to care about mimetypes if you don't want to
and you don't care about them until we support them
cygmatic 20:10 ok, sounds good
taxilian 20:10 ok; will you have time to finish putting this in this weekend?
cygmatic 20:10 should be possible
taxilian 20:10 that would be awesome =]
the great thing about this is that we can have default methods that will normally not even need to be overridden
since most people will just use the pluginwindowwin, npapipluginwin, etc
so while it'll be a bit of a pain to switch to, it shouldn't be too bad — we can provide a template that will work with very little change — and then when it's there it should be really easy to deal with
cygmatic 20:10 at least it is not that much work to switch to it
taxilian 20:10 yeah
I like it
cygmatic 20:10 just a bit of refactoring
taxilian 20:10 it's actually better than I was expecting with the #ifdefs
I think this is going to be much more flexible long term
anyway, gotta run. thanks for doing that
cygmatic 20:10 ok, see you
taxilian 20:10 I wonder how many other clunky areas of the code we'll need to fix that we haven't remembered
ahh, well
one thing at a time
cygmatic 20:10 for one i wonder why the quickdraw window is in PluginCore ;)
taxilian 22:10 cygmatic: Yeah, that's an interesting question :-P I don't think that'll cause a breaking change, so I bet we can move it =]
cygmatic 22:10 taxilian, yep, looks just like an overlooked left-over
taxilian 23:10 cygmatic: You should be able to create a patch to apply all your changes to the trunk repo with hg diff -r <revision before your changes> and then hg patch <diff file> on the new branch
sorry I didn't clarify that earlier; dev is already too far past what we want to put in 1.3 to integrate this in there
cygmatic 23:10 oops, right
i overlooked that 1.3 was on trunk now