Welcome to Planet openSUSE

This is a feed aggregator that collects what openSUSE contributors are writing in their respective blogs.

To have your blog added to this aggregator, please read the instructions.


Friday
31 October, 2014


face

The biggest part of this HackWeek will be spent on Weblate. The major task is to complete new UI for it. There have been already some blog posts about that here, so regular readers of my blog already know it is using Twitter Bootstrap.

Today it has reached point where I think it's good enough for wider testing and I've deployed it at Hosted Weblate (see Weblate website for conditions for getting hosting there).

I expect there will be some rough edges, so don't hesitate to report any issues, so that I can quickly fix them.

Filed under: English phpMyAdmin SUSE Weblate | 0 comments | Flattr this!


Michal Čihař: Enca 1.16

17:30 UTC

face

As a first tiny project in this HackWeek, Enca 1.16 has been just released. It mostly brings small code cleanups and missing aliases for languages, but fixes also some minor bugs found by Coverity Scan.

If you don't know Enca, it is an Extremely Naive Charset Analyser. It detects character set and encoding of text files and can also convert them to other encodings using either a built-in converter or external libraries and tools like libiconv, librecode, or cstocs.

Full list of changes for 1.16 release:

  • Fixed typo in Belarusian language name
  • Added aliases for Chinese and Yugoslavian languages

Still enca is in maintenance mode only and I have no intentions to write new features. However there is no limitation to other contributors :-).

You can download from http://cihar.com/software/enca/.

Filed under: Enca English SUSE | 0 comments | Flattr this!


face

For quite some time, I'm working on new UI for Weblate. As the time is always limited, the progress is not that fast as I would like to see, but I think it's time to show the current status to wider audience.

Almost all pages have been rewritten, the major missing parts are zen mode and source strings review. So it's time to play with it on our demo server. The UI is responsive, so it works more or less on different screen sizes, though I really don't expect people to translate on mobile phone, so not much tweaking was done for small resolutions.

Anyway I'd like to hear as much feedback as possible :-).

Filed under: English phpMyAdmin SUSE Weblate | 2 comments | Flattr this!


face

For quite some time I was pretty confident that Weblate will need some UI rewrite at some point. This is always problematic thing for me as I'm no way an UI designer and thus I always hope that somebody else will do that. I've anyway spent few hours on train home from LinuxTag to check what I could do with that.

The first choice for me was to try Twitter Bootstrap as I've quite good experience with using that for UI at work, so I hoped it will work quite well for Weblate as well. The first steps went quite nicely, so I could share first screenshots on Twitter and continue to work on that.

After few days, I'm quite happy with basic parts of the interface, though the most important things (eg. the page for translating) are still missing. But I think it's good time to ask for initial feedback on that.

Main motivation was to unite two tab layout used on main pages, which turned out to be quite confusing as most users did not really get into bottom page of the page and thus did not find important functions available there. So all functions are accessible from top page navigation, either directly or being in menu.

I've also decide to use colors a bit more to indicate the important things. So the progress bars are more visible now (and the same progress bar now indicates status of translation per words). The quality checks also got their severity, which in turn is used to highlight the most critical ones. The theme will probably change a bit (so far it's using default theme as I did not care much to change that).

So let's take a look at following screenshot and let me know your thoughts:

Number of applications over time

You can also try that yourself, everything is developed in the bootstrap branch in our Git repository.

Filed under: English phpMyAdmin SUSE Weblate | 4 comments | Flattr this!


Michal Čihař: Weblate 1.9

17:30 UTC

face

Weblate 1.9 has been released today. It comes with lot of improvements and bug fixes and with experimental Zen mode for editing translations.

Full list of changes for 1.9:

  • Django 1.6 compatibility.
  • No longer maintained compatibility with Django 1.4.
  • Management commands for locking/unlocking translations.
  • Improved support for Qt TS files.
  • Users can now delete their account.
  • Avatars can be disabled.
  • Merged first and last name attributes.
  • Avatars are now fetched and cached server side.
  • Added support for shields.io badge.

You can find more information about Weblate on http://weblate.org, the code is hosted on Github. If you are curious how it looks, you can try it out on demo server. You can login there with demo account using demo password or register your own user. Ready to run appliances will be soon available in SUSE Studio Gallery.

Weblate is also being used https://l10n.cihar.com/ as official translating service for phpMyAdmin, Gammu, Weblate itself and others.

If you are free software project which would like to use Weblate, I'm happy to help you with set up or even host Weblate for you.

Further development of Weblate would not be possible without people providing donations, thanks to everybody who have helped so far!

Filed under: English phpMyAdmin SUSE Weblate | 0 comments | Flattr this!


face

Same as in past year, I'm attending FOSDEM 2014. This is the best opportunity to meet with free software world in Europe and get in touch with people you know only from mailing lists.

