<?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>Fri, 26 Feb 2010 06:18:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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 read at [...]]]></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 own [...]]]></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 my [...]]]></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>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 [...]]]></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 in [...]]]></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 to experiment [...]]]></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 including [...]]]></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 [...]]]></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 reasons:
1) I [...]]]></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>
	</channel>
</rss>
