<?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-14427379</id><updated>2011-08-17T05:05:59.405+02:00</updated><category term='usa croatia press freedom'/><category term='linux'/><category term='xml'/><category term='virtualization'/><category term='cryptography'/><category term='emacs'/><category term='neural networks'/><category term='java'/><category term='ai'/><category term='security'/><category term='programming'/><category term='virtualization vmware amd intel'/><category term='hacking'/><category term='assembler'/><category term='algorithms'/><category term='climate'/><category term='c'/><category term='fsf'/><category term='turkmenistan'/><category term='gpl'/><category term='markov chain'/><category term='make'/><category term='pacifica'/><category term='xemacs'/><category term='pda'/><category term='amd64'/><category term='filesystem'/><category term='nokia'/><category term='ashgabat'/><category term='python'/><category term='intel'/><category term='ergonomy'/><category term='unix'/><category term='spam'/><category term='virus'/><category term='DRM'/><category term='microsoft'/><category term='makefile'/><category term='windows'/><category term='amd'/><category term='solaris'/><category term='c++'/><category term='artificial intelligence'/><category term='dtrace'/><category term='vista'/><title type='text'>The Core Dump of Thought</title><subtitle type='html'>This is the repository of my wild thoughts, general comments and ideas that I don't have the time to actually work on.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default?start-index=101&amp;max-results=100'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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>194</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-14427379.post-2231517193417225760</id><published>2010-05-01T12:17:00.002+02:00</published><updated>2010-05-01T12:43:35.064+02:00</updated><title type='text'>The end</title><content type='html'>I'm closing this blog until further, since I do not have much time to invest in writing coherent, meaningful posts.  Longer, in-depth texts will from now on appear on my homepage at &lt;a href="http://zvrba.net"&gt;zvrba.net&lt;/a&gt; Commenting is disabled since a lot of spam has lately appeared.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-2231517193417225760?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/2231517193417225760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=2231517193417225760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2231517193417225760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2231517193417225760'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2010/05/end.html' title='The end'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8760206150380493821</id><published>2009-11-29T18:53:00.003+01:00</published><updated>2009-11-29T18:54:24.823+01:00</updated><title type='text'>Finally!</title><content type='html'>On thursday, 2009-11-26, I have finally defended my PhD! I'll be starting on the new job on tuesday...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8760206150380493821?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8760206150380493821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8760206150380493821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8760206150380493821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8760206150380493821'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2009/11/finally.html' title='Finally!'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8233262605446524595</id><published>2009-11-12T11:59:00.002+01:00</published><updated>2009-11-12T12:10:56.197+01:00</updated><title type='text'>Unpredictability of execution times</title><content type='html'>I have written an article on intrinsic randomness of modern CPUs that you can fetch &lt;a href="http://zvrba.net/writings.html"&gt;here&lt;/a&gt;. Originally, I tried to publish it in &lt;a href="http://lwn.net"&gt;LWN&lt;/a&gt;, but since I haven't heard from their editors in over a week, I'm publishing it this way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8233262605446524595?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8233262605446524595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8233262605446524595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8233262605446524595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8233262605446524595'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2009/11/unpredictability-of-execution-times.html' title='Unpredictability of execution times'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-9132871270324458573</id><published>2009-10-17T14:55:00.002+02:00</published><updated>2009-10-17T15:10:50.866+02:00</updated><title type='text'>A tricky bug</title><content type='html'>Today I debugged a piece of code that looked like this:&lt;pre&gt;&lt;code&gt;printf("foobar\n");&lt;br /&gt;if(fork() == 0)&lt;br /&gt;  exit(0);&lt;/code&gt;&lt;/pre&gt;When the program is run from the terminal, the output is as expected: a single line containing "foobar". However, when the output is sent to a pipe or redirected to a file, &lt;em&gt;two&lt;/em&gt; lines appear in the output. (Actually, the problem was a bit more complicated: there were &lt;code&gt;n fork()&lt;/code&gt; calls and there were exactly &lt;code&gt;n&lt;/code&gt; additional copies of the output). After a bit of digging around and not finding any obvious fault, I asked about it on IRC.&lt;br /&gt;&lt;br /&gt;It turned out that &lt;code&gt;stdout&lt;/code&gt; is fully buffered when it is attached to a pipe or a file. What happened is that &lt;code&gt;fork()&lt;/code&gt; duplicated also the internal I/O buffers, which got flushed after the child process exited, thus producing extra output. I solved the problem by inserting a &lt;code&gt;fflush(NULL);&lt;/code&gt; statement before forking, which flushes buffers of all output streams.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-9132871270324458573?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/9132871270324458573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=9132871270324458573' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/9132871270324458573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/9132871270324458573'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2009/10/tricky-bug.html' title='A tricky bug'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-6727147937919536144</id><published>2009-09-03T22:05:00.002+02:00</published><updated>2009-09-03T22:10:28.778+02:00</updated><title type='text'>Foxit PDF reader -- no go</title><content type='html'>Today I tested the Foxit PDF reader, version 3.1, since many people recommend it as a faster and lighter-weight alternative to Acrobat Reader.  Well, its performance is disappointing: opening a 3MB PDF with Foxit takes 2-3 seconds before the first page is displayed. Opening the same PDF with Acrobat Reader (version 9.1) displays the document &lt;span style="font-style:italic;"&gt;with no delay at all&lt;/span&gt;.  I attempted to open few other PDFs with Foxit, with the same result: annoying pause before I could view the document, but with Acrobat Reader showing the document immediately.&lt;br /&gt;&lt;br /&gt;So long Foxit, Acrobat Reader is still my favorite PDF reader.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-6727147937919536144?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/6727147937919536144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=6727147937919536144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6727147937919536144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6727147937919536144'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2009/09/foxit-pdf-reader-no-go.html' title='Foxit PDF reader -- no go'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1705398306065123016</id><published>2009-08-19T20:21:00.004+02:00</published><updated>2009-08-19T20:33:09.843+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Unexpected behavior of std::bitset in visual studio 2008</title><content type='html'>I was writing code for generating prime numbers up to 10^9 (one billion) by &lt;a href="http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes"&gt;sieve of Erathosthenes&lt;/a&gt;.  So I created a class containing a member of type &lt;code&gt;std::bitset&lt;1000000000&gt;&lt;/code&gt; and created an instance of the sieve class within the &lt;code&gt;main&lt;/code&gt; function (i.e., allocated on the stack).&lt;br /&gt;&lt;br /&gt;When I ran the program, it crashed with stack overflow.  Since VC in debug mode implements stack overflow checking, the stack trace was not very helpful -- the program crashes within the &lt;code&gt;_chkstk&lt;/code&gt; function.  But in my simple test program, the only possible cause of stack overflow could be the instance of the sieve class which contains the bitset member.  After lowering the sive's limit to 1000, the program worked fine.  It was kinda surprising to learn that &lt;code&gt;std::bitset&lt;/code&gt;, unlike &lt;code&gt;std::vector&lt;/code&gt;, internally uses an array instead of dynamically allocated storage.  (I confirmed this conjecture also by reading the source code of in the corresponding header file.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1705398306065123016?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1705398306065123016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1705398306065123016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1705398306065123016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1705398306065123016'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2009/08/unexpected-behavior-of-stdbitset-in.html' title='Unexpected behavior of std::bitset in visual studio 2008'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-3595271500436934881</id><published>2009-08-02T09:46:00.002+02:00</published><updated>2009-08-02T09:51:18.094+02:00</updated><title type='text'>OODraw align nonsense...</title><content type='html'>I've been drawing some diagrams and I attempted to align (center vertically) several objects using one object as the reference object that should not be moved. But OODraw does not offer such feature; what it does instead is to align the selected objects using their bounding box as the reference, which is completely useless. A workaround is to "protect" the size and position of the reference object and then invoke the align command... which are few unnecessary extra clicks here and there. Stupid, stupid, stupid program!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-3595271500436934881?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/3595271500436934881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=3595271500436934881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3595271500436934881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3595271500436934881'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2009/08/oodraw-align-nonsense.html' title='OODraw align nonsense...'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8163468194602384367</id><published>2009-05-17T10:55:00.003+02:00</published><updated>2009-05-17T11:08:21.556+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Git's way to the thrashcan</title><content type='html'>I tried to use git-svn and git for a while, only to get fed up with it today and going back to just using subversion. The thing that pissed me off is that I did &lt;code&gt;git rm&lt;/code&gt; on wrong files. With subversion, if you do &lt;code&gt;svn revert&lt;/code&gt; before commit, the old copy of the file gets restored (and, of course, removal will not be scheduled for commit).&lt;br /&gt;&lt;br /&gt;With git, &lt;code&gt;git checkout&lt;/code&gt; should, &lt;em&gt;in theory&lt;/em&gt;, do the same. Googling about the problem, I found a tip that I should use &lt;code&gt;git reset&lt;/code&gt;. However, neither did that restore the accidentally deleted files. Finaly, I experimented a bit and found out that &lt;code&gt;git reset --hard&lt;/code&gt; does the trick. Before experimenting, I did, of course, make a backup of the whole repository to another place.&lt;br /&gt;&lt;br /&gt;Now, I'm going back to subversion, which is much more intuitive to use. My work is too valuable to be stored in version control system with which I must &lt;em&gt;experiment&lt;/em&gt; to achieve even the simplest of operatons. Yes, I found the &lt;code&gt;--hard&lt;/code&gt; option in the documentation, but its explanation was so opaque that I wasn't sure whether it would achieve what I wanted.&lt;br /&gt;&lt;br /&gt;Next time I'll be wanting to use a DVCS, I'll use Mercurial, as before.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8163468194602384367?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8163468194602384367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8163468194602384367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8163468194602384367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8163468194602384367'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2009/05/gits-way-to-thrashcan.html' title='Git&apos;s way to the thrashcan'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-3873065977728194044</id><published>2009-04-13T20:23:00.002+02:00</published><updated>2009-04-13T21:00:03.035+02:00</updated><title type='text'>The meaningless school...</title><content type='html'>&lt;p&gt;Now, midst in the financial crisis, I've gotten interested in how the economy works in general. Like, the stock market, how can perpetual economic growth be sustainable (in the long run it's exponential), etc. I would also like to know about things that are relevant for &lt;span style="font-style:italic;"&gt;real life&lt;/span&gt;, like loan calculations, nominal and effective interest rates, forms of long-term savings, etc. And I know zilch about these things.&lt;/p&gt;&lt;p&gt;These things should be a part of basic high-school education. But no, we've been (and today's pupils are still being) overloaded with a bunch of meaningless historical and geographical facts that can be looked up in any online or offline encyclopedia. Among other meaningless stuff that is mostly irrelevant for the practical side of living in the modern world.&lt;/p&gt;&lt;p&gt;Currently I'm busy with writing my PhD, but first priorities on my reading list (after having finished the PhD) are introductory books in macroeconomy, capitalism, and game theory.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-3873065977728194044?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/3873065977728194044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=3873065977728194044' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3873065977728194044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3873065977728194044'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2009/04/meaningless-school.html' title='The meaningless school...'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-4383237128173511190</id><published>2009-01-04T08:42:00.002+01:00</published><updated>2009-01-04T08:57:56.072+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Win32 threading API anomaly</title><content type='html'>I like to split my code into a series of simple helper functions. When developing for multithreaded environment, some of these functions have to be called while a certain mutex is held by the current thread.  In POSIX, it's easy to test for a weaker condition, namely that the mutex is locked:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;assert(pthread_mutex_trylock(&amp;amp;mtx) == EBUSY)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;There is no way to check that the &lt;em&gt;current&lt;/em&gt; thread holds the mutex.  However, if another thread has locked the mutex, one may hope that &lt;code&gt;pthread_mutex_unlock&lt;/code&gt; will return &lt;code&gt;EPERM&lt;/code&gt; error code (I don't think that the pthread library is obliged to check for every possible error condition).&lt;br /&gt;&lt;br /&gt;Take Win32, and the &lt;code&gt;TryEnterCriticalSection&lt;/code&gt; function which returns, according to the documentation: "If the critical section is successfully entered or the current thread already owns the critical section, the return value is nonzero. If another thread already owns the critical section, the return value is zero."&lt;br /&gt;&lt;br /&gt;Since I actually expect that the current thread already owns the mutex, the "or" clause in the first sentence makes it &lt;b&gt;impossible&lt;/b&gt; to implement even the (weaker) sanity check which is possible under POSIX. Kinda shame.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-4383237128173511190?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/4383237128173511190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=4383237128173511190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4383237128173511190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4383237128173511190'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2009/01/win32-threading-api-anomaly.html' title='Win32 threading API anomaly'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8427730315585852076</id><published>2008-12-26T09:00:00.002+01:00</published><updated>2008-12-26T09:11:41.611+01:00</updated><title type='text'>Visual Studio 2008, take 2</title><content type='html'>Recently I've been extensively working with multithreading in C++, with pthread API, so the code is not portable to Windows. Since I want to get some experience with Windows programming and Visual studio (my holiday project :)), I decided to try out Boost.Thread, which is a portable multi-threading library.&lt;br /&gt;&lt;br /&gt;So I downloaded Boost 1.37, the bjam executable for NT, read through the boost getting started manual, compiled the necessary libraries in 32-bit and 64-bit mode as well as a small test application. The process has been surprisingly painless -- it took me about one hour from downloading bjam to having a working test application that comes along with Boost.Thread.&lt;br /&gt;&lt;br /&gt;Another reason for wanting to have a portable application is that it is painful to develop over a remote connection to unix server. A compromise solution, which I've been practicing lately, is setting up shared folders with Virtualbox, editing the code with XEmacs, and compiling/testing in the virtual machine. This kinda works, but does not make the code portable :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8427730315585852076?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8427730315585852076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8427730315585852076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8427730315585852076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8427730315585852076'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/12/visual-studio-2008-take-2.html' title='Visual Studio 2008, take 2'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8853965703549201735</id><published>2008-12-05T21:29:00.002+01:00</published><updated>2008-12-05T21:31:36.805+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>New CSPIM release</title><content type='html'>I have released v1.0 of my &lt;a href="http://zvrba.net/software/cspim.html"&gt;CSPIM MIPS simulator&lt;/a&gt;.  This release includes some previously outstanding issues, and the simulator can now &lt;span style="font-style:italic;"&gt;simulate itself.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8853965703549201735?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8853965703549201735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8853965703549201735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8853965703549201735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8853965703549201735'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/12/new-cspim-release.html' title='New CSPIM release'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-6830775217375276626</id><published>2008-11-29T19:33:00.002+01:00</published><updated>2008-11-29T19:39:51.759+01:00</updated><title type='text'>CMake and assembly sources</title><content type='html'>I've been trying to figure out how to "nicely" integrate building assembler sources with CMake. After some digging around, I found a nice recipe recently posted to CMake mailing list:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;set_property(SOURCE cputorture.s PROPERTY LANGUAGE C)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This works because the C compiler, at least on UNIX, recognizes &lt;code&gt;.s&lt;/code&gt; as assembler source extension and invokes the proper assembler command.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-6830775217375276626?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/6830775217375276626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=6830775217375276626' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6830775217375276626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6830775217375276626'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/11/cmake-and-assembly-sources.html' title='CMake and assembly sources'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-5980055849738720574</id><published>2008-11-26T20:04:00.003+01:00</published><updated>2008-11-26T20:08:29.863+01:00</updated><title type='text'>NetBSD 4 dissapointment</title><content type='html'>Well, I installed 32-bit NetBSD 4.0.1 in virtualbox. Then I attempted to install subversion through the pkgsrc system, and.. became thoroughly dissapointed. It pulled not only subversion, but also full apache (although it needs only the apache portable runtime, APR), perl 5.8, ruby 1.8, and who knows what else. I got tired of ruby compiling its "RI", whatever that is, and just deleted the VM. I think I'm going for some desktop ubuntu install now. Or maybe Fedora 10.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-5980055849738720574?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/5980055849738720574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=5980055849738720574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/5980055849738720574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/5980055849738720574'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/11/netbsd-4-dissapointment.html' title='NetBSD 4 dissapointment'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-5236821895564069219</id><published>2008-11-12T22:31:00.006+01:00</published><updated>2008-11-12T22:35:42.512+01:00</updated><title type='text'>Acrobat Reader 9 annoying accessibility feature</title><content type='html'>The annoying feature being accessibility which turns itself on, and &lt;span style="font-weight:bold;"&gt;there's no option to turn it off&lt;/span&gt;.  Sure, there are a bunch of accessibility preferences, but no "disable" option.  So every time I opened a document, I got an annoying dialog that the "document is being prepared...".&lt;br /&gt;&lt;br /&gt;Solution: find "Accessibility.api" and "ReadOutLoud.api" files in Acrobat's installation directory (under plugins) and rename them to something else. I have created directory named "disabled" and moved the files there. Works like a charm.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-5236821895564069219?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/5236821895564069219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=5236821895564069219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/5236821895564069219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/5236821895564069219'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/11/acrobat-reader-9-annoying-accessibility.html' title='Acrobat Reader 9 annoying accessibility feature'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-4719682858098574978</id><published>2008-11-08T21:44:00.003+01:00</published><updated>2008-11-08T22:08:41.839+01:00</updated><title type='text'>R</title><content type='html'>Recently, I had to process and plot a significant amount of data. Previously, I used to use gnuplot for that, but I've discovered two shortcomings: 1) gnuplot has limited data manipulation facilities, so I had to do data processing with perl scripts, 2) it has very arcane syntax and it's rather hard to make it do what you want, especially when you have slightly complex requirements (eg. bar charts of several nested data sets).&lt;br /&gt;&lt;br /&gt;I have resisted learning R for a long time, because it also uses a rather arcane language with many complex and rather badly documented data structures.  However, a week ago, I remembered my last experience with gnuplot, and I gave R a try.  I'm glad I did even though it took me some time to get used to its data manipulation capabilities since the learning curve is rather steep.  However, once you get used to it, it's so much easier and faster to manipulate data than with custom-made scripts, and much simpler to produce well-looking plots.  Visit its &lt;a href="http://www.r-project.org"&gt;homepage&lt;/a&gt; and take a look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-4719682858098574978?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/4719682858098574978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=4719682858098574978' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4719682858098574978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4719682858098574978'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/11/r.html' title='R'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7526908479799893926</id><published>2008-10-06T19:51:00.005+02:00</published><updated>2008-10-06T20:38:51.004+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Windows Vista and Visual Studio</title><content type='html'>I've bought a new laptop, got 64-bit Vista business with it, so I said - heck, let's give it a try. After one month of using Vista, I don't miss linux desktop at all. I have power management that works all of the time (and that locks the screen after wakeup, without any special configuration!), Flash that does not crash at least once a day (crash on linux manifested most often in the flash plugin eating 100% of CPU), sound system and mixing which works out of the box (no need for mysterious sound daemons that will enable multiple sound applications running simultaneously), plus availability of software for gadgets (garmin gps, nokia phone). I have even found a nice and free virtual desktop manager (VirtuaWin). One month after using Vista.. I won't be installing linux on the laptop anytime soon :-)&lt;br /&gt;&lt;br /&gt;You have probably heard that User Access Control (UAC) is PITA, and there are a bunch of cookbooks on the net instructing on how to disable it. Coming from UNIX background, I find it rather natural that you have to type in admin password before performing system-critical tasks. Suggesting to people that they turn off UAC is rather irresponsible, and I have not done it. I like being warned when some operation requires elevated privileges. Oh, and I have turned off the sidebar - gadgets there are mostly useless and they just increase the startup time (which is, I must say, rather decent).&lt;br /&gt;&lt;br /&gt;I have found replacement for all of the tools that I used under linux, except one -- development tools. And now, my comparison standard is not linux, but Solaris, with Sun's native developmet tools, CMake and dbx. (BTW, Solaris dbx just rocks! gdb is a poor match for it.) I have installed Visual Studio 8 Professional (I have free license through MSDNAA), and it has several shortcomings in comparison with Solaris tools.&lt;br /&gt;&lt;br /&gt;First, I've heard many windows developers say that VS debugger is one of the best, but I find it rather mediocre compared to dbx. VS debugger does not recognize C++ overloaded iterators (so you can't persuade it to show you &lt;code&gt;*it&lt;/code&gt; where &lt;code&gt;it&lt;/code&gt; is some C++ iterator class) and it is a pain to display deeply nested data structure (just &lt;code&gt;print -r&lt;/code&gt; in dbx). VS has even its own embedded command-line interface, but nothing indicates that these features are available through it. Sure, VS debugger is nice for single-stepping through the code, but this is not the way I usually debug the code. (What usually happens in my debugging session is that some assertion/check triggers a crash, I inspect the core dump, put a breakpoint near the offending place, and quickly &lt;code&gt;print&lt;/code&gt; few variable values.) On the upside, the VS debugger understands STL containers and can display them in a nice form. But I'd go for dbx any day, only if it were available for Windows.&lt;br /&gt;&lt;br /&gt;Oh yes, changing command-line arguments through IDE for debugged programs is PITA :-) If I run the program from the shell and it crashes, it takes several seconds to drop into the debugger, which is kinda annoying.&lt;br /&gt;&lt;br /&gt;Another complaint is that VS does not seem to come with a decent profiler such as gprof on Solaris. Most people recommend to use Intel VTune, which costs money. Sun has recently released (free!) SPOT tool which produces a nice report of hot-spots over several runs of your program, in the form of cross-linked HTML pages and graphs.&lt;br /&gt;&lt;br /&gt;Then there's DTrace which is currently unique to Solaris and some BSD variants (OS X, FreeBSD?).&lt;br /&gt;&lt;br /&gt;Lastly, project configuration management is easier with CMake. I have not yet figured out how I can persuade VS to inherit project properties from the master "solution" properties. Given that projects have parent projects, I should probably play with a deeper project hierarchy. (But why can't I set master settings in the "solution"?! Bleh.)&lt;br /&gt;&lt;br /&gt;IntelliSense is nice, but.. it doesn't work all of the time (I see rather often a message in the status bar that IntelliSense couldn't find a completion.. ). Though, when it &lt;em&gt;does&lt;/em&gt; work, it sometimes saves me a lookup of member name.&lt;br /&gt;&lt;br /&gt;In conclusion - Vista is a rather nice environment for everyday work and it is very stable. However, Microsoft's C and C++ development tools are no match to Solaris's tools, at least when it comes to lower-level stuff. (Maybe not so surprising, UNIX is traditionally C and C++ oriented environment, while MS is moving towards .NET). I'm definitely somewhat less efficient in development with VS (though not drastically); I don't know (yet) whether this is because I haven't learned all the features, or because Solaris tools simply &lt;strong&gt;are&lt;/strong&gt; superior and have no match in functionality in VS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7526908479799893926?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7526908479799893926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7526908479799893926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7526908479799893926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7526908479799893926'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/10/windows-vista-and-visual-studio.html' title='Windows Vista and Visual Studio'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1059932916915827987</id><published>2008-09-21T19:53:00.002+02:00</published><updated>2008-09-21T19:55:41.930+02:00</updated><title type='text'>New site</title><content type='html'>You might want to &lt;strong&gt;literally&lt;/strong&gt; waste some time on my new website: &lt;a href="http://riddleschannel.org/fun"&gt;riddleschannel.org&lt;/a&gt;. The purpose of this page is to conduct certain experiments. If you want to help, just spread around the link!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1059932916915827987?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1059932916915827987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1059932916915827987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1059932916915827987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1059932916915827987'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/09/new-site.html' title='New site'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7908143553709947060</id><published>2008-08-17T15:55:00.002+02:00</published><updated>2008-08-17T16:00:11.444+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>New code release: ext2frag</title><content type='html'>&lt;p&gt;A master student of mine has developed a FUSE filesystem as a part of his master thesis. He needed to compare several fragmentation metrics of his own FS with that of EXT2. However, no decent programs for calculating EXT2 fragmentation statistics are available, so I set out to code one since the student was really short on time. You can get the program &lt;a href="http://zvrba.net/software/ext2frag.html"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7908143553709947060?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7908143553709947060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7908143553709947060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7908143553709947060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7908143553709947060'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/08/new-code-release-ext2frag.html' title='New code release: ext2frag'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1355683317713829905</id><published>2008-07-19T11:09:00.003+02:00</published><updated>2008-07-19T11:22:20.191+02:00</updated><title type='text'>Free society ; some tips</title><content type='html'>&lt;p&gt;I've recently watched Lessig's presentation on &lt;a href="http://randomfoo.net/oscon/2002/lessig/"&gt;free culture.&lt;/a&gt;  It has been recommended to me as an example of interesting use of slides, but it is also an excellent lecture on how copyright stifles innovation and development.  The following is the basis for the whole lecture:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Creativity and innovation always builds on the past.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The past always tries to control the creativity that builds on it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Free societies enable the future by limiting the past.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ours is less and less a free society.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;There's another noteworthy quote (by JC Watts, a US congressman/senator?): &lt;strong&gt;"If you're explaining, you're losing."&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Regarding tips: perl's CPAN shell is an excellent tool to install packages and their dependencies. However, it uses active FTP by default  which is more and more dysfunctional because of firewalls.  Exporting the environment variable &lt;span style="font-family:courier new;"&gt;FTP_PASSIVE=1 &lt;/span&gt;&lt;span &gt;before running will make it use passive FTP.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1355683317713829905?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1355683317713829905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1355683317713829905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1355683317713829905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1355683317713829905'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/07/free-society-some-tips.html' title='Free society ; some tips'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-9071774746808325656</id><published>2008-06-02T18:19:00.002+02:00</published><updated>2008-06-02T18:26:57.473+02:00</updated><title type='text'>Few rants...</title><content type='html'>First: I'm switching from emacs back to vim.  It's nice to have everything integrated into emacs, it's calculator is especially good (reminds of HP48), but I've found emacs nearly impossible to use for C++ coding.  Namely, its internal parser gets often confused, and it won't let you type a simple colon (':').  Usually closing the file and opening it again fixed the problem, but not few days ago.  Emacs simply refused to allow me to type in ':' (as in 'public:').  That was too much for me, and I switched back to vim (I've anyway used vi emulation in emacs; i find concise vi-keystrokes much more accessible than emacs' endless strings of characters in combination with alt/meta..)&lt;br /&gt;&lt;br /&gt;Second: ubuntu sucks! I have it installed on my desktop machine on work, because that's "what everyone else uses" and only ubuntu CD's are available for installation.  Today I ran the latest upgrade of 8.04, rebooted the machine and I was greeted with half-functional GNOME.  I.e. the gnome-panel was missing and had I not had some folders on desktop that allowed me to get access to the file manager and eventually run an xterm, it would be completely unusable (i.e. none of the keyboard short-cuts worked either).  Solution?  I have no idea -- I installed xfce4 to get a functional desktop.  The good thing is that xfce4 does not display the annoying update notification every now and then :-D  Anyway, ubuntu owes me compensation for 1.5 hours of lost work time.  Talk about "no-cost" software :-P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-9071774746808325656?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/9071774746808325656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=9071774746808325656' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/9071774746808325656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/9071774746808325656'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/06/few-rants.html' title='Few rants...'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8526705910921880551</id><published>2008-05-14T18:44:00.003+02:00</published><updated>2008-05-14T18:58:32.204+02:00</updated><title type='text'>To hell with climate change, time to speak up for the fish!</title><content type='html'>Most media are writing about the polar ice melting, polar bears being exterminated.. like anyone's going to notice that they're gone.  At the same time, something much worse is happening, and it should deserve at least as much media coverage as climate change: unsustainable overfishing in the seas.  &lt;a href="http://www.guardian.co.uk/environment/2008/may/11/fishing.food/print"&gt;This article&lt;/a&gt; is a very awakening and scary read.  Spread the word and make politicians do something!  I've never seen a polar bear, nor do I have a particular desier to see it, but i like very much to eat fish.&lt;br /&gt;&lt;br /&gt;[PS. I think that disappearance of any species is regrettable, but I certainly prioritize a food source over some exotic animal.  It's regrettable that media don't have same opinion.]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8526705910921880551?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8526705910921880551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8526705910921880551' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8526705910921880551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8526705910921880551'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/05/to-hell-with-climate-change-time-to.html' title='To hell with climate change, time to speak up for the fish!'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8879825877428186020</id><published>2008-05-11T19:14:00.002+02:00</published><updated>2008-05-11T19:19:28.222+02:00</updated><title type='text'>Sudoku solvers and cairo graphics</title><content type='html'>I have decided to play a bit with constraint programming, so I'm rewriting my logic game solvers as constraint programs.  For that I'm using the &lt;a href="http://minion.sourceforge.net/"&gt;minion&lt;/a&gt; constraint solver to which I interface through python; I wrote a simple parser of minion's textual output.  I wanted some pretty-printing, and doing it in purely textual mode has shown to be rather tedious to code.  So I turned to the excellent &lt;a href="http://cairographics.org/"&gt;cairo&lt;/a&gt; graphics library for drawing solutions.  The library is surprisingly simple to use, and also comes with python bindings.  Now I'm working on another puzzle, and after cleaning up the code a bit, I'll upload the new package.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8879825877428186020?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8879825877428186020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8879825877428186020' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8879825877428186020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8879825877428186020'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/05/sudoku-solvers-and-cairo-graphics.html' title='Sudoku solvers and cairo graphics'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-757490158159558736</id><published>2008-04-13T18:32:00.004+02:00</published><updated>2008-04-13T18:58:24.858+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hacking'/><title type='text'>Dent game: an example of nonexistant security</title><content type='html'>In Norway, there's a commercial campaign (ending 15.4.) for Dent candies; you're invited to play a game (&lt;a href="http://www.dent.no/"&gt;www.dent.no&lt;/a&gt;), and the best scores win some prizes (the coolest prize is a free cinema-ticket for two valid for 1 year).  Since the prizes are attractive, I was wondering what kind of security they implemented.  Surprisingly (or not; Norwegian companies have a bad track record with security issues), the answer is none!&lt;br /&gt;&lt;br /&gt;Before submitting my result, together with my data (email address and phone number), I fired up wireshark and found out the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;They first connect to &lt;span style="font-family:courier new;"&gt;stats.indexstats.com&lt;/span&gt; to report some basic statistics (a cookie with base-64 url, among other stuff, is sent and an empty GIF is returned).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Then a simple POST request is sent with the score and entered data about the user. Everything through ordinary HTTP, and everything in cleartext!  Some binary data is returned, but I haven't bothered to figure out what it is.&lt;/li&gt;&lt;/ul&gt; So it's trivial to record the traffic into a file, change the score, and resubmit the better score by e.g. netcat. (No, I haven't done it myself -- the hardest part seems to be guessing high enough to win, but still plausible score.)&lt;br /&gt;&lt;br /&gt;What could have been done differently? It's impossible to secure an application 100% when the user has full control over the computer, but I think that just AES-encrypting the sent data with a key preshared between the client and the server would have risen the hacking bar significantly. You'd have to download the raw flash file, try to find the encryption key inside it, guess the encryption algorithm, etc.  If the encryption key is not stored contiguosly in the file, then you'd also have to reverse-engineer the flash code to see what's going on.&lt;br /&gt;&lt;br /&gt;In any case, very badly done web application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-757490158159558736?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/757490158159558736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=757490158159558736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/757490158159558736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/757490158159558736'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/04/dent-game-example-of-nonexistant.html' title='Dent game: an example of nonexistant security'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-761309860503386987</id><published>2008-04-02T18:27:00.002+02:00</published><updated>2008-04-02T18:29:45.687+02:00</updated><title type='text'>Inkscape</title><content type='html'>I've been looking for a long time for some visio-like vector drawing program for Linux.  Well, I've recently tried Inkscape, and, while still not a Visio replacement, it does its job pretty well even for technical diagrams.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-761309860503386987?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/761309860503386987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=761309860503386987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/761309860503386987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/761309860503386987'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/04/inkscape.html' title='Inkscape'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-3809322858118916719</id><published>2008-03-22T16:33:00.004+01:00</published><updated>2008-03-22T16:40:45.970+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>MIPS CPU simulator, CMake</title><content type='html'>Today I've published the first version of a MIPS CPU simulator; you can read more about it &lt;a href="http://zvrba.net/software/cspim.html"&gt;here&lt;/a&gt;.  Even though the version number is 0.9, the program is not in any case beta: it is quite stable, CPU torture tests pass in 32-bit and 64-bit environments, and there seems to be no open security holes, though error "reporting" is sometimes unfriendly: the simulator shall call abort() if the simulated program tries to access memory outside of its allocated range.. but I think that's still way better than doing random stuff to random memory.  Work on better error handling is the top priority right now.&lt;br /&gt;&lt;br /&gt;I'm also using this opportunity to learn about the &lt;a href="http://www.cmake.org"&gt;CMake&lt;/a&gt; build system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-3809322858118916719?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/3809322858118916719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=3809322858118916719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3809322858118916719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3809322858118916719'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/03/mips-cpu-simulator.html' title='MIPS CPU simulator, CMake'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7346173570355631012</id><published>2008-03-01T20:21:00.003+01:00</published><updated>2008-03-01T20:22:40.772+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>IT Underground 2008</title><content type='html'>I have again attended the &lt;a href="http://www.itunderground.org"&gt;IT Underground&lt;/a&gt; conference in Prague, where I gave a short lecture about PKI in practice.  Soon I shall also upload the slides from the talk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7346173570355631012?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7346173570355631012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7346173570355631012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7346173570355631012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7346173570355631012'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/03/it-underground-2008.html' title='IT Underground 2008'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-4750395325256118844</id><published>2008-02-23T08:34:00.002+01:00</published><updated>2008-02-23T08:39:02.862+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>MIPS CPU</title><content type='html'>Things have been pretty hectic here, so I haven't had much time to post anything.  Recently, I've begun a new personal project: writing a simulator for the MIPS I CPU arhcitecture.  I chose this particular CPU because it's the simplest architecture for which gcc can generate code. There are many other MIPS CPU simulators out there, but all of them do more than I need, so I decided to write my own as simple as possible. The ELF loader and symbol lookup are finished, and now I'm working on developing test vectors for the simulator (a very boring part).&lt;br /&gt;&lt;br /&gt;As for &lt;em&gt;why&lt;/em&gt; I'm doing this - the answer will hopefully be clear soon :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-4750395325256118844?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/4750395325256118844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=4750395325256118844' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4750395325256118844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4750395325256118844'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/02/mips-cpu.html' title='MIPS CPU'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-516399653994946483</id><published>2008-01-27T08:07:00.000+01:00</published><updated>2008-01-27T08:10:16.658+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Java leaks memory</title><content type='html'>Now, this is something to laugh at: when first launching Java, Sun boasted about garbage collector and that programmers will never again have to cope with memory-management problems.  Fast-forward to 2008. to read Sun's &lt;a href="http://www.reviewservers.com/index.php?page/jvm"&gt;presentation&lt;/a&gt; on avoiding memory leaks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-516399653994946483?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/516399653994946483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=516399653994946483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/516399653994946483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/516399653994946483'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/01/java-leaks-memory.html' title='Java leaks memory'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7684799237134028632</id><published>2008-01-10T15:08:00.000+01:00</published><updated>2008-01-10T15:14:31.583+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Some regexps</title><content type='html'>I have started to develop some &lt;a href="http://crm114.sf.net/"&gt;CRM114&lt;/a&gt; scripts to classify Usenet articles. Internally, it uses the TRE regexp engine and I needed a regexp splits article into headers and body; the separation happens at the first empty line.  So here's the regexp; it seems to work :)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/((?:(?n:.+):*:_nl:)+):*:_nl:(.+)/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Some peculiarities: the &lt;code&gt;:*:_nl:&lt;/code&gt; is CRM114 literal for newline, and the &lt;code&gt;?n:&lt;/code&gt; is a TRE flag to tell it that dot (&lt;code&gt;.&lt;/code&gt;) should &lt;b&gt;not&lt;/b&gt; match the newline character (by default it does, and this makes TRE different from PCRE regexp). The headers will end up in the 1st matching group, and the article body in the 2nd.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7684799237134028632?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7684799237134028632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7684799237134028632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7684799237134028632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7684799237134028632'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2008/01/some-regexps.html' title='Some regexps'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8459198719318202739</id><published>2007-12-19T17:59:00.000+01:00</published><updated>2007-12-19T18:15:27.018+01:00</updated><title type='text'>OpenSUSE install and some luck</title><content type='html'>Last weekend I  installed OpenSUSE 10.3. It was a bumpy installation, since I was without any CD I could burn. So I downloaded the ISO image to FAT32 partition, two additional files (kernel + initrd) and started install. I added another (non-free software) CD image to the list of repositories, but the install had failed afted being done with the 1st CD (Because the CD image was on the partition that was about to be added to /etc/fstab, with no formatting or anything destructive. But that was enough to confuse the installer and make it exit with an error.). So I tried to boot into the installed OS and.. the boot failed. So I was only left with a GRUB command line (because the menu.lst file had not been created) and a WinXP partition which I had to figure out how to boot from.&lt;br /&gt;&lt;br /&gt;GRUB built-in help is the &lt;strong&gt;most useless help ever.&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;I  needed the chainloader command, ok, but that command wants "blocklist or file name". However, the blocklist syntax is nowhere to be found in the GRUB help. I was just about to go to work and burn the installation CD, when I saw another command (blocklist) which, given filename, prints out a list of blocks. I knew the kernel image filename on the root partition, so I finally got to see how the blocklist syntax is supposed to look like (ie. 0+1 = 1 sector starting from 0th). That enabled me to boot into XP, move stuff to unused partition and successfully install SUSE.&lt;br /&gt;&lt;br /&gt;HOWEVER... I had a critical password stored on the root partition which got mkfs'd and overwritten several times.. and it was filled up to 60%, like never before. I thought that I had lost the password, but I tried my luck and used dd to make an image of the root partition into a file. Then I used the strings program to dump all printable strings in the partition image and, unbelievably enough, the password was there, not overwritten by the new data! WOW :) I had more luck than brains this time :)&lt;br /&gt;&lt;br /&gt;As for SUSE, I'm running KDE now, and.. it's OK. Livable. Not bad. Portage broke down on my old gentoo installation and I finally got sick of it. Time to spend as little time managing my computer as possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8459198719318202739?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8459198719318202739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8459198719318202739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8459198719318202739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8459198719318202739'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/12/opensuse-install-and-some-luck.html' title='OpenSUSE install and some luck'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1476235378074289610</id><published>2007-12-03T21:49:00.000+01:00</published><updated>2007-12-03T22:55:39.754+01:00</updated><title type='text'>Weekend in northern Sweden</title><content type='html'>I took a prolonged weekend (fri-mon; 30.11-03.12. 2007) in Northern Sweden; more accurately near the town of &lt;a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;time=&amp;date=&amp;ttype=&amp;q=pite%C3%A5&amp;sll=37.0625,-95.677068&amp;sspn=61.540818,111.621094&amp;ie=UTF8&amp;ll=66.925755,25.477295&amp;spn=3.87855,13.952637&amp;z=7&amp;om=1"&gt;Piteå&lt;/a&gt;, visiting a friend. Actually, his house is on a nearby island that has only recently been connected to the mainlands with a road. The trip went (by plane) Oslo -&gt; Stockholm -&gt; Luleå (Kallax airbase) where he picked me up with a car. During those few days, we also visited some other places: Luleå, Kalix, and Haparanda/Tornio which lies on the border with Finland. (Haparanda is Swedish name, and Tornio is Finnish name.) You can see all of those places on the map. He bought some spirit drinks in Finland (the shop is named "Alko"), and I bought a bunch of Finnish salmiak/lakris candies. It was interesting to see people in Alko pushing FULL shopping carts of various drinks. Apparently, Haparanda has just recently gotten an IKEA shop, which has boosted the local economy. It is the nearest IKEA shop for that part of Sweden and Finland. Otherwise, it's been a very relaxing and interesting weekend, and they even got me to play bowling; the bowling hall was very nice for such a small town.&lt;br /&gt;&lt;br /&gt;I was amazed by Swedish roads. Even though we were kinda in the middle of nowhere, the roads were in good shape (no holes or such) and very well cleansed - there was some snow/ice on them, but despite winter conditions it was possible to drive at speeds over 110 km/h (though with "piggdekk" - spiked tires). Norwegian roads are really bad compared to Swedish roads. (And I mean bad - even in Oslo you can find roads with holes at size of a football-ball in diameter.)&lt;br /&gt;&lt;br /&gt;On the way back, I tried to take two cans of &lt;a href="http://en.wikipedia.org/wiki/Surströmming"&gt;surstromming&lt;/a&gt;, but it was unfortunately taken by the security officer in Luleå. (BTW, he was really nice - told me that I should have checked that in, asked me whether I was coming back soon [he wanted to store it..]. It's rare to meet a nice security guy.. I guess that small towns have their advantages too :-)) BTW, there's also a technical university at Luleå.&lt;br /&gt;&lt;br /&gt;Being far up north, near polar circle, I wanted to experience the "perpetual darkness".  Well, it's not perpetual, but pretty close.  So I have some pictures too. This picture is some kind of meeting place for young people in Piteå (the two arcs); the most interesting thing is that the picture has been taken ca. 15h.&lt;br /&gt;&lt;img src="http://bp2.blogger.com/_tcBZgxHDLHo/R1R2-C_ErkI/AAAAAAAAAAM/UwbfavaHafI/s320/20071202160.jpg.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5139863883061964354" /&gt;&lt;br /&gt;This picture has been taken at the brightest time of day (though, cloudy one).  It is a road that approaches the friend's house. It's a representative picture for most of the roads that we've been driving on.&lt;br /&gt;&lt;img src="http://bp3.blogger.com/_tcBZgxHDLHo/R1R3fS_ErlI/AAAAAAAAAAU/SpM6VdQbZys/s320/20071201154.jpg.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5139864454292614738" /&gt;&lt;br /&gt;The following picture shows the frozen sea. It's impressive. Later during the winter, the ice gets so thick that the easiest way to the town is to use a snow scooter and just cross the water.&lt;br /&gt;&lt;img src="http://bp3.blogger.com/_tcBZgxHDLHo/R1R4dS_ErnI/AAAAAAAAAAk/01kfec_2CzM/s320/20071201155.jpg.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5139865519444504178" /&gt;&lt;br /&gt;This picture shows the entrance to the IKEA in Haparanda. I have taken it because the leftmost flag is that of the &lt;a href="http://en.wikipedia.org/wiki/Sami_people"&gt;Sami&lt;/a&gt; people.&lt;br /&gt;&lt;img src="http://bp3.blogger.com/_tcBZgxHDLHo/R1R38S_ErmI/AAAAAAAAAAc/ztf-vXvVD54/s320/20071201156.jpg.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5139864952508821090" /&gt; &lt;br /&gt;The last picture is mostly for amusement: it's an announcement in local newspapers that, due to maintenance of the electrrcal network, there will be a short power outage. But notice the time of day :)&lt;br /&gt;&lt;img src="http://bp3.blogger.com/_tcBZgxHDLHo/R1R6-S_ErpI/AAAAAAAAAA0/WDeJ8z3WQw0/s320/20071202162.jpg.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5139868285403442834" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1476235378074289610?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1476235378074289610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1476235378074289610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1476235378074289610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1476235378074289610'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/12/weekend-in-northern-sweden.html' title='Weekend in northern Sweden'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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://bp2.blogger.com/_tcBZgxHDLHo/R1R2-C_ErkI/AAAAAAAAAAM/UwbfavaHafI/s72-c/20071202160.jpg.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14427379.post-2302305978864624254</id><published>2007-11-20T16:19:00.001+01:00</published><updated>2007-11-20T16:21:57.859+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Netbeans</title><content type='html'>Few days ago I started to write some Java code (I'm using the &lt;a href="http://choco-solver.net"&gt;Choco&lt;/a&gt; constraint solver) and tried to use the Netbeans 5.5 IDE (and the version 6 should be out soon). I have to say that I was pleasantly surprised. It is simpler to use than Eclipse, and feels faster. Now I have started to use it for C and C++ development and I'm wondering like... WHY haven't I given it a chance earlier :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-2302305978864624254?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/2302305978864624254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=2302305978864624254' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2302305978864624254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2302305978864624254'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/11/netbeans.html' title='Netbeans'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1571185301781480252</id><published>2007-11-10T15:54:00.000+01:00</published><updated>2007-11-10T16:35:25.207+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>IT Underground 2007</title><content type='html'>Yesterday late night (or rather, today early morning) I returned from the &lt;a href="http://www.itunderground.org/"&gt;IT Underground conference&lt;/a&gt; where I have been an invited speaker. I gave a tutorial (as it later turned out, rather advanced) on the ELF file format and shared libraries.  I also commented on some possible uses of GOT, eg. to plant an invalid address at a GOT entry in order to trace accesses to global variables.  You can get the slides &lt;a href="http://zvrba.net/writings.html"&gt;here&lt;/a&gt;.  Otherwise, conference as a conference - not much to tell :) I attended some interesting lectures and met some new people, and experienced some nice surprises :)&lt;br /&gt;&lt;br /&gt;I flew with SAS over Copenhagen.  On my way to the conference, after having checked in, I saw that I had been transferred to a later flight, scheduled to leave Copenhagen at 18:30, instead of the earlier flight that was shown on the ticket and which should have departed at ca. 13h.  The clerk at the SAS's desk explained that the earlier flight was canceled because it was scheduled to use Dash-8 plane type. SAS had a number of incidents with these airplane types within the last month, and has, for safety reasons, grounded all Dash-8 planes. They have announced to sue the Dash-8 producer, because they suffer enourmous money losses due to grounded planes.&lt;br /&gt;&lt;br /&gt;Anyway, since I had more than 7 hours of waiting time, I decided to take a walk through Copenhagen's center.  On the metro station I asked some Danish girls about which line to take to the center and overheard another girl asking the same (literally: "I just want to get to the center"). Somehow we ended up entering the metro at the same door and I started the conversation by asking (in English): "Do you also have a long time until the next flight?" She said yes, asked me where I was going and I replied to Warszawa. Then she asked me whether I was polish and I replied that I was Croatian, after which she said in serbo-croatian: "Ja sam iz Novog Sada." (translation: "I'm from Novi Sad"); &lt;a href="http://en.wikipedia.org/wiki/Novi_Sad"&gt;Novi Sad&lt;/a&gt; is a 2nd largest city in Serbia.  Then we both started to laugh, were talking much about everything [turned out that she graduated in Russian studies at university in Novi Sad and is now learning Polish language], took a walk through the city center, ate a lunch and took a coffee in a cafe afterwards. Then I headed back to the airport, and she stayed a bit longer in the city, since her plane was leaving 2 hours after mine. It was a very nicely spent time, and when I left for the airport, I realized that we never har introduced ourselves..  I never asked her about her name, nor did she ask me about mine... we were too involved in talk about, like, just about everything.&lt;br /&gt;&lt;br /&gt;As for referring to the language as "serbo-croatian".. I'm aware that many Croatians will probably object to this name, but I don't give a sh*t.  It seems that I and that girl have very similar views on the language; personally I consider "croatian" and "serbian" being two dialects of the same language that are being kept different for political reasons.  I understand what she is saying, she understands what I am saying (except for few words of region-specific slang), so why make a fuss about it? I wrote "serbo-croatian" just to make it explicit that her spoken dialect was of the "serbian" flavor. Nevertheless, her dialect was much closer to the lanugage I'm used to hearing in Zagreb from Zagreb old-timers than the dialect of people coming from Hercegovina and that are considered to be speaking, ironically enough, "croatian" language. Bah, crappy politics. In elementary school (back then when Yugoslavia still existed), we were taught that there were no "croatian" or "serbian" language, but only "croato-serbian" or "serbo-croatian". As much as it is politically incorrect to say it (but hey! Croatia is supposed to be a democratic country with freedom of speech), I personally feel that an attempt to fully separate this (single) languages into two separate languages feels.. not wrong, but just a wasted effort.&lt;br /&gt;&lt;br /&gt;It would take me too far to try to explain here the small differences in spoken language between the serbian and croatian dialects. Suffice it to say that the differences between spoken "croatian" and "serbian" languages/dialcets are far smaller than regional differences in the spoken norwegian language (eg. between Bergen - Oslo - Tromsø dialects).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1571185301781480252?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1571185301781480252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1571185301781480252' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1571185301781480252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1571185301781480252'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/11/it-underground-2007.html' title='IT Underground 2007'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-5007301292127810196</id><published>2007-10-17T18:03:00.000+02:00</published><updated>2007-10-17T18:11:10.874+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>How to raise SW patent hell</title><content type='html'>Today I got a nice idea on how to show that SW patents are either total crap or an idea that could put every major SW producer in trouble.&lt;br /&gt;&lt;br /&gt;So the plan is this: find a good security engineer and a good patent lawyer.  Make a patent titled something like "A method for covertly taking control over software".  Make sure that the patent text covers &lt;span style="font-weight:bold;"&gt;buffer overflows.&lt;/span&gt;  Next step: sue for patent violation every company whose software has at least one unpatched buffer overflow.  I'm sure things would get pretty hilarious in the courts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-5007301292127810196?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/5007301292127810196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=5007301292127810196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/5007301292127810196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/5007301292127810196'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/10/how-to-raise-sw-patent-hell.html' title='How to raise SW patent hell'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-2792519519716902351</id><published>2007-10-14T18:33:00.000+02:00</published><updated>2007-10-14T18:37:43.244+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>A critique of C++</title><content type='html'>The usenet article with message ID &lt;code&gt;13h30fshbtk53eb@corp.supernews.com&lt;/code&gt;  (google groups has not yet picked it up, so I can't provide a direct link) analyzes in detail what is wrong with the current C++ language.  Interesting read.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-2792519519716902351?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/2792519519716902351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=2792519519716902351' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2792519519716902351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2792519519716902351'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/10/critique-of-c.html' title='A critique of C++'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-3220011819815302285</id><published>2007-09-22T16:16:00.000+02:00</published><updated>2007-09-22T16:20:02.948+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>News and 3-d logic solver</title><content type='html'>I have set up a &lt;a href="http://zvrba.net/news.html"&gt;news feed&lt;/a&gt; so that you can track changes on my web site.  Today's news: &lt;a href="http://zvrba.net/software/3dlogic.html"&gt;solver&lt;/a&gt; for the &lt;a href="http://www.thatvideogamesite.com/play.php?id=392"&gt;3-D logic game&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-3220011819815302285?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/3220011819815302285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=3220011819815302285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3220011819815302285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3220011819815302285'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/09/news-and-3-d-logic-solver.html' title='News and 3-d logic solver'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-2523856820456748164</id><published>2007-09-09T19:41:00.000+02:00</published><updated>2007-09-09T19:43:16.559+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='dtrace'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>DTrace and C++</title><content type='html'>Solaris DTrace isn't that C++ friendly.  The SDT provider doesn't work with C++ programs.  But I have fortunately managed to find a &lt;a href="http://zvrba.net/tips/c++_dtrace.html"&gt;workaround&lt;/a&gt;.  Not pretty, but it works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-2523856820456748164?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/2523856820456748164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=2523856820456748164' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2523856820456748164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2523856820456748164'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/09/dtrace-and-c.html' title='DTrace and C++'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7020269640344099253</id><published>2007-09-01T12:37:00.000+02:00</published><updated>2007-09-01T12:41:55.166+02:00</updated><title type='text'>OOXML vs. ODF</title><content type='html'>Do I care whether OOXML becomes standardized? I don't. Why - because I think that it's basically a mistake to standardize a format that conflates presentation and content.  In that respect, standardizing ODF was also a mistake. So I don't pretty much care if another such format is standardized.  After discussing the issue a bit over a coffe with a friend, I said that they should have better standardized LaTeX.  It seems that I'm &lt;a href="http://modeemi.fi/~tuomov/b/archives/2007/09/01/T09_27_29/"&gt;not the only one&lt;/a&gt; who thinks so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7020269640344099253?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7020269640344099253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7020269640344099253' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7020269640344099253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7020269640344099253'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/09/ooxml-vs-odf.html' title='OOXML vs. ODF'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7847282410055162037</id><published>2007-08-26T07:24:00.000+02:00</published><updated>2007-08-26T07:27:59.077+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><title type='text'>Spam, viruses and addressbooks</title><content type='html'>How do you know that someone has added your otherwise unpublished email address to their addressbook(s)?  Of course, you suddenly start getting spam! I strongly suspect that there exist viruses/trojans whose only task is to steal data from your addressbook and send it away to .. (someone).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7847282410055162037?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7847282410055162037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7847282410055162037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7847282410055162037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7847282410055162037'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/08/spam-viruses-and-addressbooks.html' title='Spam, viruses and addressbooks'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-2860357559956079614</id><published>2007-08-18T07:34:00.001+02:00</published><updated>2007-08-18T07:58:19.403+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linus on volatile</title><content type='html'>I'm referring to &lt;a href="http://kerneltrap.org/Linux/Volatile_Superstition"&gt;this&lt;/a&gt; thread on kerneltrap.org, where Linus is cited to be saying:&lt;br /&gt;&lt;cite&gt;- in other words, the *only* possible meaning for "volatile" is a purely &lt;br /&gt;   single-CPU meaning. And if you only have a single CPU involved in the &lt;br /&gt;   process, the "volatile" is by definition pointless (because even &lt;br /&gt;   without a volatile, the compiler is required to make the C code appear &lt;br /&gt;   consistent as far as a single CPU is concerned).&lt;/cite&gt;&lt;br /&gt;&lt;br /&gt;He's absolutely wrong in his statement here (namely, that volatile is "by definition" pointless for a single CPU).  The C99 standard says that any access to volatile object is a side-effect. This does &lt;em&gt;not&lt;/em&gt; mean that compiler optimizations are effectively disabled; rather it means that the compiler &lt;em&gt;must&lt;/em&gt; generate memory access instruction instead of caching the value in the register. [This is because accesses to volatile objects may produce side-effects, so the read value may change between reads without an intervening store instruction.]&lt;br /&gt;&lt;br /&gt;Now, consider the following simple code in a &lt;em&gt;uniprocessor&lt;/em&gt; configuration: &lt;pre&gt;while(!flag) ;&lt;/pre&gt; which simply waits for the flag to become true (e.g. set by an interrupt handler).  If &lt;code&gt;flag&lt;/code&gt; is &lt;em&gt;not&lt;/em&gt; declared as volatile, the compiler might well generate an infinite loop, but if the &lt;code&gt;flag&lt;/code&gt; &lt;em&gt;is&lt;/em&gt; declared as volatile, the compiler &lt;em&gt;must&lt;/em&gt; generate code that will check the physical memory location in every iteration and thus the flag change from an interrupt handler will be detected.&lt;br /&gt;&lt;br /&gt;So, volatile &lt;em&gt;is&lt;/em&gt; important even on uniprocessors whenever there is a possibility of executing asynchronous code (e.g. interrupts).  And its semantics is defined well enough to prevent errors like the one I have described above.&lt;br /&gt;&lt;br /&gt;Oh well, I don't really care nor shall I bother to comment on this on the kernel mailing list.  It's his kernel, I use it only on my desktop and I don't really care what future impact this change will have (and it &lt;em&gt;might&lt;/em&gt; have far-reaching consequences that are really hard to discover; as any bugs related to asynchronicity).  I have said long time ago that I'd never consider Linux for "serious" applications (i.e. anything else than a cheap desktop), and such displays of blatant ignorance by its leading developer just make my stand firmer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-2860357559956079614?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/2860357559956079614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=2860357559956079614' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2860357559956079614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2860357559956079614'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/08/linus-on-volatile.html' title='Linus on volatile'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-4495313344649546349</id><published>2007-08-08T18:43:00.000+02:00</published><updated>2007-08-08T18:58:16.201+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>More python brokenness: distutils</title><content type='html'>So I tried to compile Mercurial on Solaris with Sun's native compiler.  I set CC and CFLAGS environment variables, but, as documented in distutils manual, the CFLAGS set in the environment are &lt;em&gt;added&lt;/em&gt; to some predefined set of flags.  This set of flags was adjusted to gcc, and Sun's compiler broke (no wonder) on some of gcc's options.  It seems that compiler options are hardcoded in distutils at some obscure place. "Great" work!&lt;br /&gt;&lt;br /&gt;After ca. 30 mins of fiddling around and searching on google, I recompiled the module using gcc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-4495313344649546349?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/4495313344649546349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=4495313344649546349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4495313344649546349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4495313344649546349'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/08/more-python-brokenness-distutils.html' title='More python brokenness: distutils'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-367158471156168055</id><published>2007-08-06T20:15:00.000+02:00</published><updated>2007-08-06T20:18:19.486+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Concurrent shared memory allocator</title><content type='html'>I have recently adapted Solaris's libmtmalloc(3) to satisfy allocation requests from shared memory segments; it works both with POSIX and SYSV shared memory.  You can get the code &lt;a href="http://zvrba.net/software/libshmtalloc.html"&gt;here&lt;/a&gt;.  I knew about a &lt;a href="http://www.ossp.org/pkg/lib/mm/"&gt;similar project&lt;/a&gt;, but I have no idea how well does it scale with increasing number of concurrent processes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-367158471156168055?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/367158471156168055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=367158471156168055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/367158471156168055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/367158471156168055'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/08/concurrent-shared-memory-allocator.html' title='Concurrent shared memory allocator'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-711548670710320124</id><published>2007-08-04T12:15:00.000+02:00</published><updated>2007-08-04T12:34:43.429+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Prex, DTrace and linux lameness</title><content type='html'>Adam Leventhal has in his &lt;a href="http://blogs.sun.com/ahl/date/20070802"&gt;blog&lt;/a&gt; exposed the lameness of the SystemTap team (e.g. they claim that they weren't inspired by DTrace at all, but output format of some of their utilities is &lt;em&gt;identical&lt;/em&gt; to that of DTrace). He also took an amusing photo showing that users are not very happy with SystemTap.&lt;br /&gt;&lt;br /&gt;But I want to point to another very useful tool that got completely shadowed by DTrace: TNF tracing.  In short, it is "&lt;code&gt;printf()&lt;/code&gt; debugging" on steroids; read the tracing(3TNF) man page for more details. The TNF logging probes must be manually inserted in the source code at places where printf() would be put, and they produce no output by default. When you run the program under the control of prex(1) program, you may choose to log the otuput of all probes, or select just a subset of them (they are named!). The trace is later analyzed with the tnfdump(1) program. The best thing is that prex works also on running programs; it can attach to them, collect data and detach at later point.&lt;br /&gt;&lt;br /&gt;TNF has been an enormous help in finding and correcting complex, time-dependent problems that I'd have much harder time to resolve otherwise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-711548670710320124?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/711548670710320124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=711548670710320124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/711548670710320124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/711548670710320124'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/08/prex-dtrace-and-linux-lameness.html' title='Prex, DTrace and linux lameness'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7769794147711753182</id><published>2007-08-03T20:31:00.000+02:00</published><updated>2007-08-03T20:35:08.205+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Solaris signal handling bug, part 2</title><content type='html'>My initial report has been &lt;a href="http://bugs.opensolaris.org/view_bug.do?bug_id=6586967"&gt;confirmed&lt;/a&gt; to be a genuine bug.  Even more interesting, the bug has been introduced in Solaris 8, and hasn't been noticed until few days ago.  Wow :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7769794147711753182?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7769794147711753182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7769794147711753182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7769794147711753182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7769794147711753182'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/08/solaris-signal-handling-bug-part-2.html' title='Solaris signal handling bug, part 2'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1637648562395849992</id><published>2007-07-29T19:45:00.001+02:00</published><updated>2007-07-29T19:49:19.801+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>A possible signal handling bug in Solaris</title><content type='html'>I know that combining threads and signals is a bad idea, but I just couldn't resist the temptation. It seemed like a nice solution until I've hit what seems to be a possible signal handling bug: sometimes the signal is not delivered on the alternate signal stack, even though a thread has requested so.  You can read the full description &lt;a href="http://www.opensolaris.org/jive/thread.jspa?threadID=36041&amp;tstart=0"&gt;here&lt;/a&gt;. I wonder whether I'll get a reply. In the mean-time, I'm abandoning threads in favor of multiple processes operating over a large shared memory segment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1637648562395849992?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1637648562395849992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1637648562395849992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1637648562395849992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1637648562395849992'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/07/possible-signal-handling-bug-in-solaris.html' title='A possible signal handling bug in Solaris'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-4062894489654705249</id><published>2007-07-08T19:40:00.000+02:00</published><updated>2007-07-08T20:22:15.604+02:00</updated><title type='text'>Summary</title><content type='html'>It's a very busy time.  I've passed (with the best grade) my final exam in Norwegian, and since then I'm busy with coding my PhD project.  Have been busy with installing Solaris on some machines and bringing it into usable state (by installing many small but important packages), upgrading the compilers to latest versions, learning the dbx debugger, fighting with compiler bugs and discovering subtle but important restrictions of lock-free data structures.&lt;br /&gt;&lt;br /&gt;Writing code also involves learning much about the C++ &lt;a href="http://www.boost.org"&gt;boost libraries&lt;/a&gt; and discovering some important weaknesses of C++ (this time: operators &lt;code&gt;new&lt;/code&gt; and &lt;code&gt;delete&lt;/code&gt; are class &lt;em&gt;members&lt;/em&gt; which is very inconvenient if you want to impose external allocator onto existing classes).  But I was also impressed how good the Sun's C++ compiler is when it comes to aggressive optimizations and heavy inlining of C++ code; this is very important with heavy template metaprogramming.&lt;br /&gt;&lt;br /&gt;Each of these topics is interesting enough to deserve its own post, so expect more posts in the upcoming days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-4062894489654705249?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/4062894489654705249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=4062894489654705249' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4062894489654705249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4062894489654705249'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/07/summary.html' title='Summary'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8802686259964297892</id><published>2007-06-16T21:37:00.001+02:00</published><updated>2007-06-16T21:40:14.235+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>X11 ssh forwarding</title><content type='html'>It is common knowledge that ssh -X or ssh -Y forward X11 connections.  However, what I didn't know until few days ago is that this works even across several machines.  That is, if you do ssh -Y from A -&gt; B -&gt; C, then opening an X program on machine C will forward the X connection to the X server at machine A.  Very convenient.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8802686259964297892?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8802686259964297892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8802686259964297892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8802686259964297892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8802686259964297892'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/06/x11-ssh-forwarding.html' title='X11 ssh forwarding'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-3295279353187401288</id><published>2007-06-13T19:00:00.000+02:00</published><updated>2007-06-13T19:06:15.082+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Windows Research Kernel</title><content type='html'>This is interesting: Microsoft gives out the NT kernel source for academic, non-profit use. Too bad I don't have much time to play with it a bit; I've always been impressed by the very NT kernel (which is itself VMS-ish). More details &lt;a href="http://www.microsoft.com/resources/sharedsource/Licensing/researchkernel.mspx"&gt;here&lt;/a&gt;.  A related project is &lt;a href="http://www.microsoft.com/resources/sharedsource/Licensing/ProjectOZ.mspx"&gt;ProjectOZ&lt;/a&gt;, a platform (simulator) for teaching principles of operating systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-3295279353187401288?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/3295279353187401288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=3295279353187401288' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3295279353187401288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3295279353187401288'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/06/windows-research-kernel.html' title='Windows Research Kernel'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7254533225890719220</id><published>2007-06-10T21:58:00.000+02:00</published><updated>2007-06-10T22:18:10.048+02:00</updated><title type='text'>Window managers</title><content type='html'>After being a long-time user of the fvwm2 window manager, I have switched to &lt;a href="http://modeemi.fi/~tuomov/ion/"&gt;Ion&lt;/a&gt;.  The author, incidentally, dislikes the current state of &lt;a href="http://modeemi.fi/~tuomov/b//archives/2007/06/01/T19_09_43/"&gt;open-source software&lt;/a&gt;, &lt;a href="http://modeemi.fi/~tuomov/b//archives/2007/04/01/T19_09_22/"&gt;linux&lt;/a&gt; (calling it the Idiot-box Linux), and &lt;a href="http://modeemi.fi/~tuomov/b///archives/2006/12/08/T18_20_23/"&gt;gnome&lt;/a&gt;.  I share many of his opinions and have subscribed to his blog.  Very interesting read!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7254533225890719220?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7254533225890719220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7254533225890719220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7254533225890719220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7254533225890719220'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/06/window-managers.html' title='Window managers'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8767959046651901552</id><published>2007-05-27T16:18:00.000+02:00</published><updated>2007-05-27T16:27:57.742+02:00</updated><title type='text'>One end and one beginning</title><content type='html'>Today I have closed the old web site where I and a friend of mine have tried to build a community.  Building a community is hard, takes effort, and consequently, time.  And time is  a pretty scarce resource for us.  We have decided to take down the old web, and I have moved the content to my new personal web: &lt;a href="http://zvrba.net"&gt;http://zvrba.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8767959046651901552?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8767959046651901552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8767959046651901552' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8767959046651901552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8767959046651901552'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/05/one-end-and-one-beginning.html' title='One end and one beginning'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-4153780240802477935</id><published>2007-05-25T16:18:00.000+02:00</published><updated>2007-05-25T16:33:22.188+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cryptography'/><title type='text'>Digitally signing files</title><content type='html'>When you want to digitally sign a file, you can either make an embedded signature or a detached signature.  The disadvantage of the embedded signature is that the original format is mangled.  You have to "unpack" the file to another file (the process of verification does this) to be able to use it.  Not very convenient.  Detached signature preserves the original format, but stores the signature in a separate file.  Unless you have a convention and hold firmly to it, you will have problems with pairing up signatures and their corresponding files.  Modern filesystems open up a third possibility: a signature can be placed into a file's extended attribute.  This solves both problems: the file's original format is preserved, and the signature is still attached to the file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-4153780240802477935?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/4153780240802477935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=4153780240802477935' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4153780240802477935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4153780240802477935'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/05/digitally-signing-files.html' title='Digitally signing files'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-533542430052909949</id><published>2007-04-29T20:22:00.000+02:00</published><updated>2007-04-29T20:28:27.802+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Algorithm toolbox</title><content type='html'>I have released a preliminary version of an algorithm toolbox. The toolbox includes van Emde-Boas trees, intrusive AVL trees (thus, applicable in scenarios where there are no memory management facilities), and exhaustive permutation tester. The code is written in C++ and may be obtained &lt;a href="http://zvrba.net/software/algorithm_toolbox.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-533542430052909949?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/533542430052909949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=533542430052909949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/533542430052909949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/533542430052909949'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/04/algorithm-toolbox.html' title='Algorithm toolbox'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1630842896568827761</id><published>2007-04-24T15:50:00.000+02:00</published><updated>2007-04-24T16:21:30.424+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xemacs'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Solaris 11, xemacs and dbx</title><content type='html'>I have recently installed Solaris Express (Solaris 11), first in one virtual machine and then on "bare metal".  I have to say that I'm very pleasantly surprised.  The installation went very smooth, the only "configuration" neccessary was to enter time, location, select additional locales, type in the root password and to create a new non-root user upon first login. The default desktop is GNOME and looks very polished up.  Security-wise, the installation seems very sane.  There are many services bound on TCP ports, but almost all of them only to the loopback interface (meaning that only local programs can connect to them).  The only publicly open ports are 111 (rpcbind) and 22 (ssh), 6011 and 6010 (I guess, X).  And sshd is configured to not permit root logins by default.&lt;br /&gt;&lt;br /&gt;I tried Sun Studio 11, but.. being used to emacs, it doesn't feel quite right (+ it's not comfortable to use it if you're running it over remote X11 connection).  However, Solaris has a very nice toolbox for programmers: dbx, mdb, dtrace and tnf (man tracing), different malloc libraries, etc.  It's really very advanced OS, and very developer-friendly.  Plus there are zones, fine-grained privilege and role system which works...  And everything is &lt;b&gt;excellently&lt;/b&gt; documented in man pages.  I'm too short on time right now to describe all the goodies, but..  I'm &lt;b&gt;impressed&lt;/b&gt;.  By the installation, default settings, and overall consistency and look&amp;feel of the system.  I can only say &lt;b&gt;excellent work&lt;/b&gt; to all the Solaris developers, and a big &lt;b&gt;thanks&lt;/b&gt; to Sun for making it all available at no charge.&lt;br /&gt;&lt;br /&gt;Now, to the topic: I had a problem with xemacs not displaying source files when I used it with dbx to debug a multi-directory project.  The problem turned out to be that dbx does not by default display full path to the source file.  xemacs looks for the file in the wrong directory and consequently does not show the source you're supposed to be debugging.  You can solve this problem by putting the following line in your &lt;code&gt;.dbxrc&lt;/code&gt;:&lt;pre&gt;&lt;br /&gt;DBX_output_short_file_name=off&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1630842896568827761?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1630842896568827761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1630842896568827761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1630842896568827761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1630842896568827761'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/04/solaris-11-xemacs-and-dbx.html' title='Solaris 11, xemacs and dbx'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-6385269269998922690</id><published>2007-04-10T17:54:00.000+02:00</published><updated>2007-04-10T19:31:56.134+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Linux signal handling is broken</title><content type='html'>Enter &lt;code&gt;sigaction()&lt;/code&gt; in combination with &lt;code&gt;SA_SIGINFO&lt;/code&gt; flag.  Such signal handler accepts three arguments, the third being the context (full machine state needed to resume it, eg. registers) of the interrupted thread.&lt;br /&gt;&lt;br /&gt;First problem: linux ABI is broken.  The FP state in the &lt;code&gt;uc_mcontext&lt;/code&gt; member of the &lt;code&gt;ucontext_t&lt;/code&gt; structure is pointer, instead of value.  This makes copying of the context nontrivial.&lt;br /&gt;&lt;br /&gt;Second problem: You can't use &lt;code&gt;setcontext()&lt;/code&gt; to leave signal handler and jump into another, previously saved, context.  (Or, for that matter, you can't use it to return to the very same context passed as argument to the signal handler.) In other words, signal handler like&lt;br /&gt;&lt;pre&gt;static void sighandler(&lt;br /&gt;  int signo, siginfo_t *psi, void *pv)&lt;br /&gt;{&lt;br /&gt;  memcpy(puc_old, pv, sizeof(ucontext_t));&lt;br /&gt;  /* choose another context to dispatch */&lt;br /&gt;  setcontext(puc_another);&lt;br /&gt;}&lt;/pre&gt;does not work. It does not restore signal mask specified in the &lt;code&gt;puc_other&lt;/code&gt;, does not reestablish alternate signal stack, etc. However, this scheme works flawlessly on Solaris.&lt;br /&gt;&lt;br /&gt;How am I fixing it on Linux? I walk the stack frames (following the saved stack frame pointer), modify the return address so that the signal handler returns to itself instead to the interrupted context, etc. &lt;strong&gt;Very&lt;/strong&gt; ugly and nonportable.&lt;br /&gt;&lt;br /&gt;Not to mention that I'm relying on &lt;strong&gt;luck:&lt;/strong&gt; it seems that, under current linux kernel, it is not possible to &lt;strong&gt;atomically&lt;/strong&gt; restore signal mask and return from signal handler to context other than the immediately interrupted one. (Heck, it's not even possible to do it nonatomically without resorting to "black magic" involving reading hex dumps of stack frames.)&lt;br /&gt;&lt;br /&gt;I'm installing Solaris in a virtual machine to try it out, and I'm seriously considering to move my development to Solaris.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-6385269269998922690?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/6385269269998922690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=6385269269998922690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6385269269998922690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6385269269998922690'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/04/linux-signal-handling-is-broken.html' title='Linux signal handling is broken'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-4138955299163808840</id><published>2007-03-28T17:50:00.000+02:00</published><updated>2007-03-28T18:01:10.037+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>Three jewels</title><content type='html'>This one is, I guess, going to be another classic in a few years. Andrei Alexandrescu &lt;a href="http://groups.google.com/group/comp.lang.c++.moderated/msg/af982145b2925870"&gt;stated&lt;/a&gt; in comp.lang.c++.moderated:&lt;br /&gt;&lt;cite&gt;Well, for my money, using iostreams already puts the code in a low quality bracket :o).&lt;/cite&gt;&lt;br /&gt;&lt;br /&gt;The thread was about how people are dogmatic regarding the goto statement, so here are two more links:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;D. E. Knuth, &lt;a href="http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf"&gt;"Structured Programming with goto statements" [PDF]&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://paramount.www.ecn.purdue.edu/ParaMount/papers/rubin87goto.pdf"&gt;Frank Rubin's response [PDF]&lt;/a&gt; to the Dijkstra's paper on "harmful goto", published in readers's letters, Communications of the ACM, March 1987, Volume 30, Number 3.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-4138955299163808840?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/4138955299163808840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=4138955299163808840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4138955299163808840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4138955299163808840'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/03/three-jewels.html' title='Three jewels'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8611173591688844146</id><published>2007-03-23T21:51:00.000+01:00</published><updated>2007-03-23T22:01:01.764+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fsf'/><category scheme='http://www.blogger.com/atom/ns#' term='gpl'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Subverting the GPL (again!)</title><content type='html'>If you use some GPL code in your program and you distribute that program, than you also must make the program source available. A fun thing would be to comply with the GPL, but publish the source code of the parts of the program that you wish to keep "secret" in &lt;strong&gt;obfuscated&lt;/strong&gt; form.&lt;br /&gt;&lt;br /&gt;Here's a relatively easy way to do it: put "proprietary" parts of your code into separate source files, compile them to object code and &lt;strong&gt;decompile&lt;/strong&gt; the object code back to "source". "Nice" decompilation is of course impossible. But we don't want nice - we can just generate code full of &lt;code&gt;goto&lt;/code&gt;s, primitive machine instructions, and variable "names" which correspond to the variable's address in memory after the program is loaded.&lt;br /&gt;&lt;br /&gt;I think that it would work, because the license states only "Accompany it with the complete corresponding machine-readable source code..." Such source code &lt;strong&gt;is&lt;/strong&gt; undeniably machine-readable (and even compileable!), and it seems that distributing a "proprietary" program in such form would comply with the license.&lt;br /&gt;&lt;br /&gt;Comments?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8611173591688844146?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8611173591688844146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8611173591688844146' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8611173591688844146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8611173591688844146'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/03/subverting-gpl-again.html' title='Subverting the GPL (again!)'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14427379.post-8122415890244844872</id><published>2007-03-16T16:03:00.000+01:00</published><updated>2007-03-16T16:13:32.128+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='climate'/><title type='text'>Another look on climate change</title><content type='html'>"This has been the warmest winter ever", "We must reduce CO2 at all costs", etc. You can hear such things pretty often today.  But take another perspective: the global warming, which caused the warmest winter 'ever' (highly doubtful), also saved huge amounts of energy that would otherwise be spent on heating. Less energy used on heating means less generated CO2 this winter. Why doesn't anyone mention that?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8122415890244844872?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8122415890244844872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8122415890244844872' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8122415890244844872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8122415890244844872'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/03/another-look-on-climate-change.html' title='Another look on climate change'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-135707396619303157</id><published>2007-03-10T20:03:00.000+01:00</published><updated>2007-03-10T20:27:12.881+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Hungarian notation</title><content type='html'>You have probably heard that hungarian notation is awful and that it should be avoided. However, in most of the Windows APIs, the notation has been misused. The intention behind Simonyi's notation is akin to dimensional analysis. I recommend you to read &lt;a href="http://www.joelonsoftware.com/articles/Wrong.html"&gt;this article&lt;/a&gt; as well as Simonyi's &lt;a href="http://msdn2.microsoft.com/en-us/library/aa260976(VS.60).aspx"&gt;original paper&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;While having a good intention behind it, the idea is actually just a fix for a defficient language, namely C and C++. If &lt;code&gt;typedef&lt;/code&gt; were not a mere type alias, but a true new type, this convention would be (almost) unneccessary as the compiler could catch all errors. For example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;typedef int Temperature;&lt;br /&gt;typedef int Volume;&lt;br /&gt;&lt;br /&gt;int f(Temperature a, Volume b)&lt;br /&gt;{&lt;br /&gt;  return a+b;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Although it is meaningless to add temperature and volume quantities, this is perfectly legal C and C++ code, because &lt;code&gt;Temperature&lt;/code&gt; and &lt;code&gt;Volume&lt;/code&gt; are mere &lt;emph&gt;aliases&lt;/emph&gt; for &lt;code&gt;int&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;C++ templates have strict compile-time type-checking, but the syntax is unfortunately just horrendous.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-135707396619303157?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/135707396619303157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=135707396619303157' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/135707396619303157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/135707396619303157'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/03/hungarian-notation.html' title='Hungarian notation'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-5454984558662295222</id><published>2007-02-15T15:11:00.000+01:00</published><updated>2007-02-15T15:12:20.081+01:00</updated><title type='text'>Giants meet</title><content type='html'>I am actually not surprised about &lt;a href="http://www.timesonline.co.uk/tol/news/world/us_and_americas/article1386812.ece"&gt;this&lt;/a&gt;.  I'm just wondering why didn't it happen sooner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-5454984558662295222?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/5454984558662295222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=5454984558662295222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/5454984558662295222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/5454984558662295222'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/02/giants-meet.html' title='Giants meet'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8222737358004108156</id><published>2007-02-10T10:43:00.000+01:00</published><updated>2007-02-03T08:41:00.844+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='neural networks'/><category scheme='http://www.blogger.com/atom/ns#' term='artificial intelligence'/><title type='text'>A thought on neural networks</title><content type='html'>Neural networks are a (currently not very successful) attempt to programmatically mimic the learning behaviour of a human brain.  Research in neural networks has mostly focused on topologies and transfer functions in the nodes.  However, the aspect of &lt;b&gt;time&lt;/b&gt; has been neglected.  Human nerves transport signals with (relatively slow) speed between 0.5 and 120 m/s (quoting a random reference from the web).&lt;br /&gt;&lt;br /&gt;Could it be that our learning capability depends not only on particular &lt;b&gt;signal values&lt;/b&gt; (the part that artificial neural networks are simulating), but also on &lt;b&gt;propagation time&lt;/b&gt; between neurons in the brain?  A signal might have different effect on a neuron in the brain, depending on the time of signal's arrival.&lt;br /&gt;&lt;br /&gt;This would add another dimension to artificial neural networks: temporally changing transfer functions in the nodes.  This is just an idea for further research, maybe someone has already looked into it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8222737358004108156?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8222737358004108156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8222737358004108156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8222737358004108156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8222737358004108156'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/02/thought-on-neural-networks.html' title='A thought on neural networks'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-9078292257358304005</id><published>2007-02-03T08:37:00.000+01:00</published><updated>2007-02-03T08:41:00.988+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='assembler'/><category scheme='http://www.blogger.com/atom/ns#' term='intel'/><category scheme='http://www.blogger.com/atom/ns#' term='amd'/><title type='text'>x86-64 ISA oddity</title><content type='html'>New processors have FXSAVE and FXRSTOR to save/restore the floating point state of both x87 and SSE units.  In 64-bit mode, PUSHAD and POPAD instructions generate undefined operation exception, there is no new instruction to save/restore all general-purpose registers, and the hardware task switching is disabled.  I'm wondering why did the AMD designers decide to cripple the CPU in such a way (along the side of disabling segmentation, but that's a story for another post).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-9078292257358304005?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/9078292257358304005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=9078292257358304005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/9078292257358304005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/9078292257358304005'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/02/x86-64-isa-oddity.html' title='x86-64 ISA oddity'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-6847425867424518998</id><published>2007-01-15T17:46:00.000+01:00</published><updated>2007-01-15T18:03:16.031+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ergonomy'/><title type='text'>Enforcing mandatory exercise at work</title><content type='html'>I'm working in a large but low (only 4 floors) building with many printers.  Today I came upon a slightly evil idea.  Instead of letting people choose the printer on which to print their documents, the administrators should arrange the system to choose the destination printer &lt;strong&gt;randomly&lt;/strong&gt;.  Benefits would be twofold:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;People would be forced to walk longer distances, which is healthy.  This is beneficial especially for people working at computers, sitting most of their working hours.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I also guess that paper would be saved: in order to avoid the previous point, people would avoid printing stuff unless they absolutely have to.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;To make the first point most effective, people should be locked out of elevators, except disabled people which would get their own "elevator key".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-6847425867424518998?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/6847425867424518998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=6847425867424518998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6847425867424518998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6847425867424518998'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/01/enforcing-mandatory-exercise-at-work.html' title='Enforcing mandatory exercise at work'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7238111613888201305</id><published>2007-01-07T20:42:00.000+01:00</published><updated>2007-01-07T21:01:01.272+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='assembler'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Assembler as a first "language" ?</title><content type='html'>I participated recently in a discussion where someone suggested to teach programming to beginners with assembler as the first language.  There were far many more negative than positive reactions.  My opinion is that assembler is just a tool to show concepts in practice.  If used properly, it serves as well as any other tool (ie. high-level programming language).  &lt;a href="http://www-cs-faculty.stanford.edu/~knuth/mmix.html"&gt;Here&lt;/a&gt; are Knuth's reasons for using assembler in his TAOCP books.&lt;br /&gt;&lt;br /&gt;Now, I agree that it is &lt;strong&gt;much&lt;/strong&gt; harder to make a good course with assembler - topics, examples and problems must be chosen much more carefully than for a high-level programming language.  And x86 is a wrong choice as a first architecture - something like Knuth's MMIX or the MIPS architecture would be much better.&lt;br /&gt;&lt;br /&gt;Bottom line is that, while there are admittedly many traps, I don't see anything &lt;strong&gt;fundamentally&lt;/strong&gt; wrong with such approach.  Your opinions?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7238111613888201305?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7238111613888201305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7238111613888201305' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7238111613888201305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7238111613888201305'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2007/01/assembler-as-first-language.html' title='Assembler as a first &quot;language&quot; ?'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7959058336699456802</id><published>2006-12-24T22:32:00.000+01:00</published><updated>2006-12-24T22:37:51.616+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='assembler'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>AMD64 TLB invalidation performance</title><content type='html'>The AMD64 optimization manual specifies that the latency of INVLPG instruction is 101 cycles in 32-bit and 80 cycles in 64-bit mode. Considering that the TLB is so closely tied to MMU, CPU, and that no accesses to RAM are needed, I'm wondering &lt;b&gt;why&lt;/b&gt; is it so slow? Even more interesting is the large (20%) difference between 32- and 64-bit mode.&lt;br /&gt;&lt;br /&gt;How fast/slow is it on Intel CPUs? No idea. Their optimization manual gives instruction latencies only for a relatively small subset of instructions. INVLPG is not among them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7959058336699456802?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7959058336699456802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7959058336699456802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7959058336699456802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7959058336699456802'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/12/amd64-tlb-invalidation-performance.html' title='AMD64 TLB invalidation performance'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1583452181055624980</id><published>2006-12-23T12:26:00.000+01:00</published><updated>2006-12-23T12:35:19.263+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='turkmenistan'/><category scheme='http://www.blogger.com/atom/ns#' term='ashgabat'/><title type='text'>Ashgabat</title><content type='html'>After hearing the news about the death of Turkmenistan's president, I searched the net to find some pictures of the capital, Ashgabat.  I found &lt;a href="http://ashgabat.us"&gt;this site&lt;/a&gt; and all I could think of after seeing the pictures was "Wow. I want to go there." (despite that summer temperatures can rise up to 45 degrees Celsius) Colourful and a bit surreal. Jewel found in an ex-Soviet republic. Who would have thought?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1583452181055624980?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1583452181055624980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1583452181055624980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1583452181055624980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1583452181055624980'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/12/ashgabat.html' title='Ashgabat'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-7057535895949921204</id><published>2006-12-23T08:49:00.000+01:00</published><updated>2007-01-02T15:26:46.327+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DRM'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Peter Gutmann on Vista content protection</title><content type='html'>His &lt;a href="http://www.cs.auckland.ac.nz/~pgut001/pubs/vista_cost.txt"&gt;article&lt;/a&gt; is a very interesting read. A quote: "The Vista Content Protection specification could very well constitute the longest suicide note in history."  The scary part is about automatic picture degradation while listening to music and its potentially disastrous consequences in medical applications where crystal-clear picture is needed for correct diagnosis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-7057535895949921204?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/7057535895949921204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=7057535895949921204' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7057535895949921204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/7057535895949921204'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/12/peter-gutmann-on-vista-content.html' title='Peter Gutmann on Vista content protection'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-6292870631893049437</id><published>2006-12-13T14:44:00.000+01:00</published><updated>2006-12-13T15:02:08.776+01:00</updated><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 not debug programs</title><content type='html'>I was drawn to &lt;a href="http://www-128.ibm.com/developerworks/power/library/l-sigdebug.html?ca=dgr-lnxw07SignalsLinuxDebug"&gt;this article&lt;/a&gt;, titled "Signals as a Linux debugging tool", by a recent link on the OSNews site. The subtitle writes "Intelligent signal handling finds bugs faster". Two things are wrong about this article.&lt;br /&gt;&lt;br /&gt;The first thing is that the author's code examples have printf function in a signal handler to output register values when a fault happens. This is undefined behaviour, as the printf function is not listed as async-signal-safe in the POSIX standard. Ironically, an article titled "Use reentrant functions for safer signal handling" is listed among the references.&lt;br /&gt;&lt;br /&gt;The second thing is that the author suggests an unbelievably complicated way of finding bugs. Once your signal handler with undefined behaviour has dumped the values of registers to your terminal, you are supposed to use objdump to disassemble your program executable, find the faulting location, and somehow map it to your program source.&lt;br /&gt;&lt;br /&gt;I wonder whether the author actually knows how to make a program dump core when it faults, what to do with the core file, and how to use a debugger, such as gdb. (Hint: debuggers are much more powerful and convenient to use than what the author suggests in the article.) It's surprising that such a misleading, low-quality article can show up on an IBM's web site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-6292870631893049437?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/6292870631893049437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=6292870631893049437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6292870631893049437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6292870631893049437'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/12/how-to-not-debug-programs.html' title='How to not debug programs'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-4157658808572702616</id><published>2006-12-06T16:55:00.000+01:00</published><updated>2006-12-06T17:11:08.473+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='pda'/><title type='text'>Nokia 770</title><content type='html'>Recently I had the opportunity to get Nokia 770 Internet Tablet (basically for free - a loan on indefinite time). I declined. Previously I have owned both a PalmOS device (Visor), and an iPaq onto which I installed Linux. In both cases I couldn't think of anything useful I could use the device for. Otherwise it was just a waste of time.&lt;br /&gt;&lt;br /&gt;This time I &lt;b&gt;did&lt;/b&gt; have an idea - as a dictionary where I can note down new words, and as note-taker to replace my paper notebook. So I tried to play with it and it has the same problem as other PDAs - &lt;b&gt;text entry&lt;/b&gt;. The on-screen keyboard you tap on is next to useless for real-time text entry. The handwriting recognition isn't much better. If you want high accuracy, you need to carefully and slowly draw letter by letter. I wonder why Nokia didn't buy patent for the Palm's Graffiti entry system. (Yes, there is an option of external Bluetooth keyboard. But that is too cumbersome - suddenly you have to fumble around with &lt;b&gt;two&lt;/b&gt; small pieces of fragile equipment that you don't want to drop.)&lt;br /&gt;&lt;br /&gt;An ideal PDA should come with software capable of learning &lt;b&gt;natural handwriting&lt;/b&gt;. Here's how I imagine it could work. First you type in (using a keyboard) a relatively large text. Then you write the text (using your natural handwriting) on the PDA and let it figure out for what groups of letters composite pen strokes stand for.&lt;br /&gt;&lt;br /&gt;This learning process would initially take more time, but it would be worth it in the long run. I don't think that today you can find a PDA which can in real-time recognize natural handwriting. Until such time comes, I think I will stick with pen and paper for taking notes&lt;br /&gt;in real-time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-4157658808572702616?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/4157658808572702616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=4157658808572702616' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4157658808572702616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/4157658808572702616'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/12/nokia-770.html' title='Nokia 770'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-3544124160814850098</id><published>2006-11-27T15:56:00.000+01:00</published><updated>2006-11-27T16:06:22.445+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>C, C++ and width of integer types</title><content type='html'>Perpetual problem with C and C++ programming is very loose specification of integer types (eg. int must be at least 16 bits, without upper limit, long has to be at least 32 bits and not smaller than int). C99 solved this problem by introducing the &amp;lt;stdint.h&amp;gt; header.&lt;br /&gt;&lt;br /&gt;The problem could have been solved by redefining the register keyword to mean:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;register short: half of target architecture's register width&lt;/li&gt;&lt;li&gt;register int: register width&lt;/li&gt;&lt;li&gt;register long: double the register width&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I wonder how many programs would break, esp. if the register keyword would be no-op if its use would violate the minimum requirements for integer types (short, int: at least 16 bits, long: at least 32 bits).&lt;br /&gt;&lt;br /&gt;I don't how useful would this redefinition be. Afterall, C99 &lt;em&gt;does&lt;/em&gt; include "fast" integer types. Hm. Any opinions?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-3544124160814850098?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/3544124160814850098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=3544124160814850098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3544124160814850098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/3544124160814850098'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/11/c-c-and-width-of-integer-types.html' title='C, C++ and width of integer types'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-6491696849581458668</id><published>2006-11-25T18:30:00.000+01:00</published><updated>2006-11-25T18:42:55.298+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='markov chain'/><title type='text'>Spammers have gotten smarter</title><content type='html'>Today I've actually read some text that got through the spam filter. Total nonsense that kinda makes sense. Here's an excerpt:&lt;br /&gt;&lt;quote&gt;&lt;br /&gt;Popularity of blogs helped also to popularize concept web content mechanisms is such as or Atom have. Xml am perform operations instead using or Feeditem Item want or cannot changed exception readunread property in attached. System time or downloaded via Http Https parsed is normalized unified Identifies updated is Merges reflect last. Those tricky a details platform shields even of supports upcoming Support or Whether is implement innovative scenarios basically deal with Common Feed List. [etc]&lt;br /&gt;&lt;/quote&gt;&lt;br /&gt;This reminded me of a &lt;b&gt;computer-generated text&lt;/b&gt; so I sought for Markov chain text generators. &lt;a href="http://www.eblong.com/zarf/markov"&gt;Here's one&lt;/a&gt; for example. Study its output (links are near the bottom of the page) and it'll be the same kind of "nonsense making sense".&lt;br /&gt;&lt;br /&gt;Bayesian filtering is a kind of "inverse" of Markov chain text generation - both methods are based on statistics. The problem with the Markov-generated text is that its statistical properties closely match those of real text, so the Bayesian filter doesn't classify them as spam.&lt;br /&gt;&lt;br /&gt;Generating garbage with required statistical properties is relatively easy; it just requires a list of words and a good Markov model. Once generated, it requires &lt;em&gt;real human understanding&lt;/em&gt; for classification.&lt;br /&gt;&lt;br /&gt;I didn't study theory behind Markov processes and Bayesian filtering deepely. I might be talking half-rubbish :) But given the amount and kind of spam that gets through the filter, I have a feeling that spammers are slowly winning the battle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-6491696849581458668?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/6491696849581458668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=6491696849581458668' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6491696849581458668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6491696849581458668'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/11/spammers-have-gotten-smarter.html' title='Spammers have gotten smarter'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-6818923719551895533</id><published>2006-11-20T21:23:00.001+01:00</published><updated>2006-11-20T21:23:57.785+01:00</updated><title type='text'>10 Immutable Laws of Security</title><content type='html'>&lt;a href="http://www.microsoft.com/technet/archive/community/columns/security/essays/10imlaws.mspx?mfr=true"&gt;This&lt;/a&gt; is a nice essay.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-6818923719551895533?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/6818923719551895533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=6818923719551895533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6818923719551895533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6818923719551895533'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/11/10-immutable-laws-of-security.html' title='10 Immutable Laws of Security'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-2428188103205272621</id><published>2006-11-20T15:56:00.000+01:00</published><updated>2006-11-20T15:58:40.774+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>New C++</title><content type='html'>&lt;a href="http://www.devsource.com/article2/0,1895,2061094,00.asp"&gt;This article&lt;/a&gt; describes the new features of the upcoming C++09 standard. (Read through it, there are other good links hidden inside). My favorite addition is automatic type deduction (unfortunately, not described in the article).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-2428188103205272621?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/2428188103205272621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=2428188103205272621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2428188103205272621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/2428188103205272621'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/11/new-c.html' title='New C++'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-6461781871413315257</id><published>2006-11-15T19:12:00.000+01:00</published><updated>2006-11-15T19:37:45.124+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='filesystem'/><title type='text'>NILFS for Linux</title><content type='html'>Today I've seen a reference to &lt;a href="http://www.nilfs.org"&gt;NILFS&lt;/a&gt;, a log-structured filesystem for Linux. It's interesting how they've put the most important "feature" at the bottom of the "Current status" page. Looking at the page, the first important thing one notices is that the work on garbage collector is ongoing. Doesn't sound well. At the bottom of the page, they conclude under known bugs with "The system hangs on a disk full condition." How nice :)&lt;br /&gt;&lt;br /&gt;On a more serious note, I think that it's great that someone is working on alternative filesystems. NILFS can, for example, support "time travel".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-6461781871413315257?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/6461781871413315257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=6461781871413315257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6461781871413315257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6461781871413315257'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/11/nilfs-for-linux.html' title='NILFS for Linux'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-8604422384474992762</id><published>2006-11-08T21:59:00.000+01:00</published><updated>2006-11-08T22:01:17.342+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>XML sucks (again!)</title><content type='html'>This isn't yet another of my anti-XML rants. There actually exists a web-site with such name- &lt;a href="http://xmlsucks.org/"&gt;xmlsucks.org&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-8604422384474992762?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/8604422384474992762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=8604422384474992762' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8604422384474992762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/8604422384474992762'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/11/xml-sucks-again.html' title='XML sucks (again!)'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1506848314966931266</id><published>2006-11-06T21:42:00.000+01:00</published><updated>2006-11-06T21:44:51.896+01:00</updated><title type='text'>LinkedIn</title><content type='html'>I've registered myself with &lt;a href="http://www.linkedin.com"&gt;LinkedIn&lt;/a&gt;. It is a service to help maintain professional contacts. Doesn't cost anything and might be useful in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1506848314966931266?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1506848314966931266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1506848314966931266' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1506848314966931266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1506848314966931266'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/11/linkedin.html' title='LinkedIn'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-28429447596859874</id><published>2006-11-02T18:59:00.000+01:00</published><updated>2006-11-02T19:06:03.740+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='makefile'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='make'/><title type='text'>Makefile madness</title><content type='html'>Whenever I start a new project, there is one single thing I hate the most: maintaining a makefile. (Relatively) long time ago I found the article &lt;a href="http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html"&gt;"Recursive Make Considered Harmful"&lt;/a&gt;. It is both a critique of recirsive make, and a guide on how to write a good makefile.&lt;br /&gt;&lt;br /&gt;I bit the bullet, applied the recipes given there (it didn't even take much time), and so far so good: it discovers automatically newly added files and dependencies maintain themselves. Without resorting auto*madness :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-28429447596859874?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/28429447596859874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=28429447596859874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/28429447596859874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/28429447596859874'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/11/makefile-madness.html' title='Makefile madness'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-6012363606339526514</id><published>2006-10-30T16:11:00.000+01:00</published><updated>2006-10-30T16:15:55.649+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization vmware amd intel'/><title type='text'>Software vs. hardware virtualization</title><content type='html'>&lt;a href="http://www.vmware.com/vmtn/resources/528"&gt;This article [vmware.com]&lt;/a&gt; compares performance of software and hardware virtualization techniques. What is most surprising is that the results are &lt;b&gt;mixed&lt;/b&gt;: hardware-assisted virtualization can actually be &lt;b&gt;slower&lt;/b&gt; than pure software virtualization under certain workloads. Wow!&lt;br /&gt;&lt;br /&gt;The benchmark was done with VT-enabled Pentium 4. It would be interesting to see how the AMD's Pacifica hardware virtualization compares.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-6012363606339526514?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/6012363606339526514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=6012363606339526514' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6012363606339526514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6012363606339526514'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/10/software-vs-hardware-virtualization.html' title='Software vs. hardware virtualization'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1092138545366944179</id><published>2006-10-29T07:43:00.000+01:00</published><updated>2006-10-29T07:50:20.790+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usa croatia press freedom'/><title type='text'>A small laugh</title><content type='html'>Being a Croatian citizen, I found &lt;a href="http://www.rsf.org/article.php3?id_article=19381"&gt;this news article&lt;/a&gt; funny: according to the "Worldwide Press Freedom Index", USA ended up at 53. place , together with Croatia, Botswana and Tonga.&lt;br /&gt;&lt;br /&gt;What's even more surprising is that some former communist countries, which only recently abandoned communism are extremely high on the list - eg. Czech Republic is at the 5th place.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1092138545366944179?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1092138545366944179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1092138545366944179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1092138545366944179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1092138545366944179'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/10/small-laugh.html' title='A small laugh'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-6061206890854884629</id><published>2006-10-28T08:05:00.000+02:00</published><updated>2006-10-28T08:46:59.574+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virus'/><category scheme='http://www.blogger.com/atom/ns#' term='amd'/><category scheme='http://www.blogger.com/atom/ns#' term='pacifica'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='amd64'/><title type='text'>Anti-virus, virtualization and security paradigm</title><content type='html'>&lt;a href="http://www.eweek.com/article2/0,1895,2040760,00.asp"&gt;This&lt;/a&gt; is a very interesting interview with Joanna Rutkowska, the author of a "Blue Pill" rootkit. She just confirmed an opinion I had for a long time: that AV programs are mostly useless (heck, she doesn't even run one on her WinXP 64-bit machine).&lt;br/&gt;&lt;br/&gt;AV detection is an inherently &lt;b&gt;undecidable&lt;/b&gt; problem; therefore it will &lt;b&gt;always&lt;/b&gt; be possible to create an undetectable virus. Without needing a rootkit that puts the OS into a VM.&lt;br/&gt;&lt;br/&gt;Her wish (quote):&lt;br/&gt;&lt;br/&gt;&lt;cite&gt;"The solution that I would love to have would be based on integrity checking of all the system components, starting from filesystem (digitally signed files), through verifying that all code sections in memory haven't been modified (something I partly implemented in my SVV scanner) and finally checking all the possible "dynamic hooking places" in kernel data sections."&lt;/cite&gt;&lt;br/&gt;&lt;br/&gt;is not realistic (unless the scanner is in the hypervisor) because of the question: How does the scanner ensure &lt;b&gt;its own integrity?&lt;/b&gt; &lt;br/&gt;&lt;br/&gt;What &lt;b&gt;I&lt;/b&gt; would like to see is a &lt;b&gt;paradigm shift&lt;/b&gt; in the security industry. It should put more weight on &lt;b&gt;prevention and damage containment&lt;/b&gt; rather than source code auditing and scanning of programs/memory. Both techniques have been in use for a very long time and they don't work very well.&lt;br/&gt;&lt;br/&gt;My view is that the OS should use the virtualization technology to create extremely light-weight, isolated environments; in the extreme case 1 VM per running application (this requires some heavy engineering to be doable efficiently - eg. sharing of the core OS code between VM instances). Each VM would expose only those parts of OS functionality that is absolutely neccessary for the application to work. Information flow between VMs would be strictly under user control (thus, making the user once more the weakest link in the chain).&lt;br/&gt;&lt;br/&gt;There lie some heavy research questions in my proposal:&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Efficient memory utilization (it would be infeasible to completely copy all of the underlying OS into each VM). Hypervisor would have to be intimately tied to the "guest" OS.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Policies for information flow between VMs.&lt;/li&gt;&lt;li&gt;Efficient history saving (so that user can roll back to some previous VM state).&lt;/li&gt;&lt;li&gt;Interoperability with other VM products like Xen or VMware.&lt;/ol&gt;Regarding the last point, there is an interesting comment in the AMD64 Pacifica manual for the VMRUN instruction under "Instruction intercepts":&lt;br /&gt;&lt;cite&gt;"Note: The current implementation requires that the VMRUN intercept always be set in the VMCB."&lt;/cite&gt;&lt;br /&gt;Is this a hint that, in the future, we might get HW support for &lt;b&gt;recursive virtual machines&lt;/b&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-6061206890854884629?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/6061206890854884629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=6061206890854884629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6061206890854884629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/6061206890854884629'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/10/anti-virus-virtualization-and-security.html' title='Anti-virus, virtualization and security paradigm'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-1514272314343955487</id><published>2006-10-18T20:11:00.000+02:00</published><updated>2006-10-18T20:28:15.518+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Object-orientation</title><content type='html'>I have kind of despised object-oriented programming for a long time now (This was a result of bad experiences on large projects. It actually made things &lt;em&gt;worse&lt;/em&gt; than better.). Until I found &lt;a href="http://www.create.ucsb.edu/~xavier/Thesis/html/node20.html"&gt;this section&lt;/a&gt; in Xavier Amatriain's PhD thesis. It is a nice view on the matter from Kristen Nygaard, one of the "fathers" of object-oriented programming (the other was Ole-Johan Dahl). His view I actually &lt;em&gt;like&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;After reading that section in the thesis and browsing through &lt;a href="http://heim.ifi.uio.no/~kristen/index.html"&gt;Nygaard's&lt;/a&gt; and &lt;a href="http://heim.ifi.uio.no/~olejohan/"&gt;Dahl's&lt;/a&gt; homepage, I felt a bit sad for not getting to meet them in person. Now I respect for OO &lt;em&gt;as it was envisioned&lt;/em&gt; and find it a worthy idea. Misused in practice most of the time.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/programming" rel="tag" class="techtag"&gt;programming&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-1514272314343955487?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/1514272314343955487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=1514272314343955487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1514272314343955487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/1514272314343955487'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/10/object-orientation.html' title='Object-orientation'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-116109876248229925</id><published>2006-10-17T16:21:00.000+02:00</published><updated>2006-10-17T19:33:27.844+02:00</updated><title type='text'>Interfaces and stability</title><content type='html'>These days there is much fuss around (not so) newly discovered bugs in nVidia drivers for Linux. Instead of being happy that a large software vendor has gone to trouble of providing drivers for a nonsignificant portion of their market share, users are whining about the "evil" nature of closed-source binary blobs being downloaded to kernel.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;The importance of the bug is exaggerated. I consider it a bad practice to install any kind of advanced graphic capabilities on servers. As for desktops.. well, a plethora of bugs in other "desktop programs" already exist, this one doesn't make any additional threats beyond the existing ones. And it's simple to fix - don't use the driver.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I've found many complaints that nVidia's drivers are low-quality, unstable or just don't work. (Even today a friend complained to me.)&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;What is most fascinating is that users of these drivers are &lt;em&gt;barking at the wrong tree&lt;/em&gt; (nVidia in this case): the real fault lies on the lack of official kernel APIs which are also ever-changing, to make the situation more difficult. And Linus is even proud of it, replying in the lines of "read the source".&lt;br /&gt;&lt;br /&gt;IMHO, users are in this case a direct victim of such attitude. As I said, Linux is only a secondary platform to nVidia. They have no real financial incentive in keeping up with Linux kernel development. There is no point in constantly keeping behind myriad of Linux kernels with different patches and trying to make drivers work with every single one of them. Why? Because there's no &lt;b&gt;stable kernel API&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Binary-only drivers (if written well, but that's beside the point here) work very well on Solaris, AIX and Win32. I don't know about AIX, but I know that Solaris and Win32 publish official driver development kits (DDK). Every 3rd party manufacturer can write a driver w/o relying on the "current state of flux" of the kernel and be reasonably certain that their investment in the platform is long-term. Something which is not the case with Linux.&lt;br /&gt;&lt;br /&gt;I encourage users to stop buying the "binary blobs are evil"-nonsense and start asking the following question to Linux developers: "Why doesn't Linux have DDK?" If some DDK appears, Linux will &lt;em&gt;maybe&lt;/em&gt; (just maybe) become a more attractive platform for hardware manufacturers. I believe it'd be easier to convince "big players" to write Linux drivers conforming to DDK than to convince them to publish HW specs. Until such time, users are "doomed" to reverse-engineered drivers, "black magic" (like ndiswrapper), buggy (like nVidia's), or simply no drivers at all.&lt;br /&gt;&lt;br /&gt;And I fully understand reluctance of ATI and nVidia to open up specs. Opening up the HW spec can reveal much about internal implementation. And internals are what they are living of. Encourages competition. And in the end, it's the users who benefit of it. (Just imagine ATI copying every feature of nVidia with same performance and comparable price, and vice-versa. They would simply loose any incentive to further develop their chips. At least until a newcomer to the market appears.)&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/linux" rel="tag" class="techtag"&gt;linux&lt;/a&gt; &lt;a href="http://technorati.com/tag/nvidia" rel="tag" class="techtag"&gt;nvidia&lt;/a&gt; &lt;a href="http://technorati.com/tag/drivers" rel="tag" class="techtag"&gt;drivers&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-116109876248229925?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/116109876248229925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=116109876248229925' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/116109876248229925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/116109876248229925'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/10/interfaces-and-stability.html' title='Interfaces and stability'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-116024925157812161</id><published>2006-10-07T21:09:00.000+02:00</published><updated>2006-10-17T17:21:27.881+02:00</updated><title type='text'>Another critique of "free" software zealots</title><content type='html'>&lt;a href="http://www.internetnews.com/dev-news/article.php/3636651"&gt;This&lt;/a&gt; article announces a completely "free" browser named IceWeasel, derived from the Firefox code. &lt;a href="http://www.internetnews.com/dev-news/article.php/3634591"&gt;This&lt;/a&gt; article points out some problems that distributions like Ubuntu and Debian have while distributing Firefox, and why Firefox might not actually be "free".&lt;br /&gt;&lt;br /&gt;In my opinion, they present a &lt;b&gt;skewed&lt;/b&gt; view of the matters, &lt;b&gt;unfairly&lt;/b&gt; picturing the Mozilla corporation as a "bad guy". Quote from the 2nd article: "Though Debian and Debian-derived distributions such as the popular Ubuntu Linux currently include Mozilla Firefox, they do not typically include the actual Mozilla Firefox logo."&lt;br /&gt;&lt;br /&gt;The question to ask is: &lt;b&gt;WHY&lt;/b&gt; do they remove Firefox of its logo? What do they put instead? Logos have extreme importance in todays world, and can be actually said to sell products (look for example at Nike). What kind of &lt;b&gt;ethics&lt;/b&gt; drives these "free" software developers? It seems that not only they want to own the code, they also seem to want to own corporate identity. And be able to remove it from programs at their will, possibly replacing it with their own. That's using hard work of another company to promote themselves. If this is kind of ethics that RMS and FSF stand for, their effort is better renamed to "slave" software.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/fsf" rel="tag" class="techtag"&gt;fsf&lt;/a&gt; &lt;a href="http://technorati.com/tag/gnu" rel="tag" class="techtag"&gt;gnu&lt;/a&gt; &lt;a href="http://technorati.com/tag/mozilla" rel="tag" class="techtag"&gt;mozilla&lt;/a&gt; &lt;a href="http://technorati.com/tag/firefox" rel="tag" class="techtag"&gt;firefox&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-116024925157812161?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/116024925157812161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=116024925157812161' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/116024925157812161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/116024925157812161'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/10/another-critique-of-free-software.html' title='Another critique of &quot;free&quot; software zealots'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14427379.post-115968922261135640</id><published>2006-10-01T08:59:00.000+02:00</published><updated>2006-10-17T17:21:27.797+02:00</updated><title type='text'>The terrorists have won</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=m55kgyApYrY&amp;eurl="&gt;Here&lt;/a&gt; you can see a small video showing violent reactions of &lt;b&gt;very small&lt;/b&gt; quantities (as small as &lt;b&gt;2 grams&lt;/b&gt;) of alkaline metals with water. Imagine sneaking 2 grams of lithium onto a plane, buying a bottle of water on the plane and dropping lithium inside it. KABOOM! Or better yet, drop it into the toilet. Even if it doesn't crash the plane, it'll make an unforgettable experience for the passengers. Are metal detectors sensitive enough to detect 2 grams of any metal? Can the security officer examining your hand-baggage through x-ray notice &lt;b&gt;any object&lt;/b&gt; weighing 2 grams?&lt;br /&gt;&lt;br /&gt;And the new EU airline security regulations, that will take effect from 1.11., forbid carrying more than 1 deciliter of own liquids onto the plane. Who are they trying to protect and from whom? Just to make it clear, I have &lt;b&gt;no intentions&lt;/b&gt; of blowing up planes or killing people. This post is a form of &lt;b&gt;protest&lt;/b&gt;, and a way to point out &lt;b&gt;worthlessness&lt;/b&gt; of most of these security measures. Esp. forbidding liquids. If terrorists want to mass-kill people, they can do it almost undisturbed at check-in waiting lines.&lt;br /&gt;&lt;br /&gt;As a side note, &lt;b&gt;people die&lt;/b&gt;. Nobody lives forever. More people die of cancer than have died in terrorist attakcs since 9/11. Yet much more money is spent on "war on terror" (it'd be better renamed to "war generating terror") and &lt;b&gt;fear-propaganda&lt;/b&gt; about dangers of terrorism than on  people's health. I wonder how many people would stop smoking, eating junk food and began living healthier in general if that much money were invested in anti-smoking and other health campaings.&lt;br /&gt;&lt;br /&gt;IMO, the way to fight terrorism is &lt;b&gt;not&lt;/b&gt; to take away freedom from people and giving it to the government (exactly what is happening now in eg. US) and corporations (eg. airline security bodies). The word "terror" comes from the Latin language, and its original meaning is &lt;b&gt;fear, fright&lt;/b&gt;. Given this meaning, and considering how many people are afraid and frightened, I think it's fairly OK to say that &lt;b&gt;terrorists have won&lt;/b&gt;. Not only are the people afraid, certain governments seem to be pushing their citizens into &lt;b&gt;dictatorship&lt;/b&gt;. Slowly, but surely. (Just look at the new "torture law" in the US.) Exactly the thing they claim to be fighting against.&lt;br /&gt;&lt;br /&gt;So how should we fight terrorism? First, &lt;b&gt;stop being afraid&lt;/b&gt;. (That might not be in the interest of certain presidents, as the fear they themselves have generated by their propaganda is the only thing keeping them in power). Second, we &lt;b&gt;as a society should adapt&lt;/b&gt;. As the human immune system adapts to bacteria and viruses, the society should adapt to terrorism. As with diseases, there will always be random casualties. But random casualties are already all around us (home-accidents, car-accidents, drug overdose, medical mistreatment..); why do we have to single-out terror-accidents (I purposefully use the word accident here!) and make a fuss about them?&lt;br /&gt;&lt;br /&gt;I don't have a recipe for the "adapt" part. People do not want to be killed by terrorists. People do not want to live in fear. People do not want war. I believe that people will cooperate on their own with police to prevent bad things from happening, only if given a chance. But as long as they are afraid, they won't dare take that chance even if given.&lt;br /&gt;&lt;br /&gt;Good examples of the latter reasoning are arrests for attempted attacks in London and Denmark. That's commendable. But stricter security regulations are &lt;b&gt;not&lt;/b&gt; justified. It's like fighting diseases by forbidding bacteria. It doesn't work.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/airline" rel="tag" class="techtag"&gt;airline&lt;/a&gt; &lt;a href="http://technorati.com/tag/security" rel="tag" class="techtag"&gt;security&lt;/a&gt; &lt;a href="http://technorati.com/tag/terrorism" rel="tag" class="techtag"&gt;terrorism&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115968922261135640?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115968922261135640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115968922261135640' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115968922261135640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115968922261135640'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/10/terrorists-have-won.html' title='The terrorists have won'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115944820156212740</id><published>2006-09-28T14:50:00.000+02:00</published><updated>2006-10-17T17:21:27.717+02:00</updated><title type='text'>How do commitees invent?</title><content type='html'>&lt;a href="http://www.melconway.com/research/committees.html"&gt;This article&lt;/a&gt; is still a fascinating read, although it dates back to 1968. It analyzes some fundamental aspects of large systems development, and has some nice insights. Although I didn't read the book "The Mythical Man-Month", reading the article reminded me of the title.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/business" rel="tag" class="techtag"&gt;business&lt;/a&gt; &lt;a href="http://technorati.com/tag/management" rel="tag" class="techtag"&gt;management&lt;/a&gt; &lt;a href="http://technorati.com/tag/organization" rel="tag" class="techtag"&gt;organization&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115944820156212740?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115944820156212740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115944820156212740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115944820156212740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115944820156212740'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/09/how-do-commitees-invent.html' title='How do commitees invent?'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115928770049388069</id><published>2006-09-26T18:14:00.000+02:00</published><updated>2006-10-17T17:21:27.620+02:00</updated><title type='text'>In defense of Tcl</title><content type='html'>I found link to &lt;a href="http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/a9ff5bd741ee1635/a0ca1bd1b865e137"&gt;this article&lt;/a&gt; on reddit, and following the discussion, a link to &lt;a href="http://antirez.com/articoli/tclmisunderstood.html"&gt;this&lt;/a&gt; article. If you're short on time, I recommend you to read the 2nd one.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/tcl" rel="tag" class="techtag"&gt;tcl&lt;/a&gt; &lt;a href="http://technorati.com/tag/programming" rel="tag" class="techtag"&gt;programming&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115928770049388069?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115928770049388069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115928770049388069' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115928770049388069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115928770049388069'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/09/in-defense-of-tcl.html' title='In defense of Tcl'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115911734581742078</id><published>2006-09-24T18:39:00.000+02:00</published><updated>2006-10-17T17:21:27.545+02:00</updated><title type='text'>Category theory</title><content type='html'>I have just finished reading the book &lt;a href="http://www.amazon.com/gp/product/0521478170/104-5148568-3955905?ie=UTF8"&gt;"Conceptual Mathematics: A First Introduction to Categories"&lt;/a&gt;. It is one of the best mathematics books I've read. Not only because the exposed theroy is very interesting (indeed, I've learned deeper meaning of some things that I've taken for granted until now), but also for its exceptional presentation style: concepts are explained through many illustrated examples in an accessible way, without delving into deep abstractions.&lt;br /&gt;&lt;br /&gt;If you want to read an accessible introduction to category theory, I can heartily recommended this book.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/mathematics" rel="tag" class="techtag"&gt;mathematics&lt;/a&gt; &lt;a href="http://technorati.com/tag/books" rel="tag" class="techtag"&gt;books&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115911734581742078?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115911734581742078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115911734581742078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115911734581742078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115911734581742078'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/09/category-theory.html' title='Category theory'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115816690118721487</id><published>2006-09-13T18:51:00.000+02:00</published><updated>2006-10-17T17:21:27.476+02:00</updated><title type='text'>How the questions shape the answers</title><content type='html'>Many things today are advertised based on evidence obtained by polls. &lt;br /&gt;&lt;a href="http://www.wjh.harvard.edu/~jebert/Accessibility/Schwartz_1999.pdf"&gt;This article [PDF]&lt;/a&gt;, although a bit old (dating to 1999), is a fascinating read. Basically, polls can end up with dramatically different results, depending on the way the questions are asked. I'm wondering whether marketeers use these tricks as described in the article when constructing polls that should come out in their favor..&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/psychology" rel="tag"&gt;psychology&lt;/a&gt; &lt;a href="http://technorati.com/tag/marketing" rel="tag"&gt;marketing&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115816690118721487?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115816690118721487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115816690118721487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115816690118721487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115816690118721487'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/09/how-questions-shape-answers.html' title='How the questions shape the answers'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115780533071561584</id><published>2006-09-09T14:10:00.000+02:00</published><updated>2006-10-17T17:21:27.400+02:00</updated><title type='text'>A critical view on upstart</title><content type='html'>There has been lately much fuss about upstart which is supposed to be a single replacement for several daemons: SysV-init, cron, inetd, hotplug...  &lt;a href="http://www.netsplit.com/blog/work/canonical/upstart.html"&gt;This&lt;/a&gt; article is a commercial trying to sell upstart, but somehow it hasn't convinced me.&lt;br /&gt;&lt;br /&gt;The first reason I'm not comfortable with the idea is that UNIX is built on the philosophy "one tool for one job". Every tool should do &lt;em&gt;one&lt;/em&gt; job and do it &lt;em&gt;well&lt;/em&gt;. Merging several different tasks into one program just feels "yucky". It feels "windows-way".&lt;br /&gt;&lt;br /&gt;The second reason is &lt;em&gt;security and stability&lt;/em&gt;. Take for example cron. Even though it has a seemingly simple task, a very popular implementation, vixie-cron, had some security bugs in the past. Now it's going to be reimplemented again.  Not to mention that upstart then becomes a &lt;b&gt;single point of failure&lt;/b&gt;.  Imagine e.g. remotely induced reboot or kernel panic by triggering some bug in upstart's networking code and making it crash. (And since it's running instead of init, it'll bring the whole system down).&lt;br /&gt;&lt;br /&gt;Rest of this post is a dissection of the article cited above.&lt;br /&gt;&lt;br /&gt;The first part of the article is what I call "Problem setting." In trying to explain why SysV init doesn't work today, the autor says &lt;cite&gt;"The simple answer is that our computer has become far more flexible."&lt;/cite&gt; and enumerates certain situations which do not really pose a problem. Most of them are related to hotplugged hardware which is already handled (I see it working nicely on RH and SuSE). He concludes with &lt;cite&gt;"We've been able to hack the existing system to make much of this possible, however the result is chock-full of race conditions and bugs."&lt;/cite&gt; While I admit that there may be some problems, saying "chock-full" would be a &lt;b&gt;blatant exaggeration&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Question 1: Why replace replace everything instead of sticking with the UNIX philosophy and making the current system better?&lt;br /&gt;&lt;br /&gt;The second part is "Design". On the surface it seems sane and well-designed, but take a look at the example list of events; the most striking one for me is "the root filesystem is now writable". He doesn't say &lt;em&gt;who&lt;/em&gt; is supposed to generate these events! This is a &lt;em&gt;shift of responsibility&lt;/em&gt; from getting the startup script ordering right to generating the &lt;em&gt;right&lt;br /&gt;events&lt;/em&gt; at the &lt;em&gt;right time&lt;/em&gt;. Currently we have a small, well-controlled set of dedicated processes, and the upstart system seems to lead towards an explosion of possibilites along at least two dimensions: kinds of events and when they are generated.&lt;br /&gt;&lt;br /&gt;Question 2: Who is generating events? Who is writing &lt;em&gt;event handlers&lt;/em&gt;? If the event handling system is extendible, how is the &lt;em&gt;system integrity&lt;/em&gt; guaranteed (so that the faulty handler doesn't bring the whole upstart process down)? What happens when an event isn't handled because a handler is missing? Is it an error, how is it reported and to whom, is it&lt;br /&gt;simply ignored..?&lt;br /&gt;&lt;br /&gt;The third part is "showing off" or FUD-ing. Showing existing tools in black light in order sell "upstart" better. This is the funniest part! Namely, the author doesn't seem to find good arguments against initng, a dependency-based system, so he resorts to ridiculous argumentation: &lt;cite&gt;"However this means that you need to have goals in mind when you boot the system, you need to have decided that you want gdm to be started in order for it, and its dependencies, to be started."&lt;/cite&gt;, continuing with &lt;cite&gt;"[..initng] It can reorder a fixed set of jobs, but cannot dynamically determine the set of jobs needed for that particular boot."&lt;/cite&gt; and finishing with &lt;cite&gt;"initng starts with a list of goals and works out how to get there, upstart starts with nothing and finds out where it gets to."&lt;/cite&gt;&lt;br /&gt;&lt;br /&gt;Question 3: How is the computer supposed to figure out, &lt;em&gt;even before it is turned on&lt;/em&gt;, what the user has in mind and what should be the target configuration? How could it know that the user on a particular boot wants e.g. xdm to boot, without any user input (e.g. without being given a goal)?&lt;br /&gt;&lt;br /&gt;upstart seems like a solution to an invented (or, to say the least, exaggerated) problem. I hope the author does better job of coding than argumenting its usefulness.&lt;br /&gt;&lt;br /&gt;[From personal experience, dependency-based system is used on FreeBSD, NetBSD, and on Gentoo Linux. It's very easy to maintain, and I like it better than SysV-init style boot process.]&lt;br /&gt;&lt;br /&gt;[Another note: One should distinguish between the init &lt;em&gt;program&lt;/em&gt; and the SysV-init style boot scripts. It is possible to use the (SysV-)init &lt;em&gt;program&lt;/em&gt;, with a dependency-based system. And that's exactly what Gentoo is does.]&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/linux" rel="tag"&gt;linux&lt;/a&gt; &lt;a href="http://technorati.com/tag/upstart" rel="tag"&gt;upstart&lt;/a&gt; &lt;a href="http://technorati.com/tag/ubuntu" rel="tag"&gt;ubuntu&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115780533071561584?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115780533071561584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115780533071561584' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115780533071561584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115780533071561584'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/09/critical-view-on-upstart.html' title='A critical view on upstart'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14427379.post-115756682628579463</id><published>2006-09-06T20:10:00.000+02:00</published><updated>2006-10-17T17:21:27.314+02:00</updated><title type='text'>Deliberate bad engineering</title><content type='html'>Today I discussed a simple problem with a colleague. He wants to design a simple format for representing graphs (nodes and arcs). He said that it's probably going to be XML-based to which I replied that it is a &lt;b&gt;very bad engineering decision&lt;/b&gt; (see below for short explanation why and other choices). He &lt;b&gt;agreed&lt;/b&gt; to that, but he's going with XML anyway. He said that today's IT industry is full of people "falling" for 3-letter acronyms and that he just wants them off his back. So, from the engineering viewpoint, the better solution has lost because of XML's "psychological effect". I imagine something like "It uses XML, therefore it must be good." Bullshit.&lt;br /&gt;&lt;br /&gt;Problem with XML is that it's not very human-friendly and it's complicated to parse. Yes, you have ready made parsers, but you still have to walk the parsed tree. I suggested embedding an interpreted language such as Lua or Tcl. Syntax is definetly more readable than XML, parser is there, the user gets additional power (e.g. programatically constructing the graph instead of tediously enumerating nodes and arcs), and there is no "walking the tree". "Tags" in the scripting language can be bound to C functions and made directly executable, thus constructing the internal graph representation as the graph description is read, w/o subsequent walking of the tree.&lt;br /&gt;&lt;br /&gt;The better solution is obvious, he agrees that it's better, but he's still not going to use it because of the "buzzword effect". How many projects have ended up taking the buzzword route, sometimes to their own detriment (I've myself participated in one such project.. I suggested otherewise, but the management decided to go the "3-letter way", and the project was more than half a year late).&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/software+engineering" rel="tag"&gt;software engineering&lt;/a&gt; &lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;programming&lt;/a&gt; &lt;a href="http://technorati.com/tag/xml" rel="tag"&gt;xml&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115756682628579463?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115756682628579463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115756682628579463' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115756682628579463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115756682628579463'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/09/deliberate-bad-engineering.html' title='Deliberate bad engineering'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115721688521601638</id><published>2006-09-02T19:00:00.000+02:00</published><updated>2006-10-17T17:21:27.246+02:00</updated><title type='text'>An idea for gmail</title><content type='html'>How about revoking emails? Namely, the user sending something to @gmail.com could also send a special "mail revoke" message to revoke his sent mail. If the sender is also a gmail user, he could be offered a simple GUI option. To eliminate potential privacy concerns, the feedback would be either "revoke received" or "trying to revoke invalid message". Any other kind of message would let the sender know whether his mail was already read or not.&lt;br /&gt;&lt;br /&gt;What would be the safe contents of such message? Something like SHA1(sender_address || SHA1(mail_body)) would be sufficient, although crude in the first iteration.&lt;br /&gt;&lt;br /&gt;More importantly, mechanisms to securely "revoke" only own messages are available, why isn't such option already implemented?&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/google" rel="tag"&gt;google&lt;/a&gt; &lt;a href="http://technorati.com/tag/gmail" rel="tag"&gt;gmail&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115721688521601638?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115721688521601638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115721688521601638' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115721688521601638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115721688521601638'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/09/idea-for-gmail.html' title='An idea for gmail'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115704687031255144</id><published>2006-08-31T19:43:00.000+02:00</published><updated>2006-10-17T17:21:27.182+02:00</updated><title type='text'>Rant and new stuff</title><content type='html'>It's a long time since the last post. In the meantime i have been on vacation for 10 days, and at least 1.5 weeks w/o a decent net connection.&lt;br /&gt;&lt;br /&gt;I have continued to work on PKCS#11 support for GnuPG. I just have to say that I don't like how the code looks like. On the one hand, a set of mutually cooperating processes seems like a good idea. On the other, it's almost impossible to debug when writing own extensions, and the lack of &lt;i&gt;documented error-handling protocol&lt;/i&gt; doesn't help either.&lt;br /&gt;&lt;br /&gt;On the up-side, I have written a small C tutorial oriented towards OS development. It is aimed for students enrolled in the OS course taught at University of Oslo and University of Tromsø. You can find it &lt;a href="http://heim.ifi.uio.no/~zvrba/inf3151-tutorial.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/gpg" rel="tag"&gt;gpg&lt;/a&gt; &lt;a href="http://technorati.com/tag/gnupg" rel="tag"&gt;gnupg&lt;/a&gt; &lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;programming&lt;/a&gt; &lt;a href="http://technorati.com/tag/c" rel="tag"&gt;c&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115704687031255144?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115704687031255144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115704687031255144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115704687031255144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115704687031255144'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/08/rant-and-new-stuff.html' title='Rant and new stuff'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115497089378786720</id><published>2006-08-07T19:00:00.000+02:00</published><updated>2006-10-17T17:21:27.118+02:00</updated><title type='text'>Prime sieves</title><content type='html'>&lt;a href="http://www.core-dump.com.hr/?q=node/130"&gt;Here&lt;/a&gt; I have described a relatively simple way to cut down the space requirements for computing the Sieve of Eratosthenes.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/mathematics" rel="tag"&gt;mathematics&lt;/a&gt; &lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;programming&lt;/a&gt; &lt;a href="http://technorati.com/tag/algorithms" rel="tag"&gt;algorithms&lt;/a&gt; &lt;a href="http://technorati.com/tag/primes" rel="tag"&gt;primes&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115497089378786720?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115497089378786720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115497089378786720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115497089378786720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115497089378786720'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/08/prime-sieves.html' title='Prime sieves'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115479102353200446</id><published>2006-08-05T16:59:00.000+02:00</published><updated>2006-10-17T17:21:25.550+02:00</updated><title type='text'>The plague of mailing lists</title><content type='html'>Open source is plagued by mailing lists. If you want to report a bug, how do you do it - well, in most cases it boils down to sending a mail to the project's mailing list. It gets worse: you have to &lt;em&gt;subscribe&lt;/em&gt; before you're allowed to post anything. Subscribing/unsubscribing to a mailing list just to report a bug is a major hassle. Recently I've reported bugs for two different projects[1] directly to authors, and haven't received any reply. Maybe they received it, maybe got eaten by their spam filtering, maybe they just don't have time. &lt;b&gt;Bottom line: I don't care. If they want to receive bug reports from their users, they'd better find some more convenient way. For example, take a look at how gentoo handles it.&lt;/b&gt; Reporting a bug to the gentoo project was very easy, painles and I didn't experience it as a hassle at all.&lt;br /&gt;&lt;br /&gt;[1] One of the projects is Ingo Molnar's linux realtime preemption patch.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/open+source" rel="tag"&gt;open source&lt;/a&gt; &lt;a href="http://technorati.com/tag/linux" rel="tag"&gt;linux&lt;/a&gt; &lt;a href="http://technorati.com/tag/mail" rel="tag"&gt;mail&lt;/a&gt; &lt;a href="http://technorati.com/tag/gentoo" rel="tag"&gt;gentoo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115479102353200446?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115479102353200446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115479102353200446' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115479102353200446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115479102353200446'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/08/plague-of-mailing-lists.html' title='The plague of mailing lists'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115455038261420656</id><published>2006-08-02T22:07:00.000+02:00</published><updated>2006-10-17T17:21:25.480+02:00</updated><title type='text'>Switching to emacs</title><content type='html'>I've pulled emacs 22 from the CVS, compiled it and switched to it from Xemacs. Main reason is that I want to use the org-mode (included with emacs 22) to keep collection of notes. Although it is supposed to work also with xemacs, i haven't been able to byte-compile it; it fails with an obscure error message. I did report a bug to the author, and I'm waiting for an answer now. I have a feeling that xemacs is now lagging behind emacs development, and it has definetely less community support on freenode irc. Moreover, it seems that most packages are first developed for emacs, and only then (maybe) ported to xemacs. &lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/emacs" rel="tag"&gt;emacs&lt;/a&gt; &lt;a href="http://technorati.com/tag/xemacs" rel="tag"&gt;xemacs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115455038261420656?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115455038261420656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115455038261420656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115455038261420656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115455038261420656'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/08/switching-to-emacs.html' title='Switching to emacs'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115358640026548469</id><published>2006-07-23T15:30:00.000+02:00</published><updated>2006-10-17T17:21:25.414+02:00</updated><title type='text'>C++ std::vector problems</title><content type='html'>Inspired by a usenet discussion, I have described some problems in the current C++ definition and implementation of allocators and vectors. You can read more about it &lt;a href="http://www.core-dump.com.hr/?q=node/129"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/C++" rel="tag"&gt;C++&lt;/a&gt; &lt;a href="http://technorati.com/tag/STL" rel="tag"&gt;STL&lt;/a&gt; &lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;programming&lt;/a&gt; &lt;a href="http://technorati.com/tag/linux" rel="tag"&gt;linux&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115358640026548469?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115358640026548469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115358640026548469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115358640026548469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115358640026548469'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/07/c-stdvector-problems.html' title='C++ std::vector problems'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115342706718345125</id><published>2006-07-20T21:40:00.000+02:00</published><updated>2006-10-17T17:21:25.351+02:00</updated><title type='text'>Few links</title><content type='html'>Few days ago I stumbled upon &lt;a href="http://scienceblogs.com/goodmath"&gt;this&lt;/a&gt; very nice and high-quality blog about math. &lt;a href="http://www.jjj.de"&gt;This&lt;/a&gt; is another useful link with the FXT book and algorithm library. I'm amazed what some people generously give out for free.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/mathematics" rel="tag"&gt;mathematics&lt;/a&gt; &lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;programming&lt;/a&gt; &lt;a href="http://technorati.com/tag/books" rel="tag"&gt;books&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115342706718345125?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115342706718345125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115342706718345125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115342706718345125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115342706718345125'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/07/few-links.html' title='Few links'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115315905923396580</id><published>2006-07-17T19:52:00.000+02:00</published><updated>2006-10-17T17:21:25.289+02:00</updated><title type='text'>Another GPL rant</title><content type='html'>You might already know that I'm less than a fan of GPL. &lt;a href="http://www.pycs.net/bbum/2004/3/4"&gt;Here&lt;/a&gt; is another view on the issue.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/GNU" rel="tag"&gt;GNU&lt;/a&gt; &lt;a href="http://technorati.com/tag/GPL" rel="tag"&gt;GPL&lt;/a&gt; &lt;a href="http://technorati.com/tag/FSF" rel="tag"&gt;FSF&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115315905923396580?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115315905923396580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115315905923396580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115315905923396580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115315905923396580'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/07/another-gpl-rant.html' title='Another GPL rant'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115183195882787248</id><published>2006-07-02T11:12:00.000+02:00</published><updated>2006-10-17T17:21:25.224+02:00</updated><title type='text'>New stuff...</title><content type='html'>Soon I'm traveling to Portugal to attend the &lt;a href="http://icdcs2006.di.fc.ul.pt/"&gt;ICDCS 2006&lt;/a&gt; conference. Related to this, I have put some new stuff on &lt;a href="http://www.core-dump.com.hr"&gt;core-dump&lt;/a&gt;, my web site.&lt;br /&gt;&lt;br /&gt;Now I'm a bit in between.. Maintaining a blog at blogger, and putting "more serious" stuff at core-dump. I've been thinking to continue writing the blog at core-dump, but somehow it doesn't feel "right". I like to keep the distinction between "serious" and "not serious" stuff. Any comments on that?&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/rumblings" rel="tag"&gt;rumblings&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115183195882787248?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115183195882787248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115183195882787248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115183195882787248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115183195882787248'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/07/new-stuff.html' title='New stuff...'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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-14427379.post-115160329710945714</id><published>2006-06-29T19:37:00.000+02:00</published><updated>2006-10-17T17:21:25.153+02:00</updated><title type='text'>Dangerous Javascript</title><content type='html'>&lt;a href="http://www2006.org/programme/files/xhtml/17/xhtml/fp17-atterer.html"&gt;This article&lt;/a&gt;, titled "Knowing the User's Every Move...", is worrying. From the abstract: "&lt;cite&gt;In this paper, we investigate how detailed tracking of user interaction can be monitored using standard web technologies.&lt;/cite&gt;" In short, they have developed some JavaScript code (which runs in Netscape, Konqueror/Safari, IE and Opera) as well as proxy which transparently injects that code into page HTML before it is delivered to the client. This code enables detailed tracking of users actions including mouse movements, clicks and key presses.&lt;br /&gt;&lt;br /&gt;This is particularly worrysome, as this mechanism can very easily be abused. Moreover, the current controls in, for example, Opera 9 are very inadequate. If I disable Javascript, then I can't use advanced AJAX applications, such as Gmail. On the other hand, there is no possibility to have Javascript enabled only for "trusted sites" stored in some list, and administered by the user.&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="http://technorati.com/tag/privacy" rel="tag"&gt;privacy&lt;/a&gt; &lt;a href="http://technorati.com/tag/javascript" rel="tag"&gt;javascript&lt;/a&gt; &lt;a href="http://technorati.com/tag/security" rel="tag"&gt;security&lt;/a&gt; &lt;a href="http://technorati.com/tag/browsers" rel="tag"&gt;browsers&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14427379-115160329710945714?l=zwillow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zwillow.blogspot.com/feeds/115160329710945714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14427379&amp;postID=115160329710945714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115160329710945714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14427379/posts/default/115160329710945714'/><link rel='alternate' type='text/html' href='http://zwillow.blogspot.com/2006/06/dangerous-javascript.html' title='Dangerous Javascript'/><author><name>zvrba</name><uri>http://www.blogger.com/profile/08806965334872601252</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>