If you want to meet me in person and discuss anything, just get in touch with me and we'll arrange it.

Filed under: English phpMyAdmin SUSE Weblate | 0 comments | Flattr this!


Michal Čihař: Weblate 1.8

17:30 UTC

face

Weblate 1.8 has been released today. It comes with lot of improvements, especially in registration process where you can now use many third party services.

Full list of changes for 1.8:

  • Please check manual for upgrade instructions.
  • Nicer listing of project summary.
  • Better visible options for sharing.
  • More control over anonymous users privileges.
  • Supports login using third party services, check manual for more details.
  • Users can login by email instead of username.
  • Documentation improvements.
  • Improved source strings review.
  • Searching across all units.
  • Better tracking of source strings.
  • Captcha protection for registration.

You can find more information about Weblate on it's website, the code is hosted on Github. If you are curious how it looks, you can try it out on demo server. You can login there with demo account using demo password or register your own user. Ready to run appliances will be soon available in SUSE Studio Gallery.

Weblate is also being used https://l10n.cihar.com/ as official translating service for phpMyAdmin, Gammu, Weblate itself and others.

If you are free software project which would like to use Weblate, I'm happy to help you with set up or even host Weblate for you.

Further development of Weblate would not be possible without people providing donations, thanks to everybody who have helped so far!

Filed under: English SUSE Weblate | 3 comments | Flattr this!


face

Thanks to great amount of changes I've been able do in Weblate during Hackweek, the 1.8 release is quite close.

All features I wanted there are implemented and it is already running for some time on my production servers which look quite stable. The only thing which needs still some improvement are translations. So that's your chance to contribute.

Translation status

If there won't be any blocking issue, Weblate 1.8 will be released during next week.

Filed under: English SUSE Weblate | 0 comments | Flattr this!


face

10th hackweek is over and I think it has been again great chance to hack on something. This year we even had better food supplies so interruptions from hacking were even less frequent.

As you've might have already noticed, I was working on Weblate whole week and I think it worked pretty well and I've implemented all what I wanted.

First of all, Weblate now supports login using lot of third party services (like GitHub, Facebook, Google, ...). This was achieved by using python-social-auth for that. It is quite new module for this, so hopefully it's API will stay stable enough to be usable in the long term. It was surprisingly easy to implement, though I've spent quite a lot of tweaking of the login and registration process to make it work according to my expectations.

After doing this quite big change, I thought it's about time to restructure the documentation and document new features in it. I think it now covers all important things, but if you can't find something or some parts are hard to understand, just let me know, I'll fix it.

Another quite big feature (though it won't be much visible in upcoming 1.8 release) is source string tracking. This is prerequisite for many features people have requested in Weblate's issue tracker, but these will have to wait for next releases. If you want to see some feature earlier, you can support it by money on Bountysource :-).

Weblate can now also search in all strings, which might become handy if grepping over dozen of Git repositories is not your favorite game.

And last but not least, I've implemented simple Captcha protection for new registrations as the demo server is full of bots who register there and do nothing afterward.

Basically I think this makes Weblate 1.8 feature complete and I'd like to stabilize it in upcoming weeks to release. Right now it is deployed on the demo server, where you can play with it and discover bugs :-). Also it's now time to work on Weblate translations!

Filed under: English SUSE Weblate | 0 comments | Flattr this!


face

First day of hackweek did not really go as planned. I had to spend too much time on tasks which I did not now I will have to do in advance.

I've started with releasing Weblate 1.7. As a part of that I update SUSE Studio images with Weblate. Unfortunately this turned out to be more challenging than usual as with new version the build script always failed but without any obvious error. After some time, I've realized that it just does not show whole output, so the last (and most important) lines are missing.

Then it was easy to spot that the problem is in Whoosh version and it's just matter of providing newer version.

After fixing the image, I could finally focus on Weblate's issue tracker and resolved few issues and questions. I've also improved some of the in application documentation and links to documentation or other resources.

Meanwhile I could also setup translation hosting for monkeysign, happy translating!

Filed under: English SUSE Weblate | 0 comments | Flattr this!


face

Last week was Hackweek on SUSE and for 2 days I hacked on Marcus' project "Dice - A light weight build service".

It was fun and Marcus code was very easy to understand, very well structured and with comprehensive tests.

Dice is a simple build service for KIWIimages using virtual instances controlled by vagrant or a directly contacted build machine. It can be used to fire up build jobs on e.g public cloud instances.

What that means is that you can do:

>dice build myimage

and that will either:

1- start a virtual machine on your workstation/laptop and build your image IN that virtual machine

2- connect to a virtual machine on the cloud (i.e. google cloud) and build your image IN that cloud virtual machine


And why all the trouble? the reasons:

1- setting up an environment for building images on your laptop/workstation can be sometimes paintful

2- running multiple builds on your laptop/workstation will make your host performance get low. Builds take time, thus you normally are doing something else meanwhile, and running the build on the cloud can be very good so that you can use your resources for something else

