<?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-101171174336787210</id><updated>2012-02-17T03:57:54.045+01:00</updated><category term='USB Boot'/><category term='Python'/><category term='Development'/><category term='Games'/><category term='Apache'/><category term='Edesia.cz'/><category term='Django'/><category term='ICQ'/><category term='Linux'/><category term='xubuntu'/><category term='Programming'/><category term='Deployment'/><title type='text'>Aredhel's Red Hell</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-101171174336787210.post-5368172742786861416</id><published>2010-12-08T22:45:00.005+01:00</published><updated>2010-12-08T23:18:21.613+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>How to build Python libraries on 64bit Windows</title><content type='html'>The other day I needed to try some Python libraries at work. Being mostly .NET shop, we usually use Windows machines for development which sometimes causes problems for Linux-primary applications.&lt;br /&gt;I'm running Windows 7 64bit and Python 2.7 64bit. Of course, the libraries were not built for this combination so I had to build them from source. Normally, this is a simple task of unzipping and running &lt;code&gt;python setup.py install&lt;/code&gt;, but it was not that easy on this new machine.&lt;br /&gt;After a lot of errors and pointless googling, I finally found a solution in an article &lt;a href="http://mattptr.net/2010/07/28/building-python-extensions-in-a-modern-windows-environment/"&gt;Building Python Extensions in a Modern Windows Environment&lt;/a&gt; by Matt Schmidt. So if you have the same problem, you can just head there and read the article while I rant about the useless paths.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Fruitless paths&lt;/h2&gt;&lt;br /&gt;The problem manifested in a few different ways. Firstly, trying to build the libraries like usual threw error&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;raise ValueError(str(list(result.keys())))&lt;br /&gt;ValueError: [u'path']&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Not very useful message, mind you. There is a reported issue in Python for this exact exception during building libraries but it relates to different problem (using Visual Studio Express for building). &lt;br /&gt;The problem appeared to be in Python's usage of Visual Studio compiler so I tried to use &lt;a href="http://www.mingw.org/"&gt;MinGW&lt;/a&gt; instead. What I did not verify was whether MinGW supports 64bit applications, or just 32bit. So instead of a built library I just had another error: &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;collect2: ld returned 1 exit status&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I eventually got to the information that base MinGW can only be used for 32bit applications and even found a fork that should work for 64bits. I don't remember which fork it was, I only remember it not working. Fortunately I didn't have to fight with the libraries much longer because I finally stumbled on Matt's article.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Solution&lt;/h2&gt;&lt;br /&gt;This is a quick summary of Matt's article above:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;Install Microsoft Visual C++ 2008 (sadly, VS 2010 is not supported at the moment)&lt;br /&gt;  &lt;li&gt;Install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&amp;displaylang=en"&gt;Windows 7 Platform SDK&lt;/a&gt;&lt;br /&gt;  &lt;li&gt;Create directory &lt;code&gt;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\&lt;/code&gt;&lt;br /&gt;  &lt;li&gt;Create file &lt;code&gt;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat&lt;/code&gt; with following content:&lt;br /&gt;  &lt;code&gt;&lt;br /&gt;  call "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /Release&lt;br /&gt;  &lt;/code&gt;&lt;br /&gt;  &lt;li&gt;Patch Python Visual studio compiler - add the following line to &lt;code&gt;distutils/msvc9compiler.py&lt;/code&gt; after line 648 (this is in method &lt;code&gt;link&lt;/code&gt; after line &lt;code&gt;ld_args.append('/MANIFESTFILE:' + temp_manifest):&lt;br /&gt;  &lt;pre&gt;&lt;br /&gt;  ld_args.append('/MANIFEST')&lt;br /&gt;  &lt;/pre&gt;&lt;br /&gt;  &lt;li&gt;That's it. Now you can run &lt;code&gt;python setup.py install&lt;/code&gt; to install your brand new Python libraries&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;I hope this will be of use if you have similar problems, at least as a point to Matt's article.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-5368172742786861416?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/5368172742786861416/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2010/12/how-to-build-python-libraries-on-64bit.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/5368172742786861416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/5368172742786861416'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2010/12/how-to-build-python-libraries-on-64bit.html' title='How to build Python libraries on 64bit Windows'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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-101171174336787210.post-1205310950982644406</id><published>2010-10-28T12:33:00.003+02:00</published><updated>2010-10-28T12:39:44.390+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Edesia.cz'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Internet cookbook Edesia.cz</title><content type='html'>In the last post I mentioned that I started working on a new hobby project - &lt;a href="http://www.edesia.cz"&gt;internet cookbook Edesia.cz&lt;/a&gt; (in Czech language). I didn't write anything for some time but in the meantime successfully finished basic implementation with which I am quite satisfied - I strived for a clean UI with only important functionality and not much advertisements. But back to the beginning.&lt;br /&gt;&lt;br /&gt;My original motivation to do this project had not much to do with cooking - I merely wanted to learn Python and Django. I realized that I don't want to fall into the trap of starting something new and never finishing (as was the case with &lt;a href="http://rudepeklo.blogspot.com/2009/05/tomix-first-level-ready.html"&gt;Tomix&lt;/a&gt;). So this had to be a real project which I would have to be able to program in my spare time. I needed something relatively simple but with real value, I didn't want to develop yet another CMS or blog engine.&lt;br /&gt;&lt;br /&gt;When I thought about the options I remembered that I already created a simple cookbook in C# a few years ago. I used it only for myself but the WinForms UI was very clunky and it had a few bugs I had no intention to fix. I decided I will just rewrite it for the web. I thought about basic functions I'd like to have in there, analyzed and draw wireframes. &lt;br /&gt;&lt;br /&gt;The only problem I had to solve was how to motivate myself after the initial excitement fades out. I solved this by spending some time thinking about a reasonable name for this kind of website that was not yet taken and immediately bought the domain and paid for hosting (here "immediately" means about a month after I started development - I never said I was quick :) ). By the way, the site is named after Roman goddess of feasts and good food. So, I went on with the development. I didn't really bother with the UI design, knowing that I can't create anything nice and expected that I'll find some designer later. I found a reasonable free template (&lt;a href="http://www.styleshout.com/templates/preview/KeepItSimple11/index.html"&gt;Styleshout's Keep It Simple&lt;/a&gt;) and by mid-April I deployed first simple version. That allowed me to fill in the recipes while working on other improvements. I did not really propagate the project so I was kinda excited when I saw that soon the visitors started coming on their own.&lt;br /&gt;&lt;br /&gt;While working on important features, I was also looking for someone to design the final version of UI. I didn't want anything expensive because &lt;a href="http://www.edesia.cz"&gt;Edesia.cz&lt;/a&gt; is only a hobby project. Fortunately a friend of mine agreed to create the design and logo for a reasonable price. The work took longer than expected, partially because of my inexperience in this part of software development and partially because of some unexpected (work unrelated) issues. We did a few iterations of design, a few more of logo and during July site went public. Today the site is almost the same, only with a few bugs fixed and a few improvements implemented.&lt;br /&gt;&lt;br /&gt;After the nice design went public, I registered the site to a few catalogues and promoted to friends on Facebook. I didn't do more marketing yet (mostly because I don't know how best to approach it) but so far the number of visitors to site is slowly increasing.&lt;br /&gt;&lt;br /&gt;Today the site is still really small - I have over 350 recipes in multiple categories and about 80 visits per day. Two weeks ago I added some simple PPC advertisements because I'd like the site to at least pay for it's hosting costs. So far the results are not very exciting which is not surprising given the fact that the number of visits is still very low and the ads are at their first iteration. I don't want to have many advertisements there so I will probably have to bear the costs myself for some time.&lt;br /&gt;&lt;br /&gt;Altogether, I am now satisfied with the results I saw so far. I am now able to do at least basic development in Django, I learned a little about SEO and specifics of web development and I also found quite a few good recipes to try :) For the future I plan to improve the rating system, add possibility to display recipe images, write articles and lots of other stuff. And by adding all this, I want the site to stay simple and clean unlike most of other recipe websites. I hope it'll work :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-1205310950982644406?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/1205310950982644406/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2010/10/internet-cookbook-edesiacz.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/1205310950982644406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/1205310950982644406'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2010/10/internet-cookbook-edesiacz.html' title='Internet cookbook Edesia.cz'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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-101171174336787210.post-6519812358572764416</id><published>2010-02-09T10:26:00.010+01:00</published><updated>2010-02-09T10:51:05.991+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Running Django on shared hosting with mod_wsgi</title><content type='html'>I have recently started working on a new hobby project (&lt;a href="http://www.edesia.cz/"&gt;internet cookbook&lt;/a&gt; - only in Czech, nothing to see yet). This is written in Django and runs on shared webhosting (&lt;a href="http://www.web4ce.cz/"&gt;Web4ce&lt;/a&gt;). Django contains reasonable &lt;a href="http://docs.djangoproject.com/en/1.1/howto/deployment/modwsgi/"&gt;deployment documentation&lt;/a&gt; but unfortunately it deals only with configuring the site directly on Apache.&lt;br /&gt;&lt;br /&gt;I can only modify &lt;span style="font-weight: bold;"&gt;.htaccess&lt;/span&gt; files so the deployment was a little harder than just copying a few lines of code. I had to actually google what to do :)&lt;br /&gt;&lt;br /&gt;In the end the site is running, and this is what I did. After a few tries getting just 500 error (and not knowing where the problem was) I began with more simple steps then trying to set everything at once.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Simple WSGI script&lt;/h3&gt;&lt;br /&gt;First, to make sure that mod_wsgi is correctly supported and running, I created file &lt;span style="font-weight: bold;"&gt;hello_wsgi.wsgi&lt;/span&gt;:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def application(environ, start_response):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status = '200 OK'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output = 'Hello World!'&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_response(status, response_headers)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return [output]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and &lt;span style="font-weight: bold;"&gt;.htaccess:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;AddHandler wsgi-script .wsgi&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uploading these files to hosting and navigating to hello_wsgi.wsgi gave me my desired "Hello World!". At least something was working.&lt;br /&gt;The scripts for this part were taken from &lt;a href="http://www.rkblog.rk.edu.pl/w/p/mod_wsgi/"&gt;http://www.rkblog.rk.edu.pl/w/p/mod_wsgi/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Running django&lt;/h3&gt;&lt;br /&gt;Preparing django.wsgi seems simple enough once the WSGI is actually working, but the problem is when there are some other problems in configuration (as it was in my case :)).&lt;br /&gt;To be able to debug these problems, I have modified the suggested &lt;a href="http://docs.djangoproject.com/en/1.1/howto/deployment/modwsgi/"&gt;WSGI configuration&lt;/a&gt;:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import os&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;os.environ['DJANGO_SETTINGS_MODULE'] = 'edesia.settings'&lt;br /&gt;&lt;br /&gt;sys.path.append('/path/to/my/www')&lt;br /&gt;&lt;br /&gt;import django.core.handlers.wsgi&lt;br /&gt;app = django.core.handlers.wsgi.WSGIHandler()&lt;br /&gt;&lt;br /&gt;def application(environ, start_response):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status = '200 OK'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;app(environ, start_response)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output = 'ok'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;except Exception, e:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output = 'error: %s ' % str(e)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response_headers = [('Content-type', 'text/plain'),&lt;br /&gt;                      ('Content-Length', str(len(output)))]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_response(status, response_headers)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return [output]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Running on django.wsgi like this, I get all error messages and can fix the problems as they appear. After I got 'ok' as output, I only need to rename "def application" to something like "application_debug" and "app" to "application". And, voilà, I am running Django powered website.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Serving static files with Apache&lt;/h3&gt;&lt;br /&gt;The only problem remaining was to configure Apache to serve static files directly and not through Django (it's possible, but slow - see Big Fat Disclaimer here: &lt;a href="http://docs.djangoproject.com/en/1.1/howto/static-files/#howto-static-files"&gt;http://docs.djangoproject.com/en/1.1/howto/static-files/#howto-static-files&lt;/a&gt; ). Again, the original documentation was not very helpful, so I digged into Apache &lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html"&gt;mod_rewrite&lt;/a&gt; and this is what I came up with:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;RewriteRule ^(site_media/.*)$ /edesia/$1 [QSA,PT,L]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;These two lines put into .htaccess cause all the static content (stored under directory site_media) to be served directly by apache from /edesia/site_media directory.&lt;br /&gt;&lt;br /&gt;The whole .htaccess file then for me (and for now) looks like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;DirectoryIndex django.wsgi&lt;br /&gt;&lt;br /&gt;AddHandler wsgi-script .wsgi&lt;br /&gt;RewriteEngine On&lt;br /&gt;RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;RewriteRule ^(site_media/.*)$ /edesia/$1 [QSA,PT,L]&lt;br /&gt;&lt;br /&gt;RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And that's it. The deployment took a little longer than I anticipated (plus I still have a lot more to do regarding deployment - see &lt;a href="http://djangobook.com/en/2.0/chapter12/"&gt;http://djangobook.com/en/2.0/chapter12/&lt;/a&gt;). But the site is running and that's fine with me now. Now I can concentrate on the development, find someone who will do the design and fill recipes. Hopefully by the beginning of spring I will have some reasonably complete version.&lt;br /&gt;&lt;br /&gt;See also:&lt;br /&gt;&lt;a href="http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango"&gt;http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines"&gt;http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-6519812358572764416?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/6519812358572764416/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2010/02/running-django-on-shared-hosting-with.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/6519812358572764416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/6519812358572764416'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2010/02/running-django-on-shared-hosting-with.html' title='Running Django on shared hosting with mod_wsgi'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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-101171174336787210.post-1822017886992830859</id><published>2010-01-21T17:05:00.008+01:00</published><updated>2010-01-21T17:22:12.912+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Boot'/><title type='text'>Running xubuntu 9.10 from USB</title><content type='html'>I have recently bought a new &lt;a href="http://www.corsair.com/products/voyager/default.aspx"&gt;USB flash disc&lt;/a&gt; to replace my old 512MB one. Having it, I naturally wanted to try booting from USB to use the new free space :) I decided to try "new" xubuntu 9.10 because I did not yet upgrade my desktop computer.&lt;br /&gt;&lt;br /&gt;I have created new flash drive by the article on &lt;a href="http://www.pendrivelinux.com/create-a-xubuntu-9-10-flash-drive-using-windows/"&gt;Pendrivelinux &lt;/a&gt; (Windows install seemed easier than burning LiveCD and creating USB from that). I tried to boot up. Unexpectedly, nothing happened. I guess the booting from USB is not yet as easy as using CDs. In the end I was successful and I want to sum up the problems I had and solutions to them.&lt;br /&gt;For instructions how to create bootable USB disc, see &lt;a href="http://www.pendrivelinux.com/"&gt;www.pendrivelinux.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The solutions may be specific for motherboard Gigabyte EP45-DSR and other related boards.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: booting from USB does not start&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution&lt;/span&gt;: Don't try to set the boot order differently. That does not work (at least for my board). When booting starts, press F12 to go to boot menu. Here, choose "Hard Drive" and select your USB with the system.&lt;br /&gt;Make sure that the USB is marked as USB-HDD0, otherwise the system won't boot from it. It seems that the motherboard checks just the first USB device it finds and ignores the rest.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: booting starts, but after a while, message "&lt;code&gt;end_request: I/O error, dev fd0, sector 0&lt;/code&gt;" is displayed periodically.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution&lt;/span&gt;: The Live USB is trying to find the floppy drive. Switch off the floppy drive in BIOS. In my case, this is done in menu Standard CMOS Features. Set option "Drive A" to "None".&lt;br /&gt;&lt;br /&gt;I hope this helps if you have similar problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-1822017886992830859?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/1822017886992830859/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2010/01/running-xubuntu-910-from-usb.html#comment-form' title='Počet komentářů: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/1822017886992830859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/1822017886992830859'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2010/01/running-xubuntu-910-from-usb.html' title='Running xubuntu 9.10 from USB'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-101171174336787210.post-2895579582534771548</id><published>2009-12-22T12:42:00.003+01:00</published><updated>2009-12-22T12:53:46.790+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='ICQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Simple ICQ Export script</title><content type='html'>Recently my girlfriend finally decided to stop using the original ICQ program, which she retained mostly because of the unimaginable loss of conversation history. Quick search did not reveal any good and simple means to convert the history data. Most of the software was outdated or for different versions.&lt;br /&gt;&lt;br /&gt;We had two versions of history files - one was directory with XML files and the other seems to be Access mdb (created by ICQ version 6 I think). To sharpen my Python skills (which at the time being is a bit like trying to sharpen a club), I decided to write simple conversion script for the XML history files.&lt;br /&gt;&lt;br /&gt;The script is published on &lt;a href="http://code.google.com/p/icqexport/"&gt;http://code.google.com/p/icqexport/&lt;/a&gt;. For convenience, I have also prepared Windows build &lt;a href="http://icqexport.googlecode.com/files/icqexport_01.zip"&gt;http://icqexport.googlecode.com/files/icqexport_01.zip&lt;/a&gt;.  You are free to do anything with the script and welcome to send &lt;a href="mailto:rudepeklo@gmail.com"&gt;me &lt;/a&gt;notes and suggestions.&lt;br /&gt;&lt;br /&gt;The usage is very simple, although nothing is guaranteed :) Copy the script to the directory where ICQ history files are stored and run it. It will traverse all subdirectories and convert history XML files to one readable TXT file.&lt;br /&gt;&lt;br /&gt;The only version supported is 0x00140034 (tested on ICQ version 5.1). You're fine if there's something like this at the beginning of your files:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;root&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;0x00140034&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;event&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I didn't see the mdb structure yet but if I will get to it, I'll keep you informed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-2895579582534771548?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/2895579582534771548/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2009/12/simple-icq-export-script.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/2895579582534771548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/2895579582534771548'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2009/12/simple-icq-export-script.html' title='Simple ICQ Export script'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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-101171174336787210.post-1273447462154324800</id><published>2009-05-11T18:23:00.005+02:00</published><updated>2009-05-12T19:55:57.464+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><title type='text'>Tomix - First level ready</title><content type='html'>During this weekend I planned to finish the first version of first level of our puzzle game. I had kinda slacking mood (caused partially by &lt;a href="http://www.shamusyoung.com/twentysidedtale/"&gt;this&lt;/a&gt; great blog), but I forced myself to overcome it and in the end I was able to finish the first level as planned. There are still no graphics so I'm reusing arrows from Heartbeat, but the basic "engine" is ready. There is still a lot of work to do but being able to actually play the level is really motivational.&lt;br /&gt;&lt;br /&gt;I handed it over to Mitsuki to try the game logic and she quickly found a solution - although not the one I had originally envisioned :) But it was possible because of a bug in checking of the final position so in the next version it won't count. But at first glance it seems that the idea is viable and I have a lot of great feedback for the game from Mitsuki. We only have to stay focused on the fact that we create puzzle game, because some ideas would lead us to completely different genre :)&lt;br /&gt;&lt;br /&gt;So now Mitsuki will start working on the graphics to incorporate to the game. In the evening I also checked some sites with free game development resources so we could re-use something already created, but my search did not finish yet. But I have a few good sources I want to check so expect another post covering those I think are most useful.&lt;br /&gt;&lt;br /&gt;For the next work I hope to finally start work on the editor. I kinda didn't get to that yet, but I already know how to &lt;a href="http://docs.python.org/library/pickle.html"&gt;serialize&lt;/a&gt; objects in Python :) And it has not that high priority for me - worst case we can easily define the levels in source code.&lt;br /&gt;&lt;br /&gt;I also checked &lt;a href="http://www.pygame.org/project/855/"&gt;some&lt;/a&gt; &lt;a href="http://www.pygame.org/project/996/"&gt;libraries&lt;/a&gt; to create menus in pygame but unfortunately none of them seem appropriate to what I want to do so I'll probably have to write my own solution. &lt;a href="http://www.pygame.org/project/996/"&gt;KezMenu&lt;/a&gt; looks fine but it can't center the text and unfortunately it's GPL'd - and I did not decide on the license to code yet, so I may not be able to use that. Well, we'll see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-1273447462154324800?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/1273447462154324800/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2009/05/tomix-first-level-ready.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/1273447462154324800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/1273447462154324800'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2009/05/tomix-first-level-ready.html' title='Tomix - First level ready'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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-101171174336787210.post-8521571712094014571</id><published>2009-05-02T10:34:00.007+02:00</published><updated>2009-05-02T11:09:11.670+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Device identification problem during boot</title><content type='html'>Since installing xubuntu last autumn, it sometimes happened to me that my machine required several restarts to boot up. I have identified the problem but being linux n00b I was unable to find some solution to it for some time.&lt;br /&gt;&lt;br /&gt;The problem was following:&lt;br /&gt;I have two harddiscs in my computer - one is old IDE disc and the other is new SATA II disc. The Linux system is installed on the new disc which is usually identified as &lt;span style="font-weight: bold;"&gt;/dev/sda&lt;/span&gt; (where &lt;span style="font-weight: bold;"&gt;/dev/sda5&lt;/span&gt; is the root partition). The other disc is usually on &lt;span style="font-weight: bold;"&gt;/dev/sdb. &lt;/span&gt;What sometimes happened was that the devices where identified the other way round  - IDE being &lt;span style="font-weight: bold;"&gt;/dev/sda&lt;/span&gt; and SATA being &lt;span style="font-weight: bold;"&gt;/dev/sdb&lt;/span&gt;. After that the computer of course did not boot and ended in some sort of fallback console (sorry, I forgot the mode's name).&lt;br /&gt;&lt;br /&gt;Sadly, asking administrators at work did not help me (most probably because I was not able to describe the problem correctly - the only thing I found out was that the IDE disc should be /dev/&lt;span style="font-weight: bold;"&gt;h&lt;/span&gt;d something and not /dev/&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;d something - very helpful).&lt;br /&gt;&lt;br /&gt;Before some time I found what I thought will lead to solution, but I was hesitant to change the &lt;span style="font-weight: bold;"&gt;fstab&lt;/span&gt; because I didn't want to break it any more than it was :) What I needed was to identify the mount points by partition label instead of device (see &lt;a href="http://tldp.org/HOWTO/html_single/Partition/#labels"&gt;http://tldp.org/HOWTO/html_single/Partition/#labels&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Today, I finally got to fixing it (at least, it appears to be fixed now :)). The whole process involved:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;installing &lt;a href="http://gparted.sourceforge.net/"&gt;GParted&lt;/a&gt; which unfortunately did not help me with setting the partition labels and thus was not that useful (it provided me with nice overview of the partitions :))&lt;/li&gt;&lt;li&gt;setting label to ex&lt;span style="font-family:georgia;"&gt;t3 partitions using&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;tune2fs &lt;/span&gt;(e.g. &lt;b class="command"&gt;tune2fs&lt;/b&gt; -L &lt;tt class="filename"&gt;pubsw&lt;/tt&gt; &lt;tt class="filename"&gt;/dev/hdb1 sets label pubsw to par&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="filename"  style="font-family:georgia;"&gt;setting labels to NTFS partitions using &lt;span style="font-weight: bold;"&gt;ntfslabel &lt;/span&gt;(part of &lt;span style="font-weight: bold;"&gt;ntfsprogs&lt;/span&gt; package)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="filename"  style="font-family:georgia;"&gt;modifying &lt;span style="font-weight: bold;"&gt;fstab&lt;/span&gt; to use the labels (see &lt;a href="http://tldp.org/HOWTO/html_single/Partition/#labels"&gt;http://tldp.org/HOWTO/html_single/Partition/#labels&lt;/a&gt; for example fstab)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;To sum it up - if you have this problem with identifying devices during boot up, use labels to identify them in fstab. This seems like a good idea generally because as I understand it the device identification can change when switching hardware (imagine adding shiny new HDD to your computer and not being able to boot up as the result - ouch!)&lt;br /&gt;&lt;br /&gt;In the end the changes where really not that hard and if I knew a little about Linux I could've fixed this long time ago. But I'm a little smarter now and maybe after some time I will know Linux as good as Windows. Most probably after Windows 7 comes out - because last version I had is Windows XP, I will know very little about both Windows and Linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-8521571712094014571?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/8521571712094014571/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2009/05/device-identification-problem-during.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/8521571712094014571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/8521571712094014571'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2009/05/device-identification-problem-during.html' title='Device identification problem during boot'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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-101171174336787210.post-6710371163749244322</id><published>2009-04-20T19:45:00.004+02:00</published><updated>2009-04-20T19:52:06.385+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><title type='text'>Development update</title><content type='html'>I did find a few hours to quickly whip up the first prototype of Tomix (which is the codename of the game I'm working on) and it's ready for me to play with :) Fortunately pygame is really very easy to use for what I'm planning to do and I'm also slowly getting used to vim and Python. But I'm still not very good with either of them.&lt;br /&gt;&lt;br /&gt;Back to the prototype - now I can move the player around on the screen and push things (nothing groundbreaking yet, but what would you want for a few hours worth of programming).&lt;br /&gt;&lt;br /&gt;I plan now try to design one level to see if my idea of combining Atomix and Sokoban is at least partially viable. Afterward I'd like to start work on the prototype of level editor which will probably take me more time - I need to learn how to work with mouse in pygame and think about reasonable way to save the edited levels (not sure how to serialize things in Python). Hopefully I can find at least one free weekend to actually implement something (all the codes till now were written on train and that is unfortunately not the ideal development environment).&lt;br /&gt;&lt;br /&gt;Also, Mitsuki volunteered to help me with the graphics (so the size of development team has doubled :)). This means that if we eventually manage to have some game ready it will look a lot nicer than if I did it on my own. On the other hand, this also reduced number of readers of this blog that are not working on the game from 1 to 0. Maybe I should start looking for some interesting topics to write about :) (Well, I have a few, I just need to find time and mood to try something new)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-6710371163749244322?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/6710371163749244322/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2009/04/development-update.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/6710371163749244322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/6710371163749244322'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2009/04/development-update.html' title='Development update'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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-101171174336787210.post-658985693979886766</id><published>2009-04-08T20:52:00.005+02:00</published><updated>2009-04-08T21:00:08.632+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><title type='text'>Slowing down quickly</title><content type='html'>It seems that with the spring beginning, I will have less time than I originally expected. Nevertheless, I thought about the story of the puzzle game, which is planned to be roughly based on &lt;a href="http://en.wikipedia.org/wiki/Atomix_%28computer_game%29"&gt;Atomix&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Sokoban"&gt;Sokoban&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The story is not very important for this kind of game but it gave me important ideas on which to base the following puzzle. I'm not planning it to have some big impact like in &lt;a href="http://en.wikipedia.org/wiki/Puzzle_Quest"&gt;PuzzleQuest&lt;/a&gt; (how could I compete with that?) so I will be creating (almost) pure puzzle game.&lt;br /&gt;&lt;br /&gt;With the story boiling in my mind, I can now start looking for some free resources to use in the game (mainly music, sounds and probably some textures) and sketch the basic look &amp;amp; feel of the game.&lt;br /&gt;&lt;br /&gt;I will also start working on some early prototypes with &lt;a href="http://www.pygame.org/"&gt;pygame&lt;/a&gt; because I'm still not very good with it (or Python to be honest). I hope to get good insights to the techniques I should use in the final game.&lt;br /&gt;&lt;br /&gt;But, as I said, I expect the work to go kinda slowly for now, mainly because I won't have time during this and next weekend. On weekdays I tend to be a little too tired from regular work, but I'll try to do something when on train to work, so maybe I will move forward at least a little.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-658985693979886766?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/658985693979886766/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2009/04/slowing-down-quickly.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/658985693979886766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/658985693979886766'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2009/04/slowing-down-quickly.html' title='Slowing down quickly'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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-101171174336787210.post-2509991180342761952</id><published>2009-04-01T18:16:00.004+02:00</published><updated>2009-04-01T18:28:16.563+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><title type='text'></title><content type='html'>Well, it seems that this blog didn't go very well. Or, it went exactly as expected - abandoned after first post. But after a time I have decided to try to write something again, maybe this time it will be better than on the first try.&lt;br /&gt;&lt;br /&gt;I began to be quite excited of game programming after my &lt;a href="http://leia-chan.blogspot.com/"&gt;girlfriend&lt;/a&gt; and her team finished visual novel &lt;a href="http://rapidshare.com/files/216152913/heartbeat_install_2.exe.html"&gt;Heartbeat&lt;/a&gt; for a ren'ai visual novel competition (warning: unless you speak Czech, you probably won't enjoy this game very much). As a little bonus, I programmed very simple &lt;a href="http://en.wikipedia.org/wiki/Dance_Dance_Revolution"&gt;DDR&lt;/a&gt; simulator for the game in &lt;a href="http://www.pygame.org/news.html"&gt;pygame&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Because the team plans to create sequel to Heartbeat (where I should provide some simple puzzles), I decided to improve my Python and pygame programming skills and write some simple game on my own.&lt;br /&gt;&lt;br /&gt;I'm still not 100% sure but I will probably be going for some &lt;a href="http://thalion.exotica.org.uk/games/atomix/atomix.html"&gt;Atomix&lt;/a&gt; inspired puzzle game or simple implementation of &lt;a href="http://en.wikipedia.org/wiki/Alquerque"&gt;Alquerque&lt;/a&gt; with AI opponent. I hope to write something more after I decide and actually begin implementing something.&lt;br /&gt;&lt;br /&gt;So, if anyone is actually reading this, wish me luck and determination to keep at least one of these new projects :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-2509991180342761952?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/2509991180342761952/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2009/04/well-it-seems-that-this-blog-didnt-go.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/2509991180342761952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/2509991180342761952'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2009/04/well-it-seems-that-this-blog-didnt-go.html' title=''/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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-101171174336787210.post-5307060340597653801</id><published>2008-06-02T19:50:00.000+02:00</published><updated>2008-06-02T20:41:55.840+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Brave New World to Explore</title><content type='html'>Programming in C-like languages for some time (not very long compared to others, I admit), I have recently "discovered" new programming world that filled me with excitement and joy of programming again.&lt;br /&gt;&lt;br /&gt;For some time, I am trying to improve my programming skills by learning not only about new language features of mainstream languages but also by looking at other, not so common ones.&lt;br /&gt;&lt;br /&gt;Last year I was coping with Common Lisp and, after wading through &lt;a href="http://gigamonkeys.com/book/"&gt;Practical Common Lisp&lt;/a&gt;, I was able to even solve some minor problems on &lt;a href="http://projecteuler.net/"&gt;Project Euler&lt;/a&gt;. However, although the language is certainly interesting, I had to force myself to play with it (partially due to strange syntax, or lack of thereof and partially due to my search for usable free IDE). Even so, the experience gave me some new insights to the craft of programming and my trip to the lisp world was very interesting :)&lt;br /&gt;&lt;br /&gt;This year I was planning to venture even further to the world of functional programming and began with Haskell. But my choice of introductory material was an unhappy one. &lt;a href="http://halogen.note.amherst.edu/%7Ejdtang/scheme_in_48/tutorial/overview.html"&gt;Write yourself a Scheme in 48 hours&lt;/a&gt; is interesting book, but very hard without previous knowledge of Haskell and I didn't make it far. I played with Haskell without access to the Internet and it really didn't work. But I will certainly return to this book after I digest some easier Haskell book (maybe &lt;a href="http://www.haskell.org/tutorial/"&gt;A Gentle Introduction to Haskell&lt;/a&gt;).&lt;br /&gt;So, what is this new exciting world, you ask? Well, it's new just for me, but this new world is world of Python. The language is somewhat familiar and does not contain so foreign concepts as lisp or Haskell, IDE is just about quick install and you can begin to work. And the vast array of libraries! No wonder Python is being called to come "with batteries included." Great benefit to studying and embracing Python is also Mark Pilgrim's awesome book &lt;a href="http://www.diveintopython.org/"&gt;Dive Into Python&lt;/a&gt;, which is very readable and funny too.&lt;br /&gt;&lt;br /&gt;After learning languages with not so big practical use and less advanced "infrastructure", it's refreshing not to be forced to look for long hours how to solve trivialities.&lt;br /&gt;&lt;br /&gt;So, what's there to like? First and foremost, the readability. Python was designed with readability in mind and (from the little knowledge I have acquired so far) this design was quite successful. One thing that seems to add to this readability is the fact that whitespace is significant. Thus, the programmer is not only advised, but even forced to behave according to the standard.&lt;br /&gt;&lt;br /&gt;Being dynamically typed language, the pythonistas are required to maintain greater discipline then Java or C# programmers. Again a good thing - writing unit tests becomes a necessity and thus further increases the quality of the code. And dynamic typing seems to result in a lot less code than is necessary in C# (and company).&lt;br /&gt;&lt;br /&gt;One thing I am a little concerned about is the fact, that a lot of things are just a matter of convention (i.e. naming first argument of instance methods 'self', not-so-private private methods and a few others). But even in C# it's possible to change private variables of classes via reflection, so Python maybe just makes this easier. However, in both languages this practice is despicable :)&lt;br /&gt;All in all, Python once again ignited my desire to learn new things about programming.  Well, my queue of languages to learn is still quite big (and it seems that it will never reduce to zero). In the future I hope to dwell a little into Erlang or once again try my luck with Haskell.&lt;br /&gt;&lt;br /&gt;So, if you are yet living in Java/C# world only and want try to look a little further, I think Python is a safe bet - it's a language not that drastically different (or outright hostile) from the others you know ;)&lt;br /&gt;&lt;br /&gt;- Note: Virtually everything I am writing about Python is just my feeling I got from playing with it for a while and reading about it on the web. So beware, I am not speaking out of personal practical experience (that will hopefully come later ;)).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/101171174336787210-5307060340597653801?l=rudepeklo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudepeklo.blogspot.com/feeds/5307060340597653801/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://rudepeklo.blogspot.com/2008/06/brave-new-world-to-explore.html#comment-form' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/5307060340597653801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/101171174336787210/posts/default/5307060340597653801'/><link rel='alternate' type='text/html' href='http://rudepeklo.blogspot.com/2008/06/brave-new-world-to-explore.html' title='Brave New World to Explore'/><author><name>Aredhel</name><uri>http://www.blogger.com/profile/05396537191192081831</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>
