#avr | Logs for 2013-10-14

Back
[02:22:41] <spec__> .
[02:25:34] <Roklobsta> ..
[02:25:53] <vsync_> ping
[02:29:15] <Roklobsta> pang
[02:30:44] <rue_shop2> thud
[02:31:45] <Roklobsta> you forgot the preceeding "zip"
[02:32:33] <vsync_> i like your nick
[02:32:52] <vsync_> it has that oompf to it
[02:33:31] <Roklobsta> who me?
[02:33:48] <vsync_> yeah
[02:34:21] <Roklobsta> it has everything to do with me getting onto IRC in 1992, IRC limiting nicks to 9 chars and I owned an Amiga at the time.
[02:34:48] <vsync_> so you missed the whole persian gulf thing
[02:34:50] <vsync_> too bad
[02:35:15] <Roklobsta> no, i watched GW1 unfold on CNN at the time.
[02:35:35] <vsync_> good enough
[02:36:27] <vsync_> so
[02:36:46] <vsync_> does anyone have the faintest clue about prices on used rigols?
[02:37:38] <Casper> used rigol? that exists?
[02:37:56] <Roklobsta> i don't think anyone lets go of them, unless it's from a deceased estate.
[02:38:14] <vsync_> well that's sad
[02:38:16] <Roklobsta> anyway, a new one is ~$300
[02:38:56] <vsync_> it's closer to 400 euros here afaik
[02:38:58] <Casper> depend on which one
[02:39:08] <vsync_> a 1052e was it?
[02:39:10] <Casper> the DS1104Z isn't 300...
[02:39:42] <Casper> nite
[02:39:59] <vsync_> maybe i'll find a dealer in the eu that would sell it way cheaper
[02:40:28] <vsync_> can't ship outside eu they will force me to pay 24% VAT no matter what
[02:42:08] <Roklobsta> Maybe Nokilai down at the pub has one going on special for 100 euros.
[02:55:33] <vsync_> who then =O ?!
[02:55:47] <vsync_> nokilai sounds african
[03:25:49] <Roklobsta> wow disconnect by microwave oven
[03:26:01] * Roklobsta golf claps wifi
[05:00:41] <vsync_> sometimes i just love my job
[05:01:28] <vsync_> i got a call from a customer, he was putting one of those car fuse type fuses into its socket, loosely, and he calls in panic "OMG SPARKS FLEW WHATS HAPPENING?!"
[05:56:45] <megal0maniac> vsync_: 10A is happening
[06:13:45] <asmprog_> Does anyone here have experience with ardunio?
[06:14:01] <specing> #arduino does
[06:14:16] <asmprog_> i've checked that out. Empty
[06:14:25] <Fornaxian> is a nice little hardware platform
[06:14:27] <Fornaxian> the software sucks.
[06:14:50] <asmprog_> Yes software is trash. I'm using assembler
[06:14:56] <specing> We hate arduino here, so if you want help, write in C/C++ and dont use their libs. Use gcc and avrdude directly
[06:15:05] <specing> ASM is fine, too
[06:16:14] <asmprog_> I only use ardunio because there are a lot of extender modules for nice projects
[06:18:32] <asmprog_> How can i switch power modes for the ATMEGA328
[06:19:17] <Fornaxian> it's in the datasheet.
[06:19:43] <asmprog_> Oh so you don't help here. My apologizes.
[06:20:29] <Fornaxian> I'm looking it up now.
[06:21:13] <megal0maniac> asmprog_: You'll probably get help, just from less people. Arduino is closer to AVR than PIC, so it's still on topic ;)
[06:21:23] <megal0maniac> At least from a hardware perspective
[06:21:37] <Fornaxian> have to download the datasheet before I can find your answer.
[06:22:03] <asmprog_> No rush ;)
[06:22:12] <jacekowski> asmprog_: you can get help here, but we will not help you with googling stuff
[06:22:48] <Fornaxian> what power mode do you want to switch to?
[06:24:31] <Fornaxian> you would set the relevant bits in the sleep mode control register...SMCR.
[06:24:55] <RikusW> and then use the sleep instruction
[06:24:59] <Fornaxian> datasheet, page 43, has a table showing the various modes.
[06:25:12] <RikusW> and remember to enable some interrupts or it won
[06:25:16] <RikusW> t wake up again
[06:25:39] <Fornaxian> RikusW, don't you just write the sleep enable bit in the same register to go to sleep?
[06:25:48] <asmprog> Thanks fornaxian
[06:26:00] <RikusW> you need to set the mode and then execute sleep
[06:26:09] <Fornaxian> now, back to what I said originally....it's all in the datasheet.
[06:26:17] <RikusW> indeed
[06:26:30] <RikusW> rtfm :-D
[06:26:36] <Fornaxian> yup...just did..hehe
[06:26:38] <RikusW> read the fine manual :)
[06:26:49] <Fornaxian> The SE bit must be written to logic one to make the MCU enter the sleep mode when the SLEEP instruction is exe-
[06:26:49] <Fornaxian> cuted. To avoid the MCU entering the sleep mode unless it is the programmer’s purpose, it is recommended to
[06:26:49] <Fornaxian> write the Sleep Enable (SE) bit to one just before the execution of the SLEEP instruction and to clear it immediately
[06:26:49] <Fornaxian> after waking up.
[06:27:14] <asmprog> What platforms do you guys usually use with avr?
[06:27:16] <Fornaxian> also on page 43.
[06:27:21] <asmprog> or is it hard wired
[06:27:26] <Fornaxian> platforms?
[06:27:42] <megal0maniac> No platforms. Just the avrs, usually in purpose build designs
[06:27:48] <megal0maniac> s/build/built
[06:27:54] <RikusW> ASF maybe ?
[06:27:55] <Fornaxian> mostly a piece of plywood with a bunch of solderless breadboards on it.
[06:28:02] <asmprog> So you just use breadboards with jumpers?
[06:28:12] <Fornaxian> or make my own PCB.
[06:28:12] <asmprog> ah i see
[06:28:27] <asmprog> I dream of that.
[06:28:44] <Fornaxian> I have a couple of avr based dev boards but they limit me to a couple of chips.
[06:29:13] <asmprog> Do you use C?
[06:29:17] <asmprog> or assembler
[06:29:18] <Fornaxian> yes
[06:30:01] <Fornaxian> mostly C with the occasional assembly subroutine for timing critical stuff.
[06:31:29] <asmprog> Got to love how C takes care of the dirt work for us all.
[06:33:16] <asmprog> Try creating an text based operating system in plain assembler. My glass prescriptions changed after a few weeks from all the late nights staring at the screen debugging.
[06:35:13] <asmprog> Can avrdude be ported?
[06:35:22] <asmprog> to other systems
[06:46:15] <RikusW> WinAVR got an port
[06:46:37] <RikusW> there is one for mac too
[07:06:26] <megal0maniac> Bleak. Just discovered that my laptop has an msata port. I've already replaced the hard drive with an ssd :/
[07:07:49] <megal0maniac> On the other hand, the SD card reader is on PCIe, which is pretty cool
[07:46:23] <w|zzy> http://www.kickstarter.com/projects/technicalillusions/castar-the-most-versatile-ar-and-vr-system <-- Jeri elsworth has released the kickstarter for Cast Ar
[09:48:24] <abcminiuser> Goddam
[09:48:32] <abcminiuser> GPS modules use power like my sister uses cake
[09:49:04] <Tom_itx> http://www.electronicproducts.com/Software/Development_Tools_and_Software/Police_are_advocating_iOS_7_upgrade_for_security_reasons.aspx
[10:40:59] <megal0maniac_afk> abcminiuser: Thanks for that. I spilled my coffee
[10:41:20] <abcminiuser> :P
[10:41:24] <abcminiuser> 45mA
[10:42:30] <megal0maniac_afk> But that's active, right?
[10:42:36] <megal0maniac_afk> They sleep soundly
[10:45:30] <Yogi_Bear> Invitation - Only AVR http://www.tatuuu.com.br
[10:46:35] <megal0maniac_afk> What the hell was that?
[10:47:55] <antto> i think it's spam ;P~
[10:53:22] <megal0maniac_afk> Sorry Dockstar...load average: 12.30, 10.58, 7.98
[10:53:41] <megal0maniac_afk> "Do you really want to hurt me?"
[10:54:18] <abcminiuser> Sleep 13mA
[10:54:20] <abcminiuser> So no
[10:54:22] <abcminiuser> Not this one at least
[10:54:56] <RikusW> abcminiuser: globaltop PA6H is a bit better
[10:55:07] <RikusW> 25mA with 20mA tracking
[10:55:30] <abcminiuser> Hrm
[10:55:34] <RikusW> sleep is 7uA, is you switch off Vcc externally and only power the backup pin
[10:55:35] <abcminiuser> Why the hell is standby still so high?
[10:55:39] <RikusW> *if
[10:55:41] <abcminiuser> Oh
[10:55:46] <abcminiuser> Hr,
[10:55:48] <abcminiuser> *Hrm
[10:55:55] <RikusW> its "sleep" mode is 2mA... :S
[10:55:56] <megal0maniac_afk> abcminiuser: Does it have blinkenlights?
[10:56:11] <RikusW> but a simple mosfet solves that
[10:56:21] <RikusW> P channel
[10:56:26] <abcminiuser> Using the Copernicious II at work
[10:56:34] <abcminiuser> The popular one from Sparkfun
[10:56:39] <abcminiuser> SAM D20 usage: 2mA
[10:56:47] <abcminiuser> GPS Usage: 13mA-45mA
[10:56:49] <abcminiuser> Whelp
[10:57:18] <RikusW> my GPS is around $16
[10:57:23] <RikusW> for module only
[10:58:37] <abcminiuser> Yeah cost optimization is in round II
[10:58:41] <abcminiuser> Christ I'm going to explode
[10:58:48] <abcminiuser> Just ate three days worth of Farakal
[10:59:13] <abcminiuser> Farikal rather
[11:01:42] <twnqx> abcminiuser: in standby it keeps trackign satellite positions because a full startup takes quite a bit
[11:01:52] <abcminiuser> Yeah must be it
[11:01:54] <abcminiuser> Still, oucj
[11:01:56] <abcminiuser> *ouch
[11:03:38] <abcminiuser> Send help
[11:03:39] <abcminiuser> Exploding
[11:03:57] * twnqx sends bomb squad
[13:25:33] <ColdKeyboard> I have a chip with 2048 bytes of RAM and 32768 bytes of Flash.
[13:26:03] <ColdKeyboard> Is there a keyword like "extern volatile unsigned char test[2000]" to store data in flash?
[13:26:04] <ColdKeyboard> :)
[13:26:39] <specing> PROGMEM
[13:26:45] <specing> see topic
[13:59:38] <megal0maniac_afk> ColdKeyboard: Also, http://deans-avr-tutorials.googlecode.com/svn/trunk/Progmem/Output/Progmem.pdf
[14:49:50] <bss36504> does JTAG work even if the system clock isn't running?
[14:59:35] <Casper> bss36504: doubt so
[15:54:00] <vsync_> http://i.imgur.com/RkXFgb4.jpg don't you just love inefficient stuff
[15:54:46] <vsync_> couldn't be bothered to go get smps since i found this heatsink in a drawer :D
[19:41:22] <ColdKeyboard> If I have defined some constants in main.c file and want to use them and some functions from main.c in let's say otherfile.c (I have included otherfile.h in main.c), what else do I need to do so I don't get any errors?
[19:45:27] <timemage> ColdKeyboard, #define name val or static const T name=val;
[19:47:54] <ColdKeyboard> #define name val
[19:48:07] <ColdKeyboard> also I have uart_puts() function in main.c
[19:48:14] <ColdKeyboard> how can I call it from somefile.c ?
[19:48:27] <ColdKeyboard> [I have included somefile.h in main.c]
[19:50:09] <N1njaway> Create a prototype for it in main.h and include main.h from elsewhere
[19:50:55] <N1njaway> Same with #define's -- put them in to the appropriate .h files, and just #include the .h files where necessary.
[19:50:55] <bss36504> #define is *not* a variable. It's a preprocessor directive to insert the value of the #define wherever the name is used. When a define is used for a number, it's basically doing the same thing as a const, but where they differ is that a #define is capable of creating macros, acting as a text replacement, pseudo-inline functions etc.
[19:51:28] <bss36504> Also you could declare your number consts as const then just do extern const in whatever other file you need.
[19:52:33] <N1njaway> Personally I avoid #defines as much as possible as they massively clutter the namespace and can create scalability problems. enums can be an effective alternative, and when used in C++ you can just group them in to the class object's namespace that uses them :)
[19:53:33] <bss36504> If you use them strictly like const variables, they are definitely a waste. But when used for macros and basic function type stuff, they are one of the most convenient parts of the language.
[19:53:35] <timemage> the upshot of static const in a header is that the compiler will often optimize it away, much like a macro. if you declare it somewhere in a translation unit and extern it you'll probably end up using sram for it.
[19:53:47] <seldon> "const variables" O.o
[19:54:22] <bss36504> const variable, while semantically incorrect, gets the idea across. And technically they are "variable" you just cant modify them via code
[19:54:36] <ColdKeyboard> I have included "file.h" in "main.c"
[19:54:40] <ColdKeyboard> file.h has line extern void uart_putc(char);
[19:54:58] <ColdKeyboard> but when I call uart_putc() from file.c I get an error :\
[19:55:07] <bss36504> Is that supposed to be a prototype for a function in main.c?
[19:55:10] <N1njaway> ColdKeyboard: You don't need extern there, you just need the prototype.
[19:55:56] <ColdKeyboard> bss36504: Yes, uart_putc() is in main.c and called from file.c
[19:56:17] <ColdKeyboard> N1njaway: I tried without exter and I still get an error
[19:56:20] <bss36504> Right, so like N1njaway said, it should be just a prototype
[19:56:22] <bss36504> no extern
[19:56:38] <ColdKeyboard> same thing without extern :\
[19:56:44] <N1njaway> ColdKeyboard: In general practice, you want to have file.h and file.c -- file.h has all of the function and data prototypes in it, and file.c has the implementation of said functions. file.c should #include file.h at the top. File.h should also be included from any other .c file you wish to reference those functions.
[19:56:46] <bss36504> the reason is, now you can include file.h in any other .c file and still have access to the function
[19:56:53] <timemage> ColdKeyboard, another way to put it is that function prototypes are extern by default. you're not changing anything by adding that keyword to a prototype.
[19:57:30] <N1njaway> Also you absolutely need to ensure to put the #ifndef / #endif header guards around EVERY unique .h file or you'll have massive problems in any but the most trivial multi-file program.
[19:57:53] <ColdKeyboard> I have #ifndef and #endif
[19:57:57] <seldon> ColdKeyboard, what is the error you get?
[19:58:03] <timemage> ColdKeyboard, put your set of files on a paste site so we can see what is going on.
[19:58:17] <seldon> Hazarding a guess: "unresolved symbol uart_putc"?
[19:58:46] <ColdKeyboard> seldon: yes :\
[19:59:06] <seldon> You have to compile both file.c and main.c, then link the resulting .o files together.
[19:59:11] <bss36504> ColdKeyboard: to elaborate on what N1njaway said: http://en.wikipedia.org/wiki/Include_guard
[19:59:25] <N1njaway> bss: He said he already has them in place :)
[19:59:31] <bss36504> cool
[19:59:38] <bss36504> oh yeah. lol
[19:59:41] <bss36504> I see them now
[20:00:26] <ColdKeyboard> :S WTF...?!?!? I just closed the IDE and restarted it again and now it goes on without any compile errors :\
[20:00:45] <ColdKeyboard> This is not nice at all :\
[20:00:54] <bss36504> what IDE? Can I guess eclipse or a derivative thereof?
[20:01:02] <timemage> ColdKeyboard, quick, ship it!
[20:01:14] <ColdKeyboard> Atmel Studio... :\
[20:01:32] <bss36504> That actually happened to me the other day for the first time ever
[20:01:33] <N1njaway> Cold: Always good to do a complete "Clean Build" at times if you start to get errors that don't make sese.
[20:01:38] <N1njaway> I've seen it as well.
[20:02:04] <N1njaway> Try doing a Clean Build first and see if the error stays the same. If it does, try restarting the IDE.
[20:02:12] <ColdKeyboard> Don't know what was the problem... I have the protoypes in .h file, i call them in .c file and have .h file included in main... it should work...
[20:02:34] <ColdKeyboard> Well it works now and I almost always use clean build... :)
[20:02:49] <ColdKeyboard> Well, I hope it keeps working now :D
[20:02:52] <bss36504> Worst case I think the compiler is smart enough to work without prototypes anyway.
[20:03:09] <ColdKeyboard> Thank you for helping me! :)
[20:03:52] <N1njaway> ALSO, worth mentioning, is making sure you have good practices going in how the files and data-types are defined, where, and in what order. Sometimes what can happen is that changing code can cause the build order to progress in a different order, and suddenly because of the chain of includes, suddenly compilation stops because of the ordering difference. It's a subtle issue but can wreak havoc
[20:03:52] <N1njaway> if you don't understand why :)
[20:03:55] <seldon> Oooh, you can get funky runtime errors that way, bss36504. Function parameter mismatches are not fun to debug.
[20:04:38] <N1njaway> Yes, NEVER ignore the warnings related to missing function prototypes or unknown types with regard to that.
[20:04:58] <bss36504> I know, but it would *probably* compile with a warning.
[20:05:06] <bss36504> a warning you should heed I might add
[20:05:27] <N1njaway> Compile, yes? Work right, sometimes highly dubious. :)
[20:06:00] <bss36504> One of my classmates always had the motto "If it compiles it's good to go" and I always facepalmed.
[20:06:12] <seldon> Also, isn't this bit disallowed in C99?
[20:06:14] <N1njaway> About the only warnings I tend to ignore are "variable x is unused in function foo()" because that one really doesn't matter.
[20:06:47] <N1njaway> bss: And with that mentality you can see why there's so much quality software out there :)
[20:07:09] <timemage> seldon, don't think so.
[20:07:28] <bss36504> N1njaway: I tend to ignore "control reaches end of non-valid function"
[20:07:28] <timemage> seldon, maybe in '11. haven't look at it much yet.
[20:07:59] <seldon> gcc -std=c99 still eats it with a warning, anyway.
[20:09:15] <N1njaway> Back to board assembly!
[20:09:21] <seldon> N1njaway, I disagree about unused variable warnings -- they've tipped me off on logic errors more than once. When I really don't mean to use a variable (or parameter), I (void) foo; it to suppress the warning, so I can see the others.
[20:09:44] <seldon> Well, see them until I fixed them by removing the unused stuff.
[20:09:48] <seldon> Or fixing the logic.
[20:10:10] <N1njaway> seldon: Yes, that's their purpose. But usually I'll have extra temp variables hanging around, so I'll just use the warnings to identify and delete them.
[20:13:54] <timemage> N1njaway, i'd return something anyway. usually when you invoke undefined behaviour the compiler just starts tossing code out. if not now, sometimes in the future when the optimizer gets tweaked.
[20:15:44] <seldon> Solution: -O0
[20:15:52] * seldon hides behind a bick rock.
[20:16:07] <seldon> *big
[20:16:11] <seldon> How did I typo that?
[20:16:32] <timemage> seldon, heh
[20:17:32] <timemage> that was meant for bss36504.
[20:18:57] <bss36504> timemage: Yeah, they do return something, but sometimes it's not obvious to the compiler.
[20:22:16] <seldon> The trouble is that if you ignore too many warnings, you end up not seeing the warnings you shouldn't ignore. it's easier to just write return 0; // never reached. Keeps compiler happy.
[20:22:40] <seldon> Maybe with an assert before it just in case.
[20:22:57] <timemage> seldon, yup
[20:23:26] <bss36504> Yeah, really depends how I'm feeling at the time I guess :)
[22:49:32] <jadew> ffs... USB programming is such PITA
[22:56:51] <Tom_itx> ja
[23:01:29] <Roklobsta> jadew: how do you mean? avrdude or the printer method?
[23:01:40] <Roklobsta> OH you mean like a USB client on AVR
[23:02:09] <jadew> well, actually I mean like USB software on the PC :)
[23:04:15] <Roklobsta> OH, you using HID?
[23:04:22] <jadew> yeah...
[23:04:49] <jadew> damn thing isn't even linking yet
[23:28:46] <N1njaway> jadew: Are you at least seeing enumeration of the device by the OS?
[23:29:36] <Roklobsta> i wonder if a VID/PID of #dead:beef works...
[23:29:37] <jadew> N1njaway, yeah, my device works, I'm just trying to write a cross platform HID library so I can easily use HID devices
[23:29:54] <jadew> it's just that the DDK samples on windows are not particularly clear and they seem to be super leaky
[23:30:14] <Roklobsta> ew, maybe use some thing like libusb
[23:30:28] <N1njaway> jade: Why not use one of the already-implemented cross-platform open-source libraries for that?
[23:30:40] <jadew> Roklobsta, using that would defeat the purpose really, because then it wouldn't be as plug & play as it should :)
[23:31:18] <jadew> N1njaway, I don't know, I have reservations in using opensource code
[23:31:29] <N1njaway> jadew: http://www.signal11.us/oss/hidapi/ -- I reccomend looking at this
[23:31:45] <jadew> N1njaway, you've been using that?
[23:32:31] <N1njaway> I have, as well as have rolled my own on the Windows side. hidapi works wonderfully, and I've been using it for cross-porting some of our stuff over to OS X as well
[23:33:02] <jadew> I see, does the license force you to opensource your code?
[23:33:09] <Roklobsta> jadew: what's wrogn with open source? gcc has served you very well so far
[23:33:27] <N1njaway> Unfortunatly HID is kind of a slight a pain in the ass on some OS's (Windows), so the libraries are useful where possible.
[23:33:54] <N1njaway> jadew: See that link for liscensing options
[23:33:55] <jadew> Roklobsta, well, the GNU license is pretty much what's wrong with it, that's the root of all evil and why the ratio of good opensource code vs bad opensource code is so skewed
[23:34:34] <jadew> N1njaway, neat
[23:34:39] <jadew> gonna give it a try, thanks
[23:35:20] <jadew> actually scratch opensource from my last sentence
[23:35:26] <N1njaway> Personally I like the WTFPL license, personally -- http://en.wikipedia.org/wiki/WTFPL
[23:35:54] <N1njaway> -personally
[23:35:58] <N1njaway> (either one!)
[23:36:06] <jadew> N1njaway, that's how opensource code should be licensed
[23:36:43] <jadew> I'm not a fan of giving code away, but when I do, I just give it away, no strings attached
[23:37:54] <jadew> having to opensource your code because some crappy library's lincese wants you to is a good reason not to target a particular platform
[23:38:31] <jadew> and I think it's the reason why the end user targetted applications on linux are so freaking bad and buggy
[23:38:51] <N1njaway> jadew: Yep. The intentions of the various licenses are usually good (i.e. commercial software built on open-source code should be required to help support the open-source code movement by contributing) but it seems like most licenses swing pretty far left or right in their intent. So I always like things that offer multiple options. Because we develop a lot of commercial stuff, I am happy to use
[23:38:51] <N1njaway> free code where possible, but I also have no problem paying for things that save me a ton of time/money in development.
[23:39:36] <N1njaway> I tend to think a lot of software is bad and buggy because there are a LOT of mediocre programmers out there.
[23:40:12] <jadew> N1njaway, that's true, but it's the lincense that makes them the only ones that code for that platform
[23:40:38] <N1njaway> They serve their purpose, but so many people write software that is layered on top of layers on top of layers on top of frameworks so much that they really have no idea what the hell is actually going on at the end of the day. And results in crap like an average Windows printer driver being a 150MB download these days :)
[23:41:08] <jadew> heh
[23:42:18] <N1njaway> Cross-platform is always difficult, because it is monumentally challenging to develop cross-platform frameworks that can overcome the least-common denominator (usually the worst aspect to boot) between all of the OS's you are trying to port for. I speak from personal experience on this.
[23:43:09] <N1njaway> Like, thankfully you CAN wrap a lot of stuff to a common API and abstract away the OS-specifics to make them interplay, but the more complex it gets the more concessions you absolutely have to make.
[23:43:58] <jadew> luckly I didn't have to write cross-platform GUI based programs so far so I had it easy in that regard
[23:44:11] <jadew> non-gui cross-platform is not that big of a deal
[23:45:01] <jadew> I'm actually in the middle of a project at work, a pretty heavy daemon that does lots of cool stuff, I'm writting it on windows, gonna compile it on nix
[23:45:09] <N1njaway> Yeah. We've spent the past 3-4 years developing a very robust from-scratch OpenGL hosted GUI that cross-platforms between Windows and OS X, with eventual intention to port to Linux. Plan is to completely release all of it, main hold-up is the time necessary to write the documentation to make it really useful.
[23:45:56] <N1njaway> But I still bang out stuff in Embarcadero for Windows because I can develop quick applications 100x faster that need a quick GUI, but it quickly hits a glass ceiling when you need some of the custom stuff.
[23:48:00] <N1njaway> Out GUI system lets you do practically anything you need and has some features I have absolutely never seen before in any other frameworks (not to mention a callback system that doesn't make you want to kill yourself trying to use!) but the overhead to write an application from scratch is much higher to get started, and there's currently no GUI-builder for just clicking stuff together. So it gets
[23:48:00] <N1njaway> used for some very graphics-intensive applications where we need the control, and not when we don't. :)
[23:48:04] <N1njaway> +Our
[23:48:56] <jadew> Qt is using a nice callback mechanism too
[23:49:14] <jadew> too bad the name they used is clashing with the one used in boost :)
[23:49:40] <jadew> (might actually be part of c++11 already, not sure)
[23:50:22] <jadew> personally, I don't do a lot of GUI stuff, but when I don, I don't mind spending a lot of time on it
[23:50:50] <jadew> unless it's a checkbox and textbox, then it would be ridiculous to spend too much time on that
[23:50:50] <N1njaway> We have a very configurable one that is completely independent of needing any massive libraries, and it works fantastically well on all compilers we've tested it with.
[23:51:38] <N1njaway> It wraps both subscription event sending along wth callbacks that do not require static functions for handling calls to class functions and members, and the syntax is exceedingly clean.
[23:52:38] <N1njaway> The callback registration mechanisms for GTK+ were so god-awful that they are the main reason we looked at it for a day and decided not to use it. :)
[23:52:51] <jadew> I'd use boost::signal for that
[23:54:02] <N1njaway> I've managed to completely avoid boost as of recent. It's kind of turned in to a behemoth IMO in recent years.
[23:54:27] <jadew> indeed, but I don't mind it
[23:54:35] <jadew> it has some weird stuff I'll probably never need
[23:55:12] <N1njaway> The other nice thing with our callback mechanisms is they are trivial to make multi-thread safe as well, which is one of the most difficult aspects of dealing with GUI stuff under any framework.
[23:57:20] <N1njaway> I would so love to get this out there for more people to use, just always that documentation thing I have no time for. Need to make time I guess!
[23:57:40] <jadew> yeah, writting docs sucks