<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkMMQ3o_cSp7ImA9WhVXFUk.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161</id><updated>2012-04-16T04:54:42.449+01:00</updated><category term="floating point" /><category term="merging" /><category term="algorithmics" /><category term="postgresql" /><category term="threads" /><category term="python" /><category term="pitfall" /><category term="rails" /><category term="programming" /><category term="sqlite" /><category term="optimization" /><category term="probability theory" /><category term="parallelism" /><category term="system architecture" /><category term="arithmetics" /><category term="bitwiese" /><category term="textmate" /><category term="distutils" /><category term="machine learning" /><category term="bash" /><category term="c++" /><category term="gotcha" /><category term="OpenMP" /><category term="databases" /><title>Bitwiese</title><subtitle type="html">First, computer science is not about computers. Second, computer science is not a science.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.bitwiese.de/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.bitwiese.de/" /><author><name>Manuel</name><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>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Bitwiese" /><feedburner:info uri="bitwiese" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEAFQnw9eip7ImA9WxVaF0Q.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-1262178048727792070</id><published>2009-04-15T12:53:00.004+01:00</published><updated>2009-04-15T12:58:33.262+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-15T12:58:33.262+01:00</app:edited><title>When stochastic search beats direct methods</title><summary>The central problem of reinforcement learning is to fit the parameters of an
agent's policy in order to make the agent chose "good" decisions according to
some unknown objective.

Let's consider a very simple case. We have an MDP which is basically stateless.
So to say, all the world is doing is to map the actions of an agent directly to
a reward. Consider this function to be a mixture of two </summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/1262178048727792070/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=1262178048727792070" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/1262178048727792070?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/1262178048727792070?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/hOYVX-ajHbo/when-stochastic-search-beats-direct.html" title="When stochastic search beats direct methods" /><author><name>Justin</name><uri>http://www.blogger.com/profile/04972102120598633110</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://3.bp.blogspot.com/_1y4tsNIQGDk/SeXLGAFjjrI/AAAAAAAAAiM/Bxp7TeGrM1s/s72-c/gauss.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.bitwiese.de/2009/04/when-stochastic-search-beats-direct.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8HSXozfip7ImA9WxVXFUw.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-4615001301968181548</id><published>2009-02-13T09:01:00.003Z</published><updated>2009-02-13T09:20:38.486Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-13T09:20:38.486Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bash" /><category scheme="http://www.blogger.com/atom/ns#" term="gotcha" /><title>Bash Job Management Essentials</title><summary>Did you ever wish your program had a pause button? I did so regularly.

I regularly have to do lengthy calculations, for example for evaluating some heuristics for an optimization problem such as Maximum Independent Set or Matchings.

A typical program could look like this:

for all benchmark graphs G:
  for all algorithm variants A:
    for k in [2, 4, 8, ..., 128]:
      Execute A on G with the</summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/4615001301968181548/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=4615001301968181548" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/4615001301968181548?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/4615001301968181548?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/pkITiVRaHXU/bash-job-management-essentials.html" title="Bash Job Management Essentials" /><author><name>Manuel</name><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><feedburner:origLink>http://www.bitwiese.de/2009/02/bash-job-management-essentials.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMHRn4yfyp7ImA9WxRaFEg.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-3396625733080035153</id><published>2008-12-16T18:15:00.008Z</published><updated>2008-12-16T18:33:57.097Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-16T18:33:57.097Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="pitfall" /><category scheme="http://www.blogger.com/atom/ns#" term="distutils" /><title>Pitfall with distutils + OpenGL on Mac Os X</title><summary>This is mainly here as a reminder to myself and anyone else who might fall into this. The scenario is as follows:

I want to compile a C Python extension that uses OpenGL on Mac Os X. My setup.py file looks something like this:
#!/usr/bin/env python2.5

from distutils.core import setup, Extension

module1 = Extension('foo',
sources=['foo.c'],
extra_link_args=['-framework OpenGL'])

setup(
name='</summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/3396625733080035153/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=3396625733080035153" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/3396625733080035153?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/3396625733080035153?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/T_JxSg_eVh4/pitfall-with-distutils-opengl-on-mac-os.html" title="Pitfall with distutils + OpenGL on Mac Os X" /><author><name>Manuel</name><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><feedburner:origLink>http://www.bitwiese.de/2008/12/pitfall-with-distutils-opengl-on-mac-os.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUCRXc_eip7ImA9WxZRGU0.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-5160690963875043687</id><published>2008-02-13T10:26:00.009Z</published><updated>2008-02-13T12:54:24.942Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-13T12:54:24.942Z</app:edited><title>Gaining speed with Weave</title><summary>Python is slow in terms of execution speed. Period. It is fast enough for most tasks out there, but when it comes to number crunching or manipulation of lots of objects, you can hear the interpreter grind its teeth.

Python advocates have a lot to say on how to handle these situations. The most common is "you can always rewrite that particular part of code in C". There are other recommendations: </summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/5160690963875043687/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=5160690963875043687" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/5160690963875043687?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/5160690963875043687?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/h5PrWYhQjs4/gaining-speed-with-weave.html" title="Gaining speed with Weave" /><author><name>Justin</name><uri>http://www.blogger.com/profile/04972102120598633110</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>5</thr:total><feedburner:origLink>http://www.bitwiese.de/2008/02/gaining-speed-with-weave.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYASHk8fip7ImA9WB9SEUU.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-2608104458176870787</id><published>2007-09-30T22:09:00.000+01:00</published><updated>2007-09-30T22:35:49.776+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-30T22:35:49.776+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenMP" /><title>C++ - Beware What Lurks Beneath The Surface</title><summary>
C++ is a great programming language. It allows you to mix the most important programming paradigms like object orientation as well as generic, functional and structured programming. Another nice aspect is that the compilers are efficient and with some black template magick, you get some of these things for almost free at run time.



However, one of the greatest features of C++ can hurt you: </summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/2608104458176870787/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=2608104458176870787" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/2608104458176870787?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/2608104458176870787?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/Lwu_Rw1GGKA/c-beware-what-lurks-beneath-surface.html" title="C++ - Beware What Lurks Beneath The Surface" /><author><name>Manuel</name><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><feedburner:origLink>http://www.bitwiese.de/2007/09/c-beware-what-lurks-beneath-surface.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8NQ346fSp7ImA9WB9TGEo.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-3305309862993415514</id><published>2007-09-26T15:46:00.000+01:00</published><updated>2007-09-27T08:24:52.015+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-27T08:24:52.015+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="parallelism" /><category scheme="http://www.blogger.com/atom/ns#" term="threads" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Ruby's Multithreading: On Processes And Threads</title><summary>Note that I made a grave error of thinking before writing this article: I forgot the copy-on-write page sharing of modern Unices. I added two paragraphs to this article that should clarify the point. Thanks for your comment, Alex.

Please note that I do not want to critizize Jason here. I am simply picking up this point from his presentation as a motivation of a topic that I wanted to write about</summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/3305309862993415514/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=3305309862993415514" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/3305309862993415514?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/3305309862993415514?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/6uLX5_jMMNI/on-processes-and-threads.html" title="Ruby's Multithreading: On Processes And Threads" /><author><name>Manuel</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>11</thr:total><feedburner:origLink>http://www.bitwiese.de/2007/09/on-processes-and-threads.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04NQXw8eSp7ImA9WhRSGEo.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-3382377832596364886</id><published>2007-08-07T22:08:00.003+01:00</published><updated>2011-11-21T12:53:10.271Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-21T12:53:10.271Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="algorithmics" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenMP" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="system architecture" /><title>Hitting The Memory Wall</title><summary>Acknowledgement (2011-11-21): You should search Google for your blog titles before hitting "publish". When I wrote this article some years back, "hitting the memory wall" was just a term I had read some time earlier and internalized for myself as a standing term, like folklore. This was wrong. There is a paper from 1995 by WA Wulf and SA McKee with the same title: Hitting the memory wall that I </summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/3382377832596364886/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=3382377832596364886" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/3382377832596364886?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/3382377832596364886?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/UyoLUAdPyBU/hitting-memory-wall.html" title="Hitting The Memory Wall" /><author><name>Manuel</name><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>8</thr:total><feedburner:origLink>http://www.bitwiese.de/2007/08/hitting-memory-wall.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEDSH04cCp7ImA9WB9TGEw.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-1542378030178280978</id><published>2007-06-03T23:01:00.000+01:00</published><updated>2007-09-26T15:41:19.338+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-26T15:41:19.338+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="algorithmics" /><category scheme="http://www.blogger.com/atom/ns#" term="merging" /><category scheme="http://www.blogger.com/atom/ns#" term="optimization" /><title>Highly Efficient 4 Way Merging</title><summary>Acknowledgements: This article is based on the work of Peter Sanders and Roman Dementiev. You can find the full source code presented here in their STXXL library (STL library for large data structures), Peter Sanders' paper and the accompanying source code.

Warning: If you are of sensitive nature either regarding


  computer science theory
  highly practical program optimization


then I </summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/1542378030178280978/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=1542378030178280978" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/1542378030178280978?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/1542378030178280978?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/PG_4gz7w3PI/highly-efficient-4-way-merging.html" title="Highly Efficient 4 Way Merging" /><author><name>Manuel</name><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>10</thr:total><feedburner:origLink>http://www.bitwiese.de/2007/06/highly-efficient-4-way-merging.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UMQ30zfyp7ImA9WB5TEEQ.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-3536150194950877024</id><published>2007-05-17T15:46:00.000+01:00</published><updated>2007-05-25T12:08:02.387+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-05-25T12:08:02.387+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="probability theory" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="machine learning" /><title>Simulation of Markov Decision Processes with enhanced generators in Python (with blood)</title><summary>The language war will always go on and I consider myself as someone who has to promote the Python programming language no matter what happens (even though I know that there is no silver bullet.) Thus, I do have to use every opportunity to show the world how easy it is to connect formalisms of high scientific importance with not-so-important-but-still-cool language features.

Whatever.

Markov </summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/3536150194950877024/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=3536150194950877024" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/3536150194950877024?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/3536150194950877024?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/91ocKw4OQoc/simulation-of-markov-decision-processes.html" title="Simulation of Markov Decision Processes with enhanced generators in Python (with blood)" /><author><name>Justin</name><uri>http://www.blogger.com/profile/04972102120598633110</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><feedburner:origLink>http://www.bitwiese.de/2007/05/simulation-of-markov-decision-processes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IFRn86eyp7ImA9WBFUEEw.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-9000369498453122376</id><published>2007-04-19T22:24:00.000+01:00</published><updated>2007-04-19T22:51:57.113+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-04-19T22:51:57.113+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="textmate" /><title>Ignoring folders with TODO Bundle in TextMate</title><summary>TextMate's TODO bundle lets you keep track of the TODOs in your projects. You can mark a line to show up in the TODO list with FIXME, TODO or CHANGED. The following two images show a text file with these keywords and the resulting TODO list.





The only problem is that if you keep a copy of Rails in vendor/, then the TODO plugin will also show the items in Rails (or any other external libraries</summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/9000369498453122376/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=9000369498453122376" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/9000369498453122376?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/9000369498453122376?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/mic0mBdbqzM/ignoring-folders-with-todo-bundle-in.html" title="Ignoring folders with TODO Bundle in TextMate" /><author><name>Manuel</name><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://bp0.blogger.com/_yOTLe0nH4qo/Rifgpzc4GMI/AAAAAAAAAAM/IIcjNjc_XE4/s72-c/TodoFile.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.bitwiese.de/2007/04/ignoring-folders-with-todo-bundle-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUFQX48fSp7ImA9WBFVE0w.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-1772175143221037390</id><published>2007-04-11T18:53:00.000+01:00</published><updated>2007-04-11T19:30:10.075+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-04-11T19:30:10.075+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="arithmetics" /><category scheme="http://www.blogger.com/atom/ns#" term="gotcha" /><category scheme="http://www.blogger.com/atom/ns#" term="floating point" /><title>The Joys Of Floating Point Numbers</title><summary>Sometimes, floating point numbers are the thing that futile hours of programming are made of. Whether they come as 32, 64 or any other precision you want, they can truly give you unnecessary and unexpected work if you do not use them correctly. 

The problem I stumbled over yesterday was the problem of rounding errors.

Consider the following C snippet

double pi = </summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/1772175143221037390/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=1772175143221037390" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/1772175143221037390?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/1772175143221037390?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/2A90tsRgZ9k/joys-of-floating-point-numbers.html" title="The Joys Of Floating Point Numbers" /><author><name>Manuel</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total><feedburner:origLink>http://www.bitwiese.de/2007/04/joys-of-floating-point-numbers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYFQn45fyp7ImA9WBFVE0w.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-8768744272022577089</id><published>2007-04-07T15:34:00.000+01:00</published><updated>2007-04-11T18:55:13.027+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-04-11T18:55:13.027+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="databases" /><category scheme="http://www.blogger.com/atom/ns#" term="sqlite" /><category scheme="http://www.blogger.com/atom/ns#" term="gotcha" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>SQLite gotcha</title><summary>SQLite is great. No, really, I do mean it. If you ever need to work on structured data and editing it from the outside is a must, then SQLite is worth checking out and might be a superior choice to XML and will be a superior choice to your own proprietary format.

I cannot speak about performance - there are some outdated claims that SQLite is faster than postgres and mysql for the most common </summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/8768744272022577089/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=8768744272022577089" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/8768744272022577089?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/8768744272022577089?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/wUbTM2aC4Yg/sqlite-trapdoor.html" title="SQLite gotcha" /><author><name>Justin</name><uri>http://www.blogger.com/profile/04972102120598633110</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><feedburner:origLink>http://www.bitwiese.de/2007/04/sqlite-trapdoor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8AQXs7fip7ImA9WBFWGEU.&quot;"><id>tag:blogger.com,1999:blog-6798371251264429161.post-56703279495771049</id><published>2007-04-06T20:38:00.000+01:00</published><updated>2007-04-06T20:47:20.506+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-04-06T20:47:20.506+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bitwiese" /><title>First Post</title><summary>Obviously, this is the first entry of the shining new Bitwiese Weblog. Feel warmly welcomed by these few bytes which propably travelled kilometre over kilometre from here to Blogger's servers and back again to you.

This weblog is brought to you by Justin and me, Manuel. We hope to publish information related to the following
programmingcomputers in the widest sensecomputer science (prepare for </summary><link rel="replies" type="application/atom+xml" href="http://www.bitwiese.de/feeds/56703279495771049/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6798371251264429161&amp;postID=56703279495771049" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/56703279495771049?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6798371251264429161/posts/default/56703279495771049?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Bitwiese/~3/pxD_eWm-OLg/first-post.html" title="First Post" /><author><name>Manuel</name><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><feedburner:origLink>http://www.bitwiese.de/2007/04/first-post.html</feedburner:origLink></entry></feed>
