<?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>Alberto Alonso Ruibal&#039;s Blog &#187; java</title>
	<atom:link href="http://www.alonsoruibal.com/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alonsoruibal.com</link>
	<description>A Galician Telecommunication Engineer</description>
	<lastBuildDate>Wed, 01 Feb 2012 18:02:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mobile 2.0 Open Ideas</title>
		<link>http://www.alonsoruibal.com/mobile20/</link>
		<comments>http://www.alonsoruibal.com/mobile20/#comments</comments>
		<pubDate>Sun, 05 Jun 2011 18:52:51 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobialia]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=766</guid>
		<description><![CDATA[<p></p> <p>This year I was invited to organize a workshop at the Mobile 2.0 Open Ideas event at Barcelona, on 16-17 June. With my experience developing Android apps at Mobialia and the social media integration on Martin Varsavsky&#8217;s RadioMe, I proposed the workshop:</p> <p>Bulding Social Media Enabled Android Apps</p> <p>This will be a 1-hour <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/mobile20/">Mobile 2.0 Open Ideas</a></span>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-767" title="mobile20" src="http://www.alonsoruibal.com/wp-content/uploads/2011/06/mobile20.png" alt="" width="270" height="167" /></p>
<p>This year I was invited to organize a workshop at the Mobile 2.0 Open Ideas event at Barcelona, on 16-17 June. With my experience developing Android apps at <a href="http://www.mobialia.com" target="_blank">Mobialia</a> and the social media integration on Martin Varsavsky&#8217;s <a href="http://www.radiomeapp.com" target="_blank">RadioMe</a>, I proposed the workshop:</p>
<p><strong>Bulding Social Media Enabled Android Apps</strong></p>
<p>This will be a 1-hour workshop In which I&#8217;ll provide some examples on how to integrate social media on Android apps, from the simple &#8220;Share&#8221; button to more complex integrations like using Twitter, LinkedIn or Facebook APIs, including logging-in with social media, etc.</p>
<p>I will try to do it interesting for developers and also for app designers who want to add cool social features to their apps. Slides and code samples will be available from the day of the event.</p>
<ul>
<li><a href="http://www.mobile20.eu" target="_blank">Mobile 2.0 Open Ideas</a></li>
<li><a href="http://mobile20.eu/2011/06/03/social-media-enabled-apps/" target="_blank">Building Social Media Enabled Android Apps at Mobile 2.0</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/mobile20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A small problem with the facebook Android SDK</title>
		<link>http://www.alonsoruibal.com/a-small-problem-with-the-facebook-android-sdk/</link>
		<comments>http://www.alonsoruibal.com/a-small-problem-with-the-facebook-android-sdk/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 20:07:54 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=658</guid>
		<description><![CDATA[<p>At Mobialia the lasts weeks I was involved on the development of a social app using, among other social networks APIs, the facebook API.</p> <p>For me it was easier to implement Twitter API access using only the signpost library, for facebook they recommend to download their Android SDK, and I did so. First we <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/a-small-problem-with-the-facebook-android-sdk/">A small problem with the facebook Android SDK</a></span>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-659" title="facebook_logo" src="http://www.alonsoruibal.com/wp-content/uploads/2011/04/facebook_logo.png" alt="" width="150" height="150" />At <a href="http://www.mobialia.com/" target="_blank">Mobialia</a> the lasts weeks I was involved on the development of a social app using, among other social networks APIs, the facebook API.</p>
<p>For me it was easier to implement Twitter API access using only the signpost library, for facebook they recommend to download their Android SDK, and I did so. First we need a class attribute with the Facebook object:</p>
<pre class="brush:java">Facebook fb = new Facebook(appId);</pre>
<p>The problem is during the autentication process: we must call the fb.authorize method&#8230;</p>
<pre class="brush:java">fb.authorize(this, PERMISSIONS, ACTIVITY_CODE, this);</pre>
<p>And wait for the result of this called activity on our <code>onActivityResult method<br />
</code></p>
<pre class="brush:java">protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    fb.authorizeCallback(requestCode, resultCode, data);
}</pre>
<p>But, here is the problem, under heavy memory requierements (like testing on a old HTC Magic) the caller activity may be killed, and the status of the Facebook object is not maintained so the call to <code>authorizeCallback</code> is going to fail.</p>
<p>Then I need a method to mantain the Facebook object status, and here comes the hack. I added this method to the Facebook object:</p>
<pre class="brush:java">public void setStatus(int mAuthActivityCode, DialogListener mAuthDialogListener){
    this.mAuthActivityCode = mAuthActivityCode;
    this.mAuthDialogListener = mAuthDialogListener;
}</pre>
<p>And I call this method on my o<code>nActivityResult:</code></p>
<pre class="brush:java">protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    fb.setStatus(ACTIVITY_CODE, this);
    fb.authorizeCallback(requestCode, resultCode, data);
}</pre>
<p>Note that the DialogListener is the same Activity. Other solution may be to avoid killing of the caller activity, but I don&#8217;t figure how&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/a-small-problem-with-the-facebook-android-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using two location providers on Android</title>
		<link>http://www.alonsoruibal.com/using-two-locationproviders-on-android/</link>
		<comments>http://www.alonsoruibal.com/using-two-locationproviders-on-android/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 15:23:12 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=640</guid>
		<description><![CDATA[<p> Android has two kinds of accuracy on location:</p> Fine: provided by the GPS, needs some time to be obtained Coarse: location determined with the cell of the mobile network <p>This location methods can be enabled or disabled by the user on the preferences or with some widgets.</p> <p>Initially on our apps we used <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/using-two-locationproviders-on-android/">Using two location providers on Android</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alonsoruibal.com/wp-content/uploads/2011/03/location.png"><img class="alignright size-full wp-image-644" title="location" src="http://www.alonsoruibal.com/wp-content/uploads/2011/03/location.png" alt="" width="250" height="250" /></a><br />
Android has two kinds of accuracy on location:</p>
<ul>
<li>Fine: provided by the GPS, needs some time to be obtained</li>
<li>Coarse: location determined with the cell of the mobile network</li>
</ul>
<p>This location methods can be enabled or disabled by the user on the preferences or with some widgets.</p>
<p>Initially on our apps we used only one LocationProvider with &#8220;Fine&#8221; accuracy:</p>
<ul>
<li>If the GPS was disabled it used automatically network-based location</li>
<li>But if GPS was enabled, the location used it needing some time to be determined</li>
</ul>
<p>As the data couldn&#8217;t be obtained until the location is determined, the app didn&#8217;t showed data, receiving this kind of error reports from some users.</p>
<p>The best solution that I found is to mantain two separated providers, with different precisions and receive location updates using both.</p>
<pre class="brush:java">LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);       

criteria.setAccuracy(Criteria.ACCURACY_FINE);
String providerFine = manager.getBestProvider(criteria, true);

criteria.setAccuracy(Criteria.ACCURACY_COARSE);
String providerCoarse = manager.getBestProvider(criteria, true);

if (providerCoarse != null) {
    manager.requestLocationUpdates(providerCoarse, 5*60000, 100, this);
}
if (providerFine != null) {
    manager.requestLocationUpdates(providerFine, 5*60000, 100, this);
}</pre>
<p>You can also check if providerFine and providerCoarse are the same provider. When receiving location, the one received from providerFine must take precedence over the one from providerCoarse. Location&#8217;s provider can be obtained with location.getProvider():</p>
<pre class="brush:java">public void onLocationChanged(Location location) {
     if (location.getProvider().equals(providerFine)) {
     ...</pre>
<p>This is a trick that we are using on our <a href="http://www.mobialia.com/apps/gas-stations/" target="_blank">Gas Stations Spain</a> app and also on <a href="http://www.mobialia.com/apps/labandroid/" target="_blank">Wikiplaces</a> (open sourced).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/using-two-locationproviders-on-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mobialia at LabAndroid</title>
		<link>http://www.alonsoruibal.com/labandroid2011/</link>
		<comments>http://www.alonsoruibal.com/labandroid2011/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 11:03:35 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobialia]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=627</guid>
		<description><![CDATA[<p>This week I was speaking at LabAndroid, a spanish initiative about Android devices, apps and development.</p> <p>I developed a special app for this event called &#8220;Wikiplaces&#8221; and I made the code avaiable as open source on Google Code.</p> <p>This app shows on a map or on a list places from Wikipedia near your location. <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/labandroid2011/">Mobialia at LabAndroid</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alonsoruibal.com/wp-content/uploads/2011/03/labandroid.jpg"><img class="alignright size-full wp-image-628" title="labandroid" src="http://www.alonsoruibal.com/wp-content/uploads/2011/03/labandroid.jpg" alt="" width="450" height="338" /></a>This week I was speaking at <a href="http://android.forman.es" target="_blank">LabAndroid</a>, a spanish initiative about Android devices, apps and development.</p>
<p>I developed a special app for this event called &#8220;Wikiplaces&#8221; and I made the code avaiable as open source on Google Code.</p>
<p>This app shows on a map or on a list places from Wikipedia near your location. I tried to include on it small code snippets for common things like styles on layouts, obtaining location, launching Google Maps Navigation, etc.</p>
<ul>
<li><a href="http://code.google.com/p/mobialia-wikiplaces/" target="_blank">Source on Google Code</a></li>
<li><a href="http://www.mobialia.com/apps/labandroid/" target="_blank">Page and Slideshow</a></li>
<li><a href="http://and.roid.es/conclusiones-del-segundo-laboratorio-andaluz-de-android.html" target="_blank">Article on and.roid.es</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/labandroid2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dealing with the &#8220;Bitmap Size Exceeds VM Budget&#8221; error</title>
		<link>http://www.alonsoruibal.com/bitmap-size-exceeds-vm-budget/</link>
		<comments>http://www.alonsoruibal.com/bitmap-size-exceeds-vm-budget/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 17:41:36 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobialia]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=617</guid>
		<description><![CDATA[<p>One of the most common errors that I found developing Android Apps is the &#8220;java.lang.OutOfMemoryError: Bitmap Size Exceeds VM Budget&#8221; error. I found this error frecuently on activities using lots of bitmaps after changing orientation: the Activity is destroyed, created again and the layouts are &#8220;inflated&#8221; from the XML consuming the VM memory avaiable <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/bitmap-size-exceeds-vm-budget/">Dealing with the &#8220;Bitmap Size Exceeds VM Budget&#8221; error</a></span>]]></description>
			<content:encoded><![CDATA[<p>One of the most common errors that I found developing Android Apps is the &#8220;java.lang.OutOfMemoryError: Bitmap Size Exceeds VM Budget&#8221; error. I found this error frecuently on activities using lots of bitmaps after changing orientation: the Activity is destroyed, created again and the layouts are &#8220;inflated&#8221; from the XML consuming the VM memory avaiable for bitmaps.</p>
<p>Bitmaps on the previous activity layout are not properly deallocated by the garbage collector because they have crossed references to their activity. After many experiments I found a quite good solution for this problem.</p>
<p>First, set the &#8220;id&#8221; attribute on the parent view of your XML layout:</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:id="@+id/RootView"
&gt;
...</pre>
<p>Then, on the onDestroy()  method of your Activity, call the unbindDrawables() method passing a refence to the parent View and then do a System.gc()</p>
<pre class="brush:java">@Override
protected void onDestroy() {
	super.onDestroy();

	unbindDrawables(findViewById(R.id.RootView));
	System.gc();
}

private void unbindDrawables(View view) {
	if (view.getBackground() != null) {
		view.getBackground().setCallback(null);
	}
	if (view instanceof ViewGroup) {
		for (int i = 0; i &lt; ((ViewGroup) view).getChildCount(); i++) {
			unbindDrawables(((ViewGroup) view).getChildAt(i));
		}
		((ViewGroup) view).removeAllViews();
	}
}</pre>
<p>This unbindDrawables() method explores the view tree recursively and:</p>
<ul>
<li>Removes callbacks on all the background drawables</li>
<li>Removes childs on every viewgroup</li>
</ul>
<p>This solved the problem on many of our Mobialia apps.</p>
<p><strong>UPDATE 2011-03-30:</strong></p>
<p>Today <a href="http://www.twitter.com/luiskap" target="_blank">@luiskap</a> from <a href="http://www.spartanbits.com" target="_blank">SpartanBits </a>told me another good solution: if you don&#8217;t need different layouts for portrait and landscape modes, you can make your activity react to orientation changes (avoiding activity destroy) adding to your activity&#8217;s manifest:<code> android:configChanges="keyboardHidden|orientation" </code>and overriding the onConfigurationChanged method, calling setContentView reusing the already created views. There is a good explanation on <a href="http://stackoverflow.com/questions/456211/activity-restart-on-rotation-android" target="_blank">StackOverflow</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/bitmap-size-exceeds-vm-budget/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Google DevFest 2010</title>
		<link>http://www.alonsoruibal.com/google-devfest-2010/</link>
		<comments>http://www.alonsoruibal.com/google-devfest-2010/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 18:59:53 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=570</guid>
		<description><![CDATA[<p>As many of you know, this year I&#8217;m involved on Android with my project Mobialia. On February I was on the Android Developer Lab at Madrid and today I returned for the Google DevFest.</p> <p>The event started with Dave Burke presenting Google Technologies in general. Many jokes about the iPhone (to show the Chrome2Phone <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/google-devfest-2010/">Google DevFest 2010</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alonsoruibal.com/wp-content/uploads/2010/09/devfest2010.png"><img class="alignright size-full wp-image-575" title="devfest2010" src="http://www.alonsoruibal.com/wp-content/uploads/2010/09/devfest2010.png" alt="" width="300" height="180" /></a>As many of you know, this year I&#8217;m involved on Android with my project <a href="http://www.mobialia.com" target="_blank">Mobialia</a>. On February I was on the Android Developer Lab at Madrid and today I returned for the <a href="https://sites.google.com/site/devfestmadrid/" target="_blank">Google DevFest</a>.</p>
<p>The event started with Dave Burke presenting Google Technologies in general. Many jokes about the iPhone (to show the <a href="http://code.google.com/p/chrometophone/" target="_blank">Chrome2Phone</a> extension he send a page about iPhone unlocking from Chrome to a Nexus One). He made the typical <a href="http://dbgtst.appspot.com/ss/" target="_blank">Sunspider Javascript Test</a> comparation between a Nexus One with Froyo and an iPad. It also was quite impressive so see <a href="http://code.google.com/p/quake2-gwt-port/" target="_blank">GWT Quake2 Port</a> running on Chrome at 50 FPS and the new voice/camera input fields on HTML5.</p>
<p>Then the sessions where split on two lines, I assisted to the Android, Chrome&amp;HTML5 and Maps related.</p>
<p>Our beloved Reto Meier was speaking at the Android Sessions, much more technical than on February&#8217;s Android Developer Lab (good!). On his first session he made a great presentation about good and bad practices developing Android Apps (I suggest every android developer to see it!), on the second he speaked in detail about <a href="http://code.google.com/intl/gl/android/c2dm/index.html" target="_blank">Cloud to Device Messaging</a> and vice-versa. He gave me lots of app ideas using this feature. Finally he swowed us proudly his new <a href="http://galaxytab.samsungmobile.com/" target="_blank">Samsung Galaxy Tab</a> and encouraged us to adapt our applications to the new tablet devices.</p>
<p>There were also very short presentations of spanish app developers (<a href="http://e-adventure.e-ucm.es/" target="_blank">eAdventure</a>, <a href="http://www.libregeosocial.org/" target="_blank">LibreGeoSocial</a>, Inmobilia, Sicad and great the one of <a href="http://jbthemes.com/anderweb/" target="_blank">AnderWeb</a>!).</p>
<p>Next, Paul Kinlan speaked about Chrome Apps and Extensions, the App Store and HTML5 on detail. I&#8217;m also very happy to see the progression of HTML5 and how Chrome is leaveraging the innovation towards a better web. Quite funny to see a modified <a href="http://www.google.com/pacman/" target="_blank">Pacman Doodle</a> controlled with the acceleromers of the iBook. There was also a presentation of <a href="http://www.fiabee.com/" target="_blank">Fiabee</a> showing their HTML5 app and Chrome extension.</p>
<p>On the last sessions with Josh Livni talking about maps and presenting the Google Maps API v3, I was very impressed with maps customization, <a href="http://tables.googlelabs.com/" target="_blank">Fusion Tables</a> and the new Google Street view API possibiliting the creation of 360º photos and adding them on specific locations (as inside a bar!).</p>
<p>All the sessions where recorded on video and will be avaiable at the <a href="https://sites.google.com/site/devfestmadrid/" target="_blank">Google DevFest Madrid</a> web site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/google-devfest-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tales of a chess engine developer</title>
		<link>http://www.alonsoruibal.com/tales-of-a-chess-engine-developer/</link>
		<comments>http://www.alonsoruibal.com/tales-of-a-chess-engine-developer/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 22:00:19 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[chess]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=534</guid>
		<description><![CDATA[<p>Chess engine development is one of the most brain-crushing activities I&#8217;ve been involved on the last years. Last nigths I was working again on my Carballo Chess Engine with some advances.</p> <p>First of all I decided to leave Negamax and go with Principal Variation Search (PVS). Also decided to implement separate methods for root <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/tales-of-a-chess-engine-developer/">Tales of a chess engine developer</a></span>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.alonsoruibal.com/wp-content/uploads/2009/09/pawn.png" alt="" title="pawn" width="159" height="125" class="alignleft size-full wp-image-311" />Chess engine development is one of the most brain-crushing activities I&#8217;ve been involved on the last years. Last nigths I was working again on my Carballo Chess Engine with some advances.</p>
<p>First of all I decided to leave Negamax and go with Principal Variation Search (PVS). Also decided to implement separate methods for root nodes, PV nodes and null window searches. On previous experiments PVS was performing worse than Negamax, but I discovered the reason: the aspiration window has some implementation issues with PVS: when the search for a move fails low at the root node the move must be researched enlarging the window.</p>
<p>I was very stranged of why Futiliy Pruning was not working for me, but finally discovered the reason: a simple sign change after evaluation was the reason! Also implemented to store the evaluation values on the Transposition Table (TT).</p>
<p>The next step: why Carballo searched much less depths than other engines, it was due to quiescence search. I was generating checks for the first 4 PLY&#8217;s of quiescence, but some other engines not, so this was the reason. I decide to generate only checks on the first PLY of quiescence and only for PV nodes. Also modified a bit the move generation to optimize for quiescence.</p>
<p>During this time also found many interesting bugs, I was storing on the TT the bound and not the score when failing high/low, also on PV nodes is better to use only the TT for ordering and not to return scores from it, this helps avoiding draws. Also found a serious bugs involving time management (was taking as reference opponent&#8217;s time) and with contempt factor on IID searches corrupting TT entries. Finally added a Pawn Push Extension and removed the Recapture Extension and now some extensions now depend of the node type.</p>
<p>Running some test tournaments, I hope to get some good results soon and add the improved engine to my <a href="http://www.mobialia.com/chess">Mobialia Chess</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/tales-of-a-chess-engine-developer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jim Ablett&#8217;s Carballo packaging</title>
		<link>http://www.alonsoruibal.com/jim_abletts_carballo/</link>
		<comments>http://www.alonsoruibal.com/jim_abletts_carballo/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 21:10:42 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[chess]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=521</guid>
		<description><![CDATA[<p></p> <p>Jim Ablett has published a packaged executable for my Carballo chess engine. He also made a pretty logo for it, shown here. Check his page to download executables for Carballo and a lot of other chess engines: Jim Ablett&#8217;s Winboard Chess Page. Thanks Jim for your great <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/jim_abletts_carballo/">Jim Ablett&#8217;s Carballo packaging</a></span>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.alonsoruibal.com/wp-content/uploads/2010/06/carballo_jim_ablett.gif" alt="" title="carballo_jim_ablett" width="100" height="50" class="alignleft size-full wp-image-523" /></p>
<p>Jim Ablett has published a packaged executable for my Carballo chess engine. He also made a pretty logo for it, shown here. Check his page to download executables for Carballo and a lot of other chess engines: <a href="http://homepages.tesco.net/henry.ablett/jims.html">Jim Ablett&#8217;s Winboard Chess Page</a>. Thanks Jim for your great work!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/jim_abletts_carballo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Great GWT UI for Carballo Chess Engine</title>
		<link>http://www.alonsoruibal.com/great-gwt-ui-for-carballo-chess-engine/</link>
		<comments>http://www.alonsoruibal.com/great-gwt-ui-for-carballo-chess-engine/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 10:20:37 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[chess]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=414</guid>
		<description><![CDATA[<p>Lukas Laag has written me about his new  GUI for the Carballo Chess Engine  using the Google Web Toolkit (GWT) and his SVG Graphics Library for GWT, libgwtsvg.</p> <p>GWT is provided from Google to develop applications in Javascript programming in Java. It conterts the Java code to Javascript, and the application is run on <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/great-gwt-ui-for-carballo-chess-engine/">Great GWT UI for Carballo Chess Engine</a></span>]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-415 alignleft" title="libgwtsvg-chess" src="http://www.alonsoruibal.com/wp-content/uploads/2009/12/libgwtsvg-chess.png" alt="libgwtsvg-chess" width="300" height="252" />Lukas Laag has written me about his new  GUI for the Carballo Chess Engine  using the Google Web Toolkit (GWT) and his SVG Graphics Library for GWT, <a title="libgwtsvg" href="http://www.vectomatic.org/?page_id=8" target="_blank">libgwtsvg</a>.</p>
<p>GWT is provided from Google to develop applications in Javascript programming in Java. It conterts the Java code to Javascript, and the application is run on the browser, without any additional plugin.</p>
<p>This interface is quite better than the sample Applet from Carballo, it has move history, legal move hightlighting, and SVN graphics. It can be used from:</p>
<p><a href="http://www.vectomatic.org/gwt/libgwtsvg-chess/libgwtsvg-chess.html#0" target="_blank">http://www.vectomatic.org/gwt/libgwtsvg-chess/libgwtsvg-chess.html</a></p>
<p>He also wrote an <a href="http://www.vectomatic.org/?p=95" target="_blank">article</a> explaining the difficulties of his project. Thanks Lukas for your work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/great-gwt-ui-for-carballo-chess-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carballo Chess Engine 0.3</title>
		<link>http://www.alonsoruibal.com/carballo-chess-engine-0-3/</link>
		<comments>http://www.alonsoruibal.com/carballo-chess-engine-0-3/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 14:44:58 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[chess]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=341</guid>
		<description><![CDATA[<p>At last, the first &#8220;stable&#8221; release of my chess engine. The main new features are:</p> Static Exchange Evaluator (SEE): the biggest change,  affects move ordering introducing more move generation phases, also affects LMR, etc. New &#8220;experimental&#8221; evaluation function, with King Safety, X-Ray attacks and improved mobility Recapture extension, also changed a lot the extension <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/carballo-chess-engine-0-3/">Carballo Chess Engine 0.3</a></span>]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-311 alignright" title="pawn" src="http://www.alonsoruibal.com/wp-content/uploads/2009/09/pawn.png" alt="pawn" width="159" height="125" />At last, the first &#8220;stable&#8221; release of my chess engine. The main new features are:</p>
<ul>
<li>Static Exchange Evaluator (SEE): the biggest change,  affects move ordering introducing more move generation phases, also affects LMR, etc.</li>
<li>New &#8220;experimental&#8221; evaluation function, with King Safety, X-Ray attacks and improved mobility</li>
<li>Recapture extension, also changed a lot the extension mechanics adding fractional extensions</li>
<li>Quiescense search now only generate checks the first 4 PLYs and follows only good captures</li>
<li>UCI Options: can configure Hash Size, Book, LRM, IID, extensions, the evaluator to use, etc.</li>
<li>Bugs with draw detection by the 50 move rule (I was doing at 50 PLY), and lots of other small bugs solved</li>
</ul>
<p>Finally the Negascout code did not improve results at tournaments, so all the Negascout code is commented in the SearchEngine. I&#8217;ll continue to investigate.</p>
<p>With this release I include an package to run the program from chess GUIs like <a href="http://www.playwitharena.com" target="_blank">Arena</a>, so now it can be included in &#8220;official&#8221; tournaments.</p>
<p>ELO at tests had a big increase from last version. Now scores over 2330 ELO points at BT2630 test (from the 2100 of Carballo 0.2). Also the positions solved of the &#8220;win at chess&#8221; test are now 275 of 300 (from the previous 237/300), well, also helped that the EPD parser had a bug and didn&#8217;t work well with positions with more than one solution. In LCT II also scores 2300 ELO. All the tests results are in the SVN, at the folder &#8220;testresults&#8221;.</p>
<p>But at tournament (playing against other java chess engines), the improvement is not so much. Now I think is over BrembroCE, but remains behind Jonathan Pettersson&#8217;s <a href="http://mediocre.blogspot.com" target="_blank">Mediocre</a>, <a href="http://www.alfchess.dk/" target="_blank">Alf</a> and <a href="http://chess.winkelhagen.com/" target="_blank">Frank Walter</a> chess engines. I will center the next testing in tournament play.</p>
<p><a href="http://www.alonsoruibal.com/chess/">Play Against Carballo Chess Engine</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/carballo-chess-engine-0-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carballo Chess Engine</title>
		<link>http://www.alonsoruibal.com/carballo-chess-engine/</link>
		<comments>http://www.alonsoruibal.com/carballo-chess-engine/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 16:01:39 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[chess]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=299</guid>
		<description><![CDATA[<p>Two months ago I read a post about Toledo Nanochess in Microsiervos, and remembered my failed attemps to make a chess program in Pascal/Assembler when I was younger. So 13 years later I wrote my chess program from scratch in Java. I did it in two months at after-hours, reading a lot at the <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/carballo-chess-engine/">Carballo Chess Engine</a></span>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-311" title="pawn" src="http://www.alonsoruibal.com/wp-content/uploads/2009/09/pawn.png" alt="pawn" width="159" height="125" />Two months ago I read a post about Toledo Nanochess in Microsiervos, and remembered my failed attemps to make a chess program in Pascal/Assembler when I was younger. So 13 years later I wrote my chess program from scratch in Java. I did it in two months at after-hours, reading a lot at the <a href="http://chessprogramming.wikispaces.com">Chess Programming Wiki</a>, and here is the result:</p>
<p><a href="http://www.alonsoruibal.com/chess/" target="_blank">Play Against Carballo Chess Engine</a></p>
<p>It is a work-in progress, but a good framework to test some ideas in chess programming and good enought to play some interesting games against it (well, actually I am not able to win it, but I am a very poor chess player).</p>
<p>Now I&#8217;m mounting my kitchen from Ikea, so I haven&#8217;t time to improve Carballo, but in a near future I&#8217;ll continue working on it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/carballo-chess-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diseño de interiores con Sweet Home 3D</title>
		<link>http://www.alonsoruibal.com/diseno-de-interiores-con-sweet-home-3d/</link>
		<comments>http://www.alonsoruibal.com/diseno-de-interiores-con-sweet-home-3d/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 13:17:15 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[My House]]></category>
		<category><![CDATA[building]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/diseno-de-interiores-con-sweet-home-3d/</guid>
		<description><![CDATA[<p>En el mundillo de diseño de hogares es una alegría encontrarse ¡al fin! con uno open source, y que además está hecho en mi lenguaje de programación favorito, Java. Se trata de una aplicación muy fácil de usar, muy apropiada para no profesionales y aunque sólo vale para interiores, la mayoría de la gente <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/diseno-de-interiores-con-sweet-home-3d/">Diseño de interiores con Sweet Home 3D</a></span>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.alonsoruibal.com/wp-content/uploads/2008/02/sweethome3d.png" alt="Sweet Home 3D" align="left" />En el mundillo de diseño de hogares es una alegría encontrarse ¡al fin! con uno open source, y que además está hecho en mi lenguaje de programación favorito, Java.  Se trata de una aplicación muy fácil de usar, muy apropiada para no profesionales y aunque sólo vale para interiores, la mayoría de la gente es lo que tiene que decidir de su casa, la decoración interior, ya que las paredes y el exterior suelen venir impuestos.</p>
<p>Mediante la tecnología Java Web Start, el programa se puede ejecutar directamente desde su propia página web,  <a href="http://sweethome3d.sourceforge.net/" target="_blank">http://sweethome3d.sourceforge.net/</a>, siempre que se tenga Java instalado.</p>
<p>Hay una gran cantidad de modelos de objetos para utilizar con el programa, muchos descargables desde varias webs dedicadas al tema, por lo que se puede utilizar para el diseño integral de baños, cocinas, etc. En definitiva, una buena alternativa a otros <a href="http://www.alonsoruibal.com/programas-3d-para-el-diseno-de-casas/">programas 3d para el diseño de casas</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/diseno-de-interiores-con-sweet-home-3d/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mando a distancia bluetooth con el móvil</title>
		<link>http://www.alonsoruibal.com/mand-a-distancia-bluetooth-con-el-movil/</link>
		<comments>http://www.alonsoruibal.com/mand-a-distancia-bluetooth-con-el-movil/#comments</comments>
		<pubDate>Sun, 30 Sep 2007 17:20:39 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mythtv]]></category>
		<category><![CDATA[tv]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/mand-a-distancia-bluetooth-con-el-movil/</guid>
		<description><![CDATA[<p>Al fin hice un hueco para publicar mi mando a distancia bluetooth con el móvil, que es un proyecto que utilizo para controlar el MythTV a través del teléfono móvil. Espero que le sea de utilidad a alguien.</p> ]]></description>
			<content:encoded><![CDATA[<p>Al fin hice un hueco para publicar mi <a title="BtRemote" href="http://www.alonsoruibal.com/desarrollos/btremote-j2me/">mando a distancia bluetooth con el móvil</a>, que es un proyecto que utilizo para controlar el MythTV a través del teléfono móvil. Espero que le sea de utilidad a alguien.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/mand-a-distancia-bluetooth-con-el-movil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Juego del conecta4 para móviles</title>
		<link>http://www.alonsoruibal.com/publico-el-juego-del-conecta4-para-moviles/</link>
		<comments>http://www.alonsoruibal.com/publico-el-juego-del-conecta4-para-moviles/#comments</comments>
		<pubDate>Sun, 23 Sep 2007 13:46:36 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/publico-el-juego-del-conecta4-para-moviles/</guid>
		<description><![CDATA[<p>Este era un proyectillo que tenía en la recámara dede hace unos años y por fin lo he publicado, cómo no, bajo licencia GPL. Podéis encontrar toda la información en la URL http://www.alonsoruibal.com/desarrollos/conecta-4-j2me/</p> ]]></description>
			<content:encoded><![CDATA[<p>Este era un proyectillo que tenía en la recámara dede hace unos años y por fin lo he publicado, cómo no, bajo licencia GPL. Podéis encontrar toda la información en la URL <a title="Juego del Conecta4" href="http://www.alonsoruibal.com/desarrollos/conecta-4-j2me/">http://www.alonsoruibal.com/desarrollos/conecta-4-j2me/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/publico-el-juego-del-conecta4-para-moviles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bravo por OpenBravo ERP</title>
		<link>http://www.alonsoruibal.com/bravo-por-openbravo/</link>
		<comments>http://www.alonsoruibal.com/bravo-por-openbravo/#comments</comments>
		<pubDate>Fri, 07 Sep 2007 13:34:11 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[erps]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=46</guid>
		<description><![CDATA[<p>Lo de los CRMs/ERPs es un mercado curioso, cada empresa de desarrollo realiza su propio ERP, como suelen decir que ninguno de los que hay se adapta a sus necesidades ni a las de sus clientes, hala, a picar código. También es cierto que muchas veces se pone como excusa el elevado costo de <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/bravo-por-openbravo/">Bravo por OpenBravo ERP</a></span>]]></description>
			<content:encoded><![CDATA[<p>Lo de los CRMs/ERPs es un mercado curioso, cada empresa de desarrollo realiza su propio ERP, como suelen decir que ninguno de los que hay se adapta a sus necesidades ni a las de sus clientes, hala, a picar código. También es cierto que muchas veces se pone como excusa el elevado costo de <a href="http://www.sap.com" title="SAP">SAP</a> o <a href="http://http://www.microsoft.com/spain/dynamics/" title="Dynamics">Dynamics</a>.</p>
<p>Pero bueno, el negocio de los CRMs/ERPs no está en su desarrollo (y por consiguiente en sus licencias), sino en su implantación y su mantenimiento, debido a los altos costes del personal especializado que debe adaptar un ERP a las necesidades de una determinada empresa.</p>
<p>No obstante, en el terreno del Open Source investigué varias veces para  encontrar una buena solución, pero nunca me gustaron ni <a href="http://www.compiere.org/" title="Compiere">Compiere</a>, ni su principal fork, <a href="http://www.adempiere.com/" title="Adempiere">Adempiere</a>, ni su versión española, <a href="http://www.openxpertya.org/" title="OpenXpertya">OpenXpertya</a>, por su excesiva complejidad, la dificultad para ponerlos a andar con una BBDD que no fuera Oracle. También llegué a probar Facturalux (ahora se llama <a href="http://www.infosial.com/" title="InfoSial">AbanQ</a>), muy orientado hacia pequeña empresa, pero no me gustó el que no funcionara bien en Windows ni su arquitectura, usando QT y almacenando el código de script en la base de datos.</p>
<p>Hace poco me tropecé con <a href="http://www.openbravo.com" title="OpenBravo">OpenBravo</a>, un ERP de código abierto totalmente web cuyo modelo de datos se basó en Compiere. Está realizado por una empresa española que recibió una inyección de capital de 5M€. Inicialmente, el hecho de que fuera web me echó un poco hacia atrás (la vieja disputa de aplicación local o aplicación web), pero el interfaz es muy correcto, y creo que a muchos clientes, les colaría como una aplicación local si se abre en un navegador sin menús ni barra de herramientas.</p>
<p>En cuanto a arquitectura, me gusta mucho, casi como si lo hubiera diseñado yo. Se ejecuta sobre un Tomcat en un sistema MVC que han implementado ellos, pero usando Hibernate para el acceso a datos. Lo que me convence mucho es que permita funcionar tanto con Oracle como con Postgres (aunque requiera la versión 8, que no viene de serie en mi Debian Etch, tocó compilar&#8230;).</p>
<p>La instalación es muy sencilla: dispone de un instalador gráfico que facilita mucho la tarea, aunque tarda bastante (algo más de una hora), ya que recompila la aplicación y una instalación base ocupa casi ¡1 GB!.</p>
<p>En cuanto a funcionalidades, dispone de gestión de aprovisionamiento, almacén, producción, facuración/contabilidad, proyectos y CRM. En la parte que más conozco yo,  que es la de CRM lo veo un poco pobre ya que carece de gestión de OPVs y de incidencias de clientes, está mas orientado a producción. No obstante, se necesitaría una empresa cobaya para ver que tal funcionaen el resto de sectores.</p>
<p>En fin, cuando os pregunten por un ERP Opensource, tened muy en cuenta a los compatriotas de OpenBravo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/bravo-por-openbravo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Un Gmail de código abierto</title>
		<link>http://www.alonsoruibal.com/un-gmail-de-codigo-abierto/</link>
		<comments>http://www.alonsoruibal.com/un-gmail-de-codigo-abierto/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 13:42:45 +0000</pubDate>
		<dc:creator>rui</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.alonsoruibal.com/?p=45</guid>
		<description><![CDATA[<p>Esta entrada está destinada a todos los administradores de ISPs que están buscando una solución de webmail para implantar en sus sistemas. Yo en su día, cuando trabajaba en Shylex, busqué muchas, y como no había ninguna decente en J2EE nos tuvimos que hacer nuestro propio webMail, bueno, estaba SquirrelMail, pero era en PHP, <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.alonsoruibal.com/un-gmail-de-codigo-abierto/">Un Gmail de código abierto</a></span>]]></description>
			<content:encoded><![CDATA[<p>Esta entrada está destinada a todos los administradores de ISPs que están buscando una solución de webmail para implantar en sus sistemas. Yo en su día, cuando trabajaba en <a href="http://www.shylex.com" title="Shylex">Shylex</a>, busqué muchas, y como no había ninguna decente en J2EE nos tuvimos que hacer nuestro propio webMail, bueno, estaba <a href="http://www.squirrelmail.org" title="Squirrel Mail" target="_blank">SquirrelMail</a>, pero era en PHP, cosa que no era mucho de mi agrado.</p>
<p>Pues bien, Jordi Marquès se ha molestado en fusilar directamente la apariencia de Google Mail, y hacer así un webMail de código abierto, un proyecto que se llama <a href="http://www.duroty.com" title="Duroty">Duroty</a>.</p>
<p>La solución me parece muy elegante, desarrollada integramente en Java y sobre el servidor de aplicaciones <a href="http://www.jboss.org" title="JBoss" target="_blank">JBoss</a> y la BBDD <a href="http://www.posgresql.org" title="Postgres">Postgres</a>, con posibilidades de configuración en clúster. Sus características son muy notables, entre las que destacan la posibilidad de realizar búsquedas en el texto de los adjuntos (incluso en documentos Office), lectores de RSS&#8230; bueno, lo mejor es que lo probéis en <a href="http://www.duroty.com/duroty">http://www.duroty.com/duroty</a> utilizando como usuario <strong>demo</strong> y como contraseña <strong>demo</strong>. Enhorabuena a sus desarrolladores.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alonsoruibal.com/un-gmail-de-codigo-abierto/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