3- security: building an image implies running custom scripts. If you have done this scripts, fine, but if not, better not run it on your laptop/ws.

4- availability: having a build service on the cloud, makes it available to others that won't have to invest time on setting it up

During those 2 days, I just implemented the ssh command as:

> dice ssh myimage

which will open an ssh connection to the build node, either virtual machine on you laptop/ws or in the cloud, so that you can easily debug when a build fails.



face

Last October 16th I assisted to the "II Security on the network Congress" organized by Universitat Oberta de Catalunya (UOC) and Universitat Rovira i Virgili (URV).

This was held very close from where I live now and I was invited to give a speach there, which I happily did.

I explained the timeline of CVE-2014-081 (see my previous post on it).

There were about 300 people registered and was a very interesting event with very interesting talks on security.

I was also very happy to meet a friend from my home town.

Overall, it was fun and worth it.

Thanks to the organizers!



face

Thanks to openSUSE TSP, this was my first ever participation in openSUSE event. I spent 15 days in China, traveling outside Beijing after the event, One word to define the experience  would be People, close second would be Food. In this trip I met some of the nicest, friendliest and most helpful people and had food I have never seen before or know the names of.

The summit venue was very impressive, and the event was well organized, there were wide range of topics in both Chinese and English, including mine on openSUSE Education project. What was really missing in the event were many participants. It was a pleasure meeting all the attending community members: Saurabh Sood, Max Lin, Max Huang, Fuminobu Takeyama, Richard Brown, Anja Stock, Raghu Nayyar, Alick Zhou, Qian Hong,  and all the magicians behind the curtains running the show: Sunny, Lance, Yifan et al.

Geeko and me


Thursday
30 October, 2014


face

wasd-keyboard.jpg

I got a new toy. It’s a WASD keyboard with Cherry MX Clear switches. The picture doesn’t do it justice; maybe I should’ve gotten a new camera instead… I guess it’ll have to wait.

Mechanical-switch keyboards are pricey, but since I spend more than 2000 hours a year in front of a keyboard, it’s not a bad investment. Or so I’m telling myself. Anyway, it’s a big step up from the rubber dome one I’ve been using for the past couple of years. The key travel is longer, and it’s nice to have proper tactile feedback. Since the Clear switches have stiff springs, I can also rest my fingers on the keys when daydreamingthinking. It has anti-slip pads underneath, so it stays put, and it doesn’t bounce or rattle at all.

Until our last move, I clung to an older, clicky keyboard (I don’t remember which brand — I thought it was Key Tronic, but I’ve a hard time finding any clicky keyboards of theirs at the moment), worried that the future held rubber dome and chiclets only — but today, there are lots of options if you look around. I guess we have mostly gamers and aficionados to thank for that. So thank you, gamers and aficionados.

I did plenty of research beforehand, but WASD finally drew me in with this little detail: They have some very well thought-out editable layout templates for SodipodiInkscape. Good taste in software there.


Tuesday
28 October, 2014


face
The Ceph Developer Summit (CDS) for the next major Ceph release called Hammer started today some hours ago (2014/10/28). It's again a virtual summit via video conference calls.

I've submitted three blueprints:

We already discussed the Ceph security and enterprise topics. You can find the results/logs in the pad. The sessions are recorded and will be available afterwards.

If you are interested in Ceph development: now it's time to join the video conference call. You can find all links, the timetable and blueprints to discuss here. There will be a second track with a lot of interesting discussions tomorrow.

If you are interested to work e.g. on the Ceph security topic: check the pad and feel free to contact me.

Friday
24 October, 2014


face

In part of my research, I have been heavily involved with building portfolios of optimization algorithms. Optimization algorithms stay at the root of many computational tasks, from designing laser mirror systems to neural network training. We want to find a minimum (or maximum) of some mathematical function, and for some functions it’s easier than for others.

For very many fairly hairy functions, the best state-of-art optimization algorithm is based on genetic algorithms and it’s called CMA-ES. It also has a very nice Python implementation by its original author, Nikolaus Hansen.

CMA-ES is still not as good as it could be on some functions with many local optima, but its performance can be much improved by establishing a restart strategy that will repeatedly restart it with varying population size and parameters. The best performing restart strategy is BIPOP-CMA-ES and unfortunately, it had no Python implementation so far. I took care of that more than a month ago, but since it’s taking some time to get my modifications upstreamed, if anyone would find that useful,

here is a patch for CMA-1.1.02 adding BIPOP restart strategy


face

With the release of openSUSE 13.2 in November, two of openSUSE’s open-source projects, the ‘Tumbleweed’ and ‘Factory’ rolling releases will be merging, and offered as a single openSUSE rolling release under the name ‘Tumbleweed’

