<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19344972</id><updated>2011-08-21T13:30:13.335+02:00</updated><category term='icq'/><category term='verbnet'/><category term='Microsoft'/><category term='dbpedia'/><category term='cellphone'/><category term='ai'/><category term='encoding'/><category term='Canon TX1'/><category term='bug'/><category term='AJAX'/><category term='Wants'/><category term='e51'/><category term='Windows'/><category term='ontology'/><category term='MJPEG'/><category term='phone'/><category term='3G'/><category term='owl'/><category term='compression'/><category term='faviki'/><category term='rdf'/><category term='freebase'/><category term='msn'/><category term='Smalltalk'/><category term='Canon'/><category term='Camera'/><category term='HSDPA'/><category term='natural language processing'/><category term='codec'/><category term='XEP'/><category term='connectionism'/><category term='mobile phone'/><category term='trueknowledge'/><category term='pingback'/><category term='Video'/><category term='artificial intelligence'/><category term='Novint Falcon'/><category term='UMBEL'/><category term='database'/><category term='linux'/><category term='oss'/><category term='Windows Vista'/><category term='xmpp'/><category term='jabber'/><category term='java'/><category term='Nokia'/><category term='programming'/><category term='linkback'/><category term='ffmpeg'/><category term='CNC'/><category term='gprs'/><category term='graph-theory'/><category term='haptic feedback'/><category term='Drool'/><category term='wikipedia'/><category term='motion control'/><category term='sql'/><category term='Nokia E51'/><category term='groovy'/><category term='software'/><category term='Video camera'/><category term='foss'/><category term='framenet'/><category term='rdf/xml'/><category term='trackback'/><category term='WPE'/><category term='.NET'/><title type='text'>sandos</title><subtitle type='html'>Artificial Intelligence and anyhing that interests me at the moment.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19344972.post-9195534127455433722</id><published>2010-07-16T14:38:00.001+02:00</published><updated>2010-07-16T14:38:59.590+02:00</updated><title type='text'>Android Developers Blog: Android Market Welcomes Korea!</title><content type='html'>&lt;blockquote&gt;&lt;a href="http://android-developers.blogspot.com/2010/07/android-market-welcomes-korea.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+blogspot%2FhsDu+%28Android+Developers+Blog%29"&gt;Android Developers Blog: Android Market Welcomes Korea!&lt;/a&gt;: "As of today, Android Market is open for business to application buyers in the Republic of Korea. We hope that this will make the outstanding Android devices now available in that nation even more useful and fun. We welcome the people of Korea, acknowledged everywhere as one of the world's most-wired societies, to the world of Android."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This is awesome, really. WHAT ABOUT SWEDEN?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-9195534127455433722?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/9195534127455433722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=9195534127455433722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/9195534127455433722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/9195534127455433722'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2010/07/android-developers-blog-android-market.html' title='Android Developers Blog: Android Market Welcomes Korea!'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-1073432512201038051</id><published>2009-09-27T21:08:00.000+02:00</published><updated>2009-09-27T21:08:52.311+02:00</updated><title type='text'>Android Developers Blog: A Note on Google Apps for Android</title><content type='html'>I think googles stance on modded ROMs is a bit sad, since I am running one of those, and I would frankly not go back to stock ROM, because of lack of tethering. I think a totally open ROM would be awesome, but I realize it would take probably a year to replace the stuff that Google built. Hopefully I am wrong.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://android-developers.blogspot.com/2009/09/note-on-google-apps-for-android.html"&gt;Android Developers Blog: A Note on Google Apps for Android&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forum.xda-developers.com/showthread.php?t=564263"&gt;OpenAndroid&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-1073432512201038051?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://android-developers.blogspot.com/2009/09/note-on-google-apps-for-android.html' title='Android Developers Blog: A Note on Google Apps for Android'/><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/1073432512201038051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=1073432512201038051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/1073432512201038051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/1073432512201038051'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/09/android-developers-blog-note-on-google.html' title='Android Developers Blog: A Note on Google Apps for Android'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-4014130667974403818</id><published>2009-06-09T13:35:00.000+02:00</published><updated>2009-06-09T13:35:20.978+02:00</updated><title type='text'>Android Scripting Environment needs Groovy!</title><content type='html'>I am wondering why Google choose not to mention Groovy for the ASE, the &lt;a href="http://google-opensource.blogspot.com/2009/06/introducing-android-scripting.html"&gt;Android Scripting Environment&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Groovy has no trouble accessing java APIs, for one. Could it be that groovy relies too much on dynamic code to be useable on the dalvik VM? See here for example &lt;a href="http://www.nabble.com/Anyone-got-the-groovy-running-on-Android--td15044776.html"&gt;http://www.nabble.com/Anyone-got-the-groovy-running-on-Android--td15044776.html&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-4014130667974403818?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://google-opensource.blogspot.com/2009/06/introducing-android-scripting.html' title='Android Scripting Environment needs Groovy!'/><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/4014130667974403818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=4014130667974403818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4014130667974403818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4014130667974403818'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/06/android-scripting-environment-needs.html' title='Android Scripting Environment needs Groovy!'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-4847126503659802865</id><published>2009-06-05T09:27:00.003+02:00</published><updated>2009-06-05T09:35:24.679+02:00</updated><title type='text'>Xmpp server components for java</title><content type='html'>Its a bit sad that java is totally lacking any sort of embeddable or componentized server-side XMPP libraries. There is Tigase and Openfire servers, but they are just that, servers and not meant to build new servers or to be embedded, as far as I know. &lt;br /&gt;&lt;br /&gt;I have also failed to find any examples or libraries for creating component connections to XMPP servers, although they are meant to be very similar to client connections.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Edit: Actually, seems there are ways to use PubSub from java which should be good enough for me: &lt;a href="http://www.igniterealtime.org/community/thread/38292"&gt;http://www.igniterealtime.org/community/thread/38292&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-4847126503659802865?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/4847126503659802865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=4847126503659802865' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4847126503659802865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4847126503659802865'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/06/xmpp-server-components-for-java.html' title='Xmpp server components for java'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-2274681089011135999</id><published>2009-05-26T10:35:00.002+02:00</published><updated>2009-05-26T11:31:16.105+02:00</updated><title type='text'>LuxRender performance on AWS</title><content type='html'>Just plyaing around with LuxRender on a small Blender 2.48 testscene. On my laptop, which has a Core 2 Duo 2,2Ghz, I get about 22k samples/s. Using a "High-CPU Extra Large Instance" AWS instance I get between 120 and 300k. Average seems to be about 10 times higher than for my laptop, which is nice enough. These cost 0.8$ per instance-hour, which is pretty decent for shorter jobs. I'm not sure about the bandwidth needed, luxrender does transmit the "film" every now and then but the interval can be tweaked.&lt;br /&gt;&lt;br /&gt;Scaling this up by using more instances is also very easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-2274681089011135999?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/2274681089011135999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=2274681089011135999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2274681089011135999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2274681089011135999'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/05/luxrender-performance-on-aws.html' title='LuxRender performance on AWS'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-5840355769902748101</id><published>2009-05-19T16:37:00.000+02:00</published><updated>2009-05-19T16:38:47.323+02:00</updated><title type='text'>Lyrics for Fischerspooner - Megacolon</title><content type='html'>Just corrected a few errors in the version that are around on the net:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=dhpcp3pm_50c73j52x8"&gt;Document on Google docs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-5840355769902748101?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/5840355769902748101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=5840355769902748101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/5840355769902748101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/5840355769902748101'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/05/lyrics-for-fischerspooner-megacolon.html' title='Lyrics for Fischerspooner - Megacolon'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-7741312435885873938</id><published>2009-05-06T16:20:00.006+02:00</published><updated>2009-05-07T07:37:10.840+02:00</updated><title type='text'>How to add implicit imports to an embedded GroovyConsole</title><content type='html'>I wanted to have a graphical GroovyConsole that had my own APIs automatically imported. This proved to take some time to fix up. This is how it ended up looking. I created this in my normal eclipse-project so that I can easily launch this with the correct classpath already done for me.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;TestGUI.java:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;package groovy.ui;&lt;br /&gt;&lt;br /&gt;import java.lang.reflect.Field;&lt;br /&gt;import java.net.URL;&lt;br /&gt;import groovy.lang.GroovyClassLoader;&lt;br /&gt;import groovy.lang.GroovyShell;&lt;br /&gt;&lt;br /&gt;public class TestGUI extends Console&lt;br /&gt;{&lt;br /&gt;    public static void main(String[] args)&lt;br /&gt;    {&lt;br /&gt;        TestGUI gui = new TestGUI();&lt;br /&gt;&lt;br /&gt;        gui.run();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public TestGUI()&lt;br /&gt;    {&lt;br /&gt;        super();&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            setup();&lt;br /&gt;        }&lt;br /&gt;        catch (Exception e)&lt;br /&gt;        {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setup() throws Exception&lt;br /&gt;    {&lt;br /&gt;        Field shell = &lt;br /&gt;           Console.class.getDeclaredField("shell");&lt;br /&gt;        shell.setAccessible(true);&lt;br /&gt;        shell.set(this, new OurGroovyShell());&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;OurGroovyShell.java&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;package groovy.ui;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;import org.codehaus.groovy.control.CompilationFailedException;&lt;br /&gt;import groovy.lang.GroovyShell;&lt;br /&gt;&lt;br /&gt;public class OurGroovyShell extends GroovyShell&lt;br /&gt;{&lt;br /&gt;    public Object run(String scriptText, &lt;br /&gt;           String fileName, List list)&lt;br /&gt;        throws CompilationFailedException&lt;br /&gt;    {&lt;br /&gt;        scriptText = "import whatever.*\n" + scriptText;&lt;br /&gt;&lt;br /&gt;        String[] args = new String[list.size()];&lt;br /&gt;        list.toArray(args);&lt;br /&gt;        return run(scriptText, fileName, args);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;/span&gt;Fairly simple in the end. I was fooling around a bit to get this to work at first. This was done with Groovy 1.6.2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-7741312435885873938?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/7741312435885873938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=7741312435885873938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/7741312435885873938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/7741312435885873938'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/05/how-to-add-implicit-imports-to-embedded.html' title='How to add implicit imports to an embedded GroovyConsole'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-2925854438461936200</id><published>2009-03-27T10:46:00.003+01:00</published><updated>2009-03-27T10:52:19.640+01:00</updated><title type='text'>Using putty (win32) to connect to vino in ubuntu 8.10</title><content type='html'>Vino, it seems, has a bug in that it only listens on the localhost ipv6 address in ubuntu 8.10, ie. ::1:5900. I've been trying to connect to this using putty for some quite some time, and googling turns up a few threads and a bug in putty, &lt;a href="http://www.putty.nl/wishlist/ipv6-literals.html"&gt;ipv6-literals&lt;/a&gt;, that is not yet fixed even in the snapshots. I finally found the solution, almost all by myself, I should add an hostname to use instead of the numeric ip which has the problematic ":" in it. But actually, there already is in ubuntu: ip6-localhost. So adding the tunnel &lt;span style="font-style:italic;"&gt;4L5900:ip6-localhost:5900&lt;/span&gt; works!&lt;br /&gt;&lt;br /&gt;Oh, by the way: I did not want to disable ipv6 in Ubuntu since I occasionally use it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-2925854438461936200?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/2925854438461936200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=2925854438461936200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2925854438461936200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2925854438461936200'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/03/using-putty-win32-to-connect-to-vino-in.html' title='Using putty (win32) to connect to vino in ubuntu 8.10'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-4643701633914319728</id><published>2009-03-18T11:27:00.003+01:00</published><updated>2009-03-18T11:35:47.575+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UMBEL'/><category scheme='http://www.blogger.com/atom/ns#' term='ontology'/><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='framenet'/><category scheme='http://www.blogger.com/atom/ns#' term='natural language processing'/><category scheme='http://www.blogger.com/atom/ns#' term='dbpedia'/><category scheme='http://www.blogger.com/atom/ns#' term='verbnet'/><title type='text'>New sources of world knowledge</title><content type='html'>I am trying to develop a natural language parser using a "knowledge intensive" approach. For this I need knowledge for my application. I have a few plans for amassing it:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Various ontologies: &lt;a href="http://www.freebase.com"&gt;Freebase&lt;/a&gt;, &lt;a href="http://www.umbel.org/"&gt;UMBEL&lt;/a&gt;, &lt;a href="http://wordnet.princeton.edu/"&gt;WordNet&lt;/a&gt;, &lt;a href="http://framenet.icsi.berkeley.edu/"&gt;FrameNet&lt;/a&gt;, &lt;a href="http://verbs.colorado.edu/~mpalmer/projects/verbnet.html"&gt;VerbNet&lt;/a&gt;, &lt;a href="http://dbpedia.org/"&gt;DbPedia &lt;/a&gt;etc&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Using pattern matching on Wikipedia articles to extract info&lt;/li&gt;&lt;br /&gt;&lt;li&gt;When trivially working, using the parser itself to extract more knowledge&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;For pattern matching I will need to develop patterns. Others have already done this, but I believe I can do even better. In wikipedia one can successfully use links to other articles as tokens as to simplify the structure of patterns when developing/evolving ones pattern to match against. Or at least I hope so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-4643701633914319728?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/4643701633914319728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=4643701633914319728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4643701633914319728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4643701633914319728'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/03/new-sources-of-world-knowledge.html' title='New sources of world knowledge'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-3162545312328053217</id><published>2009-03-18T11:20:00.003+01:00</published><updated>2009-03-18T11:27:44.099+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='natural language processing'/><title type='text'>More Wikipedia statistics</title><content type='html'>Doing some statistics on the &lt;a href="http://download.freebase.com"&gt;WEX&lt;/a&gt; datadump, and I am once again hitting memory limits. At least unless I filter uncommon stuff out ,which is entirely almost possible, given that you know &lt;i&gt;every&lt;/i&gt; common word should appear a number of times if you take a chunk of wikipedia articles. Current stats are:&lt;br /&gt;&lt;br /&gt;words 29657715 sentences: 1795296 articles: 13801 words unique: 1182046&lt;br /&gt;&lt;br /&gt;Words are the number of whitespace-separated strings I've seen, sentences is sentences according to WEX, which by the way is way off for some articles such as Andre Agassi where it believes sentences ending with "No." means a new sentence when its Agassi's world ranking that comes next. Articles is self-explanatory, and unique words are unique words, this time with all character allowed but all lower-cased. So, from 14K articles the number of words are already more than 1M. This is very different from my older run which ignored anything that was not a-zA-Z, where it took a couple of hundred K articles to reach that number.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-3162545312328053217?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/3162545312328053217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=3162545312328053217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/3162545312328053217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/3162545312328053217'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/03/more-wikipedia-statistics.html' title='More Wikipedia statistics'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-6381602583850262238</id><published>2009-03-04T09:24:00.000+01:00</published><updated>2009-03-04T09:25:19.533+01:00</updated><title type='text'>Making Firefox 3 play CNN videos</title><content type='html'>The fix that worked for me was to add cnn.com to the whitelist in flashblock. &lt;br /&gt;&lt;br /&gt;Others have mentioned other fixes, such as installing mediawrap, cleaning the cache, moving from adblock to adblock plus, using ietab, not using ietab, etc. For me it was a bit simpler.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-6381602583850262238?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/6381602583850262238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=6381602583850262238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/6381602583850262238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/6381602583850262238'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/03/making-firefox-3-play-cnn-videos.html' title='Making Firefox 3 play CNN videos'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-3379040369243975747</id><published>2009-01-08T13:13:00.000+01:00</published><updated>2009-01-08T13:13:06.509+01:00</updated><title type='text'>Official Google Reader Blog: Square is the new round.</title><content type='html'>I have to say the new Google Reader look is &lt;i&gt;way&lt;/i&gt; better than before. I always hated round corners, too! I normally use the microfirefox theme in FF, so that tells you how anal I am about screenspace.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googlereader.blogspot.com/2008/12/square-is-new-round.html"&gt;Official Google Reader Blog: Square is the new round.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-3379040369243975747?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://googlereader.blogspot.com/2008/12/square-is-new-round.html' title='Official Google Reader Blog: Square is the new round.'/><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/3379040369243975747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=3379040369243975747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/3379040369243975747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/3379040369243975747'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2009/01/official-google-reader-blog-square-is.html' title='Official Google Reader Blog: Square is the new round.'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-3017694456613952858</id><published>2008-12-18T20:51:00.005+01:00</published><updated>2008-12-29T03:54:01.850+01:00</updated><title type='text'>The best way to browser Flickr to date</title><content type='html'>This must be the way to browse Flickr lazily: &lt;a href="http://tagexplorer.sandbox.yahoo.com/"&gt;tag browser&lt;/a&gt;. That is the tag browser I've been waiting for, basically. I would guess they are using something like DbPedia?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-3017694456613952858?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/3017694456613952858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=3017694456613952858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/3017694456613952858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/3017694456613952858'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/12/best-way-to-browser-flickr-to-date.html' title='The best way to browser Flickr to date'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-1718748546084884066</id><published>2008-12-18T20:41:00.003+01:00</published><updated>2008-12-18T20:48:32.530+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='motion control'/><category scheme='http://www.blogger.com/atom/ns#' term='CNC'/><category scheme='http://www.blogger.com/atom/ns#' term='haptic feedback'/><category scheme='http://www.blogger.com/atom/ns#' term='Novint Falcon'/><title type='text'>Novint Falcon</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=gjAxGVH1JOM"&gt;This&lt;/a&gt; thing seems really cool. Not so much as a game controller, since I barely play games, but rather as a simple CNC machine ;)&lt;br /&gt;&lt;br /&gt;Imagine building a foam sculpter or a 3D scanner from this. Should be easy, especially the scanner since there are buttons on the attachments already, atleast if you dare modifying the official attachments. Apparently they have PICs in them, too, so there might be a real protocol between them and the falcon making building your own attachments that much more of a challenge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-1718748546084884066?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/1718748546084884066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=1718748546084884066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/1718748546084884066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/1718748546084884066'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/12/novint-falcon.html' title='Novint Falcon'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-8005047791075084018</id><published>2008-10-22T11:50:00.000+02:00</published><updated>2008-10-22T11:50:21.418+02:00</updated><title type='text'>Android Developers Blog: Android is now Open Source</title><content type='html'>So, the andorod source was released. That is awesome, and I never doubted it would happen. On the other hand, symbian is also something I would like to see the source of, with me using it every day! I read this morning that the source would cost money to get at, which is really sad. This is what I found:&lt;br /&gt;&lt;br /&gt;"The Symbian Foundation platform will be available to members under a royalty-free license during first half 2009. The Foundation will provide, manage and unify the platform, ultimately releasing it as open source. "&lt;br /&gt;&lt;br /&gt;Hopefully this is just a temporary measure, as I understand releasing it in the end means I can look at it for free! We can hope anyway...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-8005047791075084018?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://android-developers.blogspot.com/2008/10/android-is-now-open-source.html' title='Android Developers Blog: Android is now Open Source'/><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/8005047791075084018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=8005047791075084018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/8005047791075084018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/8005047791075084018'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/10/android-developers-blog-android-is-now.html' title='Android Developers Blog: Android is now Open Source'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-2873587094703905113</id><published>2008-08-19T17:13:00.000+02:00</published><updated>2008-08-19T17:15:03.554+02:00</updated><title type='text'>Android signing signs..</title><content type='html'>I hope this is how signing will be done even in Android devices:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;There are no requirements on the key used to sign .apk files;  locally-generated and self-signed keys are allowed.  There is no PKI, and developers will not be required to purchase certificates, or similar.   For developers who use the Eclipse/ADT plugin, application signing will be largely automatic.  Developers who do not use Eclipse/ADT can use the standard Java jarsigner tool to sign .apk files.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Taken from http://code.google.com/android/RELEASENOTES.html. This is the major problem with J2ME in my opinion: no way for developers to self-sign stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-2873587094703905113?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/2873587094703905113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=2873587094703905113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2873587094703905113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2873587094703905113'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/08/android-signing-signs.html' title='Android signing signs..'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-8886610743195669889</id><published>2008-07-28T11:18:00.000+02:00</published><updated>2008-07-28T11:18:00.191+02:00</updated><title type='text'>Google Knol - Information without semantics</title><content type='html'>So I saw gnol mentioned on identi.ca. I checked it out, but oh boy was I disappointed. Absolutely no semantics at all? Wikipedia is more semantic than that! Faviki is more semantic still. And freebase!&lt;br /&gt;&lt;br /&gt;Unless they fix that I don't see how it will be succesfull in the the long term. Other "semanticer" things will simply crush it.&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://googleblog.blogspot.com/2007/12/encouraging-people-to-contribute.html"&gt;Official Google Blog: Encouraging people to contribute knowledge&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-8886610743195669889?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://googleblog.blogspot.com/2007/12/encouraging-people-to-contribute.html' title='Google Knol - Information without semantics'/><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/8886610743195669889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=8886610743195669889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/8886610743195669889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/8886610743195669889'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/07/google-knol-information-without.html' title='Google Knol - Information without semantics'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-7751851490492618063</id><published>2008-07-06T20:45:00.007+02:00</published><updated>2008-07-06T20:55:39.218+02:00</updated><title type='text'>Using joins to find missing data and blobs</title><content type='html'>&lt;span style="font-family: verdana;"&gt;I just realized, after having read about column based storage, how potentially bad it is to have blobs in a metadata-rich table.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;I am currently developing a small project during my sparetime, and we have a table which is roughly: &lt;/span&gt;&lt;span style="font-style: italic; font-family: courier new;font-family:courier new;" &gt;id int, mimetype varchar, data blob, version int&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;, and so on with a few more non-blob columns in it. What I noticed was that selects on this table &lt;/span&gt;&lt;span style="font-style: italic; font-family: verdana;"&gt;that does not need the blobs&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; using the indexed mimetype-field was incredibly slow. Relevant is that I am running MySQL in development mode, so it never seems to use more than a few tens of MB of RAM, meaning almost no caching is happening here. This means, in a row-storage database like MySQL I will be doing a tremendous amount of either seeking or reading of unneccesary data, depending on how MySQL plans its disk-reading, how big the blobs are and the effect of any read-ahead in OS or elsewhere.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;The other part of this slow query is a outer join, something like this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-family:courier new;" &gt;select id from c&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-family:courier new;" &gt;left outer join b on b.c_id = c.id and b.name = "something"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-family:courier new;" &gt;where b.name is null&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;This is apparently also fairly slow. So don't do these things too much. In this case, the join to find if data is &lt;/span&gt;&lt;span style="font-style: italic; font-family: verdana;"&gt;not&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; in a joined table could be easily fixed by adding data to the db.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-7751851490492618063?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/7751851490492618063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=7751851490492618063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/7751851490492618063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/7751851490492618063'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/07/using-joins-to-find-missing-data-and.html' title='Using joins to find missing data and blobs'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-1814985356364175223</id><published>2008-07-06T13:46:00.000+02:00</published><updated>2008-07-06T13:49:31.049+02:00</updated><title type='text'>More funny java bugs</title><content type='html'>&lt;span style="font-family: verdana;"&gt;So, I get this simple assignment at work. Install a new version of our software on a brand spanking new Intel Xeon quad-core machine. Nice.&lt;br /&gt;&lt;br /&gt;Only not so very nice when I notice hard java crashes. This is in EDU.oswego...ConcurrentHashMap's iterators hasNext method, always. I try downgrading to JDK1.5, but that does not help.&lt;br /&gt;&lt;br /&gt;I might have to do yet another probing bug hunt in third-party software. Argh.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also, trying out identi.ca even though blogging, and micro-blogging especially is not really my thing. Finding it fairly good though, just as ping.fm.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-1814985356364175223?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/1814985356364175223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=1814985356364175223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/1814985356364175223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/1814985356364175223'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/07/more-funny-java-bugs.html' title='More funny java bugs'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-6769421202457220069</id><published>2008-06-10T10:51:00.005+02:00</published><updated>2008-06-10T11:11:30.660+02:00</updated><title type='text'>HTMLUnit, MultiThreadedHttpConnectionManager and memory leaks</title><content type='html'>I have been having this wonderful time at my work.  A small coding project involving use of mostly HtmlUnit was almost done, and working properly. But what happens? By chance I notice that it is leaking memory: Perm Gen space, even.&lt;br /&gt;&lt;br /&gt;This was coded as a plugin for a larger product, and was dynamically reloaded at every invocation. I had to first remake the plugin CassLoader in this case to become a post-delegating classloader so that I could override the version of HttpClient already in the product. I couldn't really be sure it was not my changes leading to the classloader that gave rise to the leak, but eventually I got to that conclusion. The next step was to narrow down where this happened. Long story short, I found that if I changed HtmlUnit to not use the &lt;span style="font-size:100%;"&gt;&lt;a href="http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/MultiThreadedHttpConnectionManager.html"&gt;MultiThreadedHttpConnectionManager &lt;/a&gt;from &lt;a href="http://hc.apache.org/httpclient-3.x/"&gt;HttpClient&lt;/a&gt;, it did not leak. I did not want to really do this though, being unsure of how HtmlUnit actually used this, and also because of the fact that we have multiple threads using HtmlUnit.&lt;br /&gt;&lt;br /&gt;The thing that solved the issue was to call &lt;a href="http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/MultiThreadedHttpConnectionManager.html#shutdownAll%28%29"&gt;shutdownAll &lt;/a&gt;in the connection manager. I am not allowed to access that from my code as a user of HtmlUnit though, and I did want to avoid having to recompile anything, so I used reflection to subvert the access checks. Calling shutdown on the one manager did not work, however, nor did closing the connection, which HtmlUnit already did by the way.&lt;br /&gt;&lt;br /&gt;I can only assume this is some obscure bug that nobody else ever trips, but now at least if somebody does, they might find this as a reference.&lt;br /&gt;&lt;br /&gt;I could not use the latest HtmlUnit because of needing JDK1.4 compatibility, so this was done in HtmlUnit 1.13. Oh, and 1.14 needed CSS stuff that clashed with regular DOM libraries, making classloading not work. Not sure why this does not work when I can safely override HttpClient with a newer version.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-6769421202457220069?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/6769421202457220069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=6769421202457220069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/6769421202457220069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/6769421202457220069'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/06/htmlunit-multithreadedhttpconnectionman.html' title='HTMLUnit, MultiThreadedHttpConnectionManager and memory leaks'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-7281489786910200479</id><published>2008-06-06T18:19:00.004+02:00</published><updated>2008-06-06T18:36:10.902+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ontology'/><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='freebase'/><category scheme='http://www.blogger.com/atom/ns#' term='rdf'/><category scheme='http://www.blogger.com/atom/ns#' term='dbpedia'/><category scheme='http://www.blogger.com/atom/ns#' term='trueknowledge'/><category scheme='http://www.blogger.com/atom/ns#' term='faviki'/><category scheme='http://www.blogger.com/atom/ns#' term='owl'/><category scheme='http://www.blogger.com/atom/ns#' term='rdf/xml'/><title type='text'>Semantic Web is freaking cool! (and on a roll it seems)</title><content type='html'>Been surfing around for semantic web websites to find ontologies or datasources to (ab)use for Yet Another AI-Project From Me. This is what I found:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;a href="http://www.trueknowledge.com/"&gt;&lt;br /&gt;&lt;/a&gt;&lt;li&gt;&lt;a href="http://www.trueknowledge.com/"&gt;&lt;i&gt;True Knowledge&lt;/i&gt;&lt;/a&gt;. Incredibly cool question-answering frontend to an incredibly complex datamodel, with a moderately complex and severely boring input process. Not free data, I can not download a dump of their database.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.freebase.com/"&gt;&lt;i&gt;Freebase&lt;/i&gt;&lt;/a&gt;. Took me some time to dig into this, actually, but I like what I am seeing. Data model seems a lot simpler than True Knowledge, or at least that is what i think (subclassing, transitivity missing?). Inputting stuff is from 2-10 times quicker/easier. For bulk stuff it is infinitely easier, since TK does not support that at all. Free data, but not RDF!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://faviki.com"&gt;&lt;i&gt;Faviki&lt;/i&gt;&lt;/a&gt;. Very nice and easy to use semantic social tagging/bookmarking service.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.bioinformatics.org/rdfscape/wiki/Main/HomePage"&gt;&lt;i&gt;RDFScape&lt;/i&gt;&lt;/a&gt;. Visualizer for cytoscape. Very nice, have not had time to play with this yet.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://attempto.ifi.uzh.ch/site/"&gt;&lt;i&gt;Attempto Controlled English&lt;/i&gt;&lt;/a&gt;. Maybe the least exciting of the bunch, but is useful for my NLP-related project.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I also got access to twine. Oh my god what a bore. I just did not see the idea behind it, and the interface turned me off so much that after my third visit I never came back.&lt;br /&gt;&lt;br /&gt;True Knowledge has some awesome NLP parsing going on, but it also fails miserably often. I have a simpe idea to get me atleast started, it pretty much builds upon AIML/patterns to extract meaning from stuff, specifically Wikipedia.&lt;br /&gt;&lt;br /&gt;Freebase has a weak model in my mind, there does not seem to be a real inheritance hierarchy and the "upper ontology" is basically missing. The upper ontology not being there is not such a big deal though, I think. There should be a set of "uppermost" classes in Freebase that can be mapped to SUMO/YAGO/DBPedia/Wordnet or whatever to help with any inferencing/analogous thinking.&lt;br /&gt;&lt;br /&gt;I can not help but think that in five years from now, "semantic" does not really exist. Everything is then semantic, or gone since long. AGI is not far behind, either. I predict a surge of NLP success in the coming few years, mainly with knowledge-intensive approaches. Common-sense is still the missing piece of the puzzle, the above efforts do not concentrate on this at all, but rather on knowledge that is useful to humans. Remember, common-sense is boring for humans to input and administer, since it is all so basic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-7281489786910200479?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/7281489786910200479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=7281489786910200479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/7281489786910200479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/7281489786910200479'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/06/semantic-web-is-freaking-cool-and-on.html' title='Semantic Web is freaking cool! (and on a roll it seems)'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-4559421517368580501</id><published>2008-04-28T14:50:00.003+02:00</published><updated>2008-04-28T14:57:05.982+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cellphone'/><category scheme='http://www.blogger.com/atom/ns#' term='Nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='Nokia E51'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='phone'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile phone'/><category scheme='http://www.blogger.com/atom/ns#' term='HSDPA'/><category scheme='http://www.blogger.com/atom/ns#' term='gprs'/><category scheme='http://www.blogger.com/atom/ns#' term='e51'/><category scheme='http://www.blogger.com/atom/ns#' term='3G'/><title type='text'>Nokia E51 stability</title><content type='html'>I love &lt;a href="http://en.wikipedia.org/wiki/Nokia_E51"&gt;my phone&lt;/a&gt; for several reasons. It is just the right size, fits very nicely in jeans-pockets without wearing them down in no time. My Motorola E398 was much worse in this regard due to being thicker.&lt;br /&gt;&lt;br /&gt;I also love how it handles most J2ME apps, has email and so on. I've started using it during my commute every day to surf on my laptop, via bluetooth mostly since USB-cables are not that much fun carrying around. The phone is mostly stable. I've encountered crashes when for example running many apps and playing mp3s at the same time. Nicely enough it reboots automatically most of the time. I think I've found what it does not handle so well though: bluetooth internet sharing. Firstly it gets very hot, thats fine though I guess. But it also seems to become very unstable if I try to actually use it during this time. &lt;br /&gt;&lt;br /&gt;Too bad, but I'm not surprised. I &lt;i&gt;think&lt;/i&gt; that if I just don't touch anything while using it as a mode, it copes better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-4559421517368580501?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/4559421517368580501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=4559421517368580501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4559421517368580501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4559421517368580501'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/04/nokia-e51-stability.html' title='Nokia E51 stability'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-499163261946845525</id><published>2008-01-29T14:43:00.001+01:00</published><updated>2008-01-29T14:58:55.120+01:00</updated><title type='text'>"not in" versus joins</title><content type='html'>I have been fighting this HQL query for probably 8 hours in total now, where I have a table &lt;b&gt;Entity&lt;/b&gt; and &lt;b&gt;EntityAttribute&lt;/b&gt;. Every entity has zero or more attributes, so the &lt;b&gt;EntityAttribute&lt;/b&gt; table has Entity_ID row in it. Attributes have a name and value, each in its own column. &lt;b&gt;EntityAttribute&lt;/b&gt; is mapped as a map collection from Entity, with the "name" as the index. I want to select entity based on whether they do or do not have an attribute with a particular name and value, although I know in practice that those who attributes with the right name do have the rigth value always, at the moment anyway.&lt;br /&gt;&lt;br /&gt;The end of the HQL looks something like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SELET DISTINCT e FROM entity&lt;br /&gt;WHERE ...&lt;br /&gt;... AND&lt;br /&gt;'type' in indices(e.attributes)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;'attributes ' is the collection of attributes.&lt;br /&gt;&lt;br /&gt;I would have guessed this to work, but no. I eventually tried this in plain SQL, where it of course also does not work.&lt;br /&gt;&lt;br /&gt;I also tried with this, for the other way around (exclusion):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SELET DISTINCT e FROM entity&lt;br /&gt;WHERE ...&lt;br /&gt;... AND&lt;br /&gt;e.attributes['type'] != 'animation'&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I can sort of understand this last construct being wrong. The correct way to do things is apparently to swap these two, basically use "not in" for exclusion and use "join" to include things, which is what &lt;code&gt;e.attributes['type'] = 'animation'&lt;/code&gt; uses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-499163261946845525?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/499163261946845525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=499163261946845525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/499163261946845525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/499163261946845525'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2008/01/not-in-versus-joins.html' title='&quot;not in&quot; versus joins'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-8201915794099037128</id><published>2007-12-05T23:06:00.001+01:00</published><updated>2007-12-05T23:55:40.067+01:00</updated><title type='text'>Domain Model - A Tale of Bad (J2EE) Design(And a newbie developer trying to fix it)</title><content type='html'>Where I work we have a product that we can call ABC. Now ABC is what I would call "legacy": more than 10k loc (I think it is somewhere around 50-100k), and the project was started more than 5 years ago, in 2001 I think. I have been working on this for about 16 months now, and I am getting more and more comfortable with it every day due to actually getting assigned to develop it at the moment. I am the only developer since a couple of months back.&lt;br /&gt;&lt;br /&gt;ABC is in need of a lot of things, this I saw the first &lt;i&gt;week&lt;/i&gt; on the job. So, many obvious things are wrong. Where to start? Well, our "service layer" (Note: we do not have clearly defined  layers, and nobody seems to have known what to call bigger parts of the system, so if I could say "hey, we have a problem with our service layer" nobody would understand what I was talking about) has code in it that is very, very long-winded, some made up code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;dto.Part p = DAOFactory.getPartsDAO().getPartById(new Integer(1));&lt;br /&gt;validatePart(p);&lt;br /&gt;if(p.getInventoryID() != null) {&lt;br /&gt; dto.Inventory inv = DAOFactory.getInventoryDAO().getInvetoryById(p.getInventoryID());&lt;br /&gt;&lt;br /&gt; //Do more...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Hey, we use a factory! Great. But, this code does very little for being so verbose, and note that this sort of code could go on for hundreds of lines. Can we see spot any problems? I can, at least now, previously I really could not. I am not a very experienced J2EE developer, this is my first job with it fresh from university:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;I hate the fact that we have to explicitly do "DAO things". Why is this necessary? It is not, if we for example use hibernate a bit more correctly: ABC is currently not using any mappings between entities for example. Adding this, we could do away with fetching one object in a transaction and then accessing the collection mappings instead of all the "DAOing" as I call it.&lt;br /&gt;&lt;sup&gt;(This DAO-ing also has &lt;i&gt;severe&lt;/i&gt; performance penalties when done this way: it has a select n+1 problem. It can be solved by being "smart", but takes a lot of manual coding, for something that hibernate solves perfectly for us, practically for free. Logic is honestly more compact in a HQL query than in this sort of convoluted code. 20-lines of HQL did in some instances replace 100+ lines of Java for us, especially manually fetching objects, checking them instead of simply using a WHERE clause.)&lt;/sup&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;We are fetching dtos from a database, by the looks of it. Is this really the intended use for DTO pattern? No (as far as I know, anyway), and it turns out these are &lt;i&gt;not&lt;/i&gt; DTOs, firstly, and secondly, they should not be. Our "DTO layer" here is misnamed, and misguided. It is actually our domain model, although an almost completely anemic such&lt;a href="http://en.wikipedia.org/wiki/Anemic_Domain_Model"&gt;&lt;sup&gt;[1]&lt;/sup&gt;&lt;/a&gt;. We &lt;i&gt;do&lt;/i&gt; in fact have another DTO layer, that is really a DTO layer, and which is needed and should be a DTO layer. This is used for sending data from webservices, and decoupling this from our domain model is on the contrary not a bad idea.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;So we have a, more or less, procedural service layer with 95% of our business logic in it, and a domain model layer with data and only trivial behavior in it. It seems straightforward enough to just move behavior into our domain model, and be done with it. One slight problem here is that I have introduced alternative "DTOs" (entity beans, domain objects) that are properly mapped using hibernate, and adding _Mapped to their classname, inheriting from its non-collection-mapped hibernate class. For example we might have:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Part&lt;/b&gt; has a subclass &lt;b&gt;PartMapped&lt;/b&gt;. &lt;b&gt;PartMapped&lt;/b&gt; has collection mappings, &lt;b&gt;Part&lt;/b&gt; does not.&lt;br /&gt;&lt;br /&gt;It can also look like so: We have &lt;b&gt;PartBase&lt;/b&gt;, &lt;b&gt;PartMapped&lt;/b&gt; and &lt;b&gt;Part&lt;/b&gt;. &lt;b&gt;Part&lt;/b&gt; is the "original" DTO, with a foreign key in the form of a Integer. We don't really want this integer in our hibernate-collection-mapped variant, so we create a base class which does not have it, and extend that while adding the collections for hibernate to populate.&lt;br /&gt;&lt;br /&gt;Modifying the domain model to fit hibernate is a bad idea, I realize that. We need to stop depending on hibernate. I have been looking at spring lately (which ABC of course does not use) and I think it could help with a lot of this. One reason for having alternate classes for collection-mapped entities was that I do not yet trust hibernate to actually save those back: we still always use the simple save() call for that on a entity with no collection mappings. Makes it very explicit what is happening. This is simply a matter of education though, I need to learn how hibernate works in this regard and, say, filtered collection.&lt;br /&gt;&lt;br /&gt;This inheritance structure makes it not hard, far from, but a bit smelly to add behaviour to these objects. Mostly due to the structure being hibernate induced, but also because of the duplication arising from that: We would need two different implementations of a "&lt;code&gt;public Inventory getInventory()&lt;/code&gt;" for a &lt;b&gt;Part&lt;/b&gt; and a &lt;b&gt;PartMapped&lt;/b&gt;, one using straight accessors (hibernate needs objects to use the accessors for its collection proxies to work) and the other one using old-style DAO-ing to fetch the object. We have a lot of these methods to implement if we were to move them into the domain model proper.&lt;br /&gt;&lt;br /&gt;I assume the right course of action is to abstract away the database stuff such as &lt;code&gt;Integer ID;&lt;/code&gt; in all domain objects, and let "something" (not specifically hibernate) manage persistence for us, and then start modeling the domain properly. And then document it all and educate everyone that, now, ABC is much more agile and can withstand changes easily.&lt;br /&gt;&lt;br /&gt;It cannot today, that is for sure. I draw the conclusion that earlier developers have been "fooled" by EJB patterns or something similar, and was unable to see anything wrong with our anemic domain model. Design patterns are used, but those are localized, and in general there "is no design". No explicit design anyway, there is one that can be sort-of inferred from looking at the code, but it is very vague and lots of boundaries in that are often broken by code. It can still server as a "new vision" for the overall design though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-8201915794099037128?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/8201915794099037128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=8201915794099037128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/8201915794099037128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/8201915794099037128'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/12/domain-model-tale-of-bad-j2ee-design.html' title='Domain Model - A Tale of Bad (J2EE) Design&lt;br&gt;&lt;span style=&quot;font-size:small&quot;&gt;(And a newbie developer trying to fix it)&lt;/span&gt;'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-4270807429987425215</id><published>2007-07-02T09:57:00.000+02:00</published><updated>2007-07-30T09:39:21.875+02:00</updated><title type='text'>Amazon EC2 and S3 performance...</title><content type='html'>I was playing around with a EC2 instance, and I got this great idea that I should benchmark the disk subsystem. I had expected pretty standard performance for the disk at /mnt, but I was wrong:&lt;br /&gt;&lt;br /&gt;Benchmarking /dev/sda1 [1537MB], wait 30 seconds&lt;br /&gt;Results: 1014 seeks/second, 0.99 ms random access time&lt;br /&gt;&lt;br /&gt;Benchmarking /dev/sda2 [152704MB], wait 30 seconds&lt;br /&gt;Results: 4494 seeks/second, 0.22 ms random access time&lt;br /&gt;&lt;br /&gt;Thats pretty damn fast. To get this sort of performance out of a RAID-5 set I think you need a hole lot of disks, maybe 20 or so? It sure as hell beats any disk I have at home with a factor of about between 15 and 60.&lt;br /&gt;&lt;br /&gt;I don't know if this could be a Xen problem with this particular benchmark, but if it is true I actually just found a use for EC2: to run my DB-intensive information extraction jobs on. Though they are still most likely better solved by just buying a new machine with 4 or 8GB of RAM. It is pretty cheap now.&lt;br /&gt;&lt;br /&gt;Edit: Oh, yeah, I understand that this disk array is shared by a number of instances. A good question then is by how many? And how likely are people to actually use the disk for any stressful activity, with it being non-persistent and all?&lt;br /&gt;&lt;br /&gt;Edit2: Oh yes, I am stupid. This is most likely due to Xen using a sparse Copy-on-Write format disk image? It would explain it all, hitting the same physical sector over and over....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-4270807429987425215?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/4270807429987425215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=4270807429987425215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4270807429987425215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4270807429987425215'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/07/amazon-ec2-and-s3-performance.html' title='Amazon EC2 and S3 performance...'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-2436572024078629237</id><published>2007-07-01T12:28:00.000+02:00</published><updated>2007-07-01T12:44:52.562+02:00</updated><title type='text'>Flash random access write performance</title><content type='html'>I just bought a new 2GB USB stick, Sandisk Cruzer Micro. I have a Pretec Tiny 256MB since before. I benchmarked these using h2benchw in windows (and &lt;a href="http://www.linuxinsight.com/how_fast_is_your_disk.html"&gt;seeker&lt;/a&gt; in linux, but only for reads).&lt;br /&gt;&lt;br /&gt;Now, these two are actually pretty close together in performance, h2benchw reports 0.77 ms access time for the 2GB stick, and 1.77 ms for the 256MB one. Raw read speeds are, according to linux hdparm -tT about 25MB/s for the smaller one, and slightly lower for the Sandisk.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But the real odd difference comes when I set h2benchw up to test random access _write_ performance. Pretec manages ~10ms access time here, whereas the Sandisk comes in at a whopping 132 ms!! Wooha. There faded my hope somewhat of using flash as a faster substitue for disks. &lt;a href="http://www.xbitlabs.com/articles/memory/print/12usbflash-roundup.html"&gt;X-bit labs&lt;/a&gt; says there are faster write access times though, specifically for Apacer HT202 sticks with a 28ms access time for writes. Thats unfortunately still in line with harddisks, so the only real benefit is the read access times, in other words flash will only be great when the ratio of read/writes is heavily biased towards reads. A typical database-load might not perform so well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-2436572024078629237?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/2436572024078629237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=2436572024078629237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2436572024078629237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2436572024078629237'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/07/flash-random-access-write-performance.html' title='Flash random access &lt;b&gt;write&lt;/b&gt; performance'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-2953057008204106082</id><published>2007-05-22T09:33:00.000+02:00</published><updated>2007-05-22T09:46:38.176+02:00</updated><title type='text'>MIDP 2.0 and killing homebrew..</title><content type='html'>Why is it that MIDP 2.0 decided to completely lock homebrew developers out of J2ME development? If you read &lt;a href="http://blog.javia.org/?p=42"&gt;this&lt;/a&gt; first you'll notice some people  are annoyed at the way root certificates are handled, mainly that there is no certificate that is guaranteed to be available on every device, and the way Java Verified is per-device. This is a big problem.&lt;br /&gt;&lt;br /&gt;Another problem that I have been having lately is that of free software and J2ME. Now you may ask why can't you just put up with a few security prompts for your hobby projects? Sure, I am fine with that. As long as they are &lt;i&gt;few&lt;/i&gt;. The problem here is of course that they are not few! If you want to, for example, read maps from a memory card you could be reading from hundreds of tiles.&lt;br /&gt;&lt;br /&gt;I think the problem here is that the APIs are actually becoming useful, and the security prompts for these sort of applications are becoming a big bottleneck, necessitating signing. But there is no way to sign anything for free! Not as far i know, anyway. You are also not allowed to import your own root-certificate. &lt;br /&gt;&lt;br /&gt;I think security is a good thing, but locking out power-users is also bad. This while things is putting me off my long-needed phone-upgrade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-2953057008204106082?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/2953057008204106082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=2953057008204106082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2953057008204106082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2953057008204106082'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/05/midp-20-and-killing-homebrew.html' title='MIDP 2.0 and killing homebrew..'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-5523670682135927192</id><published>2007-04-10T09:14:00.000+02:00</published><updated>2007-04-10T09:49:44.860+02:00</updated><title type='text'>KR tutorial...</title><content type='html'>I found this interesting and simple intro to &lt;a href="http://artificial-intelligence-theory.blogspot.com/2007/04/great-overview-of-knowledge.html"&gt;KR&lt;/a&gt; and I must say it is good. I don't quite agree that description logics is the way of the future though.&lt;br /&gt;&lt;br /&gt;I also fully agree that Google most likely is doing A.I. research. If they are not, I think they are totally misjudging how useful it is and how close we are to useful A.I. applications.  &lt;br /&gt;&lt;br /&gt;This &lt;a href="http://www.cogsci.indiana.edu/fcca.html"&gt;book&lt;/a&gt; that was linked also looks very promising, I have to add it to my Amazon wish list for sure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-5523670682135927192?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/5523670682135927192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=5523670682135927192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/5523670682135927192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/5523670682135927192'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/04/kr-tutorial.html' title='KR tutorial...'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-6838606603003129083</id><published>2007-04-08T11:09:00.000+02:00</published><updated>2007-04-08T11:12:50.699+02:00</updated><title type='text'>Nokia E70 video playback resolution</title><content type='html'>I have been trying to find information on what Nokia 5300 and Nokia E70 is capable of playing back in terms of resolution. I would love a E70 if it can playback full-res video, and my girlfriend wants a 5300. This &lt;a href="http://forum2.mobile-review.com/showthread.php?t=61607"&gt;thread&lt;/a&gt; seems to imply the 5300 is unable to play back full-res video, and I suspect the E70 has the same problem, given its huge resolution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-6838606603003129083?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/6838606603003129083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=6838606603003129083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/6838606603003129083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/6838606603003129083'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/04/nokia-e70-video-playback-resolution.html' title='Nokia E70 video playback resolution'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-5426776094857034998</id><published>2007-04-05T14:38:00.000+02:00</published><updated>2007-04-05T14:51:35.809+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='icq'/><category scheme='http://www.blogger.com/atom/ns#' term='jabber'/><category scheme='http://www.blogger.com/atom/ns#' term='xmpp'/><category scheme='http://www.blogger.com/atom/ns#' term='msn'/><category scheme='http://www.blogger.com/atom/ns#' term='XEP'/><title type='text'>SleekXMPP</title><content type='html'>Another nice XMPP &lt;a href="http://nathan.fritzclan.com/2007/04/sleekxmpp.html"&gt;library&lt;/a&gt; that aims to make implementing or testing XEPs easy, something I really long to do. &lt;br /&gt;&lt;br /&gt;Some day I am going to start using XMPP "for real": I have been on jabber for a couple of months but I have also noticed that I never really IM anyone anymore now that I work all day long. I am an antisocial creature I guess. Also I only have bots and automated services on jabber, while every human in my roster is on MSN or ICQ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-5426776094857034998?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/5426776094857034998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=5426776094857034998' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/5426776094857034998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/5426776094857034998'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/04/sleekxmpp.html' title='SleekXMPP'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-6677635553334479936</id><published>2007-04-05T10:59:00.000+02:00</published><updated>2007-04-05T11:30:03.880+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Canon'/><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='Drool'/><category scheme='http://www.blogger.com/atom/ns#' term='MJPEG'/><category scheme='http://www.blogger.com/atom/ns#' term='encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='codec'/><category scheme='http://www.blogger.com/atom/ns#' term='Wants'/><category scheme='http://www.blogger.com/atom/ns#' term='Canon TX1'/><category scheme='http://www.blogger.com/atom/ns#' term='Camera'/><category scheme='http://www.blogger.com/atom/ns#' term='Video camera'/><category scheme='http://www.blogger.com/atom/ns#' term='compression'/><title type='text'>Canon TX-1</title><content type='html'>I would much like a &lt;a href="http://www.dcresource.com/reviews/canon/powershot_tx1-review/index.shtml"&gt;Canon TX1&lt;/a&gt; when I go to Venezuela in December. Or why not for the summer vacation in Paris/&lt;a href="http://en.wikipedia.org/wiki/Öland"&gt;Öland&lt;/a&gt; as well. &lt;br /&gt;&lt;br /&gt;I see many people complaining about the MJPEG of Canon. I like it though: its perfect for editing, no temporal component that makes re-encoding necessary when you cut the movie. Also the quality is very high. 8GB SDHC cards are not expensive enough to make them unachievable in any way. A problem is where to store all the raw footage when you empty the cards though... this will be a serious filler of HDDs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-6677635553334479936?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/6677635553334479936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=6677635553334479936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/6677635553334479936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/6677635553334479936'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/04/canon-tx-1.html' title='Canon TX-1'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-2012159301734886616</id><published>2007-04-04T08:50:00.000+02:00</published><updated>2007-04-04T09:17:32.356+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trackback'/><category scheme='http://www.blogger.com/atom/ns#' term='pingback'/><category scheme='http://www.blogger.com/atom/ns#' term='linkback'/><title type='text'>Linkbacks and blogger/blogspot</title><content type='html'>Why, oh why, doesn't Google support &lt;a href="http://en.wikipedia.org/wiki/pingback"&gt;pingback&lt;/a&gt;? As far as I have understood, blogger does not support any of the &lt;a href="http://en.wikipedia.org/wiki/linkback"&gt;linkback&lt;/a&gt; protocols at all.&lt;br /&gt;&lt;br /&gt;Thankfully there is, as is common, a hack around this. The problem is that the hack this time around is very ugly: &lt;a href="http://singpolyma.net/2006/12/for-new-blogger-blogger-delicious/"&gt;Trackback with some help from Greasemonkey&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Manually add links&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Trackback as opposed to pingback&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-2012159301734886616?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/2012159301734886616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=2012159301734886616' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2012159301734886616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2012159301734886616'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/04/linkbacks-and-bloggerblogspot.html' title='Linkbacks and blogger/blogspot'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-8246488818064549259</id><published>2007-04-04T08:29:00.000+02:00</published><updated>2007-04-04T08:48:24.038+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='Smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='WPE'/><title type='text'>I need to do... more m$ stuff.</title><content type='html'>Wow, I found this blog really interesting: &lt;a href="http://vistasmalltalk.wordpress.com/"&gt;Vista Smalltalk&lt;/a&gt;. It is, you might have guessed it, Smalltalk for Vista, sort of. It's using .NET and Microsoft's "AJAX" &lt;a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation#WPF.2FE"&gt;WPF/E&lt;/a&gt; to do some very cool stuff in the browser. I happen not to like Smalltalk much though, i did a presentation on it when I was at university and I was not impressed. It lacked anything special enough for it to considered useful by me anyway.&lt;br /&gt;&lt;br /&gt;The future will be very interesting when it comes to portable applications. Seems Microsoft really has got something going here, and sadly the &lt;a href="http://en.wikipedia.org/wiki/XUL"&gt;XUL&lt;/a&gt; approach of Mozilla will not be able to compete here, even though it is not really aimed at the same thing. I really need to learn some .NET stuff for real soon,  or I fear I will be obsolete in a short time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-8246488818064549259?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/8246488818064549259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=8246488818064549259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/8246488818064549259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/8246488818064549259'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/04/i-need-to-do-more-m-stuff.html' title='I need to do... more m$ stuff.'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-4439073510656931956</id><published>2007-03-18T16:54:00.000+01:00</published><updated>2007-03-18T17:04:53.249+01:00</updated><title type='text'>Broken NAD 317 amp</title><content type='html'>My &lt;a href="http://en.wikipedia.org/wiki/New_Acoustic_Dimension"&gt;NAD&lt;/a&gt; 317 stereo amp is broken: the right channel is exhibiting some very bad noise regardless of volume and input source. I opened it up but I could see no signs of obvious damage such as open caps or burned areas.&lt;br /&gt;&lt;br /&gt;These seem to have a problem with the quality of their capacitors in the power supply, but since my problem is virtually non-existent on the left channel I assume the power supply is fine. I guess caps could still be to blame on the right channel but I have no way of measuring these things unfortunately, and I am not about to jeopardize my speakers just to try and save some money on the repairs for the amp, or buying a new amp. If I could just find a specific reference where somewhere fixed this specific problem, I might be able to fix it myself. As I (almost) did for our &lt;a href="http://www.photo.net/bboard/q-and-a-fetch-msg?msg_id=006Rbo"&gt;Canon G1&lt;/a&gt;. Yes, I found the fix, bought the caps but I actually let a professional guy solder it. Nicely enough, he did it for free since I did all the hard work with actually dismantling the camera, which was a bith. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-4439073510656931956?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/4439073510656931956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=4439073510656931956' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4439073510656931956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4439073510656931956'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/03/broken-nad-317-amp.html' title='Broken NAD 317 amp'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-8435122974770579399</id><published>2007-02-20T20:42:00.000+01:00</published><updated>2007-02-20T20:44:49.450+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='graph-theory'/><title type='text'>More Wikipedia distance!</title><content type='html'>I recently mentioned a Wikipedia distance service in &lt;a href="http://sopues.blogspot.com/2006/12/wikipedia-distance.html"&gt;this post&lt;/a&gt;, and I've now found a much more current one: &lt;a href="http://tools.wikimedia.de/sixdeg/"&gt;Six Degrees of Wikipedia&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-8435122974770579399?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/8435122974770579399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=8435122974770579399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/8435122974770579399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/8435122974770579399'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/02/i-recently-mentioned-wikipedia-distance.html' title='More Wikipedia distance!'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-4585335024265123604</id><published>2007-02-16T10:15:00.000+01:00</published><updated>2007-02-16T15:52:24.685+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='artificial intelligence'/><title type='text'>Number of unique words in the english language...</title><content type='html'>I am trying to use statistics, mostly n-gram statistics to peel some useful data off of Wikipedia. This poses a bit a challenge for someone like me who do not own a cluster of machines to do these things on. (hint: &lt;a href="http://googleresearch.blogspot.com/2006/08/all-our-n-gram-are-belong-to-you.html"&gt;Google&lt;/a&gt;) The best-speced machine I own is actually a laptop: 1GiB RAM, Core Duo 1.66Ghz. This is fine for almost anything I can think of, but when it comes to Artificial Intelligence its just not anywhere near enough.&lt;br /&gt;&lt;br /&gt;Take this scenario: You want to have a frequency of all words occurring in Wikipedia, so that you can use it later to exclude not-so-important data. Now, how many unique words could there really be in Wikipedia? Maybe one &lt;span style="font-style: italic;"&gt;million&lt;/span&gt;? That sounds like a lot, and should be more than the true number, right? Wrong. Well, this depends on how you count I guess. I do not yet have a useful stemmer to remove different forms of the same word, and I will always include misspellings. Still, I only include words with a-z, A-Z in them, remember this will exclude common things like "it's", "don't" and so on.&lt;br /&gt;&lt;br /&gt;I am still finding more than 2 million words, in parsing less than half the articles in Wikipedia. I am also ignoring all other namespaces other than the main wikipedia article namespace so talk and userpages are not included in this.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sandos.se/%7Esandos/uniqueWordsWikipedia.png"&gt;&lt;img src="http://sandos.se/%7Esandos/uniqueWordsWikipedia.png" width=400/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So why is this 2M words a problem? Well, firstly, Java uses 16 bits per character. Lets ponder that each word is in average 8 characters in length, and means that each word now consumes at least 24 bytes, and probably even more. Add in the storage requirements for the HashMap and Integer that is required to keep track of frequencies and you have a lot of memory usage. This means, that even if I "optimize" my strings to only store a byte[] of ASCII, I can still only store 2M words in 400+M of RAM!&lt;br /&gt;&lt;br /&gt;And there is a lot more words than 2 million, unfortunately. If we look at the Google &lt;a href="http://googleresearch.blogspot.com/2006/08/all-our-n-gram-are-belong-to-you.html"&gt;n-gram data&lt;/a&gt; we see that they found 13 million words!&lt;br /&gt;&lt;br /&gt;That would require me to have something like 2.6 GB of RAM available to Java, and I just don't. &lt;br /&gt;&lt;br /&gt;The obvious solution here is of course to use a proper, disk-based database but that is painfully slow! Compare: 1000 articles taking ~2 seconds, or it taking about 25 minutes! This would mean that the 6M+ articles would take approximately 14 weeks to analyze. This was with Apache Derby (durability=test, autocommit=false). HSQLDB is faster, but is unusable. Maybe I will have to use MySQL after all. Also remember that this step was planned to be a simple pre-optimizer stage for my n-gram goodies....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-4585335024265123604?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/4585335024265123604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=4585335024265123604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4585335024265123604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/4585335024265123604'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/02/number-of-unique-words-in-english.html' title='Number of unique words in the english language...'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-7307598154894930793</id><published>2007-02-14T14:31:00.000+01:00</published><updated>2007-02-16T15:49:29.963+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Apache Derby versus HSQLDB</title><content type='html'>So I tried to use HSQLDB for a little hobby AI project of mine, that is, mining information from Wikipedia. Now HSQLDB is so fast it is just silly. Thats all good. Now, I wanted to store a histogram in a table because the number of items was too great to store in RAM/HashMap. I convert the code to use the DB instead of the HashMap, and all is fine. Now I want to see the resulting topmost entries in this histogram thing. So I do something along these lines:&lt;br /&gt;&lt;br /&gt;SELECT TOP 10 * FROM histo ORDER BY cnt;&lt;br /&gt;&lt;br /&gt;Does this work? No. OutOfMemoryError. Why?? It turns out that HSQLDB does not use indexes for ORDER BY, and hence it tries to build a temporary result that consists of the entire database. I had a look at the source, and I was determined to fix this, however ugly the solution would be.&lt;br /&gt;&lt;br /&gt;But then I found Apache Derby, and it looks to be all that I want. It does not seem to be as fast as HSQLDB, but on the other hand I should be mostly I/O bound anyway since my databases will be many times my RAM in size. Also, Derby seems to excel at the embedded and PreparedStatement corner, and that is exactly what I'm doing. 100% of my recurring SQL statements are already Prepared.&lt;br /&gt;&lt;br /&gt;HSQLDB is not a very young project, but I must say Derby seems to be about 10 times more mature to me. &lt;br /&gt;&lt;br /&gt;HSQLDB 0, Apache Derby 1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-7307598154894930793?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/7307598154894930793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=7307598154894930793' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/7307598154894930793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/7307598154894930793'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/02/apache-derby-versus-hsqldb.html' title='Apache Derby versus HSQLDB'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-2514982529546850564</id><published>2007-02-13T15:45:00.000+01:00</published><updated>2007-02-16T10:48:42.946+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><category scheme='http://www.blogger.com/atom/ns#' term='ffmpeg'/><category scheme='http://www.blogger.com/atom/ns#' term='oss'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>How to compile ffmpeg statically</title><content type='html'>It took me some time to figure this one out. I've never understood all the details of shared vs. static linking. Just thought I would share my experience. This was to enable AAC encoding in linux, and not having to depend on the shared libraries. You can of course add any necessary libraries that you need.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Build &lt;a href="http://faac.sf.net/"&gt;libfaac&lt;/a&gt; normally (.tar.gz files are somewhat problematic, (linebreaks?) use CVS instead to get properly formatted files. Centos 4.4 was unable to compile this due to outdated autotools, used Debian testing.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;Build &lt;a href="http://ffmpeg.mplayerhq.hu/download.html"&gt;ffmpeg&lt;/a&gt; with this:&lt;/p&gt;&lt;p&gt;./configure --prefix=/home/x/ffmpeginstall/ --enable-faac --extra-libs=/home/x/ffmpeginstall/lib/libfaac.a --enable-gpl --extra-cflags=-I/home/x/ffmpeginstall/include --disable-ffplay --disable-ffserver --disable-shared --disable-debug --extra-ldflags=-L/home/x/ffmpeginstall/lib&lt;/p&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-2514982529546850564?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/2514982529546850564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=2514982529546850564' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2514982529546850564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/2514982529546850564'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2007/02/how-to-compile-ffmpeg-statically.html' title='How to compile ffmpeg statically'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-5535598170206280335</id><published>2006-12-28T14:03:00.000+01:00</published><updated>2006-12-28T14:19:54.761+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='connectionism'/><title type='text'>"Wikipedia Distance"</title><content type='html'>I found the website I was &lt;a href="http://sopues.blogspot.com/2006/05/exploiting-wikipedia-for-ai-purposes.html"&gt;talking about earlier&lt;/a&gt;, its available here: &lt;a href="http://www.omnipelagos.com/"&gt;http://www.omnipelagos.com&lt;/a&gt;. It seems very rough around the edges, in addition to having very outdated wikipedia content. I might just make my own version of that site soon, if I find the time for it.&lt;br /&gt;&lt;br /&gt;Wikipedia seems incredibly well-linked, since everything seems to have a distance of 4 or 5. This means that measuring links qualitatively becomes important: a very simple first step to doing this is to start considering the language-links as having higher "connectedness" than random linked words in sentences. Next step could be simple template-based recognition of common high-valued links such as "X is a Y", "X is a sort of Y" and so on. Doing more than this though very quickly becomes an academic exercise in implementing general AI.&lt;br /&gt;&lt;br /&gt;Oh, oh, this thing would be &lt;span style="font-style: italic;"&gt;so much easier&lt;/span&gt; if wikipedia started implementing semantic tags a la semantic mediawiki and &lt;a href="http://www.ontoworld.org"&gt;ontoworld&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-5535598170206280335?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/5535598170206280335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=5535598170206280335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/5535598170206280335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/5535598170206280335'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2006/12/wikipedia-distance.html' title='&quot;Wikipedia Distance&quot;'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-114781642881212105</id><published>2006-05-16T23:43:00.000+02:00</published><updated>2007-02-16T10:49:08.508+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='artificial intelligence'/><title type='text'>Exploiting Wikipedia for AI purposes</title><content type='html'>Firstly, I'm pretty sure I've seen a reference to a service which could tell you the wikipedia distance between two articles, but I can't for the life of me find it again. If anyone knows what I'm talking about, please leave me a comment telling me what you know about this!&lt;br /&gt;&lt;br /&gt;Secondly, I'm perplexed that nobody has yet parsed wikipedia and used it for common-sense or other AI-related tasks such as &lt;a href="http://en.wikipedia.org/wiki/Connectionism"&gt;spreading activation&lt;/a&gt;. Think &lt;a href="http://www.conceptnet.org/"&gt;Conceptnet&lt;/a&gt;, &lt;a href="http://wordnet.princeton.edu/"&gt;Wordnet&lt;/a&gt; and &lt;a href="http://www.openmind.org/"&gt;OpenMind&lt;/a&gt;. They all try to build some form of graph between concepts, you could say, and that is exactly what Wikipedia is. Wikipedia currently has 1M+ articles, easily besting both Wordnet and Conceptnet in number of nodes. I'm convinced that the number of internal links also outnumber the others mentioned here, so I think Wikipedia could be a really useful AI resource. You could even start to follow external links to get an even finer-grained link between Wordnet-nodes, although I suspect that would help very little since I suspect very few Wordnet articles references the same external URLs.&lt;br /&gt;&lt;br /&gt;If I had the opportunity, I would try to experiment around with these ideas, but unfortunately it seems I won't have the time for that, finishing up my thesis and then going straight to getting a job. Actually, I am already trying to get a job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-114781642881212105?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/114781642881212105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=114781642881212105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/114781642881212105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/114781642881212105'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2006/05/exploiting-wikipedia-for-ai-purposes.html' title='Exploiting Wikipedia for AI purposes'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-114389784930887126</id><published>2006-04-01T15:09:00.000+02:00</published><updated>2007-02-16T10:49:31.136+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Groovy is slow!</title><content type='html'>I have been trying to write a prototype for my thesis work in groovy, but I was thinking it seemed a bit slow. Sure, this is to be expected for such a dynamic language, and interpreted at that. But when I wrote a few microbenchmarks I noticed that interpretation didnt seem to be the culprit here.&lt;br /&gt;&lt;br /&gt;First, I tried adding things to a hashmap. This did not reveal any big difference between java and groovy though, the difference were about 100% which I find acceptable, so I continued my search on towards creating objects, and here groovy seems to be adding some substantial overhead:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        val = new Integer("0") &lt;br /&gt;        for(i in 0..&lt;1000000){&lt;br /&gt;            Integer tmp2 = new Integer(43)&lt;br /&gt;            val += tmp2&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;versus:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        val = new Integer("0") &lt;br /&gt;        Integer tmp2 = new Integer(43)&lt;br /&gt;        for(i in 0..&lt;1000000){&lt;br /&gt;            val += tmp2&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Java: 387ms, 206ms, Groovy: 29873ms, 4527ms respectively. Firstly, even when not creating Integers in the loop, groovy is still much much slower, but adding the object creation just makes it intolerably slow! This was precompiled with groovyc then run with the -server parameter to gain some speed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am reading in and parsing the database of &lt;a href="http://wordnet.princeton.edu/"&gt;Wordnet&lt;/a&gt;, and that alone takes some 400 seconds in the current version of my code, which I find a bit too much to sit around and wait for each time I restart my app! Yes, there are ways around this, and I will use them eventually (such as only reloading changed code and not restart the entire JVM, keeping the intialized structures in RAM and ready).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-114389784930887126?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/114389784930887126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=114389784930887126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/114389784930887126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/114389784930887126'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2006/04/groovy-is-slow.html' title='Groovy is slow!'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-114060567719316635</id><published>2006-02-22T11:52:00.000+01:00</published><updated>2006-02-22T11:55:25.530+01:00</updated><title type='text'>Rm my Mac</title><content type='html'>I saw this page &lt;a href="http://rm-my-mac.wideopenbsd.org/"&gt;http://rm-my-mac.wideopenbsd.org/&lt;/a&gt; which hands out free ssh accounts on a mac mini, for the purpose of hacking it. Not my favorite pastime, for sure, but I'm sure there are others interested out there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-114060567719316635?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/114060567719316635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=114060567719316635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/114060567719316635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/114060567719316635'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2006/02/rm-my-mac.html' title='Rm my Mac'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-113938591570643007</id><published>2006-02-08T09:00:00.000+01:00</published><updated>2006-02-08T09:05:15.716+01:00</updated><title type='text'>Thesis: Opennlp and groovy..</title><content type='html'>Just wanted to write about what my thesis ended up being about: Question classification. No chatbot, no Loebner contest I'm afraid. Seems I will use &lt;a href="http://opennlp.sf.net"&gt;Opennlp&lt;/a&gt; and java, but the problem is I hate Java, I find it way too slow to prototype in. So I decided to use &lt;a href="http://groovy.codehaus.org/"&gt;groovy&lt;/a&gt;. This did not turn out well, it took me about a day to figure out that groovys error-messages are far from perfect, leaving me to believe that class loading was all broken in groovy.&lt;br /&gt;&lt;br /&gt;Anyway, both groovy and opennlp seems like great projects. Ive also downloaded the &lt;a href="http://www-nlp.stanford.edu/software/lex-parser.shtml"&gt;Stanford parser&lt;/a&gt;, might be useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-113938591570643007?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/113938591570643007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=113938591570643007' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/113938591570643007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/113938591570643007'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2006/02/thesis-opennlp-and-groovy.html' title='Thesis: Opennlp and groovy..'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-113620689315689210</id><published>2006-01-02T14:01:00.000+01:00</published><updated>2006-01-02T14:03:26.693+01:00</updated><title type='text'>Piratpartiet</title><content type='html'>&lt;a href="https://www.piratpartiet.se/"&gt;Piratpartiet&lt;/a&gt;:&lt;blockquote&gt;Piratpartiet siktar på att ta en vågmästarroll efter valet 2006. Det finns mellan 800 000 och 1 100 000 aktiva fildelare i Sverige, och de är alla trötta på att kallas kriminella. Vi behöver ha 225 000 av dessa med oss för att komma förbi fyraprocentspärren och hamna i vågmästarroll. Den rollen tänker vi sedan använda till att avskaffa upphovsrätten.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Mycket intressant, och det kan bli så att jag röstar på detta parti men är inte helt övertygad ännu.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Filed in: &lt;a href="http://del.icio.us/sandos/politik" rel="tag"&gt;politik&lt;/a&gt;, &lt;a href="http://del.icio.us/sandos/p2p" rel="tag"&gt;p2p&lt;/a&gt;, &lt;a href="http://del.icio.us/sandos/filesharing" rel="tag"&gt;filesharing&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-113620689315689210?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/113620689315689210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=113620689315689210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/113620689315689210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/113620689315689210'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2006/01/piratpartiet.html' title='Piratpartiet'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-113460193639256898</id><published>2005-12-15T00:12:00.000+01:00</published><updated>2005-12-15T01:04:55.923+01:00</updated><title type='text'>Thesis subject: winning the Loebner contest</title><content type='html'>The &lt;a href="http://commonsense.media.mit.edu/"&gt;Open Mind&lt;/a&gt; project, together with &lt;a href="http://www.signiform.com/tt/htm/overview.htm"&gt;ThoughtTreasure&lt;/a&gt; and &lt;a href="http://learner.isi.edu/"&gt;Learner&lt;/a&gt; are all very interesting projects in and of their own, where Learner and Open Mind try to build up a common sense ontology from voluntary user input on webpages, and TT trying to understand texts. The one thing in common to all these is that some version of their knowledgebase is available for download. There is also data from &lt;a href="http://ontology.teknowledge.com/"&gt;SUMO&lt;/a&gt; and &lt;a href="http://www.opencyc.org/"&gt;OpenCYC&lt;/a&gt; available.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Why all this is interesting to me right now is that I am trying to choose my thesis topic, and I am very much in favor of my idea about entering a chatbot into the &lt;a href="http://www.loebner.net/Prizef/loebner-prize.html"&gt;Loebner contest&lt;/a&gt; right now. The problem is I understand that this is a huge, enourmous, even mind-bogglingly hard task. Firstly there is the three main parts of a chatbot: Input recognition, inference engine/reasoning/knowledge store, and generating output. Now each of these are hard parts, and I will try to make them all in less than 20 weeks, with no deep knowledge about inferencing, knowledge representation or linguistics. Yeah, I would say it is looking dark. But it is so damn fun to atleast try. I might have to restrict myself though.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Filed in: &lt;a href="http://del.icio.us/sandos/ai" rel="tag"&gt;ai&lt;/a&gt;,&lt;a href="http://del.icio.us/sandos/ontology" rel="tag"&gt;ontology&lt;/a&gt;,&lt;a href="http://del.icio.us/sandos/science" rel="tag"&gt;science&lt;/a&gt;,&lt;a href="http://del.icio.us/sandos/research" rel="tag"&gt;research&lt;/a&gt;,&lt;a href="http://del.icio.us/sandos/cyc" rel="tag"&gt;cyc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-113460193639256898?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/113460193639256898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=113460193639256898' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/113460193639256898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/113460193639256898'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2005/12/thesis-subject-winning-loebner-contest.html' title='Thesis subject: winning the Loebner contest'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-113320125446842757</id><published>2005-11-28T19:07:00.000+01:00</published><updated>2005-11-28T19:13:06.993+01:00</updated><title type='text'>Det kontantlösa samhället</title><content type='html'>&lt;h3 id="item-title"&gt;&lt;a href="http://copyriot.blogspot.com/2005/11/det-kontantlsa-samhllet.html" class="item-title-link" target="_blank"&gt;&lt;ins&gt;Det kontantlösa samhället&lt;/ins&gt;&lt;/a&gt;:&lt;/h3&gt;&lt;blockquote&gt;En ekonomi utan gråa pengar vore lika svår att skapa som ett internet utan darknets&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Varför inte ett &lt;a href="http://tor.eff.org"&gt;tor&lt;/a&gt; för elektroniska transaktioner? Där användare från flera olika banker skickar vidare elektroniska överföringar för att dölja mottagare och avsändare. Vet att åtminstone en &lt;a href="http://www.fsb.se"&gt;bank&lt;/a&gt; har möjlighet till inloggning med personlig kod, vilket väl är ett krav då varken dosa eller engångs-skrapkoder blir särskilt enkelt för ett script att använda sig av. Jag tror inte på att systemet skulle fungera om det var manuellt. Ett problem är att bankerna säkerligen skulle blockera dessa överföringar ganska snabbt genom att upptäcka typiska mönster.&lt;br /&gt;&lt;br /&gt;Dock har väl polisen fortfarande möjlighet att plocka fram uppgifter från vilken bank som helst, så det handlar egentligen mest om att en bank inte ska sitta på för mycket information, och inte om att undkomma lagen.&lt;br /&gt;&lt;br /&gt;Filed in: &lt;a href="http://del.icio.us/sandos/p2p" rel="tag"&gt;p2p&lt;/a&gt;, &lt;a href="http://del.icio.us/sandos/anonp2p" rel="tag"&gt;anonp2p&lt;/a&gt;, &lt;a href="http://del.icio.us/sandos/economy" rel="tag"&gt;economy&lt;/a&gt;, &lt;a href="http://del.icio.us/sandos/cash" rel="tag"&gt;cash&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-113320125446842757?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/113320125446842757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=113320125446842757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/113320125446842757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/113320125446842757'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2005/11/det-kontantlsa-samhllet.html' title='Det kontantlösa samhället'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344972.post-113310027943775999</id><published>2005-11-27T14:59:00.000+01:00</published><updated>2005-11-27T21:18:23.856+01:00</updated><title type='text'>Freenet Alphatest</title><content type='html'>Soo, &lt;a href="http://freenetproject.org/"&gt;freenet&lt;/a&gt; is alphatesting their next version 0.7. If you want in, go to #freenet-alphatest on the &lt;a href="http://freenode.org/"&gt;freenode&lt;/a&gt; irc network. This version is still &lt;span style="font-style: italic;"&gt;far&lt;/span&gt; from being usable or anything, but I think they need more testers still. Basically, you can insert files and download them from a single-threaded CLI interface.&lt;br /&gt;&lt;br /&gt;Instructions for installation of the node is &lt;a href="http://wiki.freenetproject.org/wikka.php?wakka=FreenetAlphatestNodeInstallation"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Filed in: &lt;a href="http://del.icio.us/sandos/freenet" rel="tag"&gt;freenet&lt;/a&gt;, &lt;a href="http://del.icio.us/sandos/alphatest" rel="tag"&gt;&lt;/a&gt; &lt;a href="http://del.icio.us/sandos/p2p" rel="tag"&gt;p2p&lt;/a&gt;, &lt;a href="http://del.icio.us/sandos/anonymous-p2p" rel="tag"&gt;&lt;/a&gt;&lt;a href="http://del.icio.us/sandos/filesharing" rel="tag"&gt;filesharing&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344972-113310027943775999?l=sopues.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sopues.blogspot.com/feeds/113310027943775999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344972&amp;postID=113310027943775999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/113310027943775999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344972/posts/default/113310027943775999'/><link rel='alternate' type='text/html' href='http://sopues.blogspot.com/2005/11/freenet-alphatest.html' title='Freenet Alphatest'/><author><name>sandos</name><uri>http://www.blogger.com/profile/01228327484995909953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
