<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dani Berg</title>
	<atom:link href="http://daniberg.com/home/feed/" rel="self" type="application/rss+xml" />
	<link>http://daniberg.com/home</link>
	<description>Angels like Kittens</description>
	<lastBuildDate>Mon, 30 Aug 2010 05:10:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Great old Emacs Manual in Info mode</title>
		<link>http://daniberg.com/home/2010/08/great-old-emacs-manual-in-info-mode/</link>
		<comments>http://daniberg.com/home/2010/08/great-old-emacs-manual-in-info-mode/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 05:10:17 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=852</guid>
		<description><![CDATA[I realized this morning that I read all of the emacs manual in Info mode. I read a small section every morning for a few weeks. Info mode is a really neat format and it solves the problems I have reading digital books. In fact, I gave up reading digital books a long time ago. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://daniberg.com/home/wp-content/uploads/2010/08/dino.jpg"><img class="alignleft size-medium wp-image-873" title="dino cake" src="http://daniberg.com/home/wp-content/uploads/2010/08/dino-300x225.jpg" alt="" width="300" height="225" /></a>I realized this morning that I read all of the emacs manual in Info mode. I read a small section every morning for a few weeks. Info mode is a really neat format and it solves the problems I have reading digital books. In fact, I gave up reading digital books a long time ago.</p>
<p>The main problem with reading a PDF book is navigation. It&#8217;s just plain hard to read a paragraph mentioning a table in Appendix A which is located in the end of the book. Now, in Info mode it&#8217;s not only easy but you have all emacsy ways to help you &#8216;walk&#8217; around the text.</p>
<p>A PDF is also inconvenient helping my brain to map subjects to a particular physical area in a book. I know that what I&#8217;m looking for is in the middle of the red hard cover book in my shelf. The author mentions what a register RAX is right below the figure showing a leprechaun in the right top of the page.</p>
<p>I wish I could read more books in Info mode like the emacs manual and now the Elisp reference, CC-Mode, Org-Mode and alike. Ipads and Kindles just don&#8217;t work for me. They are a good fit for novels though. I&#8217;ll keep buying dead trees.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2010/08/great-old-emacs-manual-in-info-mode/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04</title>
		<link>http://daniberg.com/home/2010/08/ubuntu-10-04/</link>
		<comments>http://daniberg.com/home/2010/08/ubuntu-10-04/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 04:53:49 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=817</guid>
		<description><![CDATA[I&#8217;ve been running Ubuntu 10.04 on my laptop (VAIO VPCCW) since its release. I had some problems before with a release but this time things were a little more difficult. I don&#8217;t know what I was thinking but I tried to use the Update Manager and give it another chance since it never worked before [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://daniberg.com/home/wp-content/uploads/2010/08/penny.jpg"><img src="http://daniberg.com/home/wp-content/uploads/2010/08/penny-168x300.jpg" alt="" title="penny" width="168" height="300" class="alignleft size-medium wp-image-848" /></a>I&#8217;ve been running Ubuntu 10.04 on my laptop (VAIO VPCCW) since its release. <a href="http://daniberg.com/home/2009/04/ubuntu-wireless-nightmare-is-gone/">I had some problems before with a release</a> but this time things were a little more difficult.</p>
<p>I don&#8217;t know what I was thinking but I tried to use the Update Manager and give it another chance since it never worked before for me. After the download was complete the system rebooted but nothing happened. Black screen of death?! Bummer, didn&#8217;t work. Fresh new install and the problem persisted.</p>
<p>Turns out Nvidia graphics and the resolution of 1366&#215;768 don&#8217;t work out the box. The solution was the alternate installer. After the installation I manually included the edid file from the laptop&#8217;s monitor into xorg.conf before I could see any graphics. I mentioned something related to that <a href="http://daniberg.com/home/2009/12/ubuntu-9-10/">here</a> and <a href="http://daniberg.com/home/2010/02/2-monitors-on-karmic-koala-64/">here</a>.</p>
<p>Another annoying video related problem is the brightness control. It&#8217;s broken since 9.10. Well, truth must be told, now at least the animation works when you increase or decrease the brightness using the keyboard. Still, no effect. I have to use nvidia x server settings to avoid burning my retinas.</p>
<p>Other than that I just had to tweak xorg.conf to decrease the sensibility of the mouse tracking pad. You could double click by just raising your voice next to the keyboard.</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;"><span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;InputDevice&quot;</span>
    ...
    <span style="color: #990000;">Option</span> <span style="color: #0000ff;">&quot;MaxTapTime&quot;</span> <span style="color: #0000ff;">&quot;230&quot;</span>
    <span style="color: #990000;">Option</span> <span style="color: #0000ff;">&quot;MaxTapMove&quot;</span> <span style="color: #0000ff;">&quot;230&quot;</span>
<span style="color: #b1b100;">EndSection</span></pre></div></div>

<p>I want my money back <img src='http://daniberg.com/home/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2010/08/ubuntu-10-04/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>gnu make</title>
		<link>http://daniberg.com/home/2010/06/gnu-make/</link>
		<comments>http://daniberg.com/home/2010/06/gnu-make/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 04:32:57 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=799</guid>
		<description><![CDATA[Whenever I can I try to read Chromium&#8216;s source code. Even if all I have are 40 minutes between Sunnyvale and Millbrae. Poking Chromium&#8217;s source code is an educational hobby of mine so I am in no rush and I take a lot of detours diving into subjects related to the project. The most recent [...]]]></description>
			<content:encoded><![CDATA[
<p>Whenever I can I try to read <a href="http://code.google.com/chromium/" target="_blank">Chromium</a>&#8216;s source code. Even if all I have are 40 minutes between Sunnyvale and Millbrae. Poking Chromium&#8217;s source code is an educational hobby of mine so I am in no rush and I take a lot of detours diving into subjects related to the project.</p>
<p>The most recent example was <a href="http://www.gnu.org/software/make/" target="_blank">GNU Make</a>. When I first started reading the Makefile generated by <a href="http://www.chromium.org/developers/how-tos/depottools/gclient">gclient</a> I got stuck. The Makefile dumps almost 30MB of instructions to compile the project and some lines of code were a complete mystery to me.</p>
<p>The usual approach. Order a used (if possible) book from Amazon. <a href="http://www.amazon.com/gp/product/0596006101?ie=UTF8&#038;tag=d024-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0596006101">Managing Projects with GNU Make (Nutshell Handbooks)</a><img src="http://www.assoc-amazon.com/e/ir?t=d024-20&#038;l=as2&#038;o=1&#038;a=0596006101" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Robert Mecklenburg is a really good book. I just skipped the Java chapter.</p>
<p>I kept switching between reading the book and Chromium&#8217;s Makefile. Being confronted by a real (and big) working example of a Makefile pushed me harder to go through the entire book.</p>
<p>I&#8217;ve been writing quite a few Makefiles since then. Even for situations were GNU Make is not appropriate. After all, when you are a hammer everything looks like a nail.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2010/06/gnu-make/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coders at Work</title>
		<link>http://daniberg.com/home/2010/06/coders-at-work/</link>
		<comments>http://daniberg.com/home/2010/06/coders-at-work/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 22:14:32 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=783</guid>
		<description><![CDATA[Sometimes I need to re-charge the batteries and let my brain rest. I guess. I was receiving messages from my body (brain, soul and who knows what else) to take some rest. By rest I mean taking a break after regular work time. No side projects or books/manuals that need focus and extra attention. Signing [...]]]></description>
			<content:encoded><![CDATA[
<p>Sometimes I need to re-charge the batteries and let my brain rest. I guess. I was receiving messages from my body (brain, soul and who knows what else) to take some rest. By rest I mean taking a break after regular work time. No side projects or books/manuals that need focus and extra attention.</p>
<p>Signing up for the 24 hour gym was the first step. The old stuff, get back to gym and deal with muscular pain for a week. It&#8217;s interesting that you can exercise in the gym without an instructor here in the US. You see a lot of folks that will most likely hurt themselves. I&#8217;m not into sports at all but you have to know at least the basics to lift weight.</p>
<p>I digress. I was looking for a tech novel to entertain myself during the approximately 40 minutes between Sunnyvale and Millbrae and found Coders At Work by Peter Seibel. The book advertises itself as &#8220;<em>interviews with some of the top programmers of our times</em>&#8220;.</p>
<p>Informative, entertaining and inspiring! Highly recommended.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2010/06/coders-at-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Restful web services</title>
		<link>http://daniberg.com/home/2010/06/restful-web-services/</link>
		<comments>http://daniberg.com/home/2010/06/restful-web-services/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 14:49:42 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=766</guid>
		<description><![CDATA[This one has been laying on my desk for quite too long. Time to make a post about it and get it back to the shelf. I first started reading Restful Web Services by Leonard Richardson &#38; Sam Ruby one year ago. April 2009. I know that because of the Amazon receipt. I read the [...]]]></description>
			<content:encoded><![CDATA[
<p>This one has been laying on my desk for quite too long. Time to make a post about it and get it back to the shelf.</p>
<p>I first started reading Restful Web Services by Leonard Richardson &amp; Sam Ruby one year ago. April 2009. I know that because of the Amazon receipt.</p>
<p>I read the first chapters and wondered why I didn&#8217;t learn about Restful Web Services before. Simplicity is the key. Suddenly all XML-RPC code that I wrote in the past started to smell really bad.</p>
<p>The problem is that after the first chapters I probably got bored or the book could have been shorter. In any case, I just finished reading it this past April. A year later! It is a good book though, even if you just read the first few chapters.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2010/06/restful-web-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working for cupid</title>
		<link>http://daniberg.com/home/2010/05/working-for-cupid/</link>
		<comments>http://daniberg.com/home/2010/05/working-for-cupid/#comments</comments>
		<pubDate>Sun, 02 May 2010 23:03:58 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=740</guid>
		<description><![CDATA[These past months have been crazy and brought lots of changes to my life. Proof of this is that I let more than a month go by without a single post. Let me try to fix this with this short entry. I left my day job in Brazil and joined a talented team in Millbrae. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://daniberg.com/home/wp-content/uploads/2010/05/P1060358.jpg"><img class="alignleft size-medium wp-image-762" title="Ibanez" src="http://daniberg.com/home/wp-content/uploads/2010/05/P1060358-225x300.jpg" alt="" width="225" height="300" /></a>These past months have been crazy and brought lots of changes to my life. Proof of this is that I let more than a month go by without a single post. Let me try to fix this with this short entry.</p>
<p>I left my day job in Brazil and joined a talented team in Millbrae.</p>
<p>I thought this job transition was going to be smoother since I&#8217;ve been planning this for a while. Heck, I just needed to finish a few side projects. Turns out 2 members of the team in Brazil quit with a short notice and we even had a hard disk failure in one of the servers. A few thousand clients went nuts while we restored the services. The universe has sense of humor.</p>
<p>Well, routine is now settling in and I noticed that I actually missed commuting. I should have counted how many books I read in the bus/subway when I was living in São Paulo. Ha! Now I have this odd habit of adding a post whenever I finish reading a book. Anyways, I&#8217;m taking the train to Millbrae and I can calmly read not only technical books but my zen stuff too. Rhythm is important.</p>
<p>I&#8217;m having a blast. The team is friendly and culturally diverse and I&#8217;m switching between implementing new features and reading the code base. I should also mention that I&#8217;m ingesting a significant amount of caffeine because I just can&#8217;t resist the fridge.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2010/05/working-for-cupid/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mailserver and Postfix</title>
		<link>http://daniberg.com/home/2010/02/mailserver-and-postfix/</link>
		<comments>http://daniberg.com/home/2010/02/mailserver-and-postfix/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 06:16:41 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=710</guid>
		<description><![CDATA[In order to keep this diary blog updated I should add a small note about mail servers. I&#8217;m still doing some sys admin work for about 2 hours a day. After a lot of experimentation I finally have one mail server up and running with Postfix and Dovecot. Besides the official documentation I usually try to [...]]]></description>
			<content:encoded><![CDATA[
<p>In order to keep this <del datetime="2010-02-23T01:29:38+00:00">diary</del> blog updated I should add a small note about mail servers. I&#8217;m still doing some sys admin work for about 2 hours a day.</p>
<p>After a lot of experimentation I finally have one mail server up and running with <a href="http://www.postfix.org/">Postfix</a> and <a href="http://www.dovecot.org/">Dovecot</a>.</p>
<p>Besides the <a href="http://www.postfix.org/documentation.html">official documentation</a> I usually try to read at least one book about the tools I&#8217;m working with. <a href="http://my.safaribooksonline.com/">Safari</a> led me to <strong>Postfix: The Definitive Guide</strong> by <em>Kyle D. Dent</em>. The book gives a good overview on how Postfix works and goes through several different configurations that you may be interested in implementing. The only problem is that the book is outdated (December 2003) &#8211; that&#8217;s last decade!</p>
<p>Everything seems to be running ok but running and maintaining a mail server is a lot of work. There are just so many details and configurations that can go wrong. Performance, Security, Authentication, Disk space, Spam, Anti-viruses&#8230; The list is huge. I&#8217;m looking forward to meeting the next sys admin to join our team.</p>
<p>I&#8217;m working on a project that offers domains and email accounts to the final client so it&#8217;s been a good experience to understand how mail and <a href="http://daniberg.com/home/2010/02/wearing-a-sysadmin-hat/">dns</a> servers work. We have a lot work ahead!</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2010/02/mailserver-and-postfix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wearing a sysadmin hat</title>
		<link>http://daniberg.com/home/2010/02/wearing-a-sysadmin-hat/</link>
		<comments>http://daniberg.com/home/2010/02/wearing-a-sysadmin-hat/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 05:39:38 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[dns]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=687</guid>
		<description><![CDATA[In the past weeks I&#8217;ve been doing some temporary sysadmin work for my day job and this new role extended to my night-time job. Yeah, I joined a startup but I&#8217;ll talk more about that some other day. I had to move one of the web services we offer in my regular job to its [...]]]></description>
			<content:encoded><![CDATA[
<p>In the past weeks I&#8217;ve been doing some temporary sysadmin work for my day job and this new role extended to my night-time job. Yeah, I joined a startup but I&#8217;ll talk more about that some other day.</p>
<p>I had to move one of the web services we offer in my regular job to its own server. It was a good change, we moved the entire app from a CentOS/cPanel box hosted on the Planet to an instance running Ubuntu on AWS.</p>
<p>CPanel is a really good product and saves you a lot of time but it is a pain in the butt if you are serving more than shared hosting accounts. If you have ever tried to automate tasks that handle virtual domains, email accounts and DNS entries you know what I&#8217;m talking about.</p>
<p>Anyway, I must admit that I&#8217;m having a blast wearing a sysadmin hat during part of my day.  I&#8217;m learning a lot. I have this great excuse to read some books that were on my TO READ list for a long time.</p>
<p>One of these books is <strong>Pro DNS and Bind</strong> by <em>Ron Aitchison</em>. I have had this book on my desk for months but I finally finished reading it. The book gave me a nice introduction to DNS servers, resolvers, zone files, resource records and diagnostic tools. Highly recommended.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2010/02/wearing-a-sysadmin-hat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2 monitors on Karmic Koala 64</title>
		<link>http://daniberg.com/home/2010/02/2-monitors-on-karmic-koala-64/</link>
		<comments>http://daniberg.com/home/2010/02/2-monitors-on-karmic-koala-64/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 01:08:52 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xorg.conf]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=657</guid>
		<description><![CDATA[In December I bought this brand new laptop and had the perfect excuse to upgrade to Ubuntu 9.10. Like I mentioned in this post, the video drivers were the only issue I had. Nvidia released new drivers for Linux 64 (v. 190.53) so I took the chance to update and plug an old 19&#8221; monitor to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://daniberg.com/home/wp-content/uploads/2010/02/reception-pousada-lago-douro.jpg"><img class="alignleft size-medium wp-image-676" title="Reception Lado d'Ouro Inn" src="http://daniberg.com/home/wp-content/uploads/2010/02/reception-pousada-lago-douro-300x199.jpg" alt="" width="300" height="199" /></a></p>
<p>In December I bought this brand new laptop and had the perfect excuse to upgrade to Ubuntu 9.10. Like I mentioned in <a href="http://daniberg.com/home/2009/12/ubuntu-9-10/">this post</a>, the video drivers were the only issue I had.</p>
<p><a href="http://www.nvidia.com/object/linux_display_amd64_190.53.html">Nvidia released new drivers for Linux 64 (v. 190.53)</a> so I took the chance to update and plug an old 19&#8221; monitor to my laptop. To enable TwinView I muddled through <a href="http://http.download.nvidia.com/XFree86/Linux-x86/1.0-8178/README/appendix-g.html">some documentation</a> but finally made it work.</p>
<p>Here&#8217;s the code from xorg.conf that enables TwinView:</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;"><span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;Device&quot;</span>
    <span style="color: #990000;">Identifier</span>     <span style="color: #0000ff;">&quot;Device0&quot;</span>
    <span style="color: #990000;">Driver</span>         <span style="color: #0000ff;">&quot;nvidia&quot;</span>
    <span style="color: #990000;">VendorName</span>     <span style="color: #0000ff;">&quot;NVIDIA Corporation&quot;</span>
<span style="color: #b1b100;">EndSection</span>
&nbsp;
<span style="color: #b1b100;">Section</span> <span style="color: #0000ff;">&quot;Screen&quot;</span>
    <span style="color: #990000;">Identifier</span>     <span style="color: #0000ff;">&quot;Screen0&quot;</span>
    <span style="color: #990000;">Device</span>         <span style="color: #0000ff;">&quot;Device0&quot;</span>
    <span style="color: #990000;">Monitor</span>        <span style="color: #0000ff;">&quot;Monitor0&quot;</span>
    <span style="color: #990000;">DefaultDepth</span>    <span style="color: #cc66cc;">24</span>
    <span style="color: #990000;">Option</span>	    <span style="color: #0000ff;">&quot;TwinView&quot;</span>
    <span style="color: #990000;">Option</span>	    <span style="color: #0000ff;">&quot;ConnectedMonitor&quot;</span> <span style="color: #0000ff;">&quot;DFP-0, CRT-0&quot;</span>
    <span style="color: #990000;">Option</span>	    <span style="color: #0000ff;">&quot;MetaModes&quot;</span> <span style="color: #0000ff;">&quot;DFP-0: nvidia-auto-select, CRT-0: nvidia-auto-select&quot;</span>
    <span style="color: #990000;">Option</span>	    <span style="color: #0000ff;">&quot;CustomEDID&quot;</span> <span style="color: #0000ff;">&quot;DFP-0:/path/edid/monitor1.bin; CRT-0:/path/edid/monitor2.bin&quot;</span>
    <span style="color: #990000;">Option</span>	    <span style="color: #0000ff;">&quot;TwinViewXineramaInfoOrder&quot;</span> <span style="color: #0000ff;">&quot;DFP-0,CRT-0&quot;</span>
    <span style="color: #990000;">Option</span>	    <span style="color: #0000ff;">&quot;TwinViewOrientation&quot;</span> <span style="color: #0000ff;">&quot;DFP-0 LeftOf CRT-0&quot;</span>
    <span style="color: #b1b100;">SubSection</span>     <span style="color: #0000ff;">&quot;Display&quot;</span>
        <span style="color: #990000;">Depth</span>       <span style="color: #cc66cc;">24</span>
    <span style="color: #b1b100;">EndSubSection</span>
<span style="color: #b1b100;">EndSection</span></pre></div></div>

<p>I had to add the binary EDID files because the X server was unable to identify the correct resolution for my laptop: 1366&#215;768. The second monitor is 1280&#215;1024&#8230; now I&#8217;m really seduced by a 27&#8221; monitor.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2010/02/2-monitors-on-karmic-koala-64/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Masters of Doom</title>
		<link>http://daniberg.com/home/2010/01/masters-of-doom/</link>
		<comments>http://daniberg.com/home/2010/01/masters-of-doom/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 23:25:59 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=636</guid>
		<description><![CDATA[I have just a few posts per month but also have a lot of drafts waiting to be completed. A few of these drafts are almost complete and most are just short notes about subjects I want to write about in the future. I wish I could post more often, but not only is my [...]]]></description>
			<content:encoded><![CDATA[<p>I have just a few posts per month but also have a lot of drafts waiting to be completed. A few of these drafts are almost complete and most are just short notes about subjects I want to write about in the future. I wish I could post more often, but not only is my schedule too tight, also writing clearly is just plain hard for me. It takes me precious time. Not to mention that English is not my mother tongue.</p>
<p>However, I have one more motivation to keep writing. Besides my beloved wife who has the burden of proof reading my posts I have <em>a</em> reader. Yes, that is right. One reader. Hallo Rafa! Thanks for all the support buddy.</p>
<p>Now, back to the topic of this post. I was checking the draft list and noticed that I didn&#8217;t add Masters of Doom to the Books category on this blog. I read this book many years ago but ended up reading it again this past December. Great source of inspiration.</p>
<p>In case you&#8217;ve been living under a rock, Masters of Doom is about <a href="http://en.wikipedia.org/wiki/John_D._Carmack" target="_blank">John Carmack</a>, <a href="http://en.wikipedia.org/wiki/John_Romero">John Romero</a>, Id Software, Commander Keen, Wolfeinstein, Doom&#8230;</p>
<p>If you didn&#8217;t read it just do yourself a favor and order a copy of it!</p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2010/01/masters-of-doom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A matter of guidance</title>
		<link>http://daniberg.com/home/2009/12/a-matter-of-guidance/</link>
		<comments>http://daniberg.com/home/2009/12/a-matter-of-guidance/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 05:08:51 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=306</guid>
		<description><![CDATA[Cloudy days are perfect for productive leisure, so in March before moving to the US I spent a lazy-cloudy-Sunday afternoon packing. Moving is always exciting and a good chance to get rid of everything that is not necessary in your life anymore. You can even leave bad vibes behind if you are spiritual. We tend [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://daniberg.com/home/wp-content/uploads/2009/12/LasVegas.JPG"><img class="alignleft size-medium wp-image-634" title="LasVegas" src="http://daniberg.com/home/wp-content/uploads/2009/12/LasVegas-168x300.jpg" alt="LasVegas" width="168" height="300" /></a> Cloudy days are perfect for productive leisure, so in March before moving to the US I spent a lazy-cloudy-Sunday afternoon packing. Moving is always exciting and a good chance to get rid of everything that is not necessary in your life anymore. You can even leave bad vibes behind if you are spiritual. We tend to gather too much junk. Keep it simple.</p>
<p>The cleanup included my bookshelf. My mission was to dispose of as many books as possible. Boy, books are heavy to carry and physics does not apply when it is part of your luggage.</p>
<p>While running through the titles I started to compare dates of purchase against subjects. I have had this habit since I was a teen, every time I buy a book I sign and date it.</p>
<p>Anyway, my small library was another lead to an obvious issue: my quest to become a programmer is a mess.</p>
<p>Here&#8217;s one good example. I wanted to code games when I was a teen. After some research I concluded that C++ and DirectX were the right tools for the job. I decided to start with C++ and ordered &#8220;C++ How to Program&#8221; by Deitel. Back then, a small number of web pages would advise: &#8220;You have to learn C&#8221;. My mind discarded that advice as fast as I could read it. Why would I learn C? Isn&#8217;t C++ not only C but PLUS PLUS! It is the future. Yeah, I know you are laughing at me.</p>
<p>I read and tried all the examples from &#8220;C++ How to Program&#8221; before reading or writing any line of pure C code and felt ready to dive into some DirectX books and code the best tic-tac-toe ever!</p>



<p>Turns out my ambitious plan needed a detour. You have to go through some Windows programming before you can dive into DirectX (I don&#8217;t know how it works now a days). Gosh, 70 lines of C code just to print Hello World in the Win32 API world.</p>
<p>I can&#8217;t just copy and paste code so I ordered &#8220;Programming Windows&#8221; by Petzold to become familiar with Windows programming. BTW, Programming Windows is a great book &#8212; and I found a minor mistake in the text! (<a href="http://www.jasondoucette.com/books/pw5/pw5errata.html#chapter5">Erratum #5</a>).</p>
<p>I read the book, tried the examples and the fact is: Win32 API is C Code.</p>
<p>Because of that I finally ordered the classic &#8220;The C programming language&#8221; book to fill this awful gap in my skill set. Comparing the dates of purchase I realized that I bought the C book 2 years after the C++ one. Sad.</p>
<p>I now remember that after going back and forth I finally achieved my goal. The best tic-tac-toe game ever written did compile and run without crashing. The euphoria lasted for almost 5 seconds!</p>
<p>Before writing my first line of code I was already humble and comfortable with the idea that it takes a lifetime to be a great developer. BUT, it took me a long time to have a better overview of the skills set you need to build in order to be a software developer.</p>
<p><em>It&#8217;s a matter of proper guidance</em>.</p>
<p>It doesn&#8217;t matter if it&#8217;s a CS degree or guru souls willing to show you the way.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2009/12/a-matter-of-guidance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 9.10</title>
		<link>http://daniberg.com/home/2009/12/ubuntu-9-10/</link>
		<comments>http://daniberg.com/home/2009/12/ubuntu-9-10/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 18:02:33 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=613</guid>
		<description><![CDATA[I was planning to skip Karmic Koala. Jaunty was running just fine but since I replaced my notebook I had an opportunity to try it. I bought another Sony Vaio but this time without a stupid keyboard. I opted for the VPCCW model because it offered an NVIDIA (GEFORCE 230M) graphics card. I was interested [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://daniberg.com/home/wp-content/uploads/2009/11/P1050600.JPG"><img class="alignleft size-thumbnail wp-image-620" title="Sony Vaio VPCCW" src="http://daniberg.com/home/wp-content/uploads/2009/11/P1050600-150x150.jpg" alt="Sony Vaio VPCCW" width="150" height="150" /></a>I was planning to skip Karmic Koala. Jaunty was running just fine but since I replaced my notebook I had an opportunity to try it.</p>
<p>I bought another Sony Vaio but this time without a <a href="http://daniberg.com/home/2009/05/stupid-brazilian-keyboard/">stupid keyboard</a>. I opted for the VPCCW model because it offered an NVIDIA (GEFORCE 230M) graphics card. I was interested in the SR series but because of my bad experience in the past I didn&#8217;t want to deal with ATI.</p>
<p>And that is the irony. Installed Karmic and even wireless worked out of the box. Surprise! After enabling NVIDIA proprietary drivers (190.42) and rebooting my screen was black. Frustration.</p>
<p>After some time googling and reading NVIDIA documents I found out that I had to set xorg.conf to use a custom <a href="http://en.wikipedia.org/wiki/Extended_display_identification_data">EDID</a>.</p>
<p><code>Option "ConnectedMonitor" "DFP-0"<br />
Option "CustomEDID" "DFP-0:/path/to/bin/edid/SNY05FA.bin"</code></p>
<p>Everything is running smoothly now but I can&#8217;t stop thinking that this kind of problem is what makes linux desktop adoption harder. It&#8217;s just a matter of time though.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2009/12/ubuntu-9-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meanwhile, at the PHP world</title>
		<link>http://daniberg.com/home/2009/11/meanwhile-at-the-php-word/</link>
		<comments>http://daniberg.com/home/2009/11/meanwhile-at-the-php-word/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 19:34:08 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=576</guid>
		<description><![CDATA[In order to accomplish my goal of keeping this blog updated and grant me some good memories in the future, let me write down about what is going on in my small PHP world: CakePHP In my daily job we deal with tons of code written in the pre-framework era but I had a chance [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://daniberg.com/home/wp-content/uploads/2009/11/fireplace.jpg"><img class="alignleft size-thumbnail wp-image-604" title="fireplace" src="http://daniberg.com/home/wp-content/uploads/2009/11/fireplace-150x150.jpg" alt="fireplace" width="150" height="150" /></a>In order to accomplish my goal of keeping this blog updated and grant me some good memories in the future, let me write down about what is going on in my small PHP world:</p>
<p><strong>CakePHP</strong></p>
<p>In my daily job we deal with tons of code written in the pre-framework era but I had a chance to experiment with CakePHP in the past months. I had a good time being involved in three side projects using the framework.</p>
<p>The documentation is good and written like a tutorial but some times you still need need to dive into the framework&#8217;s source code to get specific details about classes and methods.</p>
<p><strong>Emacs PHP mode improved</strong></p>
<p>I replaced <a href="http://http://php-mode.sourceforge.net/">php-mode</a> for <a href="http://www.emacswiki.org/emacs/php-mode-improved.el">php-mode-improved</a>. The improved version has fixed some bugs in from the previous version but it is sad to read:</p>
<p><code>;; This has been submitted to the php-mode maintainer, but I've not yet had a<br />
;; response.<br />
</code></p>
<p>The (probably) most popular php-mode is abandoned.</p>
<p><strong>Xdebug</strong></p>
<p>I occasionally read Chromium&#8217;s tools written in Python and <em>- as the newbie for life that I am  -</em> I wasted a significant amount of time adding print and exit statements to the code.</p>
<p>It was time to learn how to use a Python debugger and make life easier. Enters <a href="http://docs.python.org/library/pdb.html">pdb</a>.</p>
<p>It didn&#8217;t take long to look for a similar tool for PHP: <a href="http://xdebug.org/">xdebug</a>.</p>
<p>I just wonder why I didn&#8217;t try to learn these tools earlier.</p>
<p><strong>PHPUnit</strong></p>
<p>This was something I was excited to do. To move all the crude test scripts to a test framework as dictates industry&#8217;s best practices.</p>
<p>Some tests were written using <a href="http://simpletest.org/">SimpleTest</a> but after a few grep and sed commands they all work with <a href="http://phpunit.de">PHPUnit</a> now.</p>
<p>PHPUnit&#8217;s documentation is better and development is active. SimpleTest is stuck in version 1.0.1 since April 2008.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2009/11/meanwhile-at-the-php-word/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apprenticeship Patterns</title>
		<link>http://daniberg.com/home/2009/11/apprenticeship-patterns/</link>
		<comments>http://daniberg.com/home/2009/11/apprenticeship-patterns/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 19:02:51 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=556</guid>
		<description><![CDATA[I was randomly checking the titles available from Safari&#8217;s web site when I found Apprenticeship Patterns by Dave Hoover and Adewale Oshineye. The book presents several patterns to improve your learning experience as a software developer apprentice. Evaluating how you you learn is key to excel and achieve mastery in any form of art. Yes, I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[
<p>I was randomly checking the titles available from <a href="http://safari.oreilly.com" target="_blank">Safari&#8217;s web site</a> when I found Apprenticeship Patterns by Dave Hoover and Adewale Oshineye. The book presents several patterns to improve your learning experience as a software developer apprentice.</p>
<p>Evaluating how you you learn is key to excel and achieve mastery in any form of art. Yes, I&#8217;m including software in the art category.</p>
<p>A good example to follow are musicians as they have in their curriculum a solid base on the matter. They learn not only how to play but how to study and practice. They have method.</p>
<p>Aprenticeship Patterns is a good book and the subject is fascinating. Probably most of the patterns are already part of your daily schedule, but reading the book is still a good opportunity to reflect on the process to hone in on your skills.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2009/11/apprenticeship-patterns/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows Day Experience</title>
		<link>http://daniberg.com/home/2009/10/windows-day-experience/</link>
		<comments>http://daniberg.com/home/2009/10/windows-day-experience/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 04:41:33 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=505</guid>
		<description><![CDATA[I always try to have at least one small toy project that I can play with at night. Sometimes it consists of only reading the source code and mailing list from a big project and sometimes my toy project involves writing code and playing with different tools than the ones required by my daily job. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://daniberg.com/home/wp-content/uploads/2009/10/P1050463.JPG"><img class="alignleft size-thumbnail wp-image-516" title="vegas" src="http://daniberg.com/home/wp-content/uploads/2009/10/P1050463-150x150.jpg" alt="vegas" width="150" height="150" /></a>I always try to have at least one small toy project that I can play with at night. Sometimes it  consists of only reading the source code and mailing list from a big project and sometimes my toy project involves writing code and playing with different tools than the ones required by my daily job.</p>
<p>A few months ago I added to my schedule a <a href="http://daniberg.com/home/2009/06/windows-day/">Windows Day</a>. Brand new world. I dove into Vista, ASP.NET, C#, IIS, MSSQL and Visual Studio one day per week (and occasionally weekends) for a few months.</p>
<p>I was excited because of the novelty. I read a few books on the subject and had  to play with it.</p>
<p>Here are some random thoughts about my experience.</p>
<p>Right on the first day I got frustrated using the mouse for simple tasks like moving and copying files around so I installed <a href="http://cygwin.com">cygwin</a>.  <a href="http://www.joelonsoftware.com/articles/Biculturalism.html">A difference between two worlds</a>.<strong> </strong></p>
<p>I learned later that there is a Windows option for the command line: <a href="http://en.wikipedia.org/wiki/Windows_PowerShell">Powershell</a>. Although I didn&#8217;t try it the Wikipedia article gives me the impression that learning Powershell is probably a good investment for Windows developers.</p>
<p>Back to random thoughts.</p>
<p><span style="background-color: #ffffff; ">I was then ready to try Visual Studio. It is amazing to try  examples from books just dragging and dropping icons that build some correctly written snippet of code. I just doubt that experienced developers would follow that approach. </span></p>
<p><span style="background-color: #ffffff; ">One problem I had with Visual Studio was trying to set the Emacs key bindings. Leaving the keyboard home row to reach keys like arrows, page down and page up is disturbing. I followed <a href="http://www.davesquared.net/2008/02/emacs-key-bindings-everywhere.html">this post advice</a> and installed Emacs Everywhere.</span></p>
<p><a href="http://daniberg.com/home/wp-content/uploads/2009/10/P1050196.JPG"><img class="alignright size-thumbnail wp-image-519" title="P1050196" src="http://daniberg.com/home/wp-content/uploads/2009/10/P1050196-150x150.jpg" alt="P1050196" width="150" height="150" /></a></p>
<p>The next step was the database. Oh boy, choosing a MSSQL version is so damn confusing! I&#8217;m probably getting older and dumber but I couldn&#8217;t understand which option to download from the MS website. Installing MSSQL in Vista was quite painful, too. Had to follow some MS black magic recipes to get it running. Installation on Windows 7 Beta was a breeze though.</p>
<p>After setting up the database I went to the HTTP server. IIS is pretty straightforward. You can setup a working environment with just a few clicks.</p>
<p>Working environment ready and I started to follow the books&#8217; examples. A few ASP.NET web forms later and I was ready to start learning C#.</p>
<p>Talking about computer languages is somehow a taboo so it should suffice to say that C# is verbose.</p>
<p>Well, a few months after my first Windows I&#8217;m back to a Linux side project but I&#8217;m glad that I took some time to get an overall idea about the ASP.NET world. It&#8217;s not for me. Once you<span style="background-color: #ffffff; "> go open source you never go back. </span></p>
<p><span style="background-color: #ffffff; ">If you are only interested in building your client project it doesn&#8217;t really matter the platform you pick but it&#8217;s a disturbing feeling that you can&#8217;t  build IIS or poke Visual Studio&#8217;s source code. There is this sense of being a powerless and passive consumer always trying to catch up every .NET update.</span></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2009/10/windows-day-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning MySQL</title>
		<link>http://daniberg.com/home/2009/10/learning-mysql/</link>
		<comments>http://daniberg.com/home/2009/10/learning-mysql/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 16:00:52 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=533</guid>
		<description><![CDATA[I&#8217;m trying to keep track of the books I read on this blog. It will be fun to check the posts a few years from now. I just finished reading one more book from the O&#8217;Reilly learning series. Learning MySQL by Seyed M.M. (Saied) Tahaghoghi and Hugh Williams. I picked this book up for two [...]]]></description>
			<content:encoded><![CDATA[I&#8217;m trying to keep track of the <a href="http://daniberg.com/home/category/books/">books I read</a> on this blog. It will be fun to check the posts a few years from now.</p>
<p>I just finished reading <a href="http://daniberg.com/home/2009/08/learning-python/">one more book from the O&#8217;Reilly learning series</a>. <strong>Learning MySQL</strong> by Seyed M.M. (Saied) Tahaghoghi and Hugh Williams.</p>
<p>I picked this book up for two reasons:</p>
<p>1) I had never read an entire MySQL book until now and there is just no excuse for that.</p>
<p>2) It is easy to read and digest. Productive leisure.</p>
<p>I think I&#8217;m now ready for an advanced book on the topic <img src='http://daniberg.com/home/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2009/10/learning-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing GNU Emacs Extensions</title>
		<link>http://daniberg.com/home/2009/10/writing-gnu-emacs-extensions/</link>
		<comments>http://daniberg.com/home/2009/10/writing-gnu-emacs-extensions/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 03:56:04 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[emacs]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=488</guid>
		<description><![CDATA[I&#8217;m not an Emacs Lisp programmer. In the best case scenario a wanna-be Emacs Lisp hacker. A few months ago I decided to have an introduction to this world full of parenthesis to solve a few problems I was having with Emacs default settings. When I first started using Emacs I had a hard time [...]]]></description>
			<content:encoded><![CDATA[
<p>I&#8217;m not an Emacs Lisp programmer. In the best case scenario a <em>wanna-be</em> Emacs Lisp hacker. <a href="http://daniberg.com/home/2009/05/elisp-and-buffers/">A few months ago</a> I decided to have an introduction to this world full of parenthesis to solve a few problems I was having with Emacs default settings.</p>
<p>When I first started using Emacs I had a hard time dealing with tabs and spaces. Thanks <a href="http://www.jwz.org/doc/tabs-vs-spaces.html">jwz</a>. In my day job tabs are the norm but I like my personal toy projects to have spaces instead. Problem solved. Now each project has its own preferences in my .emacs file. Life is great.</p>
<p>I went to the public library here in Sunnyvale and while skimming through computer titles I found <em>Writing GNU Emacs Extensions</em> by Bob Glickstein. Now, I have a few books to finish reading and of course, tons of code to write/read/edit, but I couldn&#8217;t resist and borrowed the book.</p>
<p>The book was printed in 1997 and mainly refers to Emacs version 19.34 but so far the concepts still apply (I&#8217;m running version 23).</p>
<p>I think the next step is to learn some form of Lisp&#8230;</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2009/10/writing-gnu-emacs-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JPod</title>
		<link>http://daniberg.com/home/2009/09/jpod/</link>
		<comments>http://daniberg.com/home/2009/09/jpod/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 02:42:41 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=468</guid>
		<description><![CDATA[It didn&#8217;t take long for me to read another book from Douglas Coupland. I first read Microserfs and since I liked the book I ordered JPod from the same author. The text form is pretty much like Microserfs, an epistolary novel according to Wikipedia. JPod has one different thing though, a subtle dark humour. People [...]]]></description>
			<content:encoded><![CDATA[

<p>It didn&#8217;t take long for me to read another book from Douglas Coupland. I first read <a href="http://daniberg.com/home/2009/04/microserfs/">Microserfs</a> and since I liked the book I ordered JPod from the same author.</p>
<p>The text form is pretty much like Microserfs, an <a href="http://en.wikipedia.org/wiki/Epistolary">epistolary novel</a> according to Wikipedia. JPod has one different thing though, a subtle  dark humo<span style="text-decoration: line-through;">u</span>r. People are killed but the narrative gives you the impression that the characters don&#8217;t take it as a big deal! Weird and funny!</p>
<p>There is also a TV show based on the novel. CBC Television from Canada produced 13 episodes and then canceled the show. Too bad. At least the episodes are available on DVD. Oh well, now I have to watch it&#8230;</p>
<p><strong>Note on Nov/27/2009</strong></p>
<p>&#8230; and I did. I must say that the first episodes are not great but by the end of the season you are wondering why the show was canceled. Can we have season 2? Can we have <a href="http://en.wikipedia.org/wiki/Arrested_Development_%28TV_series%29">Arrested Development</a> back? Please?!</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2009/09/jpod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ancient bank institution file formats will make you bald</title>
		<link>http://daniberg.com/home/2009/09/ancient-bank-institution-file-formats-will-make-you-bald/</link>
		<comments>http://daniberg.com/home/2009/09/ancient-bank-institution-file-formats-will-make-you-bald/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 18:37:42 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=445</guid>
		<description><![CDATA[This past week I was documenting part of the system from the company I work for in Brazil, and while running through the payment options code I was again confronted by the ancient file format that bank institutions still use today. You&#8217;ll never complain about XML files again if you have to deal with a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://daniberg.com/home/wp-content/uploads/2009/09/computermuseum.jpg"><img class="alignleft size-thumbnail wp-image-461" title="computer museum" src="http://daniberg.com/home/wp-content/uploads/2009/09/computermuseum-150x150.jpg" alt="computer museum" width="150" height="150" /></a>This past week I was documenting part of the system from the company I work for in Brazil, and while running through the payment options code I was again confronted by the ancient file format that bank institutions still use today. You&#8217;ll never complain about XML files again if you have to deal with a bank file format in your life.</p>
<p>I don&#8217;t know how it works here in the US but years ago banks in Brazil came up with a file format dubbed <em>CNAB</em> to exchange financial transactions. It&#8217;s basically a layout where data fields are delimited by their byte positions. Seems pretty straight forward, right? So try implementing one and you will feel the pain.</p>
<p>The first problem is bureaucracy. You need a business account, lots of papers, signatures, phones calls and of course talking to Elaine. She is your bank account manager, really polite and willing to help but obviously completely clueless regarding any technical question. Most of the time she is not allowed to put you in contact with someone who works all day writing Cobol and has all the answers to your questions (I actually empathize with the Cobol guy and pity him whenever he needs to answer the phone).</p>
<p>After everything is set and you are allowed to interact with the bank system via their file format they email you the technical instructions. It&#8217;s a word document detailing the layout. Prepare yourself to learn how it works through trial and error and a lucky chance to talk to someone on the phone (yes, a real human being) who actually knows what is the default char for the field delimited between bytes 116 and 118.<em> Is it a blank space or just a zero? Can the file be encoded in UTF-8?<br />
</em></p>
<p>You just need a second bank to send you their layout documentation to prove your inner fear. Each bank implements its own CNAB layout version. This is the time you start praying for a framework to deal with all layout inconsistencies across bank institutions.</p>
<p>All is not lost though. After going through all this you have a new skill set. You are ready to work at any bank institution because you did your homework. You have grasped an understanding of all kinds of bank transactions. You have to do this even if you only want to automate monthly invoices for your customers. It&#8217;s a hell of a ride my friend.</p>
<p>Now, I&#8217;m not trying to undervalue the CNAB file format. It was probably a good solution 20 years ago. It still works. The problem I see is how banks are outdated compared to companies like Paypal and alike. What are they thinking? Can&#8217;t you just build a web interface to deal with your internal file formats? Just give me a Restful Web Service in XML or JSON so I can send monthly invoices or pay the employees.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2009/09/ancient-bank-institution-file-formats-will-make-you-bald/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning Python</title>
		<link>http://daniberg.com/home/2009/08/learning-python/</link>
		<comments>http://daniberg.com/home/2009/08/learning-python/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 00:04:16 +0000</pubDate>
		<dc:creator>Dani Berg</dc:creator>
				<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://daniberg.com/home/?p=424</guid>
		<description><![CDATA[Write, run and throw away scripts are the excuse I need at my job to try different languages. One of the first languages I tried some years ago was Python. I really like the language but never had a proper introduction to it until now. I just finished reading Learning Python by Mark Lutz. It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[
<p>Write, run and throw away scripts are the excuse I need at my job to try different languages.</p>
<p>One of the first languages I tried some years ago was Python. I really like the language but never had a proper introduction to it until now.</p>
<p>I just finished reading Learning Python by Mark Lutz. It&#8217;s a really good book especially if you are learning your first language. If it&#8217;s not the case the text can sometimes be too repetitive.</p>
<p>Anyhow, to make better use of my new and improved Python skills I devoted a few hours at night to understand what the heck is going on when I setup and sync <a href="http://daniberg.com/home/2009/06/chromium-compiled-in-ubuntu/">Chromium</a>&#8216; s source code.</p>
<p>I can finally rest when I type</p>
<p><code>gclient config http://src.chromium.org/svn/trunk/src<br />
gclient sync</code></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4429654278687803";
/* 468x60, created 6/11/09 */
google_ad_slot = "0066133711";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://daniberg.com/home/2009/08/learning-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
