<?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-8540903071423004329</id><updated>2012-01-18T00:45:14.339-08:00</updated><category term='statistical'/><category term='mozart'/><category term='syntax highlight'/><category term='numpy'/><category term='pymc'/><category term='gtksourceview'/><category term='gedit'/><category term='bayes'/><category term='python'/><category term='cpt'/><category term='mozart/oz'/><category term='oz'/><title type='text'>Boot to the head</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://eruyomo-mmxgn.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://eruyomo-mmxgn.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>mmxgn</name><uri>http://www.blogger.com/profile/17220942607766188846</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>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8540903071423004329.post-5052227543680060362</id><published>2011-10-08T03:37:00.000-07:00</published><updated>2011-10-08T03:46:46.265-07:00</updated><title type='text'>Sooperlooper loses connection to engine</title><content type='html'>If it happens that &lt;span style="font-weight: bold;"&gt;sooperlooper&lt;/span&gt; shows you this dialog:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Lost connection to SooperLooper engine.&lt;br /&gt;See the Preferences-&amp;gt;Connections tab to start a new one&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-dvhJDA0Xvo8/TpAo4g77nRI/AAAAAAAAAOQ/iS9XlTpRTBc/s1600/Screenshot%2Bat%2B2011-10-08%2B13%253A40%253A38.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 95px;" src="http://4.bp.blogspot.com/-dvhJDA0Xvo8/TpAo4g77nRI/AAAAAAAAAOQ/iS9XlTpRTBc/s320/Screenshot%2Bat%2B2011-10-08%2B13%253A40%253A38.png" alt="" id="BLOGGER_PHOTO_ID_5661069682983804178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;on newer distributions (I tried it with Fedora 16 beta 1), add your&lt;br /&gt;&lt;localhost&gt;.&lt;localdomain&gt; (substitude &lt;localhost&gt; with your host and &lt;localdomain&gt; with your domain) to your `/etc/hosts' file on the line for 127.0.0.1 and try again.&lt;br /&gt;&lt;br /&gt;For example, my hostname is `mmxgn' and domain is `emergencia' so my hosts file was:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;127.0.0.1               localhost.localdomain localhost&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;and I added mmxgn.emergencia next to localhost.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;127.0.0.1               localhost.localdomain localhost mmxgn.emergencia&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Now when I run `slgui' I can use sooperlooper without the engine dying.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/localdomain&gt;&lt;/localhost&gt;&lt;/localdomain&gt;&lt;/localhost&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8540903071423004329-5052227543680060362?l=eruyomo-mmxgn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eruyomo-mmxgn.blogspot.com/feeds/5052227543680060362/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8540903071423004329&amp;postID=5052227543680060362' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/5052227543680060362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/5052227543680060362'/><link rel='alternate' type='text/html' href='http://eruyomo-mmxgn.blogspot.com/2011/10/sooperlooper-loses-connection-to-engine.html' title='Sooperlooper loses connection to engine'/><author><name>mmxgn</name><uri>http://www.blogger.com/profile/17220942607766188846</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-dvhJDA0Xvo8/TpAo4g77nRI/AAAAAAAAAOQ/iS9XlTpRTBc/s72-c/Screenshot%2Bat%2B2011-10-08%2B13%253A40%253A38.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8540903071423004329.post-5897361465956973412</id><published>2011-06-07T00:40:00.000-07:00</published><updated>2011-06-07T00:46:05.368-07:00</updated><title type='text'>Guitar Pro 6 on Fedora 15</title><content type='html'>I had some problems installing Guitar Pro 6 for Linux on Fedora 15.&lt;br /&gt;The problem was that, after extracting the .deb file on the cd, on /opt/ the updater would fail when I ran it as a user because of wrong permissions, and if I chmodded 777 the Guitar Pro directory, or ran with sudo, It would not run at all.&lt;br /&gt;&lt;br /&gt;So, what I did:&lt;br /&gt;&lt;br /&gt;1. I ran ./GPUpdater as the regular user, with the original directory permissions&lt;br /&gt;2. While running, I chmodded 777 /opt/GuitarPro6&lt;br /&gt;3. Updated&lt;br /&gt;&lt;br /&gt;And finally (I'm at the third step right now) changing to the original 755 permissions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8540903071423004329-5897361465956973412?l=eruyomo-mmxgn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eruyomo-mmxgn.blogspot.com/feeds/5897361465956973412/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8540903071423004329&amp;postID=5897361465956973412' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/5897361465956973412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/5897361465956973412'/><link rel='alternate' type='text/html' href='http://eruyomo-mmxgn.blogspot.com/2011/06/guitar-pro-6-on-fedora-15.html' title='Guitar Pro 6 on Fedora 15'/><author><name>mmxgn</name><uri>http://www.blogger.com/profile/17220942607766188846</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-8540903071423004329.post-4772385874666616754</id><published>2010-07-30T05:31:00.000-07:00</published><updated>2010-07-30T09:22:58.273-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mozart'/><category scheme='http://www.blogger.com/atom/ns#' term='gedit'/><category scheme='http://www.blogger.com/atom/ns#' term='oz'/><category scheme='http://www.blogger.com/atom/ns#' term='syntax highlight'/><category scheme='http://www.blogger.com/atom/ns#' term='gtksourceview'/><category scheme='http://www.blogger.com/atom/ns#' term='mozart/oz'/><title type='text'>Mozart/Oz and Gedit</title><content type='html'>Mozart/Oz is a very powerful language, which I recently started using.&lt;br /&gt;&lt;br /&gt;Unfortunately, the most efficient way to use it, is from within emacs and the OPI.&lt;br /&gt;&lt;br /&gt;I tried to find a way to use it with other editors, even for simple functionality like syntax highlighting but with no success.&lt;br /&gt;&lt;br /&gt;Today,  I tried to make a syntax `.lang' file for gedit, for Mozart/Oz so I took a .lang file&lt;br /&gt;I found in `/usr/share/gtksourceview-2.0/language-specs/' (`scheme.lang'), modified it&lt;br /&gt;and there I have a far-from-complete-yet-working `.lang' file for Mozart/Oz and gedit, as well some `tools' for the `external-tools' plugin (compile &amp;amp; compile-run with &lt;ctrl&gt; and &lt;ctrl&gt; respectively).&lt;br /&gt;&lt;br /&gt;If you want to use it, access my github at:http://github.com/mmxgn/mozart-stuff/tree/master/mozart-gedit/&lt;br /&gt;&lt;br /&gt;Download mozart-gedit.tar.gz, untar-gzip it and read `INSTALL'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ctrl&gt;&lt;/ctrl&gt;&lt;div style="text-align: center;"&gt;Here's a screenshot:&lt;br /&gt;&lt;/div&gt;&lt;ctrl&gt;&lt;ctrl&gt;&lt;a href="http://4.bp.blogspot.com/_D1Umwj3sS9I/TFLbTZka1LI/AAAAAAAAAIk/nAU36q8aAyk/s1600/geditoz.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 226px; height: 320px;" src="http://4.bp.blogspot.com/_D1Umwj3sS9I/TFLbTZka1LI/AAAAAAAAAIk/nAU36q8aAyk/s320/geditoz.png" alt="" id="BLOGGER_PHOTO_ID_5499699221300434098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ctrl&gt;&lt;/ctrl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8540903071423004329-4772385874666616754?l=eruyomo-mmxgn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eruyomo-mmxgn.blogspot.com/feeds/4772385874666616754/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8540903071423004329&amp;postID=4772385874666616754' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/4772385874666616754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/4772385874666616754'/><link rel='alternate' type='text/html' href='http://eruyomo-mmxgn.blogspot.com/2010/07/mozartoz-is-very-powerful-language.html' title='Mozart/Oz and Gedit'/><author><name>mmxgn</name><uri>http://www.blogger.com/profile/17220942607766188846</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_D1Umwj3sS9I/TFLbTZka1LI/AAAAAAAAAIk/nAU36q8aAyk/s72-c/geditoz.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8540903071423004329.post-7710078088713268306</id><published>2010-02-04T00:08:00.000-08:00</published><updated>2010-02-07T12:19:36.958-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pymc'/><category scheme='http://www.blogger.com/atom/ns#' term='cpt'/><category scheme='http://www.blogger.com/atom/ns#' term='statistical'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='bayes'/><category scheme='http://www.blogger.com/atom/ns#' term='numpy'/><title type='text'>Calculating conditional pmf matrices in python (numpy)</title><content type='html'>&lt;div&gt;Here is the thing that has tormented me for some time now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have a conjunctive probability table, with shape, for example (1,2,3,4,5,6) .&lt;/div&gt;&lt;div&gt;And I want to calculate the probability table, conditional to a value for some of the dimensions, for decision-making purposes. We define the values we want &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The code I came up with at the moment is the following (the input is the dictionary "vdict" of the form  {'variable_1': value_1, 'variable_2': value_2 ... } )&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;for i in vdict:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            dim = self.invardict.index(i)   # The index of the dimension that our Variable resides in&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            val = self.valdict[i][vdict[i]]    # The value we want it to be&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            d = d.swapaxes(0, dim)          &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;b&gt;            d = array([d[val]])             &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            d = d.swapaxes(0, dim)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;       ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, what I currently do is:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. I translate the variables to the corresponding dimension in the cpt.&lt;/div&gt;&lt;div&gt;2. I swap the zero-th axis  with the axis I found before.&lt;/div&gt;&lt;div&gt;3. I replace whole 0-axis with just the desired value.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I put the dimension back to its original axis.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, the problem is, in order to do step 2, I have (a.) &lt;b&gt;to calculate a submatrix&lt;/b&gt;&lt;/div&gt;&lt;div&gt;and (b.) to put it in a list &lt;b&gt;and translate it again to array&lt;/b&gt; so I'll have my new array.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thing is, stuff in bold means that I create new objects, instead of using just the references to the old ones and this, if d is very large (which happens to me) and methods that use d are called many times (which, again, happens to me) the whole result is very slow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, has anyone come up with an idea that will subtitude this little piece of code and will run a lot faster? Maybe something that will allow me to calculate the conditionals in place.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Edit: &lt;/b&gt;I replaced the command in bold, with the code below:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;d = conditionalize(d, dim, val)&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;where:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;def conditionalize(arr, dim, val):&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;div&gt;    arr = arr.swapaxes(dim, 0)&lt;/div&gt;&lt;div&gt;    shape = arr.shape[1:]       # shape of the sub-array when we omit the desired &lt;/div&gt;&lt;div&gt;    count = array(shape).prod() # count of elements omitted the desired dimension.&lt;/div&gt;&lt;div&gt;    arr = arr.reshape(array(arr.shape).prod()) # flatten the array in-place.&lt;/div&gt;&lt;div&gt;    arr = arr[val*count:(val+1)*count] # take the needed elements&lt;/div&gt;&lt;div&gt;    arr = arr.reshape((1,)+shape) # the desired sub-array shape.&lt;/div&gt;&lt;div&gt;    arr = arr. swapaxes(0, dim)   # fix dimensions&lt;/div&gt;&lt;div&gt;            &lt;/div&gt;&lt;div&gt;    return arr&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Now, what before took 15 minutes to complete, now takes only about 6 seconds!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8540903071423004329-7710078088713268306?l=eruyomo-mmxgn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eruyomo-mmxgn.blogspot.com/feeds/7710078088713268306/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8540903071423004329&amp;postID=7710078088713268306' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/7710078088713268306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/7710078088713268306'/><link rel='alternate' type='text/html' href='http://eruyomo-mmxgn.blogspot.com/2010/02/calculating-conditional-pmf-matrices-in.html' title='Calculating conditional pmf matrices in python (numpy)'/><author><name>mmxgn</name><uri>http://www.blogger.com/profile/17220942607766188846</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-8540903071423004329.post-7042982921087205295</id><published>2009-12-22T02:58:00.000-08:00</published><updated>2009-12-22T03:08:21.210-08:00</updated><title type='text'>cast from 'void*' to 'int' loses precision</title><content type='html'>Irritating message, it happens because:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;blockquote&gt;int a = sizeof(b)&lt;/blockquote&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;is bad, where:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;blockquote&gt;size_t a = sizeof(b)&lt;/blockquote&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;is better.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So if you happen to try to compile something and it gives you this message, try to figure out what tries to make it an int and change it to a size_t.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8540903071423004329-7042982921087205295?l=eruyomo-mmxgn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eruyomo-mmxgn.blogspot.com/feeds/7042982921087205295/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8540903071423004329&amp;postID=7042982921087205295' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/7042982921087205295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/7042982921087205295'/><link rel='alternate' type='text/html' href='http://eruyomo-mmxgn.blogspot.com/2009/12/cast-from-void-to-int-loses-precision.html' title='cast from &apos;void*&apos; to &apos;int&apos; loses precision'/><author><name>mmxgn</name><uri>http://www.blogger.com/profile/17220942607766188846</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-8540903071423004329.post-4353939689272940430</id><published>2008-08-13T22:45:00.001-07:00</published><updated>2008-08-14T00:09:23.512-07:00</updated><title type='text'>Cross platform?</title><content type='html'>Ok, I know I have some days to write into this blog and I am going to ressurect it a little big.&lt;br /&gt;This summer I finally started to get my hands dirty with python (since it's a so nice language). I tried to do some stuff with sockets, threads, gtk and wx since I had in mind the cross platform nature of python.&lt;br /&gt;&lt;br /&gt;What I have as a result in my mind is that, I don't find it so "cross-platform" (at least not as much as java is - which I haven't got my hands dirty on, yet - ) . I mean, surely what I write, runs on both linux and windows (haven't tried it on my G5 mac tho, I should try) but with what cost? While it seems to run flawlessly on linux with gtk, threads and all, I had to remove thread support on windows in order to make it work (I didn't need threads anyway in the first place, just for educational purposes ) which has something to do with gtk I guess (wx didn't complain). Oh that and the nearly 50% CPU usage of pythonw.exe (you don't want a background app to take that much, do you?)  and/or the executable I made with py2exe.&lt;br /&gt;&lt;br /&gt;Also another story is py2exe. I tried to make a distributable package for python-unaware systems. It took me some time because of missing modules and stuff, made an,  about 16mb dist package (about 7mb compressed) so I was happy to give it to two friends to test it.&lt;br /&gt;&lt;br /&gt;First hit under the belt. While I had corrected the box-letters on my system (runned pango-querymodules.exe on a file under my dist directory) my buddies had the same problem, so I sent the pango and freetype dlls which it  seems it worked to one of the systems (the other still had the box-letters )&lt;br /&gt;&lt;br /&gt;Second hit under the belt. The app is supposed to be a cute and minimalistic IM client, lighter than the heavyweight Live Messenger (educational purposes only, I may release it under gpl&lt;br /&gt;if its fully working tho). In a way, it succeeds, but only on linux. On windows, it made my friend's computer...fry (mine too). 50% CPU usage for a small and light app is not ok (tho I seem to have made something wrong. Emesene is on python and It runs with almost no CPU usage, on Windows)&lt;br /&gt;&lt;br /&gt;To not get misunderstood. I love python, it just provides everything I would need so I would design and go (also scipy is awesome), but I think the current CPython is not really what I would turn to if I wanted cross platform support (web applications is another story where I want to see how it works)&lt;br /&gt;&lt;br /&gt;But I see light on the horizon. It shines, it's pretty, and it is Java. It's &lt;a href="http://www.jython.org/"&gt;jython&lt;/a&gt; and I think I will fell in love with it.&lt;br /&gt;&lt;br /&gt;But anyway, next stop: undestanding how to write efficient windows apps in python, and also having a look at &lt;a href="http://osl.cs.uiuc.edu/parley/"&gt;PARLEY&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8540903071423004329-4353939689272940430?l=eruyomo-mmxgn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eruyomo-mmxgn.blogspot.com/feeds/4353939689272940430/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8540903071423004329&amp;postID=4353939689272940430' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/4353939689272940430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8540903071423004329/posts/default/4353939689272940430'/><link rel='alternate' type='text/html' href='http://eruyomo-mmxgn.blogspot.com/2008/08/cross-platform.html' title='Cross platform?'/><author><name>mmxgn</name><uri>http://www.blogger.com/profile/17220942607766188846</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>
