Mardy (Entratas super imaginario)http://mardy.it/ia/categories/imaginario.atom2024-02-02T20:11:07ZAlberto MardeganNikolaImaginario 0.10http://mardy.it/ia/blog/2020/11/imaginario-010.html2020-11-12T19:12:36+03:002020-11-12T19:12:36+03:00Alberto Mardegan<p>Today I released <a href="http://imaginario.mardy.it/news/imaginario-010-is-out/">Imaginario
0.10</a>. No bigger
changes there, but two important bugfixes.</p><p>Today I released <a href="http://imaginario.mardy.it/news/imaginario-010-is-out/">Imaginario
0.10</a>. No bigger
changes there, but two important bugfixes.</p>Need a fast way to tag faces in many images? Try Imaginario!http://mardy.it/ia/blog/2020/03/need-a-fast-way-to-tag-faces-in-many-images-try-imaginario.html2020-03-09T10:13:13+03:002020-03-09T10:13:13+03:00Alberto Mardegan<p>Today I've released Imaginario 0.9. The big feature coming with this new
release is a face tagging flow which I believe will be the fastest and simplest
you've ever used, despite it being all manual. I even sat down and spent some
quality time with Blender to prepare a video to show it off:</p>
<p></p><center>
<iframe width="560" height="315" src="https://www.youtube.com/embed/kfEuEPaOYUY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p></p></center>
<p>While some people might actually think that I spent more time for making the
video than for implementing the face tagging feature itself, this couldn't be
farther from the truth: the face tagging branch has been being worked on for at
least three months (of course, that's my spare time — so it's actually less
than one hour per day) and consisted of more than 40 commits (after squashing
all the fixups), whereas for the video I spent no more than a couple of hours.</p>
<p>I would appreciate if the curious could go and <a href="http://imaginario.mardy.it/releases.html">try it
out</a>, and let me know about any
issues you should find: there are built packages for Linux (AppImage), macOS
and Windows. I do also have an <a href="https://launchpad.net/~mardy/+archive/ubuntu/imaginario">Ubuntu
PPA</a> where nightly
images are built, but I'm not sure if I can recommend that one, since I've not
been using it myself and have no idea whether those packages actually even
start. But you are welcome to try :-)</p>
<p>Your feedback will help me do better, so please don't be shy!</p><p>Today I've released Imaginario 0.9. The big feature coming with this new
release is a face tagging flow which I believe will be the fastest and simplest
you've ever used, despite it being all manual. I even sat down and spent some
quality time with Blender to prepare a video to show it off:</p>
<p></p><center>
<iframe width="560" height="315" src="https://www.youtube.com/embed/kfEuEPaOYUY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p></p></center>
<p>While some people might actually think that I spent more time for making the
video than for implementing the face tagging feature itself, this couldn't be
farther from the truth: the face tagging branch has been being worked on for at
least three months (of course, that's my spare time — so it's actually less
than one hour per day) and consisted of more than 40 commits (after squashing
all the fixups), whereas for the video I spent no more than a couple of hours.</p>
<p>I would appreciate if the curious could go and <a href="http://imaginario.mardy.it/releases.html">try it
out</a>, and let me know about any
issues you should find: there are built packages for Linux (AppImage), macOS
and Windows. I do also have an <a href="https://launchpad.net/~mardy/+archive/ubuntu/imaginario">Ubuntu
PPA</a> where nightly
images are built, but I'm not sure if I can recommend that one, since I've not
been using it myself and have no idea whether those packages actually even
start. But you are welcome to try :-)</p>
<p>Your feedback will help me do better, so please don't be shy!</p>Imaginario coming to Windows and MacOShttp://mardy.it/ia/blog/2019/02/imaginario-coming-to-windows-and-macos.html2019-02-08T20:07:10+03:002019-02-08T20:07:10+03:00Alberto Mardegan<p>Good news for the intrepid photographers!
<a href="http://imaginario.mardy.it">Imaginario</a> is now available for Windows and MacOS
— in addition to Linux, of course. Don't believe me? Here's a couple of
screenshots, then:</p>
<p></p><center>
<figure>
<a href="http://mardy.it/archivos/imagines/imaginario-on-windows.png"><img src="http://mardy.it/archivos/imagines/imaginario-on-windows.png" width="80%"></a>
<figcaption>Imaginario on Windows</figcaption>
</figure>
<p></p></center>
<p>(click on the image to enlarge it)</p>
<p></p><center>
<figure>
<a href="http://mardy.it/archivos/imagines/imaginario-on-macos.png"><img src="http://mardy.it/archivos/imagines/imaginario-on-macos.png" width="80%"></a>
<figcaption>Imaginario on MacOS</figcaption>
</figure>
<p></p></center>
<p>Of course, this does not mean that I'm inviting everyone to start using it:
Imaginario is still alpha quality. While it shouldn't just randomly delete your
photos, there are many rough edges here and there, so use it with extreme
caution.</p>
<p>Still, I'll appreciate if someone having access to these capitalistic operating
systems could give a quick try to Imaginario (you can download it from
<a href="http://imaginario.mardy.it/releases.html">here</a>) and let me know if it starts
at all. In case you wish to further explore it, you'll unavodably stumble upon
a lot of bugs; you can also <a href="https://gitlab.com/mardy/imaginario/issues">let me know about
them</a>.</p><p>Good news for the intrepid photographers!
<a href="http://imaginario.mardy.it">Imaginario</a> is now available for Windows and MacOS
— in addition to Linux, of course. Don't believe me? Here's a couple of
screenshots, then:</p>
<p></p><center>
<figure>
<a href="http://mardy.it/archivos/imagines/imaginario-on-windows.png"><img src="http://mardy.it/archivos/imagines/imaginario-on-windows.png" width="80%"></a>
<figcaption>Imaginario on Windows</figcaption>
</figure>
<p></p></center>
<p>(click on the image to enlarge it)</p>
<p></p><center>
<figure>
<a href="http://mardy.it/archivos/imagines/imaginario-on-macos.png"><img src="http://mardy.it/archivos/imagines/imaginario-on-macos.png" width="80%"></a>
<figcaption>Imaginario on MacOS</figcaption>
</figure>
<p></p></center>
<p>Of course, this does not mean that I'm inviting everyone to start using it:
Imaginario is still alpha quality. While it shouldn't just randomly delete your
photos, there are many rough edges here and there, so use it with extreme
caution.</p>
<p>Still, I'll appreciate if someone having access to these capitalistic operating
systems could give a quick try to Imaginario (you can download it from
<a href="http://imaginario.mardy.it/releases.html">here</a>) and let me know if it starts
at all. In case you wish to further explore it, you'll unavodably stumble upon
a lot of bugs; you can also <a href="https://gitlab.com/mardy/imaginario/issues">let me know about
them</a>.</p>Choosing a static site generatorhttp://mardy.it/ia/blog/2019/01/choosing-static-site-generator.html2019-01-20T14:44:00+03:002019-01-20T14:44:00+03:00Alberto Mardegan<p>In the last few days I've been writing a simple <a href="http://imaginario.mardy.it">website for Imaginario</a>. I'm a terrible site designer, and I can't really say that I enjoy writing websites, but it's something that from time to time people might need to do. While the <a href="http://phototeleport.com">PhotoTeleport website</a> is built with <a href="https://jekyllrb.com/">Jekyll</a>, this time I decided to try some other static site generator, in order to figure out if Jekyll is indeed the best for me, or if there are better alternatives for my (rather basic) needs.</p>
<p>I set out trying a couple of Python-based generators, <a href="https://blog.getpelican.com/">Pelican</a> and <a href="https://getnikola.com/">Nikola</a>. Here is a brief review of them (and of Jekyll), in case it helps someone else make their own choice.</p>
<h3>Jekyll</h3>
<p>I've been using it since several months for the PhotoTeleport website, which features a news section and a handful of static pages. It does the job very well and I haven't any major complaint. It's very popular and there are plenty of plugins to customize its behaviour or add new functionality. The documentation is sufficient for a basic usage of the site, and information on how to solve more specific issues can easily be found in the internet.</p>
<p>My only issue is that it's not totally intuitive to use, and in order to customize the interactions for your own needs you need to write your own scripts — at least, I didn't find a ready solution to create a new post, or deploy the generated content into my site.</p>
<h3>Pelican</h3>
<p>My first impression with Pelican has been extremely positive: it's very easy to setup and start a blog. It's also quite popular, even though not as much as Jekyll, and there are may themes for it. By looking at the themes, though, I quickly realized that Pelican is meant to be used for blogs, and not for simple static sites. I'm almost sure that there must be a way to use it to create a static site, maybe with some tweaking, but I couldn't find information about this in its documentation. A quick search in the internet didn't help either, so I gave up and moved to the next one.</p>
<p>If I had to write a blog I'd certainly consider it, though.</p>
<h3>Nikola</h3>
<p>Nikola is definitely less popular than Jekyll or Pelican, at least if we trust the number of stars and forks in GitHub, but it's still a popular and maintained project, with many plugins. Like Jekyll, it can handle both blogs and sites, or a combination of the two. It's well documented, the people in the <a href="https://groups.google.com/forum/#!forum/nikola-discuss">forum</a> are helpful, and its command line interface is simpler and more intuitive than Jekyll's. Also, the live preview functionality seems to be more advanced than Jekyll's, in that the browser is told to automatically reload the page whenever the site is rebuilt.</p>
<p>You can see my progress with the Imaginario website by inspecting the <a href="https://gitlab.com/mardy/imaginario.mardy.it/commits/master">commits in its repository</a>; you'll see how easy it was to set it up, and hopefully following my steps you'll save some time should you decide to create your own site with Nikola.</p>
<p>Overall, I'd rate Jekyll and Nikola on the same level: Jekyll wins for the wider community and amount of available plugins, while Nikola wins for the better command line interactions, and the fact that it's in Python gives me better confidence should I ever need to modify it deeply (though, admittedly, the latter is just a personal preference — Ruby developers will say the opposite).</p><p>In the last few days I've been writing a simple <a href="http://imaginario.mardy.it">website for Imaginario</a>. I'm a terrible site designer, and I can't really say that I enjoy writing websites, but it's something that from time to time people might need to do. While the <a href="http://phototeleport.com">PhotoTeleport website</a> is built with <a href="https://jekyllrb.com/">Jekyll</a>, this time I decided to try some other static site generator, in order to figure out if Jekyll is indeed the best for me, or if there are better alternatives for my (rather basic) needs.</p>
<p>I set out trying a couple of Python-based generators, <a href="https://blog.getpelican.com/">Pelican</a> and <a href="https://getnikola.com/">Nikola</a>. Here is a brief review of them (and of Jekyll), in case it helps someone else make their own choice.</p>
<h3>Jekyll</h3>
<p>I've been using it since several months for the PhotoTeleport website, which features a news section and a handful of static pages. It does the job very well and I haven't any major complaint. It's very popular and there are plenty of plugins to customize its behaviour or add new functionality. The documentation is sufficient for a basic usage of the site, and information on how to solve more specific issues can easily be found in the internet.</p>
<p>My only issue is that it's not totally intuitive to use, and in order to customize the interactions for your own needs you need to write your own scripts — at least, I didn't find a ready solution to create a new post, or deploy the generated content into my site.</p>
<h3>Pelican</h3>
<p>My first impression with Pelican has been extremely positive: it's very easy to setup and start a blog. It's also quite popular, even though not as much as Jekyll, and there are may themes for it. By looking at the themes, though, I quickly realized that Pelican is meant to be used for blogs, and not for simple static sites. I'm almost sure that there must be a way to use it to create a static site, maybe with some tweaking, but I couldn't find information about this in its documentation. A quick search in the internet didn't help either, so I gave up and moved to the next one.</p>
<p>If I had to write a blog I'd certainly consider it, though.</p>
<h3>Nikola</h3>
<p>Nikola is definitely less popular than Jekyll or Pelican, at least if we trust the number of stars and forks in GitHub, but it's still a popular and maintained project, with many plugins. Like Jekyll, it can handle both blogs and sites, or a combination of the two. It's well documented, the people in the <a href="https://groups.google.com/forum/#!forum/nikola-discuss">forum</a> are helpful, and its command line interface is simpler and more intuitive than Jekyll's. Also, the live preview functionality seems to be more advanced than Jekyll's, in that the browser is told to automatically reload the page whenever the site is rebuilt.</p>
<p>You can see my progress with the Imaginario website by inspecting the <a href="https://gitlab.com/mardy/imaginario.mardy.it/commits/master">commits in its repository</a>; you'll see how easy it was to set it up, and hopefully following my steps you'll save some time should you decide to create your own site with Nikola.</p>
<p>Overall, I'd rate Jekyll and Nikola on the same level: Jekyll wins for the wider community and amount of available plugins, while Nikola wins for the better command line interactions, and the fact that it's in Python gives me better confidence should I ever need to modify it deeply (though, admittedly, the latter is just a personal preference — Ruby developers will say the opposite).</p>First AppImage for Imaginariohttp://mardy.it/ia/blog/2019/01/first-appimage-for-imaginario.html2019-01-13T12:17:00+03:002019-01-13T12:17:00+03:00Alberto Mardegan<p>As a follow-up to my <a href="http://mardy.it/ia/blog/2019/01/2019/01/a-docker-image-for-building-portable-qt.html">previous post</a>, I've finally succeeded in building <a href="http://www.mardy.it/imaginario/">Imaginario</a> as an <a href="https://appimage.org/">AppImage</a> package.</p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://mardy.it/archivos/imagines/blog/714589f7f6808b7b3fb17ed6e7a1d1b0-Screenshot_from_2019-01-13_15-09-05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://mardy.it/archivos/imagines/blog/af818a9eedd00fc37a01ac7e249072ef-Screenshot_from_2019-01-13_15-09-05.png" width="640" height="352" data-original-width="1600" data-original-height="880"></a></div>
<p>I've smoke tested the package in Ubuntu Xenial and Trusty, and while it appears to be working, I'd be happy if someone else could also <a href="https://gitlab.com/mardy/imaginario/-/jobs/145055340/artifacts/raw/appimage/Imaginario_0.6.1.AppImage">download</a> and test it in their machines and let me know how it goes. Just please keep in mind that this a very beta release and, while I'm not aware of any major bugs that could corrupt your photos, I wouldn't recommend you to import your photo archive into it, unless you backup it first.<br>
Also, the application needs quite some more polishing before being ready to be publicly advertised to non developers (I'm also considering finding a new icon for it), so the next step after getting a nicely working AppImage will be cleaning up the user interface and make sure that all the (few) features work as advertised. And making a Windows version. And a MacOS one. Oh, I'd better stop thinking about it, or I'll start crying.</p><p>As a follow-up to my <a href="http://mardy.it/ia/blog/2019/01/2019/01/a-docker-image-for-building-portable-qt.html">previous post</a>, I've finally succeeded in building <a href="http://www.mardy.it/imaginario/">Imaginario</a> as an <a href="https://appimage.org/">AppImage</a> package.</p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://mardy.it/archivos/imagines/blog/714589f7f6808b7b3fb17ed6e7a1d1b0-Screenshot_from_2019-01-13_15-09-05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://mardy.it/archivos/imagines/blog/af818a9eedd00fc37a01ac7e249072ef-Screenshot_from_2019-01-13_15-09-05.png" width="640" height="352" data-original-width="1600" data-original-height="880"></a></div>
<p>I've smoke tested the package in Ubuntu Xenial and Trusty, and while it appears to be working, I'd be happy if someone else could also <a href="https://gitlab.com/mardy/imaginario/-/jobs/145055340/artifacts/raw/appimage/Imaginario_0.6.1.AppImage">download</a> and test it in their machines and let me know how it goes. Just please keep in mind that this a very beta release and, while I'm not aware of any major bugs that could corrupt your photos, I wouldn't recommend you to import your photo archive into it, unless you backup it first.<br>
Also, the application needs quite some more polishing before being ready to be publicly advertised to non developers (I'm also considering finding a new icon for it), so the next step after getting a nicely working AppImage will be cleaning up the user interface and make sure that all the (few) features work as advertised. And making a Windows version. And a MacOS one. Oh, I'd better stop thinking about it, or I'll start crying.</p>A Docker image for building portable Qt applicationshttp://mardy.it/ia/blog/2019/01/a-docker-image-for-building-portable-qt.html2019-01-07T21:07:00+03:002019-01-07T21:07:00+03:00Alberto Mardegan<p>I've uploaded to the <a href="https://hub.docker.com/r/mardy/qt/tags">Docker hub</a> an image that I will be using for building my Qt applications and packaging them into an <a href="https://appimage.org/">AppImage</a> file. To which you might be asking: why bother?</p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://mardy.it/archivos/imagines/blog/0d74e13fd868112c844485e48a2690e1-docker-trusty.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://mardy.it/archivos/imagines/blog/a3e0759786dabcca28f652197a7b7384-docker-trusty.png" width="400" height="262" data-original-width="913" data-original-height="597"></a></div>
<p>The point is that this is a slightly special image: as its Docker tag (<tt>trusty-qt512</tt>) says, this image ships Qt 5.12 on top of Ubuntu Trusty (yes, that's 14.04!). The reason why I'm using such an obsolete distribution is that I'm striving to get my <tt>AppImage</tt> package to be as portable as possible: in fact, my early builds of <a href="https://phototeleport.com">PhotoTeleport</a> were run on a more recent Ubuntu 16.04, but some users complained that they couldn't run it in their own distributions (IIRC, these were Arch Linux and, indeed, Ubuntu 14.04). The problem is that while packages in the <tt>AppImage</tt> format bundle their own dependencies in the package, <a href="https://github.com/AppImage/pkg2appimage/blob/master/excludelist">some libraries</a> are generally excluded, as bundling them can cause a variety of issues. But that means that if you are building your application in a system which ships newer versions of these libraries than those installed in your users' machines, there's a high risk that your application will be using some newer symbols not present in the older versions — and therefore your application won't run in those machines.</p>
<p>To solve this problem, the recommended approach is to build on the oldest system that you wish to support; and given that I'm mostly familiar with Ubuntu, I chose Trusty as my target. Luckily, the Qt binary installer shipped at <a href="https://download.qt.io/archive/qt/5.12/5.12.0/">qt.io</a> also happens to support Trusty, so I'm all settled. Indeed, Trusty does not ship recent versions of the <tt>C++</tt> compiler, but that can be easily solved thanks to <a href="https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test">a wonderful PPA</a> which ships up to <tt>g++-8</tt>.<br>
I've also added the latest version of <tt>cmake</tt>, as it's unlikely that one can live with the very old version that's shipped in Trusty.</p>
<p>The Docker image can be pulled and used in your own machine or set as a baseline in your <tt>.gitlab-ci.yml</tt> recipe, if you happen to use Gitlab and are interested to generate the <tt>AppImage</tt> file from there. That's what I'm trying to do for <a href="http://www.mardy.it/imaginario">another project of mine</a>, and while I'm not there yet, the goal is getting closer and closer. Those interested in seeing exactly what is going into my Docker image can have a look at its <a href="https://github.com/mardy/docker-images/blob/master/trusty-qt512/Dockerfile">Dockerfile</a>. There are <b>a few issues</b> with this approach, though, and I feel that I should highlight them in order not to raise your expectations too much:</p>
<ul>
<li>You must <b>B.Y.O.D.</b> (Bring Your Own Dependencies)! It's likely that at least some of the libraries used by your project won't exist in Trusty, or will be an older version unsuitable for your needs. That means that your <tt>.gitlab-ci.yml</tt> will have to be modified to retrieve a newer version of the library and build it prior to building your application. There are good and bad sides to this: the good one is that this encourages you to use the very latest version of the dependency, which otherwise you might not have used by preferring your distro's version; the bad side is that this is extra work for you (and for the Gitlab CI), and that you risk missing some critical security updates if you don't closely follow the upstream development of your dependencies — something that your distribution's maintainers are likely to do for you. Anyway, <a href="https://gitlab.com/mardy/imaginario/commit/694d4a9a44908394227c92f1cafc16c554b83dc8">here</a>'s an example of how I've changed Imaginario's CI recipe to build and fetch <tt>exiv2</tt> from its upstream site, with caching of the build artifacts.</li>
<li>Gitlab CI becomes slower! Compared to my previous builds, each job has become one or two minutes slower. This is mostly due to not using <tt>ubuntu:16.04</tt> as a baseline: the standard Ubuntu images are widely popular, so Gitlab is playing smart and caching them. On the other hand, it seems that my custom image is being pulled every time from the Docker hub. :-(</li>
</ul>
<p>Of course, if you know of a better way to build a portable binary while not renouncing to the benefits of using a newer Linux distribution, you are very welcome to let me know in the comments. :-)</p><p>I've uploaded to the <a href="https://hub.docker.com/r/mardy/qt/tags">Docker hub</a> an image that I will be using for building my Qt applications and packaging them into an <a href="https://appimage.org/">AppImage</a> file. To which you might be asking: why bother?</p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://mardy.it/archivos/imagines/blog/0d74e13fd868112c844485e48a2690e1-docker-trusty.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://mardy.it/archivos/imagines/blog/a3e0759786dabcca28f652197a7b7384-docker-trusty.png" width="400" height="262" data-original-width="913" data-original-height="597"></a></div>
<p>The point is that this is a slightly special image: as its Docker tag (<tt>trusty-qt512</tt>) says, this image ships Qt 5.12 on top of Ubuntu Trusty (yes, that's 14.04!). The reason why I'm using such an obsolete distribution is that I'm striving to get my <tt>AppImage</tt> package to be as portable as possible: in fact, my early builds of <a href="https://phototeleport.com">PhotoTeleport</a> were run on a more recent Ubuntu 16.04, but some users complained that they couldn't run it in their own distributions (IIRC, these were Arch Linux and, indeed, Ubuntu 14.04). The problem is that while packages in the <tt>AppImage</tt> format bundle their own dependencies in the package, <a href="https://github.com/AppImage/pkg2appimage/blob/master/excludelist">some libraries</a> are generally excluded, as bundling them can cause a variety of issues. But that means that if you are building your application in a system which ships newer versions of these libraries than those installed in your users' machines, there's a high risk that your application will be using some newer symbols not present in the older versions — and therefore your application won't run in those machines.</p>
<p>To solve this problem, the recommended approach is to build on the oldest system that you wish to support; and given that I'm mostly familiar with Ubuntu, I chose Trusty as my target. Luckily, the Qt binary installer shipped at <a href="https://download.qt.io/archive/qt/5.12/5.12.0/">qt.io</a> also happens to support Trusty, so I'm all settled. Indeed, Trusty does not ship recent versions of the <tt>C++</tt> compiler, but that can be easily solved thanks to <a href="https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test">a wonderful PPA</a> which ships up to <tt>g++-8</tt>.<br>
I've also added the latest version of <tt>cmake</tt>, as it's unlikely that one can live with the very old version that's shipped in Trusty.</p>
<p>The Docker image can be pulled and used in your own machine or set as a baseline in your <tt>.gitlab-ci.yml</tt> recipe, if you happen to use Gitlab and are interested to generate the <tt>AppImage</tt> file from there. That's what I'm trying to do for <a href="http://www.mardy.it/imaginario">another project of mine</a>, and while I'm not there yet, the goal is getting closer and closer. Those interested in seeing exactly what is going into my Docker image can have a look at its <a href="https://github.com/mardy/docker-images/blob/master/trusty-qt512/Dockerfile">Dockerfile</a>. There are <b>a few issues</b> with this approach, though, and I feel that I should highlight them in order not to raise your expectations too much:</p>
<ul>
<li>You must <b>B.Y.O.D.</b> (Bring Your Own Dependencies)! It's likely that at least some of the libraries used by your project won't exist in Trusty, or will be an older version unsuitable for your needs. That means that your <tt>.gitlab-ci.yml</tt> will have to be modified to retrieve a newer version of the library and build it prior to building your application. There are good and bad sides to this: the good one is that this encourages you to use the very latest version of the dependency, which otherwise you might not have used by preferring your distro's version; the bad side is that this is extra work for you (and for the Gitlab CI), and that you risk missing some critical security updates if you don't closely follow the upstream development of your dependencies — something that your distribution's maintainers are likely to do for you. Anyway, <a href="https://gitlab.com/mardy/imaginario/commit/694d4a9a44908394227c92f1cafc16c554b83dc8">here</a>'s an example of how I've changed Imaginario's CI recipe to build and fetch <tt>exiv2</tt> from its upstream site, with caching of the build artifacts.</li>
<li>Gitlab CI becomes slower! Compared to my previous builds, each job has become one or two minutes slower. This is mostly due to not using <tt>ubuntu:16.04</tt> as a baseline: the standard Ubuntu images are widely popular, so Gitlab is playing smart and caching them. On the other hand, it seems that my custom image is being pulled every time from the Docker hub. :-(</li>
</ul>
<p>Of course, if you know of a better way to build a portable binary while not renouncing to the benefits of using a newer Linux distribution, you are very welcome to let me know in the comments. :-)</p>Imaginario for your desktophttp://mardy.it/ia/blog/2016/05/imaginario-for-your-desktop.html2016-05-29T12:25:00+03:002016-05-29T12:25:00+03:00Alberto Mardegan<div dir="ltr" style="text-align: left;" trbidi="on">
Hello everyone! As some of you know, I've developed a photo manager application for Ubuntu phones, called <a href="http://www.mardy.it/imaginario/">Imaginario</a> (which in <a href="http://www.interlingua.com/">interlingua</a> means something like "collection of images").<br>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://www.mardy.it/archivos/imagines/imaginario-main.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://www.mardy.it/archivos/imagines/imaginario-main.png" height="400" width="225"></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Imaginario on the Ubuntu phone</td></tr>
</tbody></table>
Last February Imaginario has reached feature completion, meaning that I'm quite satisfied with the features it offers (but if you find it lacking, then by all means please let me know by filing a <a href="https://gitlab.com/mardy/imaginario/issues">bug report</a>). I recently bought an Ubuntu tablet, the <a href="https://store.bq.com/gl/ubuntu-edition">BQ M10</a>, and verified that Imaginario works fine in the tablet form factor, even though it could be improved to use the <a href="https://developer.ubuntu.com/en/blog/2015/08/10/adaptive-page-layouts/">adaptive page layout</a> widget in a few places.<br>
<br>
Anyway, the relative quietness the project had reached was starting to scare me, therefore since March I've been working on a desktop version of Imaginario, which shares the same code base but renders its interface via the <a href="http://doc.qt.io/qt-5/qtquickcontrols-overview.html">QtQuick Controls</a> module, which provides native-looking widgets on Linux, OS X and Windows. The goal is indeed to create a cross-platform photo manager, heavily inspired by the fantastic <a href="http://f-spot.org/">F-Spot</a> which has been hibernating for the last 6 years but which I'm still happily using.<br>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://mardy.it/archivos/imagines/blog/d480cfce3ee98a21bd79851381f93b5d-ImaginarioDesktop.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="468" src="http://mardy.it/archivos/imagines/blog/3501f7848f6497a728d64746c74caff6-ImaginarioDesktop.png" width="640"></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Imaginario is under development for your desktop!</td></tr>
</tbody></table>
I'm in no way done. I've got the application in a stage where I can start playing with it and some basic functionality is working, but I'm not yet ready to entrust it with my photo collection — though indeed, so far I haven't experienced any data loss or data damage.<br>
That's why I think this is a good time to share the news, in the hope that I could find someone else (besides me) who could test the software and report bugs.<br>
<h4 style="text-align: left;">
What should work:</h4>
<ul style="text-align: left;">
<li>Import your photo database from F-Spot</li>
<li>Import your photo database from Shotwell</li>
<li>Import photos from a folder</li>
<li>Edit photo tags</li>
<li>Search by tag (with OR/AND operators exactly like F-Spot does)</li>
<li>Search by geolocation</li>
</ul>
<h4 style="text-align: left;">
What does not (yet) work</h4>
<div>
<ul style="text-align: left;">
<li>More search filters (by date, rating)</li>
<li>Hidden tags</li>
<li>Exporting (but you can select photos and copy their URI to the clipboard)</li>
<li>Translations of UI elements</li>
<li>UI needs love</li>
</ul>
<div>
In the process of developing Imaginario with the QtQuick Controls I've also had to occasionally report (and fix, or workaround) some bugs on the controls themselves, which will hopefully come as a benefit for other applications using them.</div>
</div>
<h4 style="text-align: left;">
How to install and test it</h4>
<div>
If you have been reading till this point, there's a little chance that you might actually be interested in helping me out with testing this app. I don't have any builds for OS X or Windows yet, but there are automatic daily builds for Ubuntu 14.04 (trusty) and 16.04 (xenial), available in my <a href="https://launchpad.net/~mardy/+archive/ubuntu/imaginario">imaginario PPA</a>. To install imaginario, just run these commands:</div>
<blockquote class="tr_bq">
<span style="font-family: monospace;">sudo add-apt-repository ppa:mardy/imaginario<br>
sudo apt-get install imaginario</span>
</blockquote>
If you are interested in building it for other OSes, you can find the source code <a href="https://gitlab.com/mardy/imaginario">here</a>, but please don't distribute any binary packages yet, as the software is all but ready to be used in the wild.<br>
<div>
<h4 style="text-align: left;">
Closing note on QtQuick Controls vs Ubuntu UI toolkit</h4>
Those of you who are familiar with the Ubuntu phone might wonder why I've decided to use the QtQuick Controls and not the Ubuntu UI toolkit like I'm doing with the phone version. After all, the Ubuntu UI toolkit has been specifically planned to support the desktop use case too, and it would be just natural to take its convergence feature into use and let it handle the desktop version too.<br>
There are a couple of reasons why I haven't been following this path:<br>
<br>
<ol style="text-align: left;">
<li>I want the app to be working in Windows and OS X too</li>
<li>I want traditional desktop elements, such as split views, treeviews and menus</li>
</ol>
<div>
There is a good chance that — despite its name — the Ubuntu UI toolkit would work just fine under Windows and OS X, but it's clearly not a requirement, and the possibility that the compatibility gets broken is very real. Besides, in any case that wouldn't offer me a native-looking UI; not that I consider this to be priority, but it's certainly a bonus point for the QtQuick Controls.</div>
</div>
As for the other point, it's likely that split views, treeviews and menus are coming to the Ubuntu UI toolkit too, but of course I'm developing Imaginario now, and I have to use what is available at this very moment.<br>
All in all, none of the above is a strong reason to chose one toolkit over the other; and it's actually not unlikely at all that in the future I'll decide to go for the Ubuntu UI toolkit on all OSes and all form factors; I've just made a contingent choice, which suits me fine for now but which I'm open to revisit anytime.<br>
<br>
If anything, this double face of Imaginario shows the strength of Qt and QML: the same core C++ classes get exposed as two totally different user interfaces, and the speed of prototyping in QML makes this effort very cheap — I'm not afraid of literally throwing away one user interface or starting a new one from scratch.<br>
<div>
<ul style="text-align: left;"></ul>
<div>
<br></div>
</div>
</div><div dir="ltr" style="text-align: left;" trbidi="on">
Hello everyone! As some of you know, I've developed a photo manager application for Ubuntu phones, called <a href="http://www.mardy.it/imaginario/">Imaginario</a> (which in <a href="http://www.interlingua.com/">interlingua</a> means something like "collection of images").<br>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://www.mardy.it/archivos/imagines/imaginario-main.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://www.mardy.it/archivos/imagines/imaginario-main.png" height="400" width="225"></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Imaginario on the Ubuntu phone</td></tr>
</tbody></table>
Last February Imaginario has reached feature completion, meaning that I'm quite satisfied with the features it offers (but if you find it lacking, then by all means please let me know by filing a <a href="https://gitlab.com/mardy/imaginario/issues">bug report</a>). I recently bought an Ubuntu tablet, the <a href="https://store.bq.com/gl/ubuntu-edition">BQ M10</a>, and verified that Imaginario works fine in the tablet form factor, even though it could be improved to use the <a href="https://developer.ubuntu.com/en/blog/2015/08/10/adaptive-page-layouts/">adaptive page layout</a> widget in a few places.<br>
<br>
Anyway, the relative quietness the project had reached was starting to scare me, therefore since March I've been working on a desktop version of Imaginario, which shares the same code base but renders its interface via the <a href="http://doc.qt.io/qt-5/qtquickcontrols-overview.html">QtQuick Controls</a> module, which provides native-looking widgets on Linux, OS X and Windows. The goal is indeed to create a cross-platform photo manager, heavily inspired by the fantastic <a href="http://f-spot.org/">F-Spot</a> which has been hibernating for the last 6 years but which I'm still happily using.<br>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://mardy.it/archivos/imagines/blog/d480cfce3ee98a21bd79851381f93b5d-ImaginarioDesktop.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="468" src="http://mardy.it/archivos/imagines/blog/3501f7848f6497a728d64746c74caff6-ImaginarioDesktop.png" width="640"></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Imaginario is under development for your desktop!</td></tr>
</tbody></table>
I'm in no way done. I've got the application in a stage where I can start playing with it and some basic functionality is working, but I'm not yet ready to entrust it with my photo collection — though indeed, so far I haven't experienced any data loss or data damage.<br>
That's why I think this is a good time to share the news, in the hope that I could find someone else (besides me) who could test the software and report bugs.<br>
<h4 style="text-align: left;">
What should work:</h4>
<ul style="text-align: left;">
<li>Import your photo database from F-Spot</li>
<li>Import your photo database from Shotwell</li>
<li>Import photos from a folder</li>
<li>Edit photo tags</li>
<li>Search by tag (with OR/AND operators exactly like F-Spot does)</li>
<li>Search by geolocation</li>
</ul>
<h4 style="text-align: left;">
What does not (yet) work</h4>
<div>
<ul style="text-align: left;">
<li>More search filters (by date, rating)</li>
<li>Hidden tags</li>
<li>Exporting (but you can select photos and copy their URI to the clipboard)</li>
<li>Translations of UI elements</li>
<li>UI needs love</li>
</ul>
<div>
In the process of developing Imaginario with the QtQuick Controls I've also had to occasionally report (and fix, or workaround) some bugs on the controls themselves, which will hopefully come as a benefit for other applications using them.</div>
</div>
<h4 style="text-align: left;">
How to install and test it</h4>
<div>
If you have been reading till this point, there's a little chance that you might actually be interested in helping me out with testing this app. I don't have any builds for OS X or Windows yet, but there are automatic daily builds for Ubuntu 14.04 (trusty) and 16.04 (xenial), available in my <a href="https://launchpad.net/~mardy/+archive/ubuntu/imaginario">imaginario PPA</a>. To install imaginario, just run these commands:</div>
<blockquote class="tr_bq">
<span style="font-family: monospace;">sudo add-apt-repository ppa:mardy/imaginario<br>
sudo apt-get install imaginario</span>
</blockquote>
If you are interested in building it for other OSes, you can find the source code <a href="https://gitlab.com/mardy/imaginario">here</a>, but please don't distribute any binary packages yet, as the software is all but ready to be used in the wild.<br>
<div>
<h4 style="text-align: left;">
Closing note on QtQuick Controls vs Ubuntu UI toolkit</h4>
Those of you who are familiar with the Ubuntu phone might wonder why I've decided to use the QtQuick Controls and not the Ubuntu UI toolkit like I'm doing with the phone version. After all, the Ubuntu UI toolkit has been specifically planned to support the desktop use case too, and it would be just natural to take its convergence feature into use and let it handle the desktop version too.<br>
There are a couple of reasons why I haven't been following this path:<br>
<br>
<ol style="text-align: left;">
<li>I want the app to be working in Windows and OS X too</li>
<li>I want traditional desktop elements, such as split views, treeviews and menus</li>
</ol>
<div>
There is a good chance that — despite its name — the Ubuntu UI toolkit would work just fine under Windows and OS X, but it's clearly not a requirement, and the possibility that the compatibility gets broken is very real. Besides, in any case that wouldn't offer me a native-looking UI; not that I consider this to be priority, but it's certainly a bonus point for the QtQuick Controls.</div>
</div>
As for the other point, it's likely that split views, treeviews and menus are coming to the Ubuntu UI toolkit too, but of course I'm developing Imaginario now, and I have to use what is available at this very moment.<br>
All in all, none of the above is a strong reason to chose one toolkit over the other; and it's actually not unlikely at all that in the future I'll decide to go for the Ubuntu UI toolkit on all OSes and all form factors; I've just made a contingent choice, which suits me fine for now but which I'm open to revisit anytime.<br>
<br>
If anything, this double face of Imaginario shows the strength of Qt and QML: the same core C++ classes get exposed as two totally different user interfaces, and the speed of prototyping in QML makes this effort very cheap — I'm not afraid of literally throwing away one user interface or starting a new one from scratch.<br>
<div>
<ul style="text-align: left;"></ul>
<div>
<br></div>
</div>
</div>