tag:blogger.com,1999:blog-29977399071092533542017-06-25T13:24:25.975+10:00Qt, linux and everythingthoughts from a developerdeviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.comBlogger25125tag:blogger.com,1999:blog-2997739907109253354.post-28872440386448553022017-06-05T14:33:00.002+10:002017-06-05T14:33:57.680+10:00Qt for web (assembly)So ya, I have been doing work for the up and coming Finnish company <a href="https://www.intopalo.com/" target="_blank">Intopalo</a>&nbsp;getting <a href="https://codereview.qt-project.org/#/c/178543/" target="_blank">Qt5 for WebAssembly</a> using emscripten up and running. This is the 3rd Finnish company I have done work for, and the 4th Nordic company (Trolltech, Nokia, Jolla, Intopalo)<br /><br />This is very much a work in progress.<br /><br /><b>Background:</b><br /><br />There was a Qt4 version, <a href="http://vps2.etotheipiplusone.com:30176/redmine/projects/emscripten-qt/wiki" target="_blank">emscripten-qt</a>&nbsp;and a related <a href="https://blog.qt.io/blog/2015/09/25/qt-for-native-client-and-emscripten/" target="_blank">Qt5 for Native Client</a>&nbsp;which do similar things, and we have taken inspiration from both these projects. Thanks!<br /><br /><b>The gist of it:</b><br /><br />We use <a href="https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html" target="_blank">emscripten</a> to cross compile Qt5 into javascript and/or webassembly. We use 'incoming' from emscripten's <a href="https://github.com/juj/emsdk" target="_blank">git repo</a>. Details how to build emsdk are <a href="https://kripken.github.io/emscripten-site/docs/building_from_source/building_emscripten_from_source_using_the_sdk.html" target="_blank">here</a>.<br /><br />My working Qt5 repo is <a href="https://github.com/lpotter/qt5-emscripten/tree/wm" target="_blank">here</a>, (the wm branch contains multi window and window decorations) while there is also an outdated<a href="https://codereview.qt-project.org/#/c/178543/" target="_blank"> WIP gerrit MR&nbsp; </a>which will get updated at some point.<br /><br />This is how I configure Qt for emscripten:<br />&nbsp;. ~/emsdk/emsdk_env.sh (to get em compiler in path)<br /><br />~/depot/<span>qt</span>/qt5/qtbase/configure -xplatform emscripten -confirm-license -opensource -nomake tests&nbsp; -nomake examples -developer-build -no-dbus -no-thread<br /><br />&nbsp;(no-thread is a new feature I added for this, as threading in javascript is basically non existent)<br /><br />and then, use that qmake to compile a Qt app!<br /><br />To run the app, in the firefox browser<br />emrun --browser firefox path/to/app.html <br /><br />This is all bleeding edge from the emscripten compiler to the web assembly support in the browser, so your mileage may vary.<br /><br />With the 'wm' branch of my github repo, multi windows and window decorations are kind of working. As well as compiling into webassembly and not just javascript asmjs.<br />Compiling into wasm brings much smaller download sizes, but you need to have a browser that supports it.<br /><br />There is still heaps of work to do to bring it up to release state. So for now, it is still a research and WIP project, and a lot of things may or may not work. But it can run some Qt widget based apps in your (firefox) browser!<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-jUiQmevDj_Q/WTTe9FWhwaI/AAAAAAAAK60/Y6ip1wGoTd4vShLXGbIiUg3rURrMXikYwCLcB/s1600/qt-wasm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1060" data-original-width="1504" height="225" src="https://1.bp.blogspot.com/-jUiQmevDj_Q/WTTe9FWhwaI/AAAAAAAAK60/Y6ip1wGoTd4vShLXGbIiUg3rURrMXikYwCLcB/s320/qt-wasm.png" width="320" /></a></div><br /><b>The future: </b><br /><br />Currently there is no support for qml/qt quick. That just means we haven't tried it as our focus is currently on widgets and opengl.<br /><br />Personally, I would like to see location and some sensor events, but that is for the future.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com5tag:blogger.com,1999:blog-2997739907109253354.post-36527636993393138452017-05-05T07:39:00.000+10:002017-05-05T09:18:25.780+10:00new QtSensor IoT plugins!I've said it before and I will say it again... one thing I am tired of hearing about, is that people think Qt is only for UI applications.<br />WRONG!<br />Qt is great for IoT as well! even without a UI. (IoT is today's buzzword for 'embedded', which really isn't embedded, just small) and you cannot have IoT without sensors!<br /><br />I just submitted a MR to QtSensors to add support for the <a href="https://www.raspberrypi.org/products/sense-hat/" target="_blank">SenseHAT</a> sensor board for raspberry pi:<br /><a href="https://www.blogger.com/goog_1080328120"><br /></a><a href="https://codereview.qt-project.org/#/c/193456">https://codereview.qt-project.org/#/c/193456</a><br />For raspberry pi, you will need <a href="https://github.com/RTIMULib/RTIMULib2" target="_blank">RTIMULib</a> installed on your rpi (and dev package to compile QtSensors). It's in the default repo, so you don't actually need to compile RTIMULib yourself.<br /><br />Even though this is submitted for dev branch and should be available in Qt Sensors 5.10, this will compile and work for the Qt 5.3 that comes with the raspbian distribution.<br /><br />As well, if my spare time allows, I will also get my <a href="https://creator.matrix.one/#!/index" target="_blank">Matrix Creator</a> QtSensor plugin into shape to submit as well.<br /><br />I also have planned getting the <a href="http://www.ti.com/ww/en/wireless_connectivity/sensortag/" target="_blank">TI SensorTag</a>&nbsp;code I wrote shoved into a QtSensor plugin. What's special about the SensorTag is that it has (buzzword alert) wireless sensors! This is a bit more tricky as it will use and be dependent on Qt's <a href="https://doc.qt.io/qt-5/qlowenergyservice.html" target="_blank">QLowEnergyService</a>&nbsp;but will work nonetheless. This plugin doesn't run on the device, but requires a host machine which has bluetooth.<br /><br />deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-47767151953277709912017-01-07T12:09:00.000+10:002017-01-07T12:48:15.380+10:00Movin' on...A year has gone by since I started work with Canonical. As it turns out, I must be on my way. Where to? Not real sure at this moment, there seems plenty of companies using Qt &amp; QML these days. \0/<br /><div><br /></div><div>But saying that, I am open to suggestions. <a href="https://www.linkedin.com/in/lornpotter" target="_blank">LinkedIn</a><br />&nbsp;</div><div>Plenty of IoT and devices using sensors around. Heck, even Moto Z phone has some great uses for sensor gestures similar to what I wrote for QtSensors while I was at Nokia.<br /><div><div><br /></div><div>But a lack of companies that allow freelance or remote work. The last few years I have worked remotely doing work for Jolla and Canonical. Both fantastic companies to work for, which really have it together for working remotely.</div><div><br /></div><div>I am still surprised that only a handful of companies regularly allow remote work. I do not miss the stuffy non window opening offices and the long daily commute, which sometimes means riding a motorcycle through hail! (I do not suggest this for anyone)</div><div><br /></div><div>Of course, I am still maintainer for QtSensors, QtSystemInfo for the Qt Project, and Sensor Framework for Mer, and always dreaming up new ways to use sensors. Still keeping tabs on QtNetwork bearer classes.</div></div><div><br /></div><div>Although I had to send back the Canonical devices, I still have Ubuntu on my Nexus 4. I still have my Jolla phones and tablet.</div><div><br /></div><div>That said, I still have this blog here, and besides spending my time looking for a new programming gig, I am (always) preparing to release a new album. <a href="http://llornkcor.com/">http://llornkcor.com</a></div><div>and always willing to work with anyone needing music/audio/soundtrack work.</div><div><br /></div></div>deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-33634847512311891752016-12-09T13:19:00.001+10:002016-12-09T13:20:09.767+10:00sensorfw & Qt is not just UI framework! or Without sensors, there's no IoTLike it says on the <a href="https://software.intel.com/en-us/iot/hardware/sensors" target="_blank">Intel IoT developer site</a>, "Without sensors, there's no IoT"<span style="color: #212121;"><span style="font-family: &quot;roboto&quot; , &quot;robotodraft&quot; , &quot;helvetica&quot; , &quot;arial&quot; , sans-serif;">.</span></span><br /><br />Because I am the maintainer of QtSensors, I like to inquire about&nbsp; people's use of sensors and if they use QtSensors. Over the years, I have heard quite often something like, 'Qt is thought of as a UI framework'. *sigh*<br /><span style="background-color: #fefefe; color: #212121; display: inline; float: none; font-family: &quot;roboto&quot; , &quot;robotodraft&quot; , &quot;helvetica&quot; , &quot;arial&quot; , sans-serif; font-size: 14px; font-style: normal; font-weight: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: pre-wrap; word-spacing: 0px;">&nbsp;</span> <br />But Qt is more than just a UI framework and it's use is not dependent on widgets or declarative wizardry. It is used in quite a few middleware components without UI elements. One of those middleware frameworks is <a href="https://git.merproject.org/mer-core/sensorfw" target="_blank">Sensor Framework</a>.<br /><br />Sensor framework is a daemon that uses a plugin system written using Qt for reading various sensors such as accelerometer or light sensors. It was originally developed by Nokia for Harmattan and ran on the <a href="https://en.wikipedia.org/wiki/Nokia_N9" target="_blank">N9</a>. It was also used in MeeGo and later included in the <a href="http://www.merproject.org/" target="_blank">Mer Project</a> and on Jolla phones and the ill fated tablet. So it has been released onto a few commercial products.<br /><br />We looked at it when I was working at Nokia on the project that I still cannot name, but we had decided we would come up with our own solution. Looking back, this was the wrong decision, we should have taken the already proven sensor framework and ran with that. Why? Because it existed and works.<br /><br />I started maintaining it when I was a privateer (contractor) developer for Jolla. No one else had touched it for some time so I grabbed the few not yet merged bug fixes and added support for <a href="https://en.wikipedia.org/wiki/Hybris_(software)" target="_blank">libhybris</a>/android libhardware adaptors. <br /><br />Sensor Framework has support for multiple clients with down sampling for different data rates. It uses dbus for control lines (to start and stop, etc) but sends data through a socket. It also has a working backend in QtSensors.<br /><br />I noticed that Ubuntu's Unity does nothing to respond when I put this into "tablet mode". I have to manually open the virtual keyboard among other things.<br /><br />So I thought I could use sensorfw on my Dell 2 in 1. It's one of those converged laptop/tablet devices. It has a few sensors - accelerometer, gyroscope, magnetometer, and lid sensors. One problem... sensorfw does not support lid sensors, or a few other sensors that are around today in IoT (which I will add a bit later). Lid "sensor" might be a bit of a misnomer, as they could be switches but I'd like to think it is more like a hal effect sensor that uses magnets. In any case there are event nodes to use.<br /><br />First one I chose is to add the lid sensor - to detect when this machine is put into tablet mode, so the UI can better deal with it.<br /><br />I also noticed that this kernel has support for <a href="https://wiki.analog.com/software/linux/docs/iio/iio" target="_blank">iio sensor interface</a> for the accel and gyro. Sensorfw only supports sysfs, evdev and hybris interfaces, so I also wanted to add support for that.<br /><br />I worked on adding iio support first. Well... really just wrote a sensor adaptor plugin. My plugin supports accelerometer, gyroscope and magnetometer, which this device seems to have. I will expand this to support other sensors later, as well as clean it up a bit.<br /><br />Thanks to QtSensors sensor framework backend, I can make a UI app change with the orientation and lid changes. Better yet, I can create a game that uses accelerometer data like a marble maze game. Or I can upload the data to one of those Node.js data visualization web apps.<br /><br />And since sensor framework is opensource, others can as well.<br /><br /><br />deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-51375768384810463002016-08-03T15:38:00.000+10:002016-08-03T15:38:59.075+10:00snappy sensorsSensors are an important part of IoT. Phones, robots and drones all have a slurry of sensors. Sensor chips are everywhere, doing all kinds of jobs to help and entertain us. Modern games and game consoles can thank sensors for some wonderfully active games.<br /><br />Since I became involved with sensors and wrote <a data-mce-href="http://doc.qt.io/qt-5/sensorgesture-plugins-topics.html" href="http://doc.qt.io/qt-5/sensorgesture-plugins-topics.html">QtSensorGestures</a> as part of the QtSensors team at Nokia, sensors have only gotten cheaper and more prolific.<br /><br />I used <a href="https://ubuntu-pi-flavour-maker.org/download/" target="_blank">Ubuntu Server</a>, <a href="http://snapcraft.io/" target="_blank">snappy</a>, a raspberry pi 3, and the <a data-mce-href="https://www.raspberrypi.org/products/sense-hat/" href="https://www.raspberrypi.org/products/sense-hat/">senseHAT</a> sensor board&nbsp;to create a senseHAT sensors snap. Of course, this currently only runs in devmode on raspberry pi3 (and pi2 as well)&nbsp;.<br /><br />To future proof this, I wanted to get sensor data all the way up to QtSensors, for future QML access.<br /><br />I now work at Canonical. Snappy is new and still in heavy development so I did run into a few issues. First up was QFactoryLoader which finds and loads plugins, was not looking in the correct spot. For some reason, it uses&nbsp;$SNAP/usr/bin as it's QT_PLUGIN_PATH. I got around this for now by using a wrapper script and setting QT_PLUGIN_PATH to&nbsp;$SNAP/usr/lib/arm-linux-gnueabihf/qt5/plugins<br /><br />Second issue was that QSensorManager could not see&nbsp;it's configuration file in /etc/xdg/QtProject which is not accessible to a&nbsp;snap.&nbsp;So I used the wrapper script to set up &nbsp;XDG_CONFIG_DIRS as $SNAP/etc/xdg<br /><br /><b>[NOTE]</b>&nbsp;I just discovered there is a part named <a data-mce-href="https://wiki.ubuntu.com/snapcraft/parts" href="https://wiki.ubuntu.com/snapcraft/parts">"qt5conf"</a>&nbsp;that can be used to setup Qt's env vars by using&nbsp;the included command qt5-launch &nbsp;to run your snap's commands.<br /><br />Since there is no libhybris in Ubuntu Core, I had to decide what QtSensor backend to use. I could have used <a data-mce-href="https://github.com/mer-packages/sensorfw" href="https://github.com/mer-packages/sensorfw">sensorfw</a>, or maybe <a href="https://github.com/hadess/iio-sensor-proxy" target="_blank">iio-sensor-proxy</a> but&nbsp;<a data-mce-href="https://github.com/RPi-Distro/RTIMULib" href="https://github.com/RPi-Distro/RTIMULib">RTIMULib</a> already worked for senseHAT. It was easier to write a QtSensors plugin that used RTIMULib, as opposed to adding it&nbsp;into sensorfw. iio-sensor-proxy is more for laptop like machines and lacks many sensors.<br />RTIMULib uses a configuration file that needs to be in a writable area, to hold additional device specific calibration data. Luckily, one of it's functions takes a directory path to look in. Since I was creating&nbsp;the plugin, I made it use a new variable SENSEHAT_CONFIG_DIR so I could then set that up in the wrapper script.<br /><br />This also runs in confinement without devmode, but involves a simple sensors snapd interface.<br />One of the issues I can already see with this is that there are a myriad ways of accessing the sensors. Different kernel interfaces - iio, &nbsp;sysfs, evdev, different middleware - android SensorManager/hybris, libhardware/hybris, sensorfw and others either I cannot speak of or do not know about.<br /><br />Once the snap goes through a review, it will live here <a data-mce-href="https://code.launchpad.net/~snappy-hwe-team/snappy-hwe-snaps/+git/sensehat" href="https://code.launchpad.net/%7Esnappy-hwe-team/snappy-hwe-snaps/+git/sensehat">https://code.launchpad.net/~snappy-hwe-team/snappy-hwe-snaps/+git/sensehat</a>, but for now, there is working code is at my <a data-mce-href="https://code.launchpad.net/~lorn-potter/+git/sensehat" href="https://code.launchpad.net/%7Elorn-potter/+git/sensehat">sensehat repo</a>.<br /><br />Next up to snapify, the<a data-mce-href="https://creator.matrix.one/#/index" href="https://creator.matrix.one/#/index"> Matrix Creator</a> sensor array! Perhaps I can use my <a data-mce-href="https://code.launchpad.net/~lorn-potter/+git/sensorfw-snap" href="https://code.launchpad.net/%7Elorn-potter/+git/sensorfw-snap">sensorfw snap</a>&nbsp;or <a data-mce-href="https://code.launchpad.net/~lorn-potter/+git/iiosensors-snap" href="https://code.launchpad.net/%7Elorn-potter/+git/iiosensors-snap">iio-sensor-proxy snap</a> for that.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-20637839261978379662014-02-02T07:49:00.000+10:002014-02-02T07:49:23.687+10:00The other half of the Jolla storyThey say there are two sides to every coin, and that holds true for the story of the history leading up to Jolla and it's Sailfish OS. The Jolla story usually starts out with Nokia, but it's really a convergence with Nokia as the center point.<br /><br />This side of the story starts in Norway, not Finland. Oslo, in fact. Not with Nokia, but with a small company named Trolltech.<br /><br />I won't start at the very beginning but skip to the part where I join in and include a bit about myself. It was 2001, I was writing a Qt based app called Gutenbrowser. I got an email from A. Kozak at Trolltech, makers of Qt. Saying that Sharp was planning to release a new PDA based on Qt, and wouldn't it be cool if Gutenbrowser would be ported to it? I replied, yes, but as I have no device it might be difficult. He replied back with a name/email of a guy that might be able to help. Sharp was putting on a Developer Symposium where they were going to announce the Zaurus and hand out devices to developers. I jumped at the chance.<br /><br />It was in California. At that time I was in Colorado. Jason Perlow was working for Sharp at that time, and said he had an extra invite to the Developer symposium. WooHoo! The Zaurus was going to run a Qt based interface originally named QPE, later named Qtopia (and even later renamed Qt Extended). The sdk was released, so I downloaded it and started porting even before I had a device to test it on.<br /><br />Qtopia was open source, and it was available for developers to tinker with, and put on other devices. There was a community project based on the open source Qtopia called Opie that I became involved with. That turned into me getting a job with Trolltech in Australia, where Qtopia was being developed, as the Qtopia Community Liaison, which luckily later somehow turned into a developer job.<br /><br />Around the time that Nokia came out with the Maemo tablets, I was putting Qtopia on them. N770, N800, N810, and N900 all got the Qt/Qtopia treatment. (Not to mention the OpenMoko phones I did as well).<br /><br />Then I was told to flash a Qtopia on an N810 because some Trolls were meeting with Nokia. That became two or three images I had to flash over the coarse of a few weeks. I knew something was up.<br /><br />Around this time, one of the Brisbane developers (A. Kennedy, I'm looking at you!) had a Creative Friday project to make a dynamic user interface framework using xml. (Creative Friday was something Trolltech did that allowed developers to spend every Friday (unless impending doom of bug fixes/release) of their time on research projects) It was really quite fluid and there was a "prototype" interface running on that N810 as well. It only took a few lines of non c++ code to get dynamic UI's. This would have turned into what the next generation of Qtopia's interface would be made with. It was (and still is) quite amazing.<br /><br />Then came the news that Nokia was buying Trolltech! Holy cow! A HUGE company that makes zillions of phones wanted to buy little ol' Trolltech. But they already had a Linux based interface - Maemo that was based on Gtk toolkit, and not Qt. WTH!?<br /><br />Everyone speculated they wanted Trolltech for Qtopia. Wrong. Nokia wanted Qt, and decided to ditch Qtopia. We had a wake for the Qtopia event loop to say our good riddance. All of us in Brissie worried about our jobs.<br /><br />So our little Trolltech got assimilated into this huge behemoth phone company from Finland. Or was it that Trolltech took over Nokia...? Nokia had plans for Qt that would provide a common toolkit for their massively popular Symbian and new Linux based phones.<br /><div><br /></div>The Brisbane office started working on creating the QtMobility API's. Yes, there are parts of Qtopia in QtMobility.<br /><br />Meanwhile, that creative friday xml interface was still being worked on. It got canceled a few times and also revived a few. That eventually evolved into QML, and QtQuick.<br />Then came N9 and MeeGo, which was going to use this new fangled dynamic UI. MeeGo was also open source, and it's community version was called Mer and Nemo. Yes, there are parts of Qtopia in MeeGo.<br /><br />The rest of the story is famous, or rather, infamous now. Nokia made redundant the people working on MeeGo. Later on, all of us Brisbane developers, QA and others were also made redundant. The rest of what I call the Trolltech entity got sold to Digia. The QA server room was packed up and shipped to Digia, who is doing a fantastic job of getting Qt Everywhere!<br /><br />A few of those guys that were working on MeeGo got together and created a company called Jolla, and created a Linux based mobile OS based on Mer named Sailfish. Yes, there are a few Trolltech Trolls working for Jolla. and yes, there are parts of Qtopia in Sailfish.<br /><br /><br />deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-19569304364679335312012-11-25T07:53:00.001+10:002012-11-25T07:53:53.657+10:00state of QSensor and Qt's sensor gesturesI wanted my next post to include some videos demonstrating QSensors and QSensorGestures. I got sidelined by learning BlackBerry Cascades development.<br /><br /><br />I am happy to report that Qt5's QSensor and QSensorGestures work very well on BB10.<br /><div><br /></div><div><br /></div><br />The qt-project, in cooperation with Qt copyright holders Digia, have recently opened up Qt Mobility project and included that code in the Open Governance model that Qt is currently developed under.<br /><br />This means that I can contribute to qt-mobility again since Nokia closed the Brisbane office.<br /><br />There are a number of high profile projects that use Qt 4 and Qt Mobility, namely <a href="http://jolla.com/" target="_blank">Jolla Mobile</a> and <a href="http://us.blackberry.com/campaigns/blackberry-10.html" target="_blank">BlackBerry 10</a>.<br /><br />One of the first community committed patches was me backporting QSensorGesture to Qt Mobility.<br />You can get the code here:<br /><a href="http://qt.gitorious.org/qt-mobility">http://qt.gitorious.org/qt-mobility</a><br /><br /><br />There is one change in the signals being generated. I decided to remove the runtime generated signals such as 'shake()' and 'whip()' that use QMetaObjectBuilder. So now there is only 'detected(QString)' signal. The QML API remains the same, with an additional 1.3 version.<br /><br />On top of that, I added a freefall gesture, as well as moving the irProximity sensor to it's proper place with all the other QSensors.<br /><br />As for Qt 5...<br /><br />QSensors unfortunately will not be part of the Qt 5 release package. On top of that, you wont be able to currently find the documentation at qt-project.org nor build QSensors using the normal 'make module-qtsensors'. So, it's a bit like it fell off the face of the Earth.<br /><br />But fear not, it's still there in git. Still being worked on and improved.<br /><br /><br />deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-74169011150732086902012-10-27T12:16:00.001+10:002012-10-27T12:16:35.939+10:00motion sensor gesturesIt's been quite a bit of time since I blogged about anything. No longer able to post to the official Qt Labs blog, so I will post here, and maybe it will get picked up to a wider audience.<br /><br />It's been about 60 days since my last day at the Nokia office In Brisbane, Australia. My days are now full of house duties, kids, recording music, and looking for appropriate workage.<br /><br /><a href="http://www.linkedin.com/profile/view?id=14389164" target="_blank">Blatant self promotion</a><br /><br />I have been trying to keep my chops up, taking a short contract doing some desktopy work with Qt. But also keeping up with the Mer and Nemo projects.<br /><br />We have been working on refactoring the Qt 5 QSensor qml API, removing the old qt-mobility stuff and merging the two imports.<br /><br />As well, I will, in the near future be adding a QFreeFall sensor that detects when a device is freefalling, and a Wii controller sensor plugin to drive the normal motion QSensors and well as some of the QSensorGestures.<br /><br />I have done the easily possible, and back ported QSensorGesture and friends to Qt 4, so projects such as Mer/Nemo/Jolla, as well as the Blackberry 10 projects could use some cool sensor gestures API.<br /><br />When most people think of gesture recognition, they think of the touch sensor. Within Qt, this would be the QGesture classes. They also think about using the image sensor to decipher gestures through a computer vision API such as openCV.<br />and although I would like to extend QSensorGesture to include the openCV and touch sensors techniques, this is really about existing device motion gestures.<br /><br />Things such as the obvious gesture of 'shake' - when you shake your phone/tablet, your audio playlist gets randomized. But it can be extended to other gestures as well.<br /><br />QSensors include the qtsensors gesture recognition plugin, that includes such gestures as whip, shake, pickup, twist, cover, hover, turnover and slam.<br /><br /><a href="http://doc-snapshot.qt-project.org/5.0/sensorgesture-plugins-topics.html#recognizer-plugins">http://doc-snapshot.qt-project.org/5.0/sensorgesture-plugins-topics.html#recognizer-plugins</a><br /><br />The above url shows about how to perform these gestures.<br /><br />These are simple ad-hock gesture recognizers, and do not verge into the more robust and technically challenging HMM realm of recognizers.<br /><br /><br />Nor is it currently possible for a user to create their own gestures and use them. I'd planned on doing this at my day job, but someone thought it better I needed to take my own time doing them. These are still on my todo list.<br /><br />Of course, the backport isn't in the official Qt Mobility repo until becomes a part of the qt-project, but I believe that is only a matter of time and resources.<br /><br />In my next blog, I will demonstrate the use of motion sensor gestures and the advantages that they might bring to a mobile UX.<br /><br /><br /><br /><br />deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-56477429465466127802011-05-11T05:03:00.001+10:002011-05-11T05:05:12.189+10:00hello world mk IIbeen a long time.. where ya been?<br /><br />sensors now.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-43265109062877655822010-06-09T04:35:00.002+10:002010-06-09T04:40:25.360+10:00hey apple!N900 has video calling, right now. Nokia phones have had video calling for yonks. FaceTime is not the first.<br />There, I said. I feel better.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-28330151148938350572009-08-30T04:54:00.002+10:002009-08-30T04:57:41.478+10:00pythonok, I'm a c++ Qt kinda guy. I have developed using perl, php, and a touch of python.<br /><br />What I don't understand, is the current fascination for python. <br /><br /><br />Please, someone try and enlighten me.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-53291385432416494242009-03-27T19:42:00.002+10:002009-03-27T19:52:18.505+10:00GutenbrowserIt has been 7 years since I started the Gutenbrowser project on Sourceforge. I had developed it for at least a year or so before that.<br />I have started hacking on it again, to fix a few things up. It is still far from what I entirely imagine when I think about what it should be.<br /><br />In 7 years, the Project Gutenberg when from a few hundred books, maybe even a few thousand, to 10's of thousands. All free. <br />Now there are devices like the Kindle where you can buy ebooks and read them.<br />You don't have to buy any books from Gutenberg project. That are all free. Everyone of them.<br /><br />I will create a new release in the coming weeks, with Linux, Windows and Mac OS X binaries.<br />You can always get Gutenbrowser in Debian. I am not entirely sure which version it is, but they usually keep it up to date, and occasionally pester me for updates or bug fixes.<br /><br />I am pretty sure I started working on gutenbrowser 9 years ago. My how things have changed in the last 9 years... blah blah blah....deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-37308006832556917542008-08-14T06:58:00.002+10:002008-08-14T07:08:01.708+10:00long time now...Haven't written anything for a time now, so maybe I should.<br /><br />It's been a cold winter this year. Lot of days that are below 20 and nights getting down to below 10.<br /><br />I have become a cold weather ninny.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-82134291799901621932008-06-25T05:33:00.002+10:002008-06-25T06:15:07.357+10:00Nokia and open source<p>Nokia makes some <a href="http://www.nokia.com/A4136001?newsid=1230416">big news announcement</a></p><p>Ok, so they made an announcement they are buying a controlling percent of Symbian, and will be putting it under an open source license. Specifically the <a href="http://www.eclipse.org/legal/epl-v10.html">Eclipse Public License (EPL)</a>.</p><p>What remains to be seen is just how much source will be released as open. The EPL is very <a href="http://en.wikipedia.org/wiki/Eclipse_Public_License">generous to proprietary interests</a>. Allowing contributors to relicense their derived works. Which means, "it" won't stay open source. If it is anything like their Maemo offering, it won't be much. Just enough that PR can call it open source. <p>Unfortunely, the EPL is not compatible with all the GPL and LGPL works out there, so not very many of the thousands of really great applications for Linux will be available for this. Unless, of course, an application can be relicensed and uses Qt, which will surely be licensed to allow development on this new EPL Symbian.</p><p>As with Nokia news lately, I feel it is generally good and it is great to see such a huge company try and be a better 'citizen'.</p><p></p>deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-73106421220586136762008-06-12T05:01:00.005+10:002008-06-12T05:36:00.518+10:00Big business needs to learn open source<div>There are certain open source rules businesses need to obey. </div><div><br /></div><div>Most of them I learned in kindergarden, "Share everything. Play fair. Don't hit people. Put things back where you found them. Clean up your own mess. Don't take things that aren't yours. Say you are sorry when you hurt somebody."</div><br /><div>Open Source and the GPL put power and more rights into the hands of users than proprietary software. Such things as DRM, and IPR take rights away from the people, the users. Richard Stallman sought to empower users and take power back from the establishment that so often abuses it's power and doesn't play fair like a good citizen. This is what open source is about.<div><br /></div><div>To Big Businesses that use open source, you cannot be part of the solution, if you are part of the problem. You cannot move beyond old business models if you are standing still. </div><div><br /></div><div>I dare you to take not small steps, but giant leaps forward to bring back power to the users of your software, hardware and services. <br /><div><br /></div><div><br /></div></div></div>deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-19918948933281375232008-04-05T19:12:00.003+10:002008-04-05T19:16:47.487+10:00moving dayWell, today was the first day of moving to the new house. Made two runs and doesn't look like we even made a dent in anything. My new truck needs a new stereo, as the commute to work is longer.<br /><div>Can not wait to get the swim pool cleaned up and take a dip. and I have a larger area for all my computers. Even have room to break out music stuff! Now if I could just find the time to do things...</div><div><br /></div><div><br /></div><div><br /></div>deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-57947187959400422272008-03-24T13:57:00.002+10:002008-03-24T14:01:14.131+10:00long weekendsLong weekends aren't what they used to be. Since having two small kids, I no longer have any real time to sit down and concentrate and really get into hacking on stuff. I have to do that at work. <br /><br />At any rate. I do find some time in the mornings to do this kind of thing.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-63374824502517696352007-12-20T14:14:00.000+10:002007-12-23T18:25:31.687+10:00n810just opened the nokia n810. These are my first impressions.<br /><br />I have used quite a few different handheld devices. The keyboard is not as tactile and easy to type with as the zaurus keyboards. But hopefully it is just a matter of getting use to.<br /><br />All I wanted to do is test the gps. I eagerly opened the box and started the process of getting a gps fix. It took quite sometime to fix 3 satellites. Longer than half an hour! Maybe it is just the satellites here in the southern hemisphere and Australia. Could have been the mall and the car as well.<br /><br />--------<br />a few days with this now. Battery life is good. The keyboard sucks, and I keep making spelling errors because the keys are too close tgogether and fedel tghe samed.<br /><br />I like tghe zaurfus keyb oard better.<br /><br />GPS is gbood if you go somewhere tghat you dont know. otghedfrwise itgs just looking at big brother wathinbg where you go.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-27735038272629080852007-08-12T19:18:00.000+10:002007-08-12T19:20:23.394+10:00new qtopia imagesI have some cool new photos of qtopia 4.3<br /><br />http://llornkcor.com/album/software/neo-qtopia2.jpg<br /><br />http://llornkcor.com/album/software/p1010302_sm.jpg<br /><br />http://llornkcor.com/album/software/p1010303.jpg<br /><br />http://llornkcor.com/album/software/%20p1010299_sm.jpgdeviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-26159853501180395552007-08-04T04:36:00.001+10:002007-08-04T04:36:34.125+10:00oh ya!Andrew Morton (kernel hacker) during his keynote address at linux.conf.au 2005 said when asked what desktop he uses, "I won't use a desktop that developers are so stupid that they try to write gui code in C"deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-11262536089080316112007-07-15T17:49:00.000+10:002007-07-15T18:01:36.354+10:00qtopia and openmokoI finally got openmoko built on my work machine. Using Suse 10.2 and getting it building was a bit 'not just working'. Suse 10.2 not have a gcc3 compat, so I had to use one from Fedora 6. Plus, I had to patch usbdevice_fs.h so it would compile.<br /><br />I also got Qtopia building in openembedded. Not only that, it gets installed! woot!<br /><br />So, now I just have to add Qtopia to the openmoko build, which will be a piece of cake.<br /><br />Then, the real fun stuff begins and what's left is to create an fic-gta device configration.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-66949171194991851802007-07-13T19:21:00.000+10:002007-07-13T19:25:56.911+10:00so tiredup most the night with a sick 2 year old. tired. thank goodness for caffeine.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-41238896046124059412007-07-11T04:58:00.000+10:002007-07-11T05:13:19.382+10:00responding via blog!wooT gotta love blog conversations!<br /><br /><A href="http://zecke.blogspot.com/2007/07/lovely-respond-to-lorn-potter-of.html">A lovely respond to Lorn Potter of Trolltech</a><br /><br />I just love that people hold Trolltech to some higher threshold. For some, nothing that TT can do is ever good enough, or that Trolltech has a special, evil GPL, which isn't truly open source somehow, since TT doesn't have public source development repositories.<br /><br />TT releases Greenphone with some close source and closed kernel drivers and gets backlashed, the Neo is released with closed kernel drivers, and a license that allows closed source and is touted as the first open source linux phone.<br /><br />umm excuse me! LGPL is not about free and open source software! hello! "Dont lend your hand to raise no flag atop no ship of fools."<br /><br />One of the differences is that Trolltech is not a hardware company, FIC is. TT contracted the hardware from a vendor and what you see is what Trolltech was given. Neo was designed by FIC.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-15861772640864050482007-07-09T06:29:00.000+10:002007-07-09T06:39:24.382+10:00LGPL and the Neo 1973The Neo 1973 phone that runs <a href="//openmoko.org">Openmoko</a> is being touted as the first open source phone, and that they are dedicated to open source...<br /><br />For one, Trolltech's <a href="http://trolltech.com/products/qtopia/greenphone/index">Greenphone</a> was the first open source phone. Granted, the kernel is less then completely open, as is the phone libraries, but Qtopia is as open source as any.<br /><br />For two.. if they are so dedicated to open source, why choose a gui library that is LGPL'd? Even RMS says do not use LGPL!<br /><A href="http://www.fsf.org/licensing/licenses/why-not-lgpl.html">Why you shouldn't use the Lessor GPL for your libraries</a><br /><br />As you all know, the LGPL is not about open source, its about letting commercial business keep proprietary code while still using open source. i.e. not give back to the community.. i.e. rip you off.<br /><br />OpenMoko: if you are so dedicated to open source and keeping it that way, why choose GTK? Qt and Qtopia would be a much better option, and Qtopia is mature and stable phone interface, and it is GPL. All you would have had to do, is write phone libraries, instead of everything.<br /><br />But, by looking at you choice for gui toolkits, you like doing things the hard way.deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0tag:blogger.com,1999:blog-2997739907109253354.post-9613358828635823142007-07-08T17:51:00.000+10:002007-07-08T17:52:25.601+10:00first post!OK, I had to do it....deviceguyhttp://www.blogger.com/profile/08211459741197454860noreply@blogger.com0