Factory will remain the name of the development process where openSUSE’s new developments are integrated, with the tested, user-ready rolling release assuming the name Tumbleweed from Nov. 4.

“With the release of openSUSE 13.2 due in November, we realised this was a perfect opportunity to merge our two openSUSE rolling-releases together so users of Tumbleweed can benefit from the developments to our Factory development process over the last few years,” said Richard Brown, Chairman of openSUSE board. “The combined feedback and contributions from our combined Tumbleweed and Factory users should help keep openSUSE rolling forward even faster, while offering our users the latest and greatest applications on a stable rolling release.”

Technical details for existing Factory and Tumbleweed users will be published closer to Nov. 4 to explain what steps need to be carried out to smoothly migrate to the new ‘combined’ Tumbleweed rolling release.

“The changes to the Factory release model have changed it from being an unstable development codebase into the type of rolling release I set out to create when starting openSUSE Tumbleweed,” said Greg Kroah-Hartman, Linux Kernel Developer and creator of openSUSE Tumbleweed. “I’m very happy to see these two rolling releases coming together under the name Tumbleweed, and am looking forward to watching how it develops in the future.”

Establishing Factory as the clear ‘development project’ for the ‘ready-to-use’ Tumbleweed rolling release clarifies Factory’s role as a development codebase for openSUSE software, alongside Tumbleweed as user-ready distribution with rolling, tested updates, Brown said.


face

While ago new version 3.19 of UnReal World RPG was released. It was very smooth release in my part. Everything was working as expected. Packages were build to several platforms that were planned. Those platforms were Ubuntu 10.04, 12.04, 14.04 and openSUSE 12.2,12.3,13.1 all there packages build from openSUSE 13.1 base distribution. Nobody found nothing to complain about binary packages before someone launched them on Arch distribution.

Good, Bad and Ugly CURL

Curl is nice library for transferring anything from anywhere that have some kind of protocol over internet. It’s been stable for ages and have nice programming interface. So we thought this is easy new dependency for URW. We should know better.

User installed Ubuntu deb package and tried to launch URW in Arch received error  that was:

/usr/lib/libcurl.so.4: version `CURL_OPENSSL_3' not found

Ok very nice and constructive error message. What to do? This in the dark side of Linux knowledge. If you search from web what this means you will notice there is plenty of packages that suffers from this. mostly they are proprietary like URW and build to work with Ubuntu and don’t work with Arch. It has something to do with openSSL and how old it is but that is far I debugged it.

ARGH ARCH!

So I installed Arch Virtualbox and started to research on this. So how to find it there ‘CURL_OPENSSL_3‘ in libcurl.so.4 or not. use ‘strings’ command (now you should say, “elementary dear Watson”, so you you don’t look stupid).

strings /usr/lib/libcurl.so.4 | grep CURL_OPENSSL_3

And no there is nothing with that name but

strings /usr/lib/libcurl.so.4 | grep CURL_OPENSSL_

Gives a shot. There is ‘CURL_OPENSSL_4‘ so what to do? You can’t do nothing if you don’t get very hazardous. You can sed ‘CURL_OPENSSL_4‘  to ‘CURL_OPENSSL_3‘ but there is no promises it will work and it’s not very convenient.

You can get Ubuntu deb, extract curl.so out of it and use LD_LIBRARY_PATH-variable (how to do that?  or use OpenSUSE version of URW that works out-of-the-box.

Nor of them is very elegant. Probably we’ll have to start building Arch package also because that is most elegant version of this.

 


face


That's what I saw today after trying to update Notes:


Not cool, that didn't seem to work too well. This can happen with third-party apps. But what to do? Just like with upgrades, you can call in the help of the occ command line tool which comes with ownCloud. Ideally, run it as user of your apache, something like this:
sudo -u wwwrun ./occ
It will give you an overview of what occ can do for you, looking something like this:
ownCloud version 7.0.2

Usage:
[options] command [arguments]

Options:
--help -h Display this help message.
--quiet -q Do not output any message.
--verbose -v|vv|vvv Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version -V Display this application version.
--ansi Force ANSI output.
--no-ansi Disable ANSI output.
--no-interaction -n Do not ask any interactive question.


And a lot more.
From there, you can start an upgrade with:
sudo -u wwwrun ./occ upgrade
which is nice when the ownCloud upgrade process doesn't work. This can happen because php has a time-out set and if the amount of work takes longer than that timeout - it won't finish. Which can happen for example on very big installations, or on very light hardware (raspberry pi!).
But that wasn't my problem - things just got stuck in maintenance mode. And that is one of the options in the list: turn maintenance mode on and off! So I just proceeded (on advice of Arthur here in the office) to turn that off:
sudo -u wwwrun ./occ maintenance:mode --off
Lo and behold, it solved the problem for me.
If it doesn't, there is the maintenance:repair option which might fix the problem for you!

Tip: log rotation

In other news, I discovered that my owncloud.log file (to be found in your data folder) was 5.9 gigabytes big. Yeah, 6318901632 bytes. ownCloud can keep that file in check, but you have to enable that by adding the following to your config.php:
'log_rotate_size' => '100 MiB'
Of course, other values work, too. You can find this and more in config.sample.php, be sure to go over that file to see what you can and perhaps should configure. I personally would welcome any effort to give that file a user interface, or make it easier to reach - even with a text editor built into the admin UI... Although perhaps a more subtle approach of picking what should be visible or not would be better. In any case - anybody up for that?

Tim Serong: Watching Grass Grow

08:07 UTCmember

face

For Hackweek 11 I thought it’d be fun to learn something about creating Android apps. The basic training is pretty straightforward, and the auto-completion (and auto-just-about-everything-else) in Android Studio is excellent. So having created a “hello world” app, and having learned something about activities and application lifecycle, I figured it was time to create something else. Something fun, but something I could reasonably complete in a few days. Given that Android devices are essentially just high res handheld screens with a bit of phone hardware tacked on, it seemed a crime not to write an app that draws something pretty.

openSUSE wallpaperThe openSUSE desktop wallpaper, with its happy little Geeko sitting on a vine, combined with all the green growing stuff outside my house (it’s spring here) made me wonder if I couldn’t grow a little vine jungle on my phone, with many happy Geekos inhabiting it.

Android has OpenGL ES, so thinking that might be the way to go I went through the relevant lesson, and was surprised to see nothing on the screen where there should have been a triangle. Turns out the view is wrong in the sample code. I also realised I’d probably have to be generating triangle strips from curvy lines, then animating them, and the brain cells I have that were once devoted to this sort of graphical trickery are so covered in rust that I decided I’d probably be better off fiddling around with beziers on a canvas.

So, I created an app with a SurfaceView and a rendering thread which draws one vine after another, up from the bottom of the screen. Depending on Math.random() it extends a branch out to one side, or the other, or both, and might draw a Geeko sitting on the bottom most branch. Originally the thread lifecycle was tied to the Activity (started in onResume(), killed in onPause()), but this causes problems when you blank the screen while the app is running. So I simplified the implementation by tying the thread lifecycle to Surface create/destroy, at the probable expense of continuing to chew battery if you blank the screen while the app is active.

Then I realised that it would make much more sense to implement this as live wallpaper, rather than as a separate app, because then I’d see it running any time I used my phone. Turns out this simplified the implementation further. Goodbye annoying thread logic and lifecycle problems (although I did keep the previous source just in case). Here’s a screenshot:

Geeko Live Wallpaper

The final source is on github, and I’ve put up a release build APK too in case anyone would like to try it out – assuming of course that you trust me not to have built a malicious binary, trust github to host it, and trust SSL to deliver it safely ;-)

Enjoy!

Update 2014-10-27: The Geeko Live Wallpaper is now up on the Google Play store, although for some reason the “Live Wallpaper


Thursday
23 October, 2014


face

Since the introduction of P-States in the Intel SandyBridge and newer processors and the introduction of the P-States driver in the kernel since 3.9 there have been some changes to the power management on systems in regards to userspace tools. It has moved from cpufreq to cpupower and you may have written a script in times past to help set the right power management governor for your system. On a system with P-States you find that using cpupower has no effect on the performance whatsoever when you change the governor with cpupower. In order to get high performance out of your system with P-States you will need to look at some parameters into sysfs and change them using the userspace tool cpupower. Lets have a look at what there is for P-States.

Change your directory to /sys/devices/system/cpu/intel_pstate

system:/sys/devices/system/cpu/intel_pstate # l
total 0
drwxr-xr-x  2 root root    0 Oct 21 18:45 ./
drwxr-xr-x 14 root root    0 Oct 21 18:45 ../
-rw-r--r--  1 root root 4096 Oct 21 18:45 max_perf_pct
-rw-r--r--  1 root root 4096 Oct 21 18:45 min_perf_pct
-rw-r--r--  1 root root 4096 Oct 21 18:45 no_turbo
We have the max_perf_pct and the min_perf_pct and if we cat these files we can see their values.
# cat max_perf_pct
100
# cat min_perf_pct
32
This is the default for a powersave governor which you can gather from running the following command.
# cpupower frequency-info
  analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 0.97 ms.
  hardware limits: 1.20 GHz - 3.70 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 1.20 GHz and 3.70 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 3.53 GHz (asserted by call to hardware).
  boost state support:
    Supported: yes
    Active: yes
    3500 MHz max turbo 4 active cores
    3500 MHz max turbo 3 active cores
    3600 MHz max turbo 2 active cores
    3700 MHz max turbo 1 active cores
Notice the driver is intel_pstate and the current policy is set to powersave

We want the performance governor. So we will need to change our governor to performance. Execute the following.
# cpupower frequency-set -g performance

# cpupower frequency-info
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 0.97 ms.
  hardware limits: 1.20 GHz - 3.70 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 1.20 GHz and 3.70 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 2.83 GHz (asserted by call to hardware).
  boost state support:
    Supported: yes
    Active: yes
    3500 MHz max turbo 4 active cores
    3500 MHz max turbo 3 active cores
    3600 MHz max


face

One of the things that has always been a bit of a struggle in Firefox for Android is getting reliable video decoding for H264. For a couple of years, we've been shipping an implementation that went through great heroics in order to use libstagefright directly. While it does work fine in many cases, we consistently get reports of videos not playing, not displayed correctly, or just crashing.

In Android 4.1, Google added the MediaCodec class to the SDK. This provides a blessed interface to the underlying libstagefright API, so presumably it will be far more reliable. This summer, my intern Martin McDonough worked on adding a decoding backend in Firefox for Android that uses this class. I expected him to be able to get something that sort of worked by the end of the internship, but he totally shocked me by having video on the screen inside of two weeks. This included some time spent modifying our JNI bindings generator to work against the Android SDK. You can view Martin's intern presentation on Air Mozilla.

While the API for MediaCodec seems relatively straightforward, there are several details you need to get right or the whole thing falls apart. Martin constantly ran into problems where it would throw IllegalStateException for seemingly no valid reason. There was no error message or other explanation in the exception. This made development pretty frustrating, but he fought through it. It looks like Google has improved both the documentation and the error handling in the API as of Lollipop, so that's good to see.

As Martin wrapped up his internship he was working on handling the video frames as output by the decoder. Ideally you would get some kind of sane YUV variation, but this often is not the case. Qualcomm devices frequently output in their own proprietary format, OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka. You'll notice this doesn't even appear in the list of possibilities according to MediaCodecInfo.CodecCapabilities. It does, however, appear in the OMX headers, along with a handful of other proprietary formats. Great, so Android has this mostly-nice class to decode video, but you can't do anything with the output? Yeah. Kinda. It turns out we actually have code to handle this format for B2G, because we run on QC hardware there, so this specific case had a possible solution. But maybe there is a better way?

I know from my work on supporting Flash on Android that we use a SurfaceTexture there to render video layers from the plugin. It worked really well most of the time. We can use that with MediaCodec too. With this output path we don't ever see the raw data; it goes straight into the Surface attached to the SurfaceTexture. You can then composite it with OpenGL and the crazy format conversions are done by the GPU. Pretty nice! I think handling all the different YUV conversions would've been a huge source of pain, so I was happy to eliminate that entire


face

For years when I needed to search for something in 'vim', I would use the '/' command and type the search key. Usually this would be inefficient, because I would be typing the name of a function that was right there on the screen (sometimes I would use the mouse to copy-and-paste to save a few keystrokes, taxing my brain with yet another keyboard/mouse context switch and exacerbating my "mouse finger" syndrome). Imagine my surprise to learn that Vim has a '*' command to search for whatever word happens to be under the cursor! And then there are the 'n' and 'N' commands which search forwards and backwards, respectively, for the last search key.
Read more »


face

openSUSE 13.2 comes with the latest and greatest that the GNOME desktop has to offer — GNOME 3.14. At the time of the release 13.2 offers GNOME 3.14.1, which improves upon the user-experience of GNOME 3.10, that came with openSUSE 13.1, several notches, featuring notably a much improved gnome-shell with pretty-but-subtle animations and multi-touch gestures for the first time. The core applications have all seen remarkable activity during the development of 3.14 (and earlier, 3.12), focused on exciting features but also to make the desktop experience more unified and consistent.

Activities overview

Video player

Evince, Notes, Font viewer

 

 

GNOME Shell

Calculator in the GNOME shell search

Calculator in the GNOME shell search

At the heart of the GNOME experience is the much improved GNOME Shell, handling such trifle as launching applications, switching between windows and workspaces with the grace of a ballet dancer. Gnome-shell, available at version 3.14.1 with openSUSE 13.2, has picked up the ability to respond to multi-touch gestures, including on touchscreens, to open the Activities overview, applications overview and message tray, and to switch between windows and workspaces. In addition, this latest version of the shell features a host of pretty-but-subtle animations that make working inside GNOME a real pleasure.

Typing in a search term in the gnome-shell’s activities overview now gives results for matching files, documents, notes, contacts, photos… and even features inline calculations (just type in 22/7 and see for yourself)!

The applications overview now lists “Sundry” and “Utility” applications in app-folders making the full list of applications less crowded and easier to navigate. In an openSUSE-special touch, the YaST modules are all classed into an app-folder of its own, making it straightforward to launch any YaST module straight from the shell.

Header-bars aka Client side window decorations

The support for header-bars, that nifty combination of window-header and toolbar in one screen real-estate saving gem, which started with 3.10 (so you should have seen a glimpse of this in openSUSE 13.1 already) has proliferated into all major applications. Core applications such as text-editor GEdit, Notes, eps/pdf viewer Evince, Music, Documents all benefit from this development. In addition header-bars have also picked up touchscreen support, so where one could not previously move windows with header-bars around by touch, this is now possible.

Is that a brand new video player?

Video player showing Apple Movie Trailers straight from the web

Video player showing Apple Movie Trailers straight from the web

No, it is still totem, for long GNOME’s default media player in openSUSE. Except now, in it’s 3.14 incarnation it has been completely revamped, now showing a list of videos in your home directory when launched and allowing you to switch to a list of online video channels at the touch of a button. The playback controls are now presented as a floating toolbar that automatically hides when you don’t need it, allowing the currently playing video


Wednesday
22 October, 2014


face

Moto 360 image

I must admit, I'm actually really happy with the Moto360. After reading a load of reviews and speaking to people that already had the device, I was fully prepared for a subpar experience. Maybe that's the beauty of not being a bleeding edge early adopter :-)

The woes that were extolled were many, and the only good thing people had to say were about the stunning good looks; battery life was woeful, not even lasting a day; performance was hit and miss; connectivity to phone was spotty; the list goes on, one almost wonders why on earth I would still want one. As it happens, both Google and Motorola have been fairly quick with updates to the device. Android Wear is still exceptionally young, having only been released at Google I/O this summer, but has already had at least two significant updates.

I've not had any connectivity issues between my Moto360 and my Nexus5, not once has my watch been unable to either connect to the internet or drop the connection. People complained that the vibration for notification was too weak. Seriously?! If it was any stronger my arm would shake as if I was suffering from some serious withdrawal symptoms. I genuinely find the vibration just right, strong enough to be certain it was a genuine notificationa and not a phantom notification as a result of my stomach rumbling because I craved something to eat. I'll be honest here, and those that know me won't be surprised at all by this statement, I'm not the most artistically observant person. Meaning I don't notice small variences in colour hues for icons and glyphs, I don't notice tiny pixelation, I don't notice things like Issue 41827, that is unless someone points it out to me and I look really hard. I may just see it then after a while, the Sad Santa thing took me quite a while to notice the difference.

After a full day of slightly above average usage (I ended up demoing it to my wife for a wee bit), I was left with 57% battery remaining - and that was before the latest update that purportedly improves battery life by upto 15%. Not bad considering many said it barely lasted half a day. I have managed to find one case where I was able to deplete the battery rather rapidly though, it is by no means disasterous as I was fully expecting battery to be impacted. That case was going for a 10km run using Endomondo, with active heart monitoring enabled. After an hour of exercise I had used 40% of my battery, as the screen was permanently on alongside the heart rate monitor taking a reading very regularily. Thankfully the watch charges pretty rapidly and within an hour I was back to a full battery. I love the fact that the Moto360 uses QI charging, which means I don't have to have the specific watch dock to


Frank Karlitschek: Ohio Linux Fest

21:52 UTCmember

face

This Friday the Ohio Linux Fest kicks off in downtown Columbus and I’ll be there! It is my first Linux Fest in the US so I greatly look forward to being introduced in this grand tradition. Of course, I’ll be talking about ownCloud on Saturday the 25, from 13:00 to 14:00 room D142-143.

The title of the talk is “crushing data silos with ownCloud”: helping people liberate their data from the centralized services they have stored it on. I don’t think that a world where most of the personal data of the world is stored on servers of a hand full companies is a good one. ownCloud is, right now, the best way of getting out of that world!
The talk will also cover a few interesting new ideas that we want to do in ownCloud to build a fully federated and distributed solution in the future.

It would be awesome to do a small ownCloud and/or KDE meetup there.

If you’re going to be there – let me know! Find me on twitter and lots of other social services!


face

Apple released Apple Pay yesterday with the iOS 8.1 update.  Randy and I went out at lunch to try it out and compare it to Google Wallet on his OnePlus One Android Phone.  We visited three locations: Maverik, McDonald's, and Macey's Grocery.  Both phones were able to make payments without any network connection however the Airplane mode on the OnePlus One also shut off the NFC radio.  The iPhone 6+ was able to pay even in Airplane mode.

Here are the steps to pay on the two phones:


Apple Pay
NFC Payments
  • Place the iPhone up to the payment terminal
  • Use Touch ID to authorize
  • Done
Google Wallet
  • Unlock your phone
  • Place your Phone up to the payment terminal
  • Enter your 4 digit Google Wallet PIN
  • Done

The steps above look about the same but what isn't mentioned there is it took a while to figure out how to make Google Wallet work.  If I were to write the steps it took the very first time we tried Google Wallet they would look like this:

Google Wallet (the first time)
  • Place the Phone up to the payment terminal
  • Wake the phone up and then try again
  • Unlock the phone and try again
  • Wave it around for a little bit hoping the people behind are not getting too upset
  • After a few seconds, finally enter your PIN in Google Wallet to unlock it
  • When no network is available, get a confusing message that sounds like the payment didn't work when in reality it did.  It was trying to tell you it cannot show the details yet because you are not connected, but it sounds more like the payment failed.
What's the point?

You may ask why even bother with the stuff?  Why is this easier than just using my credit card?  Last week I was mailed new credit cards.  I didn't ask for them but they were issued along with a letter about how Home Depot was compromised and these cards were sent to protect me.  Had I been using Apple Pay or Google Wallet every time I went to Home Depot, it wouldn't have mattered.

When you set up a credit card in Apple Pay a unique card number is generated that will only work with that iPhone, and only with your finger print.  When you shop at a store, the only number they get is the one generated for your phone.  To use that number someone would have to have your phone and your finger print.  When Home Depot or Target are compromised in the future, no useful information will exist on their insecure systems.

Look for the NFC Payments logo (above) and it's likely that you'll be able to pay using Apple Pay or Google Wallet.

-- Just a quick followup...  We went to lunch today at JCW's.  They had the NFC Payments symbol.  I was able to pay with Apple Pay.  Randy tried with Google Wallet and it wouldn't work.

face

What a conference!!! openSUSE Asia Summit was unforgettable. The whole event had an amazing feel to it, and I had a rocking time in Beijing. openSUSE really has one of the best and most helpful communities, and the people are amazing. I had the pleasure of interacting with the active organization community. You guys absolutely rock!!!

Here are some of my experiences, and things I learned at the conference:

A little history:
The beginnings of the summit go back a year to Thessaloniki, where the idea of the Asia Summit was first mooted. Due to time constraints and clashes with openSUSE Summit in the US called for the event to be shifted to 2014. I had interacted with Sunny and Max in Thessaloniki and loved the idea of having an openSUSE event in Asia. At oSC14 in Dubrovnik, it was more or less confirmed that the summit would take place.

The Organization Team:
I joined the organization team a little late. The others had already done a lot of the hard work. I helped around a little with the invite letter and the promotion of the logo contest, and trying to find people to help around with the artwork. The opening session, where we welcomed the attendees in our native languages was cool. Also, Sunny’s speech in the beginning, which took us through the past one year was memorable, and I still remember each and every word of it.

I would take this opportunity to thank the openSUSE.Asia Summit
organization team. Today, now the openSUSE.Asia summit has started,
I’m reminded of the journey we took to get here.
I can not forget our weekly meetings, which often lasted to midnight.
I can’t forget 137 cards in trello for the preparation tracking.
And I can’t forget hundreds of emails about the Summit in our mail
boxes.

When we were on the way to reach this summit, we encouraged and
supported each other. Even though we were tired, we never gave up,
because we did believe we would finally be here. It is my honor being
a member of such a great team!

There are 17 people in the organization team, I won’t list everyone’s
name because we are a team, and we couldn’t have make any success
without each of us.

-Sunny

The organization committee did a fantastic job with the event and everything was planned to perfection. I would love to work with you all to host openSUSE Asia Summit next time as well (hopefully in India ;) )

New things:
I absolutely loved the concept of ‘Chops’ where the workshop speakers would put a lovely ‘Geeko’ stamp on the brochure for the participants for the performance in the workshop. More than judging the performance, it gave us a good chance to interact with the attendees and have a lot of fun in the process. The gifts for the speakers and for the chops were great and well thought out. Personally, working with


Tuesday
21 October, 2014


face

I read an article today about how expensive the new iPhone 6 will be if you buy it off contract.  I admit, it's a lot of money but it's actually less money than what you'll pay if you buy it with a contract.

I recently switched back to AT&T from Verizon because they introduced a new plan called the Mobile Share Value plan that offers non-subsidized pricing if you own your phone.  There are two rates for each line on this plan. If you own your phone the rate is $15/month for the line.  If you buy a "contract price" phone that rate is $40/month for the line and you have a 2 year contract.


In case you didn't get that, they will charge you and extra $25/month for 2 years to pay for the rest of that phone.  Over 24 months that ends up being $600.
With that, here are the actual iPhone 6 Plus costs:

Contract Prices:
iPhone 6 Plus 16GB: $899
iPhone 6 Plus 64GB: $999
iPhone 6 Plus 128GB: $1099

Non-Contract Prices:
iPhone 6 Plus 16GB: $749
iPhone 6 Plus 64GB: $849
iPhone 6 Plus 128GB: $949 

The other thing to consider is with non-contract plans you don't have a 2 year contract.  I know that seems obvious but let me just say it once again... you don't have a 2 year contract.  You are free to terminate your service any time you want with no cancellation fees.

Older blog entries ->