tag:blogger.com,1999:blog-48238068580366140772024-03-05T23:24:57.341+01:00Fridge DwellerUnknownnoreply@blogger.comBlogger229125tag:blogger.com,1999:blog-4823806858036614077.post-75069784206442723552018-10-18T15:20:00.001+02:002018-10-18T15:21:30.876+02:00Shapefiles: Long attribute namesAttribute names used in shapefiles are limited to a ridiculous 10 (in words: ten) characters and there is no official means to map these shortened names to longer, more telling ones. YAML to the rescure.<br />
<br />
In order to provide a mapping for our customers we ship an additional, dead-simple YAML file that makes it possible to at least look up what the original, unabridged name was. The format is as follows:<br />
shortName0: "A_rather_lengthy_attribute_name"<br />
<pre>shortName1: "Another_rather_lengthy_attribute_name"
shortName2: "An_attribute_name_no_sane_person_would_come_up_with"
</pre>
So essentially it is a table but as it is in valid YAML format there is no reason why it should not become a common sight and supported by GIS software. Here's example of how generated shapefiles my look like:<br />
linestring.cpg point.cpg polygon.cpg<br />
<pre>linestring.dbf point.dbf polygon.dbf
linestring.prj point.prj polygon.prj
linestring.shp point.shp polygon.shp
linestring.shx point.shx polygon.shx
linestring.yml point.yml polygon.yml
</pre>
Mandatory files are:<br />
<br />
<ul>
<li><b>.shp</b> — shape format; the feature geometry itself</li>
<li><b>.shx</b> — shape index format; a positional index of the feature geometry to allow seeking forwards and backwards quickly</li>
<li><b>.dbf</b> — attribute format; columnar attributes for each shape, in dBase IV format</li>
</ul>
Additional standard files:<br />
<ul>
<li><b>.prj</b> — projection format; the coordinate system and projection information, a plain text file describing the projection using well-known text format</li>
<li><b>.cpg</b> — used to specify the code page (only for <b>.dbf</b>) for identifying the character encoding to be used</li>
</ul>
Additional non-standard file:<br />
<ul>
</ul>
<div>
<ul>
<li><b>.yml</b> — attribute name map (for <b>.dbf</b>) assigns the shortened 10 character attribute name one that can have an (in principle) arbitrary number of characters - File in YAML format as described above.</li>
</ul>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-23655956195998137002018-10-18T14:50:00.000+02:002018-10-18T15:20:50.855+02:00Shapefiles: Specification of character encodingCPG files are part of the multi-file shapefile (sic!) format identifying the encoding used by the DBF. The issue with this file is that it is incredibly hard to find any document on how the encoding is actually identified.At the very best you find that it contains a single string and that you use <strong>UTF-8</strong> to identify utf-8 encoded Unicode. That doesn't help a lot if you use codepage 1252. It took my quite some effort to find a blog entry that has a translation of what originally was found on a Belarus website (which seems to have crossed the river Styx).
<br />
<br />
<table style="border: 1px solid #ccc;">
<thead>
<tr>
<th width="20%">Encoding ID</th>
<th width="20%">Encoding name</th>
<th width="20%">Additional ID</th>
<th width="40%">Other names</th>
</tr>
</thead>
<tbody>
<tr>
<td>1252</td>
<td>Western</td>
<td>iso-8859-1 (*)</td>
<td>iso8859-1, iso_8859-1, iso-8859-1, ANSI_X3.4-1968, iso-ir-6, ANSI_X3.4-1986, ISO_646, irv:1991, ISO646-US, us, IBM367, cp367, csASCII, latin1, iso_8859-1:1987, iso-ir-100, ibm819, cp819, Windows-1252</td>
</tr>
<tr>
<td>20105</td>
<td>ASCII</td>
<td>us-ascii</td>
<td>us-acii, ascii</td>
</tr>
<tr>
<td>28592</td>
<td>Central European (ISO)</td>
<td>iso-8859-2</td>
<td>iso8859-2, iso-8859-2, iso_8859-2, latin2, iso_8859-2:1987, iso-ir-101, l2, csISOLatin2</td>
</tr>
<tr>
<td>1250</td>
<td>Central European (Windows)</td>
<td>Windows-1250</td>
<td>Windows-1250, x-cp1250</td>
</tr>
<tr>
<td>1251</td>
<td>Cyrillic (Windows)</td>
<td>Windows-1251</td>
<td>Windows-1251, x-cp1251</td>
</tr>
<tr>
<td>1253</td>
<td>Greek (Windows)</td>
<td>Windows-1253</td>
<td>Windows-1253</td>
</tr>
<tr>
<td>1254</td>
<td>Turkish (Windows)</td>
<td>Windows-1254</td>
<td>Windows-1254</td>
</tr>
<tr>
<td>932</td>
<td>Japanese (Shift-JIS)</td>
<td>shift_jis</td>
<td>shift_jis, x-sjis, ms_Kanji, csShiftJIS, x-ms-cp932</td>
</tr>
<tr>
<td>51932</td>
<td>Japanese (EUC)</td>
<td>x-euc-jp</td>
<td>Extended_UNIX_Code_Packed_Format_for_Japanese, csEUCPkdFmtJapanese, x-euc-jp, x-euc</td>
</tr>
<tr>
<td>50220</td>
<td>Japanese (JIS)</td>
<td>iso-2022-jp</td>
<td>csISO2022JP, iso-2022-jp</td>
</tr>
<tr>
<td>1257</td>
<td>Baltic (Windows)</td>
<td>Windows-1257</td>
<td>windows-1257</td>
</tr>
<tr>
<td>950</td>
<td>Traditional Chinese (BIG5)</td>
<td>big5</td>
<td>big5, csbig5, x-x-big5</td>
</tr>
<tr>
<td>936</td>
<td>Simplified Chinese (GB2312)</td>
<td>gb2312</td>
<td>GB_2312-80, iso-ir-58, chinese, csISO58GB231280, csGB2312, gb2312</td>
</tr>
<tr>
<td>20866</td>
<td>Cyrillic (KOI8-R)</td>
<td>koi8-r</td>
<td>csKOI8R, koi8-r</td>
</tr>
<tr>
<td>949</td>
<td>Korean (KSC5601)</td>
<td>ks_c_5601</td>
<td>ks_c_5601, ks_c_5601-1987, korean, csKSC56011987</td>
</tr>
<tr>
<td>1255 (logical)</td>
<td>Hebrew (ISO-logical)</td>
<td>Windows-1255</td>
<td>iso-8859-8i</td>
</tr>
<tr>
<td>1255 (visual)</td>
<td>Hebrew (ISO-Visual)</td>
<td>iso-8859-8</td>
<td>ISO-8859-8 Visual, ISO-8859-8 , ISO_8859-8, visual</td>
</tr>
<tr>
<td>862</td>
<td>Hebrew (DOS)</td>
<td>dos-862</td>
<td>dos-862</td>
</tr>
<tr>
<td>1256</td>
<td>Arabic (Windows)</td>
<td>Windows-1256</td>
<td>Windows-1256</td>
</tr>
<tr>
<td>720</td>
<td>Arabic (DOS)</td>
<td>dos-720</td>
<td>dos-720</td>
</tr>
<tr>
<td>874</td>
<td>Thai</td>
<td>Windows-874</td>
<td>Windows-874</td>
</tr>
<tr>
<td>1258</td>
<td>Vietnamese</td>
<td>Windows-1258</td>
<td>Windows-1258</td>
</tr>
<tr>
<td>65001</td>
<td>Unicode UTF-8</td>
<td>UTF-8 UTF-8,</td>
<td>unicode-1-1-utf-8, unicode-2-0-utf-8</td>
</tr>
<tr>
<td>65000</td>
<td>Unicode UTF-7</td>
<td>UNICODE-1-1-UTF-7</td>
<td>utf-7, UNICODE-1-1-UTF-7, csUnicode11UTF7, utf-7</td>
</tr>
<tr>
<td>50225</td>
<td>Korean (ISO)</td>
<td>ISO-2022-KR</td>
<td>ISO-2022-KR, csISO2022KR</td>
</tr>
<tr>
<td>52936</td>
<td>Simplified Chinese (HZ)</td>
<td>HZ-GB-2312</td>
<td>HZ-GB-2312</td>
</tr>
<tr>
<td>28594</td>
<td>Baltic (ISO)</td>
<td>iso-8869-4</td>
<td>ISO_8859-4:1988, iso-ir-110, ISO_8859-4, ISO-8859-4, latin4, l4, csISOLatin4</td>
</tr>
<tr>
<td>28585</td>
<td>Cyrillic (ISO)</td>
<td>iso_8859-5</td>
<td>ISO_8859-5:1988, iso-ir-144, ISO_8859-5, ISO-8859-5, cyrillic, csISOLatinCyrillic, csISOLatin5</td>
</tr>
<tr>
<td>28597</td>
<td>Greek (ISO)</td>
<td>iso-8859-7</td>
<td>ISO_8859-7:1987, iso-ir-126, ISO_8859-7, ISO-8859-7, ELOT_928, ECMA-118, greek, greek8, csISOLatinGreek</td>
</tr>
<tr>
<td>28599</td>
<td>Turkish (ISO)</td>
<td>iso-8859-9</td>
<td>ISO_8859-9:1989, iso-ir-148, ISO_8859-9, ISO-8859-9, latin5, l5, csISOLatin5</td>
</tr>
</tbody>
</table>
<br />
(*) except when 128-159 is used, use <i>Windows-1252</i>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-78155149400613958832018-09-24T10:41:00.001+02:002018-09-24T10:41:54.098+02:00Debian under Windows 10: Mount/UmountDebian GNU/Linux is available for Windows users through the Windows store as an app for the Windows Subsystem for Linux (WSL). That works quite nicely but, USB drives can be a bit annoying to use - there is no automatic mounting.<br />
<br />
To facilitate mounting/unmounting these drives I wrote two BASH functions that take a device letter (it does not matter if you use uppercase or lowercase) as an argument.<br />
<br />
<ul>
<li>wmount mounts the drive (and generates a mount point if necessary).</li>
<li>wumount unmounts the drive (and keeps the mount point for later use)</li>
</ul>
Maybe you have some use for these functions<br />
<br />
<pre>wmount () {
if [[ $# -ne 1 || ! ($1 =~ [a-zA-Z]) ]]; then
echo Usage $0 [drive_letter]
return 1
fi
drive_letter=$(echo $1|tr '[:lower:]' '[:upper:]')
mount_dir="/mnt/$(echo $1|tr '[:upper:]' '[:lower:]')"
if [[ ! -d $mount_dir ]]; then
sudo mkdir $mount_dir
fi
sudo mount -t drvfs $drive_letter: $mount_dir
}
wumount () {
if [[ $# -ne 1 || ! ($1 =~ [a-zA-Z]) ]]; then
echo Usage $0 [drive_letter]
return 1
fi
mount_dir="/mnt/$(echo $1|tr '[:upper:]' '[:lower:]')"
if [[ -d $mount_dir ]]; then
grep -qs "$mount_dir " /proc/mounts
if [[ $? ]]; then
sudo umount $mount_dir
fi
fi
}
</pre>
ldsajffdUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-66958441845639273682017-02-10T21:47:00.000+01:002017-07-29T22:37:33.811+02:00GNU/Linux shell: A bit of randomFrom a number of different tasks of equal priority listed in a file (for the sake of argument listed in the lines 123 through 321) I wanted to choose the next one to perform in a random manner using ordinary shell tools. I came up with this solution:
<br />
<pre> seq 123 312 | sort -R | head -1
</pre>
This generates a sequence from 123 through 321, sorts it in a random manner and prints the first number of the randomized list.<br />
<br />
This solution neither generates cryptographic random numbers nor saves memory or CPU time but it is straightforward and does the job at hand without any fancy tools or tricks. Perhaps you like it.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-70048657132967621372017-01-26T13:28:00.001+01:002017-01-26T13:28:08.329+01:00My Polar Sea Ice Page may soon be dysfunctional thanks to TrumpIf Donald Trump goes on with his War on Truth, he will likely drain the source I tap with my page. I use data provided by the US National Snow & Ice Data Center and it is very likely that Trump will do anything he can to stop them from providing current data about the sea ice coverage. For the very simple reason that the plain data alone already clearly shows that the world's climate is going haywire. This is because the Arctic and Antarctic region is hit hardest by climate change in terms.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-58872012018968803132016-12-11T19:56:00.001+01:002016-12-11T19:56:53.287+01:00Interactive Maps and JavaScript<p>There are two major libraries for displaying interactive maps using JavaScript.</p>
<ul>
<li><b><a href="http://leafletjs.com/">Leaflet</a></b> is quite easy to use, yet powerful enough for many if not most applications.</li>
<li><b><a href="https://openlayers.org/">OpenLayers</a> 3</b> has more features but requires you to learn more before you can use it.</li>
</ul>
<p>
OpenLayers is used at our company to provide an application that is used in a number of locations, namely for the <strong><a href="http://www.cologne.de/city-map.html">map of Cologne</a></strong> (at <a href="http://www.cologne.de/">www.cologne.de</a>). Seems as if they don't update their English pages that regularly, koeln.de is updated considerably more frequently.
</p>
<p>
Anyway, for a private project I use Leaflet instead. It visualizes the location of the <strong><a href="https://en.wikipedia.org/wiki/Stolperstein">Stolpersteins</a></strong> in Bonn and the nearby region. You can find it at <strong><a href="http://stolpersteine.codeforbonn.de">stolpersteine.codeforbonn.de</a></strong>. It is part of the <strong><a href="http://codeforbonn.de">Code for Bonn</a></strong> project which in turn is part of the <strong><a href="http://codefor.de">Code for Germany</a></strong> project, the German twin of <strong><a href="https://www.codeforamerica.org">Code for America</a></strong>.
</p>
<p>
The stolpersteins shown are taken directly from the OpenStreetMap database so adding a new stolperstein to the database means improving OpenStreetMap.
</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-54708085893048253122016-12-11T19:06:00.000+01:002016-12-11T19:06:45.009+01:00Math in the World of HTML and JavaScript<script src='https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
</script>
At work I use a lot of JavaScript as our company (among other products) offers a map client that runs in browsers. As a side effect I frequently come across interesing JavaScript libraries. I find worth sharing. Here is an example of using JavaScript to display math formulas in a nicely formatted manner.
To give an example, Einstein's famous formula will look like this:
<p align="center">
$E=mc^2$
</p>
The library used for this display is <strong><a href="https://www.mathjax.org/">MathJax</a></strong>. It should be sufficient for everything formula you reasonably expect on a website that does not dig deep into natural sciences or mathemtatics. In most cases it should even suffice for these fields of application. Here is a slightly odder example:
<p align="center">
$U^{ik} = \frac{c_g^2}{4\pi G} = \left(-g^{im} \Phi_{mr}\Phi^{rk} + \frac{1}{4} g^{ik}\Phi_{rm}\Phi^{mr} \right), \quad -\nabla_\beta U^{\alpha\beta} = \Phi_k^\alpha J^k$
</p>
Well, maybe we better say it should be sufficient for almost any application ;-)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-68953859118627718332016-04-08T21:47:00.001+02:002016-04-08T21:47:15.599+02:00A cute little bluetooth keyboard<p dir="ltr">I finally have one.</p>
<p dir="ltr">万歳🙌!<br>
万歳🙌!<br>
万歳🙌!</p>
<div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5Dv8MgMAztyaJu3pneVh8bjYWkDJSlC9oeXMnKQ8Uu1j0Vo-g4c_jjfTAM0hq_7bdB1P81MJPl2RMMycVT6N2mPYXUGBPNVSEnQkNHBtTkcs2tzo2ke3TCmACmmgB8xAeWC1Dv_NFCYwDaK0/s1600/download77761ce8__2fstorage_2fsdcard1_2fDCIM_2fCamera_2fIMG_20160408_213656.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"> <img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5Dv8MgMAztyaJu3pneVh8bjYWkDJSlC9oeXMnKQ8Uu1j0Vo-g4c_jjfTAM0hq_7bdB1P81MJPl2RMMycVT6N2mPYXUGBPNVSEnQkNHBtTkcs2tzo2ke3TCmACmmgB8xAeWC1Dv_NFCYwDaK0/s640/download77761ce8__2fstorage_2fsdcard1_2fDCIM_2fCamera_2fIMG_20160408_213656.jpg"> </a> </div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-35331248681985756372016-04-06T20:23:00.001+02:002016-04-06T20:24:07.836+02:00Odd Marlboro ad<p dir="ltr">So true.</p>
<div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-JIgevRCoeYZNz7gadDjBgLHHIrdLK4nRcKdIiuy8kHcV8C2I_74nBK1QN8BKG0tGWYg1PMjI_xAr1iRx4Ys9uqcirv-XaZcLiyyJ_Qi7tzz8aqtr_84cgDC9G3SMA7L3wpDZpuOUmPgccMs/s1600/IMG_20160323_081747.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"> <img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-JIgevRCoeYZNz7gadDjBgLHHIrdLK4nRcKdIiuy8kHcV8C2I_74nBK1QN8BKG0tGWYg1PMjI_xAr1iRx4Ys9uqcirv-XaZcLiyyJ_Qi7tzz8aqtr_84cgDC9G3SMA7L3wpDZpuOUmPgccMs/s640/IMG_20160323_081747.jpg"> </a> </div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-64217786558385712172016-04-06T20:16:00.001+02:002016-04-06T20:16:50.118+02:00Hanami 2016 in Bonn<p dir="ltr">Almost in front of the house I live in 😀</p>
<div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivIMb_Ck_E_v9YTs3nKCg2_5U00KWYl3LHmFDM8t9pUEOXIuUnG-quqARWx2dZ9AGZpaz_eXNIC6ScQ7ni0t9qnxsyaFIahSBJ_ACic3HINA8D6a_rjjm6pBy22MGePip3V70x9ScnTodphLE/s1600/IMG_20160404_180415.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"> <img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivIMb_Ck_E_v9YTs3nKCg2_5U00KWYl3LHmFDM8t9pUEOXIuUnG-quqARWx2dZ9AGZpaz_eXNIC6ScQ7ni0t9qnxsyaFIahSBJ_ACic3HINA8D6a_rjjm6pBy22MGePip3V70x9ScnTodphLE/s640/IMG_20160404_180415.jpg"> </a> </div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-67713904011191755962016-03-31T11:31:00.001+02:002016-03-31T11:31:41.154+02:00Removal of Firefox and Thunderbird Plugin pagesThe content on these pages had become quite outdated and it is very unlikely that I will find time to update them any time soon. I therefore decided to remove them altogether.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-20948064462388843382015-09-16T10:39:00.000+02:002015-09-16T10:39:46.125+02:00The Sorrows of Young OSM User<a href="http://www.openstreetmap.org/">OpenStreetMap</a> (<a href="http://osm.org/">OSM </a>for short) is a web site that not only displays maps but also provides access to the database from which these maps are rendered. So far, so good.<br />
<br />
Our company now came up with the idea that given a street name and a region where the street is located (around the globe there are tons of streets that go by the name <i>"main street"</i>) we use the <a href="http://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide">Overpass API</a> to query the ways that make up these streets.<br />
<br />
The plural <i>streets</i> reflects an important issue: Even within a single city there may be several streets that go by identical names.<br />
<br />
<a href="https://en.wikipedia.org/wiki/Radio_Yerevan_jokes">In principle</a> this can be achieved assuming that the user is young enough not to die of old age before the query yields a result.<br />
<br />
We looked into alternative ways for directly fetching data from OSM but all either turned out to be too slow or simply not up to the task.<br />
<br />
It seems as if the only feasible way is to have two server tasks:<br />
<ol>
<li>One that fetches the data from OSM.</li>
<li>One that provides the full path via an API.</li>
</ol>
The point is that there are still three possible ways of implementing the first server task.<br />
<ol>
<li>To have a job that is triggered at certain times and that imports the data.</li>
<li>To have let the server operate as some sort of caching proxy for the data.</li>
<li>To have a mix of the two previous solutions.</li>
</ol>
My idea is as follows:<br />
<ol>
<li>Initially the server's database is populated using an appropriate import feature.</li>
<li>If a request occurs it is checked whether the requested data is in the database and is not outdated (with a reasonable definition of <i>to be outdated </i>that does not require a request to OSM).</li>
<li>If the server's data is outdated an updated version is requested from OSM. This can yield two results:
<ol>
<li>The query can quickly return the current information. In this case the data is stored in the server's database and delivered to the user.</li>
<li>The query does not return the result within a reasonable time. In this case the server returns the data that is stored locally. Chances are very good that the outdated data still is a reasonable approximation of the most recent data. This case has two subcases:
<ol>
<li>The query simply takes too long but still returns a result. In this case the returned data is used to update the database.</li>
<li>The query times out and does not return a result. In this case the outdated data is kept.</li>
</ol>
</li>
</ol>
</li>
<li>Every now and then the server checks which data is most outdated and tries to obtain these data.</li>
</ol>
Comments?<ol>
</ol>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-17833462697150522512015-03-16T20:19:00.000+01:002015-03-16T20:19:29.332+01:00It's been a long timeI haven't been posting here for eons. Hopefully that will change for the better :-)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-20606346306786905612014-04-07T12:58:00.003+02:002014-04-07T12:59:20.493+02:00Polar Ice Page UpdateSo I updated the <a href="http://fridge-dweller.blogspot.de/p/polar-sea-ice.html">polar sea ice page</a> once again. Note the ever growing area of sea ice on the Southern hemisphere.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-40392507678848024462014-01-17T16:59:00.000+01:002014-01-17T16:59:31.015+01:00PDF to animated GIFIn order to illustrate how fragmentation occurs, I created a <a href="https://drive.google.com/file/d/0B3MC1sJm9YJTVkQ5blM5c2xvZ28/edit?usp=sharing">PDF document</a> (<b>Fragmentierung.pdf</b>) with one page for each step of the fragmentation.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWp4G8YUPKO4d0s2sUwTxy3AKRXbPhJpIqnm17hQfJZuPkGeWxIzS3XLfcQ1VnqtnI1RynnYFF3OAGOa3ZUfLtCld5xwFsLBbjVzCSqIL-q5FJyo5NcnXm9qqgsG_IXTCsEnzyi9gDoN4PD0k/s1600/shot01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWp4G8YUPKO4d0s2sUwTxy3AKRXbPhJpIqnm17hQfJZuPkGeWxIzS3XLfcQ1VnqtnI1RynnYFF3OAGOa3ZUfLtCld5xwFsLBbjVzCSqIL-q5FJyo5NcnXm9qqgsG_IXTCsEnzyi9gDoN4PD0k/s1600/shot01.png" /></a></div>
<br />
This is how I converted it to an animated GIF. The first step was to create a series of PPM files, one file for each page. The option <b>-r 384</b> sets the resolution to 384 dpi. This somewhat odd resolution is four times 96 dpi which in turn is the resolution of the PDF being converted.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvQzECmduZt_5mKL5wS11xEtPr0qzSmXDG3URwOzi5Rg8A3lPRg7HW9jnfuhBhM44DzGhGUcj6ZmrePHA4py5ysEFUbdpD5GOxSYBL6rBNVBFurXQkM3FPU7G4Y3oAuoRQt9cgxxxFGEZxzro/s1600/shot02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvQzECmduZt_5mKL5wS11xEtPr0qzSmXDG3URwOzi5Rg8A3lPRg7HW9jnfuhBhM44DzGhGUcj6ZmrePHA4py5ysEFUbdpD5GOxSYBL6rBNVBFurXQkM3FPU7G4Y3oAuoRQt9cgxxxFGEZxzro/s1600/shot02.png" /></a></div>
<br />
The pdftoppm command generates files that are numbered.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEZRSx6VLRubjbAeMvsygUGUmDIVv8ygiuRYintyqH2Qy9kkVrUPjotim_AjxnyHmbZa83k2MhCfwzhErg_obNjxoFvFVxRLVXXknodxzIkL7VAHJuuAYI6taz7sdHwH_HWa-Whg_OCL-XEPM/s1600/shot03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEZRSx6VLRubjbAeMvsygUGUmDIVv8ygiuRYintyqH2Qy9kkVrUPjotim_AjxnyHmbZa83k2MhCfwzhErg_obNjxoFvFVxRLVXXknodxzIkL7VAHJuuAYI6taz7sdHwH_HWa-Whg_OCL-XEPM/s1600/shot03.png" /></a></div>
<br />
The files resulting from this conversation are huge in both display and storage size so the next step is to rescale them to a reasonable resolution. My choice was a width of 800 times 600. the for loop iterates over all PPM files, the output of the pamscale command sent to a file with a name based on the original file name using the shell's own capability to process strings. Finally, the <b>--filter</b> option controls how precisely the original high-resolution image is mapped to the low resolution one.<br />
<br />
Let's assume the original file name is <i><b>Fragmentierung-1.ppm</b></i>. Then <b>${i%.ppm}</b> yields <b><i>Fragmentierung-1</i></b> and <b>${i%.ppm}_new.ppm</b> results in <b><i>Fragmentierung-1_new.ppm</i></b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgteveQGerPXGij9b8ClzbKvHVEZcVcy1JZwr17PTEExBz0XptNKlVkK4XDk9w5dP-dMZXBdPEDlFwRjjEXgH7ksW15uZhHS3z_6vMzEK51oE7DZZv6UoPKe96Sd7NwqQwKhelmfWXW9zYkcmE/s1600/shot04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgteveQGerPXGij9b8ClzbKvHVEZcVcy1JZwr17PTEExBz0XptNKlVkK4XDk9w5dP-dMZXBdPEDlFwRjjEXgH7ksW15uZhHS3z_6vMzEK51oE7DZZv6UoPKe96Sd7NwqQwKhelmfWXW9zYkcmE/s1600/shot04.png" /></a></div>
<br />
The result of this command - which on my old machine requires a considerable amount of time - is a new series of files that are considerably smaller than the original ones.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh27vE3ld22U3TFpcrTccIykKrj9q0SAVk7fQF7RRzvekur2wqHPZd8hn9vEqctvx5e5c9VxA4rUHcpQPB24v43EzGjHf09mIma7yz1H62DS0OpXNzP9PO7Qgl5-BRN9-4aPszZpwK2BBGdqTQ/s1600/shot05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh27vE3ld22U3TFpcrTccIykKrj9q0SAVk7fQF7RRzvekur2wqHPZd8hn9vEqctvx5e5c9VxA4rUHcpQPB24v43EzGjHf09mIma7yz1H62DS0OpXNzP9PO7Qgl5-BRN9-4aPszZpwK2BBGdqTQ/s1600/shot05.png" /></a></div>
<br />
As the old files are no longer needed, I replace them with the corresponding new ones.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEictsC9-3l07qKGFPU7BSmljRi2mAjAk-4O0Ym97gQclHB2CJUI2SqKOMBo_uBiEvy79gJ-cfiIyxgimistq_AsfFKBRuIZGEc-nhkNCQjEsv7khUppVGjwkjVGR8kSyOVhZng33F5__UdmNx4/s1600/shot06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEictsC9-3l07qKGFPU7BSmljRi2mAjAk-4O0Ym97gQclHB2CJUI2SqKOMBo_uBiEvy79gJ-cfiIyxgimistq_AsfFKBRuIZGEc-nhkNCQjEsv7khUppVGjwkjVGR8kSyOVhZng33F5__UdmNx4/s1600/shot06.png" /></a></div>
<br />
Now we have ppm files of the right size that are simply numbered.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGEQ-ZxUXFJmObddwErgkmx436ZeVO9ACe66mHFHFfRP_NQedKT-2Dw-Ja_VZjJkFoDK7pzfsS7xCivnJ1PMwymaRh7dbrWP_vaXb7KjOLfqvlPuIMifK7o9M7e_tc7G9I_XgYWi_F1AP_ec0/s1600/shot07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGEQ-ZxUXFJmObddwErgkmx436ZeVO9ACe66mHFHFfRP_NQedKT-2Dw-Ja_VZjJkFoDK7pzfsS7xCivnJ1PMwymaRh7dbrWP_vaXb7KjOLfqvlPuIMifK7o9M7e_tc7G9I_XgYWi_F1AP_ec0/s1600/shot07.png" /></a></div>
<br />
The PPM files usually have more than 256 colors (which is the maximum for GIFs). For this reason I use <b>pnmcolormap</b> to generate colormaps for the individual files that have no more than 256 colors.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYrcA49xEU9Bj75nZPiIn9BUhGvCneV30obpcjBmgB2n83nlCEwa5QLT6FpbxxqlPwing36j4D2RY4KZ1uBFM7s5SLOCaaef8SGR54EsH58blMD7hMocF4kcgGVigEQRq15BjcxyHcx-vGWvI/s1600/shot08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYrcA49xEU9Bj75nZPiIn9BUhGvCneV30obpcjBmgB2n83nlCEwa5QLT6FpbxxqlPwing36j4D2RY4KZ1uBFM7s5SLOCaaef8SGR54EsH58blMD7hMocF4kcgGVigEQRq15BjcxyHcx-vGWvI/s1600/shot08.png" /></a></div>
<br />
This command results in tons of diagnostics output created by pnmcolormap.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-6F4Y0OskRyccB0Bvl1zXfGS7x7_KLRX1zNIJrZg1lAeOE0GEIciLWlxqiutjkxehmALhXaAFNqXIbFHXBst-Qs3eLShoIA4yBNscrKRlhm7tKPPWClz4MKXXqMhLpis7YCp6G-AkDK6c4i0/s1600/shot09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-6F4Y0OskRyccB0Bvl1zXfGS7x7_KLRX1zNIJrZg1lAeOE0GEIciLWlxqiutjkxehmALhXaAFNqXIbFHXBst-Qs3eLShoIA4yBNscrKRlhm7tKPPWClz4MKXXqMhLpis7YCp6G-AkDK6c4i0/s1600/shot09.png" /></a></div>
<br />
The next command performs two tasks at the same time: <b>pnmremap</b> uses the colormap to map the original colors to no more than 256 with the <b>-fs</b> option making sure that Floyd-Steinberg dithering is used. Then the output converted to GIF formatusing <b>ppmtogif</b> and is written to a file with the file name extension <b><i>.gif</i></b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwJJ22S2VUQDWk-5BAgJbg89IY4cRLRpDJEokeEZY4yzPlOk42gNeESeSvFh4Mt0r782D260vqMoUG3uAPDMB6HQ2apctlqjFLr3SqG6yyOvhXRzN9mhiF3J3J3YH8H7YG3idFLCaLp8z4pDE/s1600/shot10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwJJ22S2VUQDWk-5BAgJbg89IY4cRLRpDJEokeEZY4yzPlOk42gNeESeSvFh4Mt0r782D260vqMoUG3uAPDMB6HQ2apctlqjFLr3SqG6yyOvhXRzN9mhiF3J3J3YH8H7YG3idFLCaLp8z4pDE/s1600/shot10.png" /></a></div>
<br />
In this case both commands are a bit chatty so you again get lots of output.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6vSA-o4dU3mCI00ARFr1e8wOqE01RxUG0SvuFHoWukBsjlfLk0-n9Yl2IA2qgRTuPOiiHVTfpNO-9gw7xDLO4FEa96twcWbS2HFwL4Y-59WcYM-RD0htyl2FbR4zqQ6Khqh9UUj7SFZCIZHo/s1600/shot11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6vSA-o4dU3mCI00ARFr1e8wOqE01RxUG0SvuFHoWukBsjlfLk0-n9Yl2IA2qgRTuPOiiHVTfpNO-9gw7xDLO4FEa96twcWbS2HFwL4Y-59WcYM-RD0htyl2FbR4zqQ6Khqh9UUj7SFZCIZHo/s1600/shot11.png" /></a></div>
<br />
Now we are almost done as we have a set of GIF files.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFg2eFrSdMt2nzbDp881YGIcme7vIo_dz8VOszEPKsOpsdeDAVJvQs-_mYmlYHoI5PdZdq6vc7iWPRKPD80ynk-7mtpgAw0PDejitRIw6bbQPRKA2gZzFOInpwT7e2X775kiAk0mSBJKyJp0A/s1600/shot12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFg2eFrSdMt2nzbDp881YGIcme7vIo_dz8VOszEPKsOpsdeDAVJvQs-_mYmlYHoI5PdZdq6vc7iWPRKPD80ynk-7mtpgAw0PDejitRIw6bbQPRKA2gZzFOInpwT7e2X775kiAk0mSBJKyJp0A/s1600/shot12.png" /></a></div>
<br />
Just discard all the intermediary files. The next command looks complicated like hell but it isn't. <b>gifsicle</b> generates an animated GIF from a number of input files that need to be in GIF format.<br />
<br />
<ul>
<li><b>--loopcount=forever</b> makes the animation loop forever (i.e. after displaying the last frame of the animation it always restarts with the first one)</li>
<li><b>--optimize=2</b> optimizes the generated file as much as possible (without this option the file gets even bigger)</li>
<li><b>--colors=256</b> makes sure that the generated file has no more than 256 colors. This may seem superflous as each input file already has no more than 256 colors but the colors may happen to be different so that the overall number can be larger than 256.</li>
</ul>
<br />
The most important part of the command is the <b>--delay</b> options. If you provide this option, it applies to each image that follows up to the next command. Hence, in this case the first delay of 3 seconds applies to <b>Fragmentierung-1.gif</b> only, the delay of 1 seconds to <b>Fragmentierung-2.gif</b> through <b>Fragmentierung-8.gif</b> and the second delay of 3 seconds to <b>Fragmentierung-9.gif</b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMLOjh81JfFzyoNUIkp_LjJbdDp0hPZzGF6lOLZpT-YZZf45O6f3GnpTuezesY1LTr6zHkvL7_c9zU3_uCtz1VbKkinGUa7-e-6BFOSEkPpa6nLicqO-HT2FJsrQ_1eWvBtb8LJaBgx0YfUvU/s1600/shot13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMLOjh81JfFzyoNUIkp_LjJbdDp0hPZzGF6lOLZpT-YZZf45O6f3GnpTuezesY1LTr6zHkvL7_c9zU3_uCtz1VbKkinGUa7-e-6BFOSEkPpa6nLicqO-HT2FJsrQ_1eWvBtb8LJaBgx0YfUvU/s1600/shot13.png" /></a></div>
<br />
Finally done. Here is the animated gif that results from this effort.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAbZrsqkkgVV7NbmHBqq9RY-_tt0pz8C6uFDfYHMssG8iuY9fbdhbUwXVlaDs4KunBTgCDaNBvpePhTOdV69p94VRuLlHk-6cFUsG3boCh-W8f1mjT54ffRvKbu0q5xgMZvW_HmPdoLtMfzWA/s1600/Fragmentierung.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAbZrsqkkgVV7NbmHBqq9RY-_tt0pz8C6uFDfYHMssG8iuY9fbdhbUwXVlaDs4KunBTgCDaNBvpePhTOdV69p94VRuLlHk-6cFUsG3boCh-W8f1mjT54ffRvKbu0q5xgMZvW_HmPdoLtMfzWA/s1600/Fragmentierung.gif" height="480" width="640" /></a></div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-2462970241970387842013-11-29T11:48:00.001+01:002013-11-29T11:48:16.525+01:00Katyusha (Катюша)I am a huge fan of <a href="http://www.igorpresnyakov.com/">Igor Presnyakov</a> and what he does to/with his acoustic guitar.<br />
<br />
Hear him perform the Russian song Katyusha (Катюша)<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/XD7z8VPmPBQ?feature=player_embedded' frameborder='0'></iframe></div><br />
<br />
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-32913268905774012802012-09-24T02:24:00.001+02:002012-09-24T02:24:56.936+02:00Distances from BonnI came up with the strange idea of sorting European capitals by how far they are from the town I live in (Bonn, Germany) and found that half a dozen of foreign capitals are nearer than the capital of Germany.<br />
<br />
<table>
<thead>
<tr>
<th>City</th>
<th>Country</th>
<th>Distance in km</th>
</tr>
</thead>
<tbody>
<tr>
<td>Luxembourg City</td>
<td>Luxembourg</td>
<td>142</td>
</tr>
<tr>
<td>City of Brussels</td>
<td>Belgium</td>
<td>195</td>
</tr>
<tr>
<td>Amsterdam</td>
<td>Netherlands</td>
<td>234</td>
</tr>
<tr>
<td>Paris</td>
<td>France</td>
<td>400</td>
</tr>
<tr>
<td>Bern</td>
<td>Switzerland</td>
<td>425</td>
</tr>
<tr>
<td>Vaduz</td>
<td>Liechtenstein</td>
<td>437</td>
</tr>
<tr>
<td><b><u>Berlin</u></b></td>
<td><b><u>Germany</u></b></td>
<td><u><b>478</b></u></td>
</tr>
<tr>
<td>London</td>
<td>United Kingdom</td>
<td>510</td>
</tr>
<tr>
<td>Prague</td>
<td>Czech Republic</td>
<td>527</td>
</tr>
<tr>
<td>Copenhagen</td>
<td>Denmark</td>
<td>659</td>
</tr>
<tr>
<td>Vienna</td>
<td>Austria</td>
<td>726</td>
</tr>
<tr>
<td>Ljubljana</td>
<td>Slovenia</td>
<td>755</td>
</tr>
<tr>
<td>Bratislava</td>
<td>Slovakia</td>
<td>779</td>
</tr>
<tr>
<td>Monaco</td>
<td>Monaco</td>
<td>779</td>
</tr>
<tr>
<td>City of San Marino</td>
<td>San Marino</td>
<td>857</td>
</tr>
<tr>
<td>Zagreb</td>
<td>Croatia</td>
<td>857</td>
</tr>
<tr>
<td>Budapest</td>
<td>Hungary</td>
<td>942</td>
</tr>
<tr>
<td>Dublin</td>
<td>Republic of Ireland</td>
<td>957</td>
</tr>
<tr>
<td>Warsaw</td>
<td>Poland</td>
<td>976</td>
</tr>
<tr>
<td>Oslo</td>
<td>Norway</td>
<td>1047</td>
</tr>
<tr>
<td>Rome</td>
<td>Italy</td>
<td>1065</td>
</tr>
<tr>
<td>Vatican City</td>
<td>Vatican City</td>
<td>1065</td>
</tr>
<tr>
<td>Sarajevo</td>
<td>Bosnia and Herzegovina</td>
<td>1143</td>
</tr>
<tr>
<td>Stockholm</td>
<td>Sweden</td>
<td>1181</td>
</tr>
<tr>
<td>Belgrade</td>
<td>Serbia</td>
<td>1195</td>
</tr>
<tr>
<td>Vilnius</td>
<td>Lithuania</td>
<td>1300</td>
</tr>
<tr>
<td>Riga</td>
<td>Latvia</td>
<td>1308</td>
</tr>
<tr>
<td>Podgorica</td>
<td>Montenegro</td>
<td>1347</td>
</tr>
<tr>
<td>Madrid</td>
<td>Spain</td>
<td>1421</td>
</tr>
<tr>
<td>Minsk</td>
<td>Belarus</td>
<td>1430</td>
</tr>
<tr>
<td>Tirana</td>
<td>Albania</td>
<td>1432</td>
</tr>
<tr>
<td>Ankara</td>
<td>Turkey</td>
<td>1447</td>
</tr>
<tr>
<td>Skopje</td>
<td>Macedonia</td>
<td>1463</td>
</tr>
<tr>
<td>Tallinn</td>
<td>Estonia</td>
<td>1474</td>
</tr>
<tr>
<td>Sofia</td>
<td>Bulgaria</td>
<td>1522</td>
</tr>
<tr>
<td>Helsinki</td>
<td>Finland</td>
<td>1530</td>
</tr>
<tr>
<td>Bucharest</td>
<td>Romania</td>
<td>1583</td>
</tr>
<tr>
<td>Chişinău</td>
<td>Moldova</td>
<td>1639</td>
</tr>
<tr>
<td>Kiev</td>
<td>Ukraine</td>
<td>1648</td>
</tr>
<tr>
<td>Valletta</td>
<td>Malta</td>
<td>1745</td>
</tr>
<tr>
<td>Lisbon</td>
<td>Portugal</td>
<td>1845</td>
</tr>
<tr>
<td>Athens</td>
<td>Greece</td>
<td>1931</td>
</tr>
<tr>
<td>Moscow</td>
<td>Russia</td>
<td>2086</td>
</tr>
<tr>
<td>Reykjavík</td>
<td>Iceland</td>
<td>2257</td>
</tr>
<tr>
<td>Tbilisi</td>
<td>Georgia</td>
<td>3034</td>
</tr>
<tr>
<td>Yerevan</td>
<td>Armenia</td>
<td>3106</td>
</tr>
<tr>
<td>Baku</td>
<td>Azerbaijan</td>
<td>3469</td>
</tr>
</tbody></table>
<br />
If you find this idea interesting what about composing a similar table for the location you live in?Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-4823806858036614077.post-8795961554375905292012-09-19T23:55:00.000+02:002012-09-19T23:55:31.225+02:00Obtaining Tweeted Images in Original SizeAn increasing number of tweets contains images uploded to twitter. Here is one example:<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirX0ReVP70ceHilC7W_kYANzw4ECJYuI5QnUqUk6egvHRprcK5j7svD6mah_mtWSzwAWbmR7NsOAUOTJL_jLjdWVXZnuM6qyhqA6YBX5HFYfXfTsFtZ8YWhnGtCcDBvbaeZvDJ8BnORqi3teU/s1600/corruption.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirX0ReVP70ceHilC7W_kYANzw4ECJYuI5QnUqUk6egvHRprcK5j7svD6mah_mtWSzwAWbmR7NsOAUOTJL_jLjdWVXZnuM6qyhqA6YBX5HFYfXfTsFtZ8YWhnGtCcDBvbaeZvDJ8BnORqi3teU/s1600/corruption.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="https://twitter.com/penpendede/status/234278041256353793">A particular example</a></td></tr>
</tbody></table>
<br />
I assume that you know how to find out URLs of images that are used on a web page. <br />
<br />
The URL of the image you see in the tweet is <a href="https://pbs.twimg.com/media/A0BRGqGCcAEBdHW.jpg">https://pbs.twimg.com/media/A0BRGqGCcAEBdHW.jpg</a> with the dimensions 600px × 428px (scaled to 435px × 310px).<br />
<br />
If you click on the image to obtain a larger version you are presented with <a href="https://pbs.twimg.com/media/A0BRGqGCcAEBdHW.jpg:large">https://pbs.twimg.com/media/A0BRGqGCcAEBdHW.jpg:large</a> with the dimensions 1,024px × 730px. This still isn't the original image.<br />
<br />
I then made a well-educated guess and tried<br /><a href="https://pbs.twimg.com/media/A0BRGqGCcAEBdHW.jpg:orig">https://pbs.twimg.com/media/A0BRGqGCcAEBdHW.jpg:orig</a> and it actually worked; I got the original size image with dimensions 2,048px × 1,460px.<br />
<br />
So all you need to do to obtain an original size image is to append »<b>:orig</b>« to the URL of the small version of the image.<br />
<br />
Note that this only works for images uploaded to twitter not for images hosted on flickr.<br />
<br />
Here is one example: <a href="https://twitter.com/VirtualAstro/status/241683461155475456">https://twitter.com/VirtualAstro/status/241683461155475456</a> shows a nice photo of a blue moon; the 3 MP image can be found at <a href="https://pbs.twimg.com/media/A1qS3JvCQAE0QPv.jpg:orig">https://pbs.twimg.com/media/A1qS3JvCQAE0QPv.jpg:orig</a>Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-4823806858036614077.post-14951137794375347482012-09-02T21:57:00.000+02:002012-09-02T22:02:32.022+02:00Polar Sea Ice Page UpdatedI had to update the Polar Sea Ice page because it referred to the record ice extent as data of 2007 while in reality the record extents (minimum in the Arctic, maximum in the Antarctic) are currently being updated every day (as of writing this on 2012-09-02).<br />
<br />
I originally did not expect this to become necessary so soon. The reason for this misjudgement of mine is the Atlantic Multi-decadal Oscillation. Back in 2008 I learned that it should currently be counteracting the effect of global warming on the Arctic region.<br />
<br />
<a href="http://news.bbc.co.uk/2/hi/7376301.stm" title="Next decade 'may see no warming'">A BBC article of 2008-05-01</a> puts it like that:<br />
<blockquote class="tr_bq">
<b>The Earth's temperature may stay roughly the same for a decade,</b> as natural climate cycles enter a cooling phase … A new computer model … suggests the cooling will counter greenhouse warming. However, <b>temperatures will again be rising quickly by about 2020 …</b></blockquote>
In contrast, <a href="http://www.bbc.co.uk/news/science-environment-19393075">a recent BBC article (2012-08-27)</a> has this to say:
<br />
<blockquote class="tr_bq">
A recent <a href="http://www.reading.ac.uk/news-and-events/releases/PR457684.aspx">paper from Reading University</a> … [estimated] that between <b>5-30% of the recent ice loss was due to Atlantic Multi-decadal Oscillation</b> - a natural climate cycle repeating every 65-80 years. It's
been in warm phase since the mid 1970s.</blockquote>
Allow me to call this difference in description a little strange.<br />
<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;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/yNz90hposi0?feature=player_embedded' frameborder='0'></iframe></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="http://www.youtube.com/watch?v=yNz90hposi0">NASA: Arctic sea ice reaches record low</a></td></tr>
</tbody></table>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-3306239299262711672012-03-06T00:13:00.000+01:002012-03-06T00:13:27.557+01:00Asteroids Missing Earth: What Means “Close Call”?Every now and then you read about asteroids passing Earth in a certain distance but nobody gives you a feeling of how close such an encounter is. Allow me to fill in this gap.<br />
<br />
Say an asteroid passes in a distance x from Earth, the radius of which we will call r. We now can ask how likely it is that an object that hits a disk of radius r+x also hits a disk of radius r provided that it any point on the larger disk is hit with equal likelihood.<br />
<br />
The likelihood then is p = A(r)/A(r+x) where A is the area of a disk of the given radius, In other words p = πr²/π(r+x)² = 1/(1+x/r)². If we now define ξ=x/r (which is the distance in units of Earth's radius we get a quite simple formula: p = 1/(1+ξ)².<br />
<br />
Using ξ is advantageous as it is a value you actually find in tables. Let’s try a couple of values; LD means Lunar distance and is the distance in terms of the average distance between Earth and Moon:<br />
<br />
<table class="border">
<thead>
<tr>
<th colspan="2">Distance in</th><th rowspan="2">ξ</th><th rowspan="2">p in %</th>
</tr>
<tr>
<th>LD</th><th>km</th>
</tr>
</thead>
<tbody>
<tr>
<td style="font-family: monospace;">1.65614</td><td style="font-family: monospace;">636619.77</td><td style="font-family: monospace;">100</td><td style="font-family: monospace;"> 0.098</td>
</tr>
<tr>
<td style="font-family: monospace;">0.49684</td><td style="font-family: monospace;">190985.93</td><td style="font-family: monospace;"> 30</td><td style="font-family: monospace;"> 0.104</td>
</tr>
<tr>
<td style="font-family: monospace;">0.16561</td><td style="font-family: monospace;"> 63661.98</td><td style="font-family: monospace;"> 10</td><td style="font-family: monospace;"> 0.826</td>
</tr>
<tr>
<td style="font-family: monospace;">0.04968</td><td style="font-family: monospace;"> 19098.59</td><td style="font-family: monospace;"> 3</td><td style="font-family: monospace;"> 6.250</td>
</tr>
<tr>
<td style="font-family: monospace;">0.01656</td><td style="font-family: monospace;"> 6366.20</td><td style="font-family: monospace;"> 1</td><td style="font-family: monospace;">25.000</td>
</tr>
<tr>
<td style="font-family: monospace;">0.00497</td><td style="font-family: monospace;"> 1909.86</td><td style="font-family: monospace;"> 0.3</td><td style="font-family: monospace;">59.172</td>
</tr>
<tr>
<td style="font-family: monospace;">0.00166</td><td style="font-family: monospace;"> 636.62</td><td style="font-family: monospace;"> 0.1</td><td style="font-family: monospace;">82.645</td>
</tr>
<tr>
<td style="font-family: monospace;">0.00050</td><td style="font-family: monospace;"> 190.99</td><td style="font-family: monospace;"> 0.03</td><td style="font-family: monospace;">94.260</td>
</tr>
<tr>
<td style="font-family: monospace;">0.00017</td><td style="font-family: monospace;"> 63.66</td><td style="font-family: monospace;"> 0.01</td><td style="font-family: monospace;">98.030</td>
</tr>
</tbody>
</table>
<br />
Please note that the closer an encounter is the less meaningless this rough estimate becomes as the asteroid by no means <b>randomly</b> hits the disk of radius r+x but follows a <b>clearly determined</b> path.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-3595757080870682272012-03-04T22:03:00.000+01:002012-03-04T22:03:39.836+01:00Termtter, a terminal-based Twitter clientTermtter is a terminal-based Twitter client written in Ruby that can be installed as a Ruby gem. In the easiest case you simply type in<br />
<blockquote class="tt">
gem install termtter</blockquote>
and you are done with installing the program, otherwise see <a href="http://termtter.github.com/install">How to Install</a>.<br />
<br />
Once termtter has been installed you can simply run it provided that you do not need to use a proxy; in that case see <a href="http://termtter.github.com/config">Configuration</a>. However, like any other Twitter application, termtter needs to be authorised in order to function properly.<br />
<br />
Therefore, at the initial run, termtter will provide you with an authorisation URL.<br />
<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTPTUGT1azY6tCTgByxXmAapaW5yigU4Ske_za01DjHWJy2dYFQ4x8znkmMcbP-aycC5SDrH3YWR7jcvLcArTdU1EOaO5fCy_esoH9lqlkIxrR4PAhpu10855VPrO69ueAr8Hv2yMjYajA9bo/s1600/step1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTPTUGT1azY6tCTgByxXmAapaW5yigU4Ske_za01DjHWJy2dYFQ4x8znkmMcbP-aycC5SDrH3YWR7jcvLcArTdU1EOaO5fCy_esoH9lqlkIxrR4PAhpu10855VPrO69ueAr8Hv2yMjYajA9bo/s1600/step1.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">First launch of termtter</td></tr>
</tbody></table>
<br />
Once you visit this URL, you will be asked whether you want to authorise termtter to use your Twitter account.<br />
<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTc42Zb67zmQeJWG05VC3D5quMkGBX_g8NeGfC2Qu57_2xBtBiuitCLcpSE-j7Z-MUvLaXqsz5sfCEEtqnnJiuzHwOxzdioDjZEHu4ga21O15OixBfARbMhfVAL50mOnYCpOdVx48XtRAJ2qY/s1600/step2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTc42Zb67zmQeJWG05VC3D5quMkGBX_g8NeGfC2Qu57_2xBtBiuitCLcpSE-j7Z-MUvLaXqsz5sfCEEtqnnJiuzHwOxzdioDjZEHu4ga21O15OixBfARbMhfVAL50mOnYCpOdVx48XtRAJ2qY/s1600/step2.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Visiting authorization URL</td></tr>
</tbody></table>
<br />
If you choose to authorise the application (i.e. termtter) you will provided with a PIN.<br />
<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdkh69_Rh6QzNrTjWiOcKGc3Br6MgxPlxqjq-I0tKW9nwqifHWZ7G7ipmyaeL4nFnGENdt7JLkmGDvMAUrLcwLyoy8Qiuy-9Pw70hoYGj3rcLwDmeCmoo2LOtxPcyjI3cXJE2mx63Ewqvi8t4/s1600/step3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdkh69_Rh6QzNrTjWiOcKGc3Br6MgxPlxqjq-I0tKW9nwqifHWZ7G7ipmyaeL4nFnGENdt7JLkmGDvMAUrLcwLyoy8Qiuy-9Pw70hoYGj3rcLwDmeCmoo2LOtxPcyjI3cXJE2mx63Ewqvi8t4/s1600/step3.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Obtaining PIN</td></tr>
</tbody></table>
<br />
After having obtained the PIN you need to enter it in termtter. Copy and paste will not work because the PIN is shown as an image.<br />
<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0o4He7X1dM1iQ8gp46MgjBZMhqtQyM44WSA6OBZItwgFKyZC5hhPP1kjYUE1iC1TjkZ3CwvvHlDQpZp-OG82k0KLlNbviev_8DKsEOCRK0Zmk_oA64CN2DdZmfjSsG_oOu3kJ5hjog1dId9s/s1600/step4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0o4He7X1dM1iQ8gp46MgjBZMhqtQyM44WSA6OBZItwgFKyZC5hhPP1kjYUE1iC1TjkZ3CwvvHlDQpZp-OG82k0KLlNbviev_8DKsEOCRK0Zmk_oA64CN2DdZmfjSsG_oOu3kJ5hjog1dId9s/s1600/step4.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Entering PIN</td></tr>
</tbody></table>
<br />
Now that termtter has been authorised you can use it at your liking.<br />
<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0u24fQVQ7Q4eHQyC_uEweBqrzNlaWk7r6cgRGhzjwt332OhZN9CpdV8TqBQnd3g9a0kgCXiljB-hE3qzd0TtKT-ozvJBts_o1DnKncWc2XeZwconnM_KDh71mSxiaYqiYt3qa3HCTy4G_LOM/s1600/step5.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0u24fQVQ7Q4eHQyC_uEweBqrzNlaWk7r6cgRGhzjwt332OhZN9CpdV8TqBQnd3g9a0kgCXiljB-hE3qzd0TtKT-ozvJBts_o1DnKncWc2XeZwconnM_KDh71mSxiaYqiYt3qa3HCTy4G_LOM/s1600/step5.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Termtter at work</td></tr>
</tbody></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-68181454926634307462012-03-04T01:54:00.000+01:002012-03-04T01:54:11.849+01:00Michael Geist at INTA WorkshopIf you want a brief explanation what is wrong with ACTA this video is an absolute must.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/gzieTzart5s?feature=player_embedded' frameborder='0'></iframe></div>
<br />
The full text of the report can be found at <a href="http://www.michaelgeist.ca/content/view/6350/125/">http://www.michaelgeist.ca/content/view/6350/125/</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-89547682425572182062012-03-02T01:13:00.000+01:002012-03-02T01:13:28.062+01:00Easily Brighten Underexposed Areas of a PhotoIn <a href="http://www.petapixel.com/2012/02/29/overlay-an-inverted-layer-onto-a-photo-to-brighten-underexposed-areas/">Overlay an Inverted Layer Onto a Photo to Brighten Underexposed Areas</a>, PetaPixel shows how to do precisely that. I applied the method to a quite arbitrary underexposed photo and this is what I got:<br />
<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJm5AbN-IKdk_IXRAKkqMJcF6FPg5OEG6xlWQP4abbI1ipstmTvIYQId1pyi8OrJLyf3Yon7EWLWR5qfHnn4vl2lKbxVrjBMabi8WKnFVR5KHEnL3hPNqxckQM-6-SkWol7LDC65EVTzos82Q/s1600/original.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJm5AbN-IKdk_IXRAKkqMJcF6FPg5OEG6xlWQP4abbI1ipstmTvIYQId1pyi8OrJLyf3Yon7EWLWR5qfHnn4vl2lKbxVrjBMabi8WKnFVR5KHEnL3hPNqxckQM-6-SkWol7LDC65EVTzos82Q/s640/original.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Original image</td></tr>
</tbody></table>
<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgejFHDJwkV0mIOany59Qhv5LJmDDY6wyJXkwsP4OYA_pJQR8gooEAezwzfLSO3U6w1_Q9BFIa1ZJVnO0LIqYRHvYyfiWGsegkxenrxH5AeOECE6GTDtFVFm9yoAJUhLM8TdGnsGqGt2i47VQM/s1600/lit_up.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgejFHDJwkV0mIOany59Qhv5LJmDDY6wyJXkwsP4OYA_pJQR8gooEAezwzfLSO3U6w1_Q9BFIa1ZJVnO0LIqYRHvYyfiWGsegkxenrxH5AeOECE6GTDtFVFm9yoAJUhLM8TdGnsGqGt2i47VQM/s640/lit_up.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Lit up using overlay method</td></tr>
</tbody></table>
<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyVAdSj_p0oSZEVDpqRk9SbzOmIbJ3RBk4tUEZnpdquKVV1M9NnxIYiPrX8j1asZkXNUaG1qMjoo4B8Xuj_i6kLhbNMK4V7GU4N6mAN449LVyi-YPD-xtgbnDlI9DfZ6Gc4i7aqKnn4yHmIJU/s1600/lit_up_white_balance.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyVAdSj_p0oSZEVDpqRk9SbzOmIbJ3RBk4tUEZnpdquKVV1M9NnxIYiPrX8j1asZkXNUaG1qMjoo4B8Xuj_i6kLhbNMK4V7GU4N6mAN449LVyi-YPD-xtgbnDlI9DfZ6Gc4i7aqKnn4yHmIJU/s640/lit_up_white_balance.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Lit up, white balance applied</td></tr>
</tbody></table>
<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBnWDKfkOhnzpGLA3HWJ_XPPbuWK0TACMPTC1y3PNVLsNDwx3DhZuBBy_clBTjH-SRLpeXWRcaVpWXdC9Llr8GUQnr80Gy1ptddGEi28fq6kTzXVfWdQGhEnvSJmKMBPD7BuuoyI-2DukefZs/s1600/white_balance.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBnWDKfkOhnzpGLA3HWJ_XPPbuWK0TACMPTC1y3PNVLsNDwx3DhZuBBy_clBTjH-SRLpeXWRcaVpWXdC9Llr8GUQnr80Gy1ptddGEi28fq6kTzXVfWdQGhEnvSJmKMBPD7BuuoyI-2DukefZs/s640/white_balance.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">White balance only</td></tr>
</tbody></table>
<br />
A nice method indeed and it should work with any image processing program that's worth being used – in the article it's Photoshop while I have been using the Gimp.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-49330490341233682422012-02-24T23:16:00.000+01:002012-02-24T23:16:36.429+01:00Send in the Copyright Demolition Squad!A video detailing what a scientist faces if he wants to publish a scientific article made me share some short, rather polemic thoughts on copyright on Google+. I then realized that they are worth being put on this blog. So here we go:<br />
<br />
It is a well-established lie that copyright is a means for creators of art, music, scientific papers and other works to protect their intellectual property against people who want to prey on it. Little could be farther from truth. Copyright is regularly and habitually being perverted into a means to dispossess creators of their intellectual property so that they do <b>not</b> obtain a fair payoff.<br />
<br />
In my opinion, those who fight the ever worsening, dreadful state of copyright are no enemies of the authors. They surely are enemies of those parasites who prey on these authors' works but fighting this vermin definitely is a just cause.<br />
<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;"><object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/7_UAGireJpQ/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/7_UAGireJpQ" />
<param name="bgcolor" value="#FFFFFF" />
<embed width="320" height="266" src="http://www.youtube.com/v/7_UAGireJpQ" type="application/x-shockwave-flash"></embed></object></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="http://www.youtube.com/watch?v=7_UAGireJpQ">Joe Scientist comes face-to-face with</a><br />
<a href="http://www.youtube.com/watch?v=7_UAGireJpQ">the scientific publication business</a></td></tr>
</tbody></table>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4823806858036614077.post-90297854922940608102012-02-03T01:55:00.000+01:002012-02-03T01:55:23.910+01:00Copyright Claims vs. Hatsune Miku Youtube VideosAs you may know, I am a member of the German pirate party. An important reason for joining was that I disapprove a system where the mere <b>claim</b> (without the need for providing any evidence) that certain content infringes copyright is sufficient for its takedown. Not only does this approach collide with my view that guilty until proven guilty should be a universal principle not just for penal codes, it also makes the abusive use of false claims way to easy.<br />
<br />
In the case of YouTube’s automated system things are even worse. Not only can false claims be made – they can made by anybody, not just by persons who are authorized by the copyright holder to do so. I am a huge fan of vocaloids in general and Hatsune Miku in particular and while I have an account at nicovideo (the site where most vocaloid music is uploaded), I prefer accessing them on youtube because there you can build a virtually infinite number of playlists.<br />
<br />
I now learned that there seems to be a concerted action to have high-ranked Hatsune Miku videos removed from youtube by making false claims of copyright infringement which not only results in those videos being removed but also in accounts being closed due to such claims and the three strikes rule.<br />
<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;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/LY6CO6FbH40?feature=player_embedded' frameborder='0'></iframe></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="http://www.youtube.com/watch?v=LY6CO6FbH40">The Disappearance of Hatsune Miku from YouTube</a></td></tr>
</tbody></table>
This is incident is sad in may ways including:<br />
<ul>
<li>A means created for a just cause is abused for a hidous one (first and foremost copyright is not about making money but about empowering creators of content so that they have a say in how it is used – this is so central that German law does not even <b>allow</b> you to give up this right).</li>
<li>Damage is done to the community because many Hatsune Miku songs usually are happy ones that brighten your day.</li>
<li>As vocaloids allow every hobby composer to use vocals without having to paying quite a lot of money on a singer or having to find people willing to sing without payment, they allow talents that would otherwise have been lost to give a world-wide audience delight.</li>
</ul>
For more please visit <a href="http://www.vocaloidism.com/2012/02/03/recent-copyright-claims-affecting-miku-youtube-videos/">Recent Copyright Claims Affecting Miku Youtube Videos</a> at <a href="http://www.vocaloidism.com/">Vocaloidism</a>. Please help spread the word about this attack on wonderful music created for what likely is the oldest reason to make music: the fun of making it and listening to it.<br />
<br />
Fittingly, the song that you hear as BGM for the above video is <a href="http://www.youtube.com/watch?v=kvnIFo3xMfY">The Disappearance of Hatsune Miku</a>.<br />
<br />
I wonder if the incident may have to do with the top position at <a href="http://www.the-top-tens.com/lists/singers-perform-london-olympics-opening-ceremonies.asp">Singers You'd Like to Perform at the 2012 London Olympics Opening Ceremonies</a>Unknownnoreply@blogger.com0