#qi-hardware IRC log for Thursday, 2013-03-21

mwcampbellIs there a way to programmatically adjust the CPU's clock speed?00:22
pcercueiyes, through the sysfs interface00:24
mwcampbellOn the Ben, is there any reason why an SDL-based UI would be much more efficient than a Qt-based one?01:40
vignesh885hi i have a seagate 1tb external harddisk and it is not being detected by the computer 08:57
vignesh885anoyne there??08:59
valhallavignesh885: which computer? is it related to the nanonote, milkymist or other projects from http://qi-hardware.com ?09:12
valhalla(which is what this channel is about)09:14
kristianpaulmwcampbell: i think QT one could be more efficient16:54
kristianpaulin terms of UI and such, also more responsive i think16:54
larscwell qt is not that lightweight16:55
lekernelqt is mega bloat16:57
lekerneluse efl16:57
lekernelit's the least sucky toolkit around imo16:57
mwcampbellCan EFL use the framebuffer device directly?16:59
lekerneltheoretically yes16:59
lekernelthere is code for this, don't know about its bug rate17:00
whitequarklekernel: please, don't spread fud17:02
whitequarkqt embedded is very lightweight for such an advanced framework17:03
lekerneloh yeah, it's advanced: it has lists, threads, networking, and what not17:03
lekernelso you end up very easily with code having 2 or more implementations of lists, threads, sockets, etc.17:03
whitequarkyes, it's better to write your own shims for various components which were never intended to be used together in each application from scratch17:05
whitequarkhonestly, I'm not even going to discuss this17:05
lekernela GUI toolkit should not have threads, networking, etc. - period!17:05
whitequarkthough I do agree that the set of abstractions provided by UNIX-like OSes is exceptionally shitty17:05
whitequarklekernel: well, it doesn't have an alternative.17:05
lekerneland face it, a statically linked hello world application using qt is over 20MB, lol17:06
whitequarklekernel: um, no, I don't think it is (if you don't link everything there is in Qt, including QtWebkit), or that this even matters17:07
lekernelbesides, qt looks ugly, takes times to refresh stuff which causes flashes and transient visual chaos, and uses c++17:07
whitequarkmy builds of Qt Embedded have had about 8 MB of shared code, which was not duplicated between the applets17:07
lekernellook at the ipad... and then look at qt17:07
whitequarkum, you mean look at Cocoa, a gui toolkit which has threads, networking, etc. ?17:08
lekernelcan't comment on the internal APIs since I have never tried to use them, but it looks good and it's responsive17:09
lekernelmuch better than anything else17:09
whitequarkthis is a bullshit argument, honestly17:10
whitequarkdo you know the single trick which is required for your app to be that responsible on touchscreen devices?17:10
whitequarkdo everything GUI-related on a dedicated thread and give it the highest priority.17:10
lekerneland especially qt, gtk and let's not mention crap designed specifically for x-windows (eg http://www.opengroup.org/openmotif/banner3.jpg)17:10
whitequarkthis is why android 2.x was slow. this is why android 3/4 isn't anymore. this is the sole reason iOS feels responsive.17:11
whitequarkit has absolutely zero things to do with framework design and whatnot17:11
whitequark(ugliness is subjective. I'd rather not touch the glossy shit ever in my life.)17:12
mwcampbellwhitequark: Your rebuttal makes sense.17:16
whitequarkhehe thanks17:17
mwcampbellSo is Qt a reasonable choice for a UI that will be usable on a device with no mouse or touchscreen, like the NanoNote?17:17
whitequarkmwcampbell: considering the most recent qt snapshot still fits in the RAM of NN and leaves enough space to run the applications, yes17:18
lekernelif you want to make a shitty GUI "open source always get a second class seat" yes17:18
whitequarklekernel: besides, what do you think one should use instead of C++?17:20
whitequark(please don't say python. for the love of everything good in this world. for kittens.)17:21
mwcampbelllekernel: I don't care about surface aesthetics, as long as I can make the UI responsive. My only concern in that area is whether a framebuffer without GPU acceleration is going to be too inefficient.17:21
lekernelwell, lua looks interesting17:21
whitequarkmwcampbell: Qt Embedded was originally designed for devices without GPU, well, because when it was designed, there were no such devices.17:21
lekerneland btw "surface" aesthetics is the purpose of a GUI, otherwise use command line17:22
whitequarkaestethics has nothing to do with usability. taking your ipad, I can make every corner straight and paint it black&white. it won't get less convenient.17:24
mwcampbelllekernel: The purpose of a GUI is usability. Gradients versus solid backgrounds, 3D versus flat UI, is only skin-deep, and isn't something worth considering IMO when choosing a foundational technology.17:24
whitequarkthat being said, open source guis probably have the most shitty usability of all software ever written17:24
whitequarkbe it KDE, GNOME with snake-oil HIG, or whatever17:25
lekernelwhy should the UI toolkit be a "foundational" technology? they should not have threads, database access, networking, etc.17:26
whitequarklekernel: because it had, and mostly, still has, nothing to be based on.17:27
whitequarkpthreads is not a sensible API, BSD sockets is not a sensible API, and so on.17:27
whitequarkjust as string.h is not a sensible API.17:27
lekernelhttp://qt-project.org/search/tag/qmysql what the hell, seriously :)17:27
lekernelyes, right17:28
whitequarklekernel: do you know what ODBC is?17:28
lekernelbut how about decoupling the rendering part from sockets, threads, etc.?17:28
whitequarklekernel: it's not coupled?17:28
lekernelwell it is: you have QThread, QMYSQL ...17:29
whitequarkso?17:29
lekernelwhy should you need any of this to define what a button looks like, and how it responds to a given event?17:29
whitequarkyou don't need that?17:29
mwcampbelllekernel: Those are separate libraries.17:29
whitequarkdon't link QMySQL, don't get it17:29
mwcampbellAnd if you're linking statically, modern toolchains can even eliminate dead code on a per-function basis17:29
lekernellast time I checked, gcc/binutils still didn't - but don't get me started on that ...17:30
whitequarkgcc is not modern :p17:30
whitequarkgold has some support for LTO but it never really worked for me17:30
larscyou can put each function in it's own section with gcc17:30
whitequarkMSVC can do that, LLVM can do that, ICC can do that, IAR can do that...17:30
lekernelyeah there's -ffunction-sections, but it's a bit messy17:31
mwcampbellcombine that with the -gc-sections linker option, and there you have it, dead-code elimination17:31
mwcampbellLTO is better still, of course, since then you can have cross-module inlining17:33
whitequarkIPSCCP also17:33
whitequarkand DAE17:34
lekernel-ffunction-sections/-gc-sections take forever on a moderately sized program, which I guess is why those options aren't turned on by default17:34
mwcampbellWhat are IPSCCP and DAE?17:34
whitequarkinterprocedural sparse conditional constant propagation and dead argument elimination17:34
whitequarkwell, linking webkit with LTO takes ~8 hours on a 12-core desktop i7, or that's what I've been told17:35
whitequarkwebkit is also enourmous17:35
whitequark(that was MSVC IIRC)17:35
mwcampbellbut apparently the Chrome project considers it worthwhile to do so17:36
whitequarkit is.17:36
whitequarkespecially for Webkit, which is a huge C++ codebase with lots of small, often hot functions.17:36
mwcampbellwhitequark: I know I'm getting a bit off-topic here, but can current LTO implementations also detect virtual functions that only have one implementation and turn them into plain functions, to avoid the indirection of a vtable dispatch?17:38
whitequarkmwcampbell: no, because you might load alternative implementations at runtime17:38
larscwell, you probably wouldn't do this during development, but for release binaries it makes sense. since you only compile once, but run it quite often17:38
whitequarkmwcampbell: though if they're module-internal, then yes, LLVM can do that in some cases17:39
mwcampbellI wonder if the Linux kernel would benefit much from LTO. Of course, that would only be effective if one disabled loadable modules.17:42
larscthere are some people experimenting with lto for the kernel17:43
whitequarkmwcampbell: not necessarily17:43
whitequarkunless you override existing functions, you still can keep the uninlined version and export the same symbol for modules17:43
whitequarktrading off size for performance, of course17:43
larschttp://lwn.net/Articles/512335/17:45
mwcampbellI imagine one could achieve another performance boost by combining the application and the OS in one binary, as some RTOSes do, and applying LTO to that. But of course such a system is much less hackable than a general-purpose OS like Linux.17:49
mwcampbellI vaguely remember Qt Embedded having its own windowing system of sorts, so one could at least flip between applications without having to run each one on its own virtual console.17:53
whitequarkmwcampbell: yeah it has its own framebuffer compositor17:54
whitequarkthere isn't a way to share a framebuffer otherwise. DFB has its own, GTK... I've no idea but probably the same17:54
mwcampbellDoes the version of Qt on the NanoNote have that compositor?17:54
paul_boddieIf you want to reduce the "bloat" in Qt, configure it without WebKit.17:55
lekernelwell there's this17:55
lekernelhttp://en.wikipedia.org/wiki/OPIE_user_interface17:55
mwcampbellah yes, I remember OPIE17:55
paul_boddieBesides, the whole reason for providing threading, database stuff in Qt is because somebody has to: C++ doesn't have high-level libraries for that stuff out of the box. Also, the data types in Qt date from a time when the STL wasn't ready for prime time, and I think they're trying to reconcile all that in Qt 5.17:57
paul_boddieOf course, Qt should be more modular and that was a goal of the developers, but they got carried away and made Qt larger and often more reliant on the peripheral libraries because they didn't finish the job (as far as I understand it).17:58
paul_boddieAnd then some bright spark decided to suck in WebKit and duplicate half the stack (multiple JavaScript, XML libraries), but that may have been in the Nokia era where targeting Symbian was seen as a "good idea".17:59
mwcampbellI observe that the version of Qt in the NanoNote image doesn't have WebKit, so that's not an issue.18:01
paul_boddieYou'd have to leave WebKit out of any build for the NanoNote purely for memory exhaustion reasons. I guess you could try and configure it aggressively to only have the fundamental UI stuff. In fact, this is one of the things that Python developers found weird about Qt: that it "duplicated" libraries that you'd normally use instead in Python.18:03
mwcampbellI have no interest in trying to port WebKit to the NanoNote.18:03
paul_boddieThen again, there were benefits to wrapping qtxml or KHTML in Python and having a proper DOM, the latter even with support for stuff like ranges, mostly because of the continuous whining in the Python community about the DOM and their scorched earth retreat from the interactive Web.18:04
paul_boddies/the interactive Web/supporting and developing client technology for the Web/18:06
paul_boddieBTW, I read on LWN today that in the Raspberry Pi talk at PyCon, Eben Upton says that they use Python to develop and verify their opaque Broadcom silicon.18:07
paul_boddieWhat about QtMoko? http://qtmoko.sourceforge.net/18:18
HoytCorkinshello20:16
HoytCorkinssomeone here?20:17
pcercueiyep20:22
--- Fri Mar 22 201300:00

Generated by irclog2html.py 2.9.2 by Marius Gedminas - find it at mg.pov.lt!