Disable shutter sound on Cyanogenmod 12

Everyone knows that annoying shutter sound of the camera app on Android phones. It’s against the law to sell android phones which do not make sounds when taking pictures. And in general, it is a good feature as it improves other people privacies.

However, I still want to get rid of the sound. It’s a bit tricky, but having a rooted phone (with e.g. CyanogenMod) it’s very easy: Just delete the sound file /system/media/audio/ui/camera_click.ogg! :)

For the lazy: Get a root shell (eg. ssh or adb) and execute the following:

mount -o remount,rw /system
mv /system/media/audio/ui/camera_click.ogg /system/media/audio/ui/camera_click.ogg.backup
mv /system/media/audio/ui/camera_focus.ogg /system/media/audio/ui/camera_focus.ogg.backup
mount -o remount,ro /system

Problem solved.

Kile menu bar hides entries

Figure 1: Kile -- the menu as expected
Figure 1: Kile -- the menu as expected

Kile, KDE’s Integrated LaTeX Environment, has a weird bug: Every time I update something in the UI it recreates its config file and I loose some menu options, such as Settings -> Configure Kile where you used to configure your preferences..

In Figure 1 you can see the menu as expected. There are some entries to Configure Kile, t0 Configure Toolbars, to Configure Shortcuts and to switch to Full Screen Mode, etc. However, as soon as I update certain things in the user interface (UI), eg. if I add a new action icon to the toolbar to quickly get the \textbf{} environment for bold fonts, these entries get lost. In those cases Kile won’t be configureable anymore. The resulting toolbar is shown in Figure 2. You see, the number of entries significantly decreased..

Figure 2: Kile -- the unexpected menu
Figure 2: Kile -- the unexpected menu

However, I just discovered the reason: Kile in these cases rewrites its config in an unexpected manner… If you have a look at the configuration stored in ~/.kde/share/apps/kile/kileui.rc you’ll find an XML subtree such as:

...
<Menu noMerge="1" name="settings">
	<text>&amp;Settings</text>
	<Action name="Mode"/>
	<Separator/>
	<Action name="settings_perform_check"/>
	<Separator/>
	<Action append="show_merge" name="StructureView"/>
	<Action append="show_merge" name="MessageView"/>
</Menu>
...

No idea where it comes from, but the 1 in noMerge prevents the default menu entries to be merged into the minimal set of entries defined in that snippet. However, now that we know what’s wrong we can easily fix it! Just replace the 1 with a 0 and restart Kile. You might want to do the same for all other menus to discover that you’ve also been missing some entries in the Help menu ;-)

Food equivalents in Social Media

I’ve just been listening to a podcast from DRadio Wissen: Hörsaal (German podcast streaming lectures). I particularly like the podcast of DRadio. This time the lecture was held by Fabian Hemmert, a German design researcher, who was talking about the smartphones’ future. Quite interesting thought in there, but what I actually wanted to jot down was his comparison between food and social media. He tried to find food equivalents in media:

The equivalent of Fat is Fiction!

Invented/fictional things – easy to consume, but not a good base. And too much of it and you’ll often have unnecessary ballast at the end of the day.

The equivalent of Sugar is Approbation!

Everyone likes to hear approvals and confirmation, it’s music to your ears. But too much of it is also unhealthy.

The equivalent of Protein is Truth!

Not too easy to digest, but an important thing to base on.

We are very short on Attention

He also notes that attention is the scarcest resource. Everyone wants us to pay attention and we want everyone to pay attention..

I kind of like the idea! Any other equivalences you can think of?

Tunneling TinyTinyRSS traffic through a Proxy

TT-RSS screenshot
Screenshot of TinyTinyRSS

TinyTinyRSS (TT-RSS) is something that the Google reader always wanted and Feedly still wants to be. Just better! :)

TT-RSS is a free and open source feed aggregator, which can be deployed to your own machine. For example, my instance is running on a cubieboard in my living room. Thus, I’m independent of any company and their plans with my data :)

However, I don’t want to advertise TT-RSS too much, but I want to tell you how to fetch your feeds through a proxy, such as polipo or squid.

Configuring TT-RSS to use a Proxy

It’s apparently undocumented, but looking into the code it turns out that feeds are fetched using cURL:

$ grep -rn PROXY *
include/functions2.php:2257:            if (defined('_CURL_HTTP_PROXY')) {
include/functions2.php:2258:                    curl_setopt($curl, CURLOPT_PROXY, _CURL_HTTP_PROXY);
include/functions.php:389:                      if (defined('_CURL_HTTP_PROXY')) {
include/functions.php:390:                              curl_setopt($ch, CURLOPT_PROXY, _CURL_HTTP_PROXY);
plugins/af_unburn/init.php:41:                          if (defined('_CURL_HTTP_PROXY')) {
plugins/af_unburn/init.php:42:                                  curl_setopt($ch, CURLOPT_PROXY, _CURL_HTTP_PROXY);

And as you can see, the code already supports the usage of a proxy: if (defined('_CURL_HTTP_PROXY')).

I think that might be very interesting to many of you guys and I’ve no idea why it is not documented. However, you can simply define the variable _CURL_HTTP_PROXY in your config.php file. For example, to use a proxy at host 127.0.0.1 listening at port 8123 add the following:

define ('_CURL_HTTP_PROXY', '127.0.0.1:8123');

Now, the TT-RSS traffic will go through the proxy at :8123, which might tunnel everything through, e.g., TOR. Thus, the location of your living room will not be disclosed :)

BONUS: Cache all the Images in Feeds

By default, TT-RSS will not cache the images in feeds. That means, if there is an image in an article, you will be redirected to load the image from a foreign server. That’s obviously something I’d like to avoid, especially because there are plenty of ads or tracking pixels which shouldn’t know about my habits and surf times. But there is an alternative: TT-RSS is able to cache images. It will download the images to your server and deliver the cached versions instead of forwarding you to somewhere else.

Unfortunately, that is not the default. If you want that functionality you need to configure every single feed (Edit FeedOptionsCache images locally). And you must not forget to repeat that procedure for every new feed that will be added in 15+ months…

To avoid that you can simply open the database that TT-RSS uses (e.g. using phpMyAdmin), go to the table ttrss_feeds and modify the default value of the column cache_images from 0 to 1. If that is done, the images of every newly added feed will be cached by default.

If you’re too lazy to manually update the feeds that are already there you can simply run the following SQL query:

UPDATE `ttrss_feeds` SET `cache_images`=1 WHERE 1

Air Pollution makes Babies skinnier

Rich et. al. 2015
Differences in Birth Weight Associated with the 2008 Beijing Olympic Air Pollution Reduction: Results from a Natural Experiment

China radically reduced the air pollution in preparation of the Olympics in 2008 in Beijing. The authors of the publication Differences in Birth Weight Associated with the 2008 Beijing Olympic Air Pollution Reduction: Results from a Natural Experiment [Rich2015a] studied its affect on the weights of newborns. They evaluated how specific months of pregnancy with less air pollution correlate to the birth weights, compared to pregnancies during the same dates in 2007 or 2009. The records were created and maintained by the Beijing Obstetrics and Gynecology Hospital and for the study they just included singleton live births of infants who were 28 completed weeks of gestation or greater in one of four adjacent Beijing districts at the time of birth, which is a sample size of 140,298.

And indeed, they found a correlation:

Babies with their 8th month of pregnancy during the 2008 Olympics were, on average, 23g larger

Interestingly, there was apparently no correlation for months 1-7 of pregnancy!?

References



Martin Scharm

stuff. just for the records.

Do you like this page?
You can actively support me!