<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>olex.biz &#187; Olexandr Savchuk</title>
	<atom:link href="http://olex.biz/author/olex/feed/" rel="self" type="application/rss+xml" />
	<link>http://olex.biz</link>
	<description>Website of a computer science student and a generally good man</description>
	<lastBuildDate>Wed, 27 Jul 2011 13:23:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Using ImageMagick for batch image processing in Picasa</title>
		<link>http://olex.biz/software/using-imagemagick-for-batch-image-processing-in-picasa/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-imagemagick-for-batch-image-processing-in-picasa</link>
		<comments>http://olex.biz/software/using-imagemagick-for-batch-image-processing-in-picasa/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 13:23:41 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[diy]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=283</guid>
		<description><![CDATA[Our office is using Google Picasa to process a lot of images. We&#8217;ve used Picasa for years now, and it&#8217;s a very convenient instrument for our needs. However, while it has many built-in functions to process and modify images, there are some missing, or only available through complicated multi-stage user interaction, which is unacceptable for [...]]]></description>
			<content:encoded><![CDATA[<p>Our office is using <a href="http://picasa.google.com/" title="Google Picasa" target="_blank">Google Picasa</a> to process a lot of images. We&#8217;ve used Picasa for years now, and it&#8217;s a very convenient instrument for our needs. However, while it has many built-in functions to process and modify images, there are some missing, or only available through complicated multi-stage user interaction, which is unacceptable for the amount of work our employees have to get done. My solution to this is a combination of two ingredients: the command-line <a href="http://www.imagemagick.org/script/index.php" title="ImageMagick" target="_blank">ImageMagick toolkit</a> for image processing, and Picasa&#8217;s <a href="http://code.google.com/intl/de-DE/apis/picasa/docs/button_api.html" title="Picasa Button API" target="_blank">Button API</a>.</p>
<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh5.ggpht.com/-LuA0LAXr5NI/Ti89NnP_7BI/AAAAAAAACfA/byANL2PndxE/stitcher-2.JPG?imgmax=800" rel="lightbox[2011-6-3-0-17-16]"><img src="http://lh5.ggpht.com/-LuA0LAXr5NI/Ti89NnP_7BI/AAAAAAAACfA/byANL2PndxE/stitcher-2.JPG?imgmax=144" alt="stitcher-2.JPG" width="144" height="80" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/-WznaqfgnYIU/Ti887FF7BtI/AAAAAAAACes/vlR8r2ESnuk/2008%252520C-Class%2525204matic%252520007.jpg?imgmax=800" rel="lightbox[2011-6-3-0-17-16]"><img src="http://lh3.ggpht.com/-WznaqfgnYIU/Ti887FF7BtI/AAAAAAAACes/vlR8r2ESnuk/2008%252520C-Class%2525204matic%252520007.jpg?imgmax=144" alt="2008 C-Class 4matic 007.jpg" width="144" height="108" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh5.ggpht.com/-xWzI2yvRZH8/Ti8870LCLUI/AAAAAAAACew/_fKDGDoZaXE/2008%252520C-Class%2525204matic%252520009.jpg?imgmax=800" rel="lightbox[2011-6-3-0-17-16]"><img src="http://lh5.ggpht.com/-xWzI2yvRZH8/Ti8870LCLUI/AAAAAAAACew/_fKDGDoZaXE/2008%252520C-Class%2525204matic%252520009.jpg?imgmax=144" alt="2008 C-Class 4matic 009.jpg" width="144" height="108" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/-9MEdtqyDDlU/Ti888kdWSQI/AAAAAAAACe0/bOke1AGxoy0/Collage%252520000814.jpg?imgmax=800" rel="lightbox[2011-6-3-0-17-16]"><img src="http://lh4.ggpht.com/-9MEdtqyDDlU/Ti888kdWSQI/AAAAAAAACe0/bOke1AGxoy0/Collage%252520000814.jpg?imgmax=144" alt="Collage 000814.jpg" width="96" height="144" class="pie-img"/></a></p>
</div>
</div>
<p>The example application I&#8217;ll explain here is a utility to combine multiple images into one in one click directly from a Picasa folder view. However, it is very easy to modify this to perform various other batch image processing tasks directly from Picasa.</p>
<p><span id="more-283"></span></p>
<p><b>Part 1: The Picasa button</b></p>
<p>First of all, we will need a button in our Picasa to start our ImageMagick script. To create the button using Picasa Button API, we follow these steps:</p>
<ol>
<li>
<strong>Write a <em>PBF</em> file.</strong><br />
A <em>PBF</em> is basically a simple XML file, that describes our button to Picasa. Here is the <em>PBF</em> file I wrote for my application:</p>
<pre name="code" class="xml">
&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;buttons format="1" version="1"&gt;
  &lt;button id="{ca234ae3-6340-40c3-a46b-51a126bb887c}" type="dynamic"&gt;
    &lt;label&gt;Combine&lt;/label&gt;
    &lt;tooltip&gt;Combine images vertically and save as a new image&lt;/tooltip&gt;
    &lt;action verb="trayexec"&gt;
      &lt;param name="exe_name" value="stitch.cmd" /&gt;
      &lt;param name="exe_path" value="S:\Tools\" /&gt;
    &lt;/action&gt;
  &lt;/button&gt;
&lt;/buttons&gt;
</pre>
<p>Although the whole code is contained within a <code>buttons</code> element, the file can currently only describe one button. </p>
<p>Note the <a href="http://en.wikipedia.org/wiki/Globally_unique_identifier" title="GUID on Wikipedia" target="_blank">GUID</a> in the <code>button/id</code> attribute. You&#8217;ll need a new GUID for every button you make. The PBF must be named using this GUID, <code>{ca234ae3-6340-40c3-a46b-51a126bb887c}.pbf</code> in my case.</p>
<p>The <code>label</code> and <code>tooltip</code> elements shouldn&#8217;t need much explanation. The next important element is <code>action</code>; this describes what the button will actually do when pressed. There are a few actions described in the Button API; the one I use here is a simple executable launch, that starts a batch script <code>stitch.cmd</code>, located in <code>S:\Tools\</code> (in our environment, S:\ is a shared network drive on the office server). The script will be detailed further on.</p>
</li>
<li>
<em>(optional)</em> <strong>Draw an icon.</strong><br />
You can include a custom icon for your button. The icon has to be an Adobe Photoshop <em>PSD</em> file called using your GUID (<code>{ca234ae3-6340-40c3-a46b-51a126bb887c}.psd</code> for me), in a single layer. If you use an icon, you have to include an additional element in your <em>PBF</em>, inside the <code>button</code> element:</p>
<p><code>&lt;icon name="{ca234ae3-6340-40c3-a46b-51a126bb887c}.psd/layer" src="pbz"/&gt;</code>
</li>
<li>
<strong>Package your button into a <em>PBZ</em> file.</strong><br />
A <em>PBZ</em> file is nothing different than a ZIP archive containing your <em>PBF</em> (and the icon, if you want to use one), with its extension changed to <code>.pbz</code>. This file is basically your distribution package, so name it appropriately, since Picasa differentiates its buttons by their <em>PBZ</em> file names. One <em>PBZ</em> can also contain multiple <em>PBF</em> files for multiple buttons at once.</p>
</li>
</ol>
<p><b>Part 2: The ImageMagick batch script</b></p>
<p>Since the ImageMagick package provides command-line utilities, the simplest way to automate them in Windows is a batch file. Here is my <code>stitch.cmd</code> script for merging multiple images together vertically, resizing them all to match the first one&#8217;s width:</p>
<pre name="code" class="c">
@echo off
cd /D "C:\Program Files\ImageMagick-6.7.1-Q16"

rem --- Output filename
set OUTFOLDER=%~dp1
set OUTFILENAME="%OUTFOLDER%Collage.jpg"

rem --- Imagemagick
for /f "delims=" %%a in ('identify -format "%%[fx:w]" %1') do @set WIDTH=%%a
montage -mode concatenate -resize %WIDTH% -tile 1x %* %OUTFILENAME%
</pre>
<p>When called from the Picasa button, the script will get filenames of all currently selected images in Picasa as arguments, including full paths.</p>
<p>First, we change directory to where ImageMagick is installed, to avoid possible problems with PATH. Then we generate a filename for our montage, taking the folder path from the first argument (first selected image from Picasa) and adding our own filename.</p>
<p>After that, we apply a batch hack, using a <code>for</code> loop to save a command output (ImageMagick&#8217;s <code>identify</code>) into a variable. This gives us the width of the first image. Next, we call the ImageMagick&#8217;s <code>montage</code> tool, that will combine all our images in one, additionally providing it with the output filename as a last argument. </p>
<p><b>Part 3: Installation</b></p>
<p>The installation is a bit tricky. Picasa doesn&#8217;t support importing the buttons directly, it can only be done using a browser and a specially formed link to the file. You&#8217;ll need to place your <em>PBZ</em> at some location reachable via an <code>http://</code> link; since I have a local development server running on my PC, I used that. Here is an the HTML file I used to install my script in Picasa:</p>
<pre name="code" class="html">
&lt;html&gt;
 &lt;body&gt;
  &lt;a href="picasa://importbutton/?url=http://localhost/olex-stitcher.pbz"&gt;Install&lt;/a&gt;
 &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Just open the file in a browser of your choice and click the link. Picasa will open and prompt you to select the button you want to install (only one option here, unless your <em>PBZ</em> contains multiple buttons), and where to place it in the button bar. Do that, and you&#8217;re all done.</p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fsoftware%2Fusing-imagemagick-for-batch-image-processing-in-picasa%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/software/using-imagemagick-for-batch-image-processing-in-picasa/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/software/using-imagemagick-for-batch-image-processing-in-picasa/"  data-text="Using ImageMagick for batch image processing in Picasa" data-count="horizontal" data-via="olex">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/software/using-imagemagick-for-batch-image-processing-in-picasa/feed/langswitch_lang/en/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android: scroll a ListView with volume keys</title>
		<link>http://olex.biz/android/scroll-listview-with-volume-keys/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scroll-listview-with-volume-keys</link>
		<comments>http://olex.biz/android/scroll-listview-with-volume-keys/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 23:47:06 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=255</guid>
		<description><![CDATA[Basically, what you need to do is to override the <code>dispatchKeyEvent()</code> method in your Activity, and intercept key presses for the volume keys, leaving the other keys untouched. This is how I did it, fairly straightforward...]]></description>
			<content:encoded><![CDATA[<p>Scrolling a list view in an Android app using the volume buttons on the side of the phone is actually quite easy. Not knowing this, yesterday I spent some time looking for a nice easy tutorial to do this, and found nothing. Having it coded and released in version 1.0 of <a href="http://olex.biz/android/quoter">Quoter</a>, I thought it&#8217;d be a good thing to write one myself.</p>
<p>Basically, what you need to do is to override the <code>dispatchKeyEvent()</code> method in your Activity, and intercept key presses for the volume keys, leaving the other keys untouched. This is how I did it, fairly straightforward:</p>
<pre name="code" class="java">@Override
public boolean dispatchKeyEvent(KeyEvent event) {
	if (event.getAction() == KeyEvent.ACTION_DOWN) {
		switch (event.getKeyCode()) {
		case KeyEvent.KEYCODE_VOLUME_UP:
			scrollToPrevious();
			return true;
		case KeyEvent.KEYCODE_VOLUME_DOWN:
			scrollToNext();
			return true;
		}
	}
	if (event.getAction() == KeyEvent.ACTION_UP
		&#038;&#038; (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP
			|| event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN)) {
		return true;
	}
	return super.dispatchKeyEvent(event);
}</pre>
<p>Note that we only execute our code on the <code>ACTION_DOWN</code> event &#8211; the <code>ACTION_UP</code> event is only caught in order to mute the keypress sound. Then <code>event.getKeyCode()</code> is checked, and if the key pressed is volume up or volume down, my scrolling functions are called and the function returns. In any other case (another event or different keys) the execution is passed on to the standard key press handler.</p>
<p>Next are the scrolling functions to scroll the <code>ListView</code>. The problem with these is, you can scroll to any x/y coordinates using the <code>scrollTo</code> method. But what I needed is to scroll to the next visible item, since Quoter is a reading app and one wants to scroll to the next qoute in the list and read it. So this is what I did:</p>
<pre name="code" class="java">private void scrollToNext() {
	int currentPosition = getListView().getFirstVisiblePosition();
	if (currentPosition == getListView().getCount() - 1)
		return;
	getListView().setSelection(currentPosition + 1);
	getListView().clearFocus();
}

private void scrollToPrevious() {
	int currentPosition = getListView().getFirstVisiblePosition();
	if (currentPosition == 0)
		return;
	getListView().setSelection(currentPosition - 1);
	getListView().clearFocus();
}</pre>
<p>First we get the list position of the first element visible on screen. If it&#8217;s already the last position in scroll direction, we do nothing. If it isn&#8217;t, we set the selection in the list to the next item; this automatically scrolls the list (same thing happens if you use the D-pad keys to navigate a list). The only problem now is, the list item becomes selected and highlighted, which we don&#8217;t want since we&#8217;re reading text from it. By clearing the focus from the list, we remove the selection. All done.</p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fandroid%2Fscroll-listview-with-volume-keys%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/android/scroll-listview-with-volume-keys/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/android/scroll-listview-with-volume-keys/"  data-text="Android: scroll a ListView with volume keys" data-count="horizontal" data-via="olex">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/android/scroll-listview-with-volume-keys/feed/langswitch_lang/en/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>OpenTTD WebConfig</title>
		<link>http://olex.biz/software/spiele/openttd-webconfig/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=openttd-webconfig</link>
		<comments>http://olex.biz/software/spiele/openttd-webconfig/#comments</comments>
		<pubDate>Sun, 10 Oct 2010 15:07:02 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[openttd]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[games]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=246</guid>
		<description><![CDATA[A tool to configure an OpenTTD server via web interface. Tested with OpenTTD 1.0.4, Apache2 and PHP 5.2.4 on Windows and Ubuntu Linux. No reason it shouldn&#8217;t work on any other platform, given PHP. Project hosted at the OpenTTDCoop DevZone: http://dev.openttdcoop.org/projects/ottd-webconfig Tweet]]></description>
			<content:encoded><![CDATA[<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/TLHRL96-zsI/AAAAAAAACKE/xR7DzrsTBXo/1.jpg?imgmax=800" rel="lightbox[2010-9-0-17-2-56]"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/TLHRL96-zsI/AAAAAAAACKE/xR7DzrsTBXo/1.jpg?imgmax=144" alt="1.jpg" width="144" height="101" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/_fCjhR7xUM2U/TLHRMao76kI/AAAAAAAACKI/m240B2b0tOM/2.jpg?imgmax=800" rel="lightbox[2010-9-0-17-2-56]"><img src="http://lh6.ggpht.com/_fCjhR7xUM2U/TLHRMao76kI/AAAAAAAACKI/m240B2b0tOM/2.jpg?imgmax=144" alt="2.jpg" width="144" height="114" class="pie-img"/></a></p>
</div>
</div>
<p>A tool to configure an <a href="http://olex.biz/blog/software/spiele/openttd-junctions/">OpenTTD</a> server via web interface.</p>
<p>Tested with OpenTTD 1.0.4, Apache2 and PHP 5.2.4 on Windows and Ubuntu Linux. No reason it shouldn&#8217;t work on any other platform, given PHP.</p>
<p>Project hosted at the <em>OpenTTDCoop DevZone</em>:<br />
<a href="http://dev.openttdcoop.org/projects/ottd-webconfig">http://dev.openttdcoop.org/projects/ottd-webconfig</a></p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fsoftware%2Fspiele%2Fopenttd-webconfig%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/software/spiele/openttd-webconfig/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/software/spiele/openttd-webconfig/"  data-text="OpenTTD WebConfig" data-count="horizontal" data-via="olex">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/software/spiele/openttd-webconfig/feed/langswitch_lang/en/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpenTTD &#8211; Junctions and stations</title>
		<link>http://olex.biz/software/spiele/openttd-junctions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=openttd-junctions</link>
		<comments>http://olex.biz/software/spiele/openttd-junctions/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 00:01:13 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[openttd]]></category>
		<category><![CDATA[games]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=241</guid>
		<description><![CDATA[OpenTTD is an open source remake and expansion of the 1995 Chris Sawyer game Transport Tycoon Deluxe. It is an &#8220;Urban planning and simulation game&#8221;. Wikipedia I&#8217;ve once again started playing OpenTTD &#8211; it&#8217;s been years now. OpenTTD, as stated above, is an open source remake of a strategy game called Transport Tycoon Deluxe from [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>OpenTTD</strong> is an open source remake and expansion of the 1995 Chris Sawyer game Transport Tycoon Deluxe. It is an &#8220;Urban planning and simulation game&#8221;.</p>
<div align="right"><i>Wikipedia</i></div>
</blockquote>
<p>I&#8217;ve once again started playing OpenTTD &#8211; it&#8217;s been years now. OpenTTD, as stated above, is an open source remake of a strategy game called Transport Tycoon Deluxe from the MS-DOS times. The goal is to create a transportation network for passengers and cargo using trains, trucks, ships and planes, and to make more money than your opponents. A couple of screenshots to illustrate:</p>
<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxqIOKXxfI/AAAAAAAACIE/Ms2UeH9_Bno/20091018_panswat_tongvorarat.jpg?imgmax=800" rel="lightbox[2010-9-3-14-25-56]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxqIOKXxfI/AAAAAAAACIE/Ms2UeH9_Bno/20091018_panswat_tongvorarat.jpg?imgmax=144" alt="20091018_panswat_tongvorarat.jpg" width="144" height="108" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxqK6_cBwI/AAAAAAAACIQ/VkXd3vu92PI/20100313_rakim-89_d.jpg?imgmax=800" rel="lightbox[2010-9-3-14-25-56]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxqK6_cBwI/AAAAAAAACIQ/VkXd3vu92PI/20100313_rakim-89_d.jpg?imgmax=144" alt="20100313_rakim-89_d.jpg" width="144" height="82" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/_fCjhR7xUM2U/TKxqahEfLbI/AAAAAAAACIY/tcshbpr1n10/20090821_luuk_de_vries.jpg?imgmax=800" rel="lightbox[2010-9-3-14-25-56]"><img src="http://lh6.ggpht.com/_fCjhR7xUM2U/TKxqahEfLbI/AAAAAAAACIY/tcshbpr1n10/20090821_luuk_de_vries.jpg?imgmax=144" alt="20090821_luuk_de_vries.jpg" width="144" height="72" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/TKxqblRIjlI/AAAAAAAACIc/Z8GEs--bKdM/20090913_luuk_de_vries.jpg?imgmax=800" rel="lightbox[2010-9-3-14-25-56]"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/TKxqblRIjlI/AAAAAAAACIc/Z8GEs--bKdM/20090913_luuk_de_vries.jpg?imgmax=144" alt="20090913_luuk_de_vries.jpg" width="144" height="75" class="pie-img"/></a></p>
</div>
</div>
<p>Efficient rail networks in the game can become very complex, with hundreds of trains rolling on them. Such networks cannot be built without large intersections, and the traffic flow is strongly influenced by the junction design efficiency. In this post, I&#8217;ll collect a few junction and station designs I made, that could become helpful for some OpenTTD players out there.</p>
<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/TKxmNEKOFgI/AAAAAAAACH0/Uoo6umaDbHA/junction-3-t.jpg?imgmax=800" rel="lightbox[2010-9-3-16-3-9]" title="3-Lane ML T-Junction"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/TKxmNEKOFgI/AAAAAAAACH0/Uoo6umaDbHA/junction-3-t.jpg?imgmax=144" alt="3-Lane ML T-Junction" width="144" height="76" class="pie-img"/></a></p>
<p class="pie-caption" style="width:144;">3-Lane ML T-Junction</p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxmPsGhZdI/AAAAAAAACH4/CjpNExCHbjM/junction-2-t.jpg?imgmax=800" rel="lightbox[2010-9-3-16-3-9]" title="2-Lane ML T-Junction"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/TKxmPsGhZdI/AAAAAAAACH4/CjpNExCHbjM/junction-2-t.jpg?imgmax=144" alt="2-Lane ML T-Junction" width="144" height="82" class="pie-img"/></a></p>
<p class="pie-caption" style="width:144;">2-Lane ML T-Junction</p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/_fCjhR7xUM2U/TKxmRjkLQpI/AAAAAAAACH8/aZ58jqRrIJ8/junction-2-x.jpg?imgmax=800" rel="lightbox[2010-9-3-16-3-9]" title="2-Lane ML X-Junction"><img src="http://lh6.ggpht.com/_fCjhR7xUM2U/TKxmRjkLQpI/AAAAAAAACH8/aZ58jqRrIJ8/junction-2-x.jpg?imgmax=144" alt="2-Lane ML X-Junction" width="144" height="73" class="pie-img"/></a></p>
<p class="pie-caption" style="width:144;">2-Lane ML X-Junction</p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh5.ggpht.com/_fCjhR7xUM2U/TKyBiUA3WAI/AAAAAAAACJo/R2rqRRZ8jzI/station-entry-presignal-bypass.jpg?imgmax=800" rel="lightbox[2010-9-3-16-3-9]" title="Station entry, presignal"><img src="http://lh5.ggpht.com/_fCjhR7xUM2U/TKyBiUA3WAI/AAAAAAAACJo/R2rqRRZ8jzI/station-entry-presignal-bypass.jpg?imgmax=144" alt="Station entry, presignal" width="144" height="70" class="pie-img"/></a></p>
<p class="pie-caption" style="width:144;">Station entry, presignal</p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/TKyBjMr6m2I/AAAAAAAACJs/TunR41DgMh8/station-exit-presignal.jpg?imgmax=800" rel="lightbox[2010-9-3-16-3-9]" title="Station exit, multi-lane"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/TKyBjMr6m2I/AAAAAAAACJs/TunR41DgMh8/station-exit-presignal.jpg?imgmax=144" alt="Station exit, multi-lane" width="144" height="104" class="pie-img"/></a></p>
<p class="pie-caption" style="width:144;">Station exit, multi-lane</p>
</div>
</div>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fsoftware%2Fspiele%2Fopenttd-junctions%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/software/spiele/openttd-junctions/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/software/spiele/openttd-junctions/"  data-text="OpenTTD &#8211; Junctions and stations" data-count="horizontal" data-via="olex">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/software/spiele/openttd-junctions/feed/langswitch_lang/en/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A day in the life of a Programmer</title>
		<link>http://olex.biz/blog/day-in-programmers-life/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=day-in-programmers-life</link>
		<comments>http://olex.biz/blog/day-in-programmers-life/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 18:35:34 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[fun]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[translated]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=220</guid>
		<description><![CDATA[Tweet]]></description>
			<content:encoded><![CDATA[<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/_fCjhR7xUM2U/S5_LimX0pII/AAAAAAAABwA/Hu-3XaUmYPU/pdpIk.jpg" rel="lightbox[2010-2-2-19-20-0]"><img src="http://lh6.ggpht.com/_fCjhR7xUM2U/S5_LimX0pII/AAAAAAAABwA/Hu-3XaUmYPU/pdpIk.jpg?imgmax=200" alt="pdpIk.jpg" width="200" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/S5_LnB_UdiI/AAAAAAAABwE/AjPxMSOLkd0/300px-Challenge_vs_skill.svg.jpg?imgmax=800" rel="lightbox[2010-2-2-19-20-0]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/S5_LnB_UdiI/AAAAAAAABwE/AjPxMSOLkd0/300px-Challenge_vs_skill.svg.jpg?imgmax=144" alt="300px-Challenge_vs_skill.svg.jpg" width="144" height="140" class="pie-img"/></a></p>
</div>
</div>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fblog%2Fday-in-programmers-life%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/blog/day-in-programmers-life/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/blog/day-in-programmers-life/"  data-text="A day in the life of a Programmer" data-count="horizontal" data-via="olex">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/blog/day-in-programmers-life/feed/langswitch_lang/en/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DIY CCFL display backlight</title>
		<link>http://olex.biz/blog/ccfl-backlight/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ccfl-backlight</link>
		<comments>http://olex.biz/blog/ccfl-backlight/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 14:12:11 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[hardware]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=211</guid>
		<description><![CDATA[I often work at my PC in the dark, and I know it&#8217;s not very good for the eyes to look at the bright screen in the dark surroundings. I checked multiple ideas concerning the problem, including a LED backlight from an IKEA lamp on a friend&#8217;s TV, but I never came to building something [...]]]></description>
			<content:encoded><![CDATA[<p>I often work at my PC in the dark, and I know it&#8217;s not very good for the eyes to look at the bright screen in the dark surroundings. I checked multiple ideas concerning the problem, including a LED backlight from an IKEA lamp on a friend&#8217;s TV, but I never came to building something like that myself. One time I even had my desk lamp turned behind the screen to act as a backlight of sorts, but it was obvious that was not a solution to last.</p>
<p>A solution came suddenly, when I saw some <a href="http://en.wikipedia.org/wiki/Cold_cathode">CCFLs</a> on sale in an online hardware store for €4,99. One trip to the shops and 7€ spent later I&#8217;m sitting here in the dark, typing this text and having my eyes not stressed at all <img src='http://olex.biz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<span id="more-211"></span></p>
<p>The CCFLs I bought were from Sharkoon, and came with a switch, transformator and a Y-cable to connect to the PC&#8217;s power supply, obviuosly aimed at the casemodding scene:</p>
<p><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/S5lUie3VHzI/AAAAAAAABsk/SWqHGRgw0j4/DSC03289.JPG?imgmax=800" rel="lightbox[2010-2-5-15-7-0]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/S5lUie3VHzI/AAAAAAAABsk/SWqHGRgw0j4/DSC03289.JPG?imgmax=144" alt="DSC03289.JPG" width="144" height="108" class="pie-img" style="margin:3px 3px 0px 0px;"/></a></p>
<p>&#8220;That&#8217;s all very nice&#8221;, I thought, &#8220;but firstly, how do I power it (my PC is under the table, and the monitor sits above it), and secondly, where do I put the switch so I can turn it on and off?&#8221;. I decided to elongate the power cable by 5-6 feet and to put the switch (together with the transformator and the cables) on the back of my screen, where the CCFLs themselves would go. After thinking that, I went to a hardware store and got the following stuff for a total of 7€:</p>
<p><a href="http://lh5.ggpht.com/_fCjhR7xUM2U/S5lUioXt3nI/AAAAAAAABso/wzX9Y4vNPKI/DSC03290.JPG?imgmax=800" rel="lightbox[2010-2-5-15-8-3]"><img src="http://lh5.ggpht.com/_fCjhR7xUM2U/S5lUioXt3nI/AAAAAAAABso/wzX9Y4vNPKI/DSC03290.JPG?imgmax=144" alt="DSC03290.JPG" width="144" height="108" class="pie-img" style="margin:3px 3px 0px 0px;"/></a></p>
<p>My plan required: a plastic box to put the switch and cables in, cable binders and connectors (because I do not have the tools for soldering), isolating tape and some cable.</p>
<p>I cut the Y-cable after the split from the Molex connector, and reconnected it with 6 feet of my cable using the connectors. Then I put th switch in the side of the plastic box, and put the cable and connectors inside.</p>
<p><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/S5lUlhHX5DI/AAAAAAAABtM/BaDVSEOdRh8/DSC03299.JPG?imgmax=800" rel="lightbox[2010-2-5-15-8-17]"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/S5lUlhHX5DI/AAAAAAAABtM/BaDVSEOdRh8/DSC03299.JPG?imgmax=144" alt="DSC03299.JPG" width="144" height="108" class="pie-img" style="margin:3px 3px 0px 0px;"/></a></p>
<p>After that I connected the transformator and the CCFLs, connected the Y-cable inside my PC, and turned it on. It worked!</p>
<p><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/S5lUm6XTsBI/AAAAAAAABtc/vGJLAWdvYRE/DSC03303.JPG?imgmax=800" rel="lightbox[2010-2-5-15-8-27]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/S5lUm6XTsBI/AAAAAAAABtc/vGJLAWdvYRE/DSC03303.JPG?imgmax=144" alt="DSC03303.JPG" width="144" height="108" class="pie-img" style="margin:3px 3px 0px 0px;"/></a></p>
<p>A little detail remained &#8211; the whole thing had to be put onto the screen. I put the box with the switch on using double-sided tape near the bottom of the screen, so the switch can be easily reached and cannot be seen. For the rest (transformator and lamps) a set of stick-on pads was included in the package, so I used that.</p>
<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh5.ggpht.com/_fCjhR7xUM2U/S5lUn3dY3nI/AAAAAAAABto/0NfvmNaFZIQ/DSC03306.JPG?imgmax=800" rel="lightbox[2010-2-5-15-8-43]"><img src="http://lh5.ggpht.com/_fCjhR7xUM2U/S5lUn3dY3nI/AAAAAAAABto/0NfvmNaFZIQ/DSC03306.JPG?imgmax=144" alt="DSC03306.JPG" width="144" height="108" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh3.ggpht.com/_fCjhR7xUM2U/S5lUoikH8ZI/AAAAAAAABtw/TvmUAiOwJyE/DSC03308.JPG?imgmax=800" rel="lightbox[2010-2-5-15-8-43]"><img src="http://lh3.ggpht.com/_fCjhR7xUM2U/S5lUoikH8ZI/AAAAAAAABtw/TvmUAiOwJyE/DSC03308.JPG?imgmax=144" alt="DSC03308.JPG" width="144" height="108" class="pie-img"/></a></p>
</div>
</div>
<p>Result: a nice working backlight for 12,99€, that anyone can build.</p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fblog%2Fccfl-backlight%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/blog/ccfl-backlight/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/blog/ccfl-backlight/"  data-text="DIY CCFL display backlight" data-count="horizontal" data-via="olex">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/blog/ccfl-backlight/feed/langswitch_lang/en/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android App &#8211; Quoter</title>
		<link>http://olex.biz/android/quoter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quoter</link>
		<comments>http://olex.biz/android/quoter/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 10:01:24 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[fun]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=202</guid>
		<description><![CDATA[Android Market: Quoter Read fun internet quotes from a variety of websites. Perfect entertaining while waiting in queues, public transport and similar. Features include: - Choosing which sites to read from - Reading latest quotes - Saving quotes for offline reading - Sharing quotes via SMS, email, Facebook etc. If you like my app, please [...]]]></description>
			<content:encoded><![CDATA[<p>
<div class="pie-gallery alignGalleryLeft">
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/_fCjhR7xUM2U/TWZBbcFiUAI/AAAAAAAACSU/V8u04q4kGFk/quoter-1.0-0.jpg?imgmax=800" rel="lightbox[2011-1-4-12-33-49]"><img src="http://lh6.ggpht.com/_fCjhR7xUM2U/TWZBbcFiUAI/AAAAAAAACSU/V8u04q4kGFk/quoter-1.0-0.jpg?imgmax=144" alt="quoter-1.0-0.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/TWZBZuZrA1I/AAAAAAAACSE/qW8NXYUgkWY/quoter-1.0-2.jpg?imgmax=800" rel="lightbox[2011-1-4-12-33-49]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/TWZBZuZrA1I/AAAAAAAACSE/qW8NXYUgkWY/quoter-1.0-2.jpg?imgmax=144" alt="quoter-1.0-2.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/TWZBaXFMt-I/AAAAAAAACSI/otjhz2Midqk/quoter-1.0-3.jpg?imgmax=800" rel="lightbox[2011-1-4-12-33-49]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/TWZBaXFMt-I/AAAAAAAACSI/otjhz2Midqk/quoter-1.0-3.jpg?imgmax=144" alt="quoter-1.0-3.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh6.ggpht.com/_fCjhR7xUM2U/TWZBZZ06llI/AAAAAAAACSA/RW7xu4088Dc/quoter-1.0-1.jpg?imgmax=800" rel="lightbox[2011-1-4-12-33-49]"><img src="http://lh6.ggpht.com/_fCjhR7xUM2U/TWZBZZ06llI/AAAAAAAACSA/RW7xu4088Dc/quoter-1.0-1.jpg?imgmax=144" alt="quoter-1.0-1.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
<div class="pie-item" style="margin:3px 3px 0px 0px;">
<p class="pie-img-wrapper"><a href="http://lh4.ggpht.com/_fCjhR7xUM2U/TWZBa7JGdII/AAAAAAAACSM/YQ62gNxl8XE/quoter-1.0-4.jpg?imgmax=800" rel="lightbox[2011-1-4-12-33-49]"><img src="http://lh4.ggpht.com/_fCjhR7xUM2U/TWZBa7JGdII/AAAAAAAACSM/YQ62gNxl8XE/quoter-1.0-4.jpg?imgmax=144" alt="quoter-1.0-4.jpg" width="86" height="144" class="pie-img"/></a></p>
</div>
</div>
<p><a href="https://market.android.com/details?id=biz.olex.android.quoter">Android Market: Quoter</a> <a href="http://olex.biz/wp-content/uploads/2010/03/qrcode-1.png"><img src="http://olex.biz/wp-content/uploads/2010/03/qrcode-1.png" alt="Quoter QR Code" title="qrcode-quoter-s" width="140" height="140" class="alignright size-full wp-image-206" /></a><br />
Read fun internet quotes from a variety of websites. Perfect entertaining while waiting in queues, public transport and similar.</p>
<p>Features include:<br />
- Choosing which sites to read from<br />
- Reading latest quotes<br />
- Saving quotes for offline reading<br />
- Sharing quotes via SMS, email, Facebook etc.</p>
<p>If you like my app, please buy the <a href="https://market.android.com/details?id=biz.olex.android.quoter.donate">donate version</a> &#8211; it&#8217;s ad-free!</p>
<p>Any comments and suggestions are welcome here in the Market or per eMail.</p>
<p>Quote sources in English:<br />
- bash.org: latest, random, random >0, top100<br />
- qdb.us<br />
- quotebucket.org<br />
- fmylife.com</p>
<p>Quote sources in German:<br />
- german-bash.org: latest, random<br />
- ibash.de<br />
- swissbash.ch<br />
- abash.at<br />
- SMSvonGesternNacht<br />
- school-bash.org</p>
<p>Quote sources in Russian and Ukrainian:<br />
- bash.org.ru: latest, random, abyss, abyssbest, all with pagination support!<br />
- ibash.org.ru<br />
- ithappens.ru<br />
- zadolba.li<br />
- bash.bynets.org (bash.org.by)<br />
- ukrbash.org<br />
- killmepls.ru<br />
- nefart.ru</p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fandroid%2Fquoter%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/android/quoter/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/android/quoter/"  data-text="Android App &#8211; Quoter" data-count="horizontal" data-via="olex">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/android/quoter/feed/langswitch_lang/en/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>§ 162. Writer&#8217;s block</title>
		<link>http://olex.biz/blog/writers-block/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=writers-block</link>
		<comments>http://olex.biz/blog/writers-block/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 03:25:04 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[translated]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=191</guid>
		<description><![CDATA[Let&#8217;s have a simple experiment. Without stopping, let&#8217;s say all the words we know (or ask a friend to do this). The first ten words will come at once. Then we will look for and name objects in the room &#8211; maybe ten of those. Then we remember a few unusual words from the far [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s have a simple experiment. Without stopping, let&#8217;s say all the words we know (or ask a friend to do this). The first ten words will come at once. Then we will look for and name objects in the room &#8211; maybe ten of those. Then we remember a few unusual words from the far distant end of our vocabulary. Abd then we stop, because we run out of words.</p>
<p>If we try to describe anything known to us with our words, there will be no word deficiency. One description will be good, another one not so &#8211; that will tell the difference in the describer&#8217;s skill. But noone will stop looking for the next needed word in a simple story.</p>
<p>An &#8220;idea crisis&#8221; can only happen, if the designer sets out aiming to think of something new and unusual.</p>
<p>Something new and unusual cannot be thought up &#8211; it can only be discovered while working on a specific, defined goal. It&#8217;s the same difference as there is between recitation of words and a story.</p>
<p>A writer&#8217;s block is a dead end of a senseless way.</p>
<p><em>&copy; <a href="http://www.artlebedev.ru/kovodstvo/sections/162/">art.lebedev</a>, my translation from Russian</em></p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fblog%2Fwriters-block%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/blog/writers-block/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/blog/writers-block/"  data-text="§ 162. Writer&#8217;s block" data-count="horizontal" data-via="olex">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/blog/writers-block/feed/langswitch_lang/en/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN for website deployment &#8211; watch it</title>
		<link>http://olex.biz/blog/svn-website-deployment/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=svn-website-deployment</link>
		<comments>http://olex.biz/blog/svn-website-deployment/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 03:28:25 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=161</guid>
		<description><![CDATA[Many webmasters use SVN not only as a version control system during website development, but also as a deployment tool for easily synchronising the development environment with the production server. A serious flaw has been uncovered in the system that many are unaware about, and that poses a significant security threat, allowing a potential attacker [...]]]></description>
			<content:encoded><![CDATA[<p>Many webmasters use SVN not only as a version control system during website development, but also as a deployment tool for easily synchronising the development environment with the production server. A serious flaw has been uncovered in the system that many are unaware about, and that poses a significant security threat, allowing a potential attacker to gain access to source codes and configuration files. To understand that flaw, we must understand a little about how the SVN system works.</p>
<p>In every folder that is managed with SVN, it creates a hidden <strong>.svn</strong> subdirectory. In it, a list of all files and subdirectories in that folder are stored, together with technical information about their history as well as every file itself. The file <strong>.svn/entries</strong> contains a list of all files and directories in the folder where <strong>.svn</strong> is located, and the directory <strong>.svn/text-base</strong> contains the recent revisions of all files, with <em>.svn-base</em> added as an additional extension.</p>
<pre>
project
  |- <em>index.php</em>
  |- <em>config.php</em>
  |- dir
  |    |- .svn
  |    |    |- <em>entries</em>
  |    |    '- text-base
  |    |         '- <em>file.ext</em>.svn-base
  |    '- <em>file.ext</em>
  |- .svn
  |    |- <em>entries</em>
  |    |- text-base
  |    |    |- <em>index.php</em>.svn-base
  |    |    '- <em>config.php</em>.svn-base
  |    '- ...
  '- ...
</pre>
<p>Now, normally the <strong>.svn</strong> is hidden, and doesn&#8217;t bother anyone much. However, with default settings, the webserver will treat the files inside it just like any other file &#8211; if requested directly, those files will be served. Using the <strong>entries </strong>file, a list of accessible files can be obtained &#8211; among which there might be configuration files or others containing confidential information. And since the files in the <strong>text-base</strong> directory have their extension changed they will not be processed by, for example, PHP &#8211; the sourcecode will be shown as it is.</p>
<p>This vulnerability was discovered some time ago by a group of Russian programmers. They did a scan of a large amount of websites, including some fairly big names in the .com, .de and .ru zones, and the results were staggering. Owners of hundreds of websites were notified of the vulnerability, and after it was closed, some details were disclosed on a large Russian IT blog <a href="http://habrahabr.ru/blogs/infosecurity/70330/">Habrahabr</a>.</p>
<p>There are multiple ways of securing against the vulnerability. Among the most simple and efficient are:
<ul>
<li>Blocking web access to the <strong>.svn</strong> directory altogether using, for example, the <strong>.htaccess</strong> file for Apache.</li>
<li>Using the <strong>svn export</strong> command instead of the usual <strong>svn checkout</strong> does not produce the <strong>.svn</strong> directory in the first place.</li>
</ul>
<p>While those solutions might seem obvious (and they really are), I was very surprised when I did a simple check among a few websites from my bookmarks list. So webmasters &#8211; if you haven&#8217;t yet known about this, beware.</p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Fblog%2Fsvn-website-deployment%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/blog/svn-website-deployment/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/blog/svn-website-deployment/"  data-text="SVN for website deployment &#8211; watch it" data-count="horizontal" data-via="olex">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/blog/svn-website-deployment/feed/langswitch_lang/en/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Fanboys See Operating Systems</title>
		<link>http://olex.biz/fun/how-fanboys-see-operating-systems/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-fanboys-see-operating-systems</link>
		<comments>http://olex.biz/fun/how-fanboys-see-operating-systems/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 19:06:57 +0000</pubDate>
		<dc:creator>Olexandr Savchuk</dc:creator>
				<category><![CDATA[fun]]></category>

		<guid isPermaLink="false">http://olex.biz/?p=158</guid>
		<description><![CDATA[Tweet]]></description>
			<content:encoded><![CDATA[<p><img src="http://i.imgur.com/YRoqC.jpg" alt="" /></p>
<div class="bottomcontainerBox" style="">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Folex.biz%2Ffun%2Fhow-fanboys-see-operating-systems%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://olex.biz/fun/how-fanboys-see-operating-systems/"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://olex.biz/fun/how-fanboys-see-operating-systems/"  data-text="How Fanboys See Operating Systems" data-count="horizontal" data-via="olex">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://olex.biz/fun/how-fanboys-see-operating-systems/feed/langswitch_lang/en/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

