<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Robert Basic</title>
	
	<link>http://robertbasic.com/blog</link>
	<description>the magic of coding...</description>
	<pubDate>Mon, 12 Oct 2009 06:34:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/robertbasic/blog" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">robertbasic/blog</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>A book review</title>
		<link>http://robertbasic.com/blog/a-book-review/</link>
		<comments>http://robertbasic.com/blog/a-book-review/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 08:46:29 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[book]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[review]]></category>

		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://robertbasic.com/blog/?p=789</guid>
		<description><![CDATA[  On Thursday (October 8th) I was contacted by mr. Priyanka Sanghvi from Packt Publishing. He made me an offer I couldn&#8217;t refuse: to write a review on a new Zend Framework book! OMG! How cool is this? Very! :)
The book is titled “Zend Framework 1.8 Web Application Development” and is written by Keith [...]]]></description>
			<content:encoded><![CDATA[<p> <a href="http://robertbasic.com/blog/wp-content/uploads/2009/10/zend-book-image.jpg"><img src="http://robertbasic.com/blog/wp-content/uploads/2009/10/zend-book-image.jpg" alt="zend-book-image" title="zend-book-image" width="100" height="123" class="alignright size-full wp-image-795" /></a> On Thursday (October 8th) I was contacted by mr. Priyanka Sanghvi from <a class="zem_slink" href="http://www.packtpub.com" title="Packt Publishing" rel="homepage">Packt Publishing</a>. He made me an offer I couldn&#8217;t refuse: to write a review on a new <a class="zem_slink" href="http://framework.zend.com/" title="Zend Framework" rel="homepage">Zend Framework</a> book! OMG! How cool is this? Very! :)</p>
<p>The book is titled <a href="http://www.packtpub.com/zend-framework-1-8-web-application-development/book">“Zend Framework 1.8 Web Application Development”</a> and is written by <a href="http://www.thepopeisdead.com/">Keith Pope</a> (<a href="http://twitter.com/muteor">@muteor</a> on Twitter):</p>
<blockquote>This book takes you through detailed examples as well as covering the foundations you will need to get the most out of the Zend Framework. From humble beginnings you will progress through the book and slowly build upon what you have learned previously. By the end, you should have a good understanding of the Zend Framework, its components, and the issues involved in implementing a Zend Framework based application.</blockquote>
<p>I&#8217;ll publish my review here, soon as I get a copy of the book (it should arrive in a week or two), so stay tuned!</p>
<p>Until then, happy hacking!</p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/245ef7ba-9214-453d-bbde-1bfbed58e71b/" title="Reblog this post [with Zemanta]"><img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=245ef7ba-9214-453d-bbde-1bfbed58e71b" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://robertbasic.com/blog/a-book-review/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Playing with Zend_Navigation and routes</title>
		<link>http://robertbasic.com/blog/playing-with-zend_navigation-and-routes/</link>
		<comments>http://robertbasic.com/blog/playing-with-zend_navigation-and-routes/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 17:05:20 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[example]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[navigation]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[routing]]></category>

		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://robertbasic.com/blog/?p=762</guid>
		<description><![CDATA[



Image by Aurelijus Valeiša via Flickr



O hai. First things first — someone should slap me for being such a lazy blogger. Somehow I lost all the motivation I had in the beginning, but looks like it&#8217;s back now :) I finally had the time to play around with the latest Zend Framework version (v 1.9 [...]]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="margin: 1em; display: block;">
<div>
<dl style="width: 250px;" class="wp-caption alignright">
<dt class="wp-caption-dt"><a href="http://www.flickr.com/photos/95124659@N00/2570224124"><img src="http://farm4.static.flickr.com/3031/2570224124_07e06c809f_m.jpg" alt="&quot;Zend Framework&quot; and &quot;PHP is th..." title="&quot;Zend Framework&quot; and &quot;PHP is th..." height="180" width="240"></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image by <a href="http://www.flickr.com/photos/95124659@N00/2570224124">Aurelijus Valeiša</a> via Flickr</dd>
</dl>
</div>
</div>
<p>O hai. First things first — someone should slap me for being such a lazy blogger. Somehow I lost all the motivation I had in the beginning, but looks like it&#8217;s back now :) I finally had the time to play around with the latest <a class="zem_slink freebase/guid/9202a8c04000641f8000000000b66a0f" href="http://framework.zend.com/" title="Zend Framework" rel="homepage">Zend Framework</a> version (v 1.9 now). I managed to skip the whole 1.8.x version, so this whole Zend_Application stuff is quite new to me. I spent a few days poking around the manual and the code to make it work. And it works! Yey for me! And yey for <a href="http://twitter.com/akrabat">Rob Allen</a> for his post on <a href="http://akrabat.com/2009/07/08/bootstrapping-modules-in-zf-1-8/">Bootstrapping modules in ZF 1.8</a>!</p>
<p>Zend_Tool is an awesome tool. Creating a new project is like “zf create project project_name” :) And the new <a class="zem_slink" href="http://en.wikipedia.org/wiki/Bootstrapping" title="Bootstrapping" rel="wikipedia">bootstrapping</a> process with the Bootstrap class is somehow much clearer to me now&#8230; Anyways, lets skip to the code.</p>
<h2>The goal</h2>
<p>I wanted to set up routes in such way that when a user requests a page, all requests for non-existing controllers/modules are directed to a specific controller (not the error controller). In other words, if we have controllers IndexController, FooController and PageController, anything but http://example.com/index and http://example.com/foo is directed to the PageController. This can be useful for CMSs or blogs to make pretty links. Here&#8217;s where the <a href="http://twitter.com/jaspertandy/status/3205493310">Zend_Controller_Router_Route_Regex</a> stuff comes in:</p>
<pre class="php" name="code">$route = new Zend_Controller_Router_Route_Regex(
    '(?(?=^index$|^foo$)|([a-z0-9-_.]+))',
    array(
        'controller' =&gt; 'page',
        'action' =&gt; 'view',
        'slug' =&gt; null
    ),
    array(
        1 =&gt; 'slug',
    ),
    '%s'
    );

$router-&gt;addRoute('viewPage', $route);
</pre>
<p>Basically the regex does the following: if it&#8217;s index or foo don&#8217;t match anything, thus calling up those controllers, in any other case match what&#8217;s requested and pass it to the PageController&#8217;s viewAction as the slug parameter. The fourth parameter, the &#8216;%s&#8217;, is needed so that ZF can rebuild the route in components like the Zend_Navigation.</p>
<p>Now, when the PageController, viewAction get&#8217;s called up, we can check, for example, if a page with that slug exists (like, in a database). If it exists, show the content, otherwise call up a 404 page with the error controller. In this fancy and sexy way we can call up pages without passing ID&#8217;s or even letting the user know what part of the website is working on his request. He just request&#8217;s http://example.com/some_random_article and kaboom! he get&#8217;s the content :)</p>
<h2>Page navigation</h2>
<p>Oh the joy when I saw Zend_Navigation in the library! And it even includes view helpers to help us render links and menus and breadcrumbs! Yey! There are a <a href="http://blog.ekini.net/2009/05/25/zend-framework-making-the-built-in-breadcrumb-helper-work/">several</a> <a href="http://blog.ekini.net/2009/06/10/zend-framework-navigation-and-breadcrumbs-with-an-xml-file-in-zf-18/">blog posts</a> which go in details <a href="http://www.zendcasts.com/zend_navigation-dynamically-creating-a-menu-a-sitemap-and-breadcrumbs/2009/06/">about Zend_Navigation</a>, so I won&#8217;t be bothering with that. What I wanted to make with Zend_Navigation is to have a menu of all the pages rendered everywhere. Here&#8217;s where action helpers kick in. I made an action helper which makes up the structure of the links/pages. Something like this:</p>
<pre name="code" class="php">&lt;?php
class Zend_Controller_Action_Helper_LinkStructure extends
        Zend_Controller_Action_Helper_Abstract{
function direct(){
$structure = array(
    array(
         'label'=&gt;'Home page',
         'uri'=&gt;'/'
    ),
    array(
         'label'=&gt;'Articles',
         'uri'=&gt;'',
         'pages'=&gt;array(array(
                                  'label'=&gt;'Article 1',
                                  'uri'=&gt;'article_1'),
                              array(
                                  'label'=&gt;'Article 2',
                                  'uri'=&gt;'article_2'),
                         )
    )
);
return new Zend_Navigation($structure);
}
}
</pre>
<p>This is a simple example of the structure; I&#8217;m actually making it out from the database, with all the categories, subcategories and pages.</p>
<h2>Links everywhere</h2>
<p>To have this menu on all pages, we need to render it in the layout.phtml. Rendering is quite simple:</p>
<pre name="code" class="php">// somewhere in layout.phtml
&lt;?php echo $this-&gt;navigation()-&gt;menu(); ?&gt;
</pre>
<p>Of course, we need to pass the menu to the navigation helper somehow. To avoid doing <code>$this-&gt;navigation($this-&gt;_helper-&gt;linkStructure());</code> in all the controllers, we could do that once in the bootstrap (any other ways to make it happen?):</p>
<pre name="code" class="php">// in Bootstrap.php somewhere in the Bootstrap class
function _initView(){

        $view = new Zend_View();
        $view-&gt;doctype('XHTML1_STRICT');
        $view-&gt;headMeta()-&gt;appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8');

        // our helper is in app/controllers/helpers folder, but ZF doesn't know that, so tell him
        Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH.'/controllers/helpers');
        // now get the helper
        $linkStructure = Zend_Controller_Action_HelperBroker::getStaticHelper('LinkStructure');
        // and assign it to the navigation helper
        $view-&gt;navigation($linkStructure-&gt;direct());

        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
        $viewRenderer-&gt;setView($view);

        return $view;
}
</pre>
<p>There. Now we have our menu rendered on all pages. Sexy isn&#8217;t it? :)</p>
<p>That&#8217;s it for now. Hope someone will find this useful :) Now I gotta go, need to get ready for a punk rock concert tonight!</p>
<p>Happy hacking!</p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/900cdd04-8f9e-4bc3-9de1-03e0bd23457c/" title="Reblog this post [with Zemanta]"><img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=900cdd04-8f9e-4bc3-9de1-03e0bd23457c" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related more-info pretty-attribution paragraph-reblog"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://robertbasic.com/blog/playing-with-zend_navigation-and-routes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ze Balkanic Tweetup</title>
		<link>http://robertbasic.com/blog/ze-balkanic-tweetup/</link>
		<comments>http://robertbasic.com/blog/ze-balkanic-tweetup/#comments</comments>
		<pubDate>Sun, 31 May 2009 15:37:17 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Blablabla]]></category>

		<category><![CDATA[Free time]]></category>

		<category><![CDATA[random]]></category>

		<category><![CDATA[tweetup]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://robertbasic.com/blog/?p=739</guid>
		<description><![CDATA[



Image via CrunchBase



It all started with this. Just another bored tweet from yours truly after the Sunday lunch. Followed by tweets like this and this and this and this and this. I&#8217;ll just blame the fact that it&#8217;s Sunday afternoon for the low response and that we geeks do have a life! (well, most of [...]]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="margin: 1em; display: block;">
<div>
<dl style="width: 220px;" class="wp-caption alignright">
<dt class="wp-caption-dt"><a href="http://www.crunchbase.com/product/twitter"><img src="http://www.crunchbase.com/assets/images/resized/0000/2755/2755v2-max-450x450.png" alt="Image representing Twitter as depicted in Crun..." title="Image representing Twitter as depicted in Crun..." height="49" width="210"></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image via <a href="http://www.crunchbase.com">CrunchBase</a></dd>
</dl>
</div>
</div>
<p>It all started with <a href="http://twitter.com/robertbasic/status/1979854514">this</a>. Just another bored tweet from yours truly after the Sunday lunch. Followed by tweets like <a href="http://twitter.com/VladGeorgescu/status/1979859296">this</a> and <a href="http://twitter.com/anca_foster/status/1979880192">this</a> and <a href="http://twitter.com/bojanpejic/status/1980037924">this</a> and <a href="http://twitter.com/vranac/status/1980111818">this</a> and <a href="http://twitter.com/nikolaplejic/status/1980164728">this</a>. I&#8217;ll just blame the fact that it&#8217;s Sunday afternoon for the low response and that we geeks <strong>do have a life!</strong> (well, most of us&#8230; some of us&#8230;)</p>
<h2>What&#8217;s the point?</h2>
<p>To meet. To really get to know those people behind the avatars and tweets and funny names like &#8220;Swizec&#8221;.</p>
<h2>Who can come?</h2>
<p>Despite the &#8220;Balkanic&#8221; part in the name, anyone can come, no matter from where you are. Be friendly and don&#8217;t hate the geeks (geeks run the world, so, beware). One rule only: you have to have a <a class="zem_slink" href="http://twitter.com" title="Twitter" rel="homepage">Twitter</a> account. On the list below you&#8217;ll read later are my friends from <a class="zem_slink" href="http://en.wikipedia.org/wiki/Romania" title="Romania" rel="wikipedia">Romania</a>, <a class="zem_slink" href="http://en.wikipedia.org/wiki/Hungary" title="Hungary" rel="wikipedia">Hungary</a>, <a class="zem_slink" href="http://en.wikipedia.org/wiki/Slovenia" title="Slovenia" rel="wikipedia">Slovenia</a>, <a class="zem_slink" href="http://en.wikipedia.org/wiki/Croatia" title="Croatia" rel="wikipedia">Croatia</a>, <a class="zem_slink" href="http://en.wikipedia.org/wiki/Bosnia_and_Herzegovina" title="Bosnia and Herzegovina" rel="wikipedia">Bosnia</a> and <a class="zem_slink" href="http://en.wikipedia.org/wiki/Serbia" title="Serbia" rel="wikipedia">Serbia</a>. If you have a friend from these countries and I don&#8217;t know her or him, do not worry, she or he, can come too. As long as they have a Twitter account.</p>
<h2>When?</h2>
<p>In autumn. September, most likely, during a weekend, when no sane person should be working. Our dear <a href="http://twitter.com/anca_foster">Anca</a> had a knee surgery recently and will have another one sometimes in July and <strong>we shall wait for her to fully heal and recover!</strong> (the hashtag is #wewaitforanca).</p>
<p><strong>Update:</strong> I created <a href="http://twtpoll.com/tye3xy">a twtPoll on when to organize</a> the #balkanictweetup Please give your vote!</p>
<h2>Where?</h2>
<p><a class="zem_slink" href="http://en.wikipedia.org/wiki/Budapest" title="Budapest" rel="wikipedia">Budapest, Hungary</a>. Well, that&#8217;s one suggestion. But it can be somewhere else. As long as we are together :-* It would be great to last at least one night (2 days that is), but I&#8217;m fine with more, too. One day is not possible. I expect lots of you guys there and it would be impossible to drink beers with all of you in one day only (oh yeah baby, we&#8217;re gonna have lot&#8217;s of beers). So, it would be great to find a cheap hotel where there are those fancy conference halls.</p>
<h2>What will we do?</h2>
<p>Chat (IRL!!!) and eat and drink and goof around and laugh and cry and sleep (NOT!) and take pictures and go do stuff and most importantly, we&#8217;ll TWEET!!!1 There will be one special event that will be important for everyone to attend: we&#8217;ll sit around in a big freakin&#8217; circle and introduce - stand up, say hi my name is Robert, aka @robertbasic and sit down (no need for the &#8220;and I&#8217;m a Twitter addict&#8221; part, we all know that).</p>
<p>We also can give talks on some silly topics. We can show off our works. We can sing odes to the Twitter Bird. We really can do what we want. The sky is the limit.</p>
<h2>Other stuff of interest</h2>
<p>The official hashtag is <a href="http://search.twitter.com/search?q=+balkanictweetup">#balkanictweetup</a>.</p>
<p>The Tweetup tagline is &#8220;Bring netbooks and beers.&#8221;</p>
<p>The official #balkanictweetup Twitter account is <a href="http://twitter.com/balkanictweetup">@BalkanicTweetup</a>.</p>
<p>Send all your ideas, comments, appeals to zebalkanictweetup at gmail dot com</p>
<p><del datetime="2009-05-31T21:22:45+00:00">I spent all my money on beers and women so if a good Samaritan wants to support us with buying a domain and hosting for this event that would be, like, very nice of you. You would have your own page on the official #balkanictweetup page where we praise you and your good deeds.</del> The domain is bought by <a href="http://twitter.com/VladGeorgescu">Vlad Georgescu</a>. Thanks Vlad!</p>
<p>I am too lazy to make the list of my friends I promised earlier, so there will be no list for now. Sorry.</p>
<p>He, who likes this silly idea, drop me a love letter to zebalkanictweetup at gmail dot com with your real name (yes, Jozef, I mean, Swizec, you too!) and your Twitter username. I&#8217;ll make a list based on that.</p>
<p>I gotta run now. Please, share your thoughts in the comments below.</p>
<p>Love,<br />
Robert :-*</p>
<p>P.S.: Due to insane amounts of spam, I&#8217;m moderating the comments, so please wait while I approve yours. Thanks :)</p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/7aa9a914-9bc9-4ce9-a0cc-b13ae5e331f6/" title="Reblog this post [with Zemanta]"><img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=7aa9a914-9bc9-4ce9-a0cc-b13ae5e331f6" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://robertbasic.com/blog/ze-balkanic-tweetup/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Moblin, Linux for netbooks</title>
		<link>http://robertbasic.com/blog/moblin-linux-for-netbooks/</link>
		<comments>http://robertbasic.com/blog/moblin-linux-for-netbooks/#comments</comments>
		<pubDate>Thu, 21 May 2009 10:57:24 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Blablabla]]></category>

		<category><![CDATA[Free time]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[about]]></category>

		<category><![CDATA[introduction]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[moblin]]></category>

		<category><![CDATA[netbook]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://robertbasic.com/blog/?p=720</guid>
		<description><![CDATA[Moblin got me curios and I wanted to test it out:
Moblin is an open source project focused on building a Linux-based platform optimized for the next generation of mobile devices including Netbooks, Mobile Internet Devices, and In-vehicle infotainment systems.
Cause I don&#8217;t own (yet!) a netbook, I installed it under VirtualBox (VB from now on). The [...]]]></description>
			<content:encoded><![CDATA[<p><a class="zem_slink" href="http://www.moblin.org/" title="Moblin" rel="homepage">Moblin</a> got me curios and I wanted to test it out:</p>
<blockquote>Moblin is an <a class="zem_slink" href="http://www.wikinvest.com/concept/Open_Source" title="Open Source" rel="wikinvest">open source</a> project focused on building a Linux-based platform optimized for the next generation of mobile devices including Netbooks, <a class="zem_slink" href="http://en.wikipedia.org/wiki/Mobile_internet_device" title="Mobile internet device" rel="wikipedia">Mobile Internet Devices</a>, and In-vehicle infotainment systems.</blockquote>
<p>Cause I don&#8217;t own (yet!) a netbook, I installed it under <a class="zem_slink" href="http://www.virtualbox.org/" title="VirtualBox" rel="homepage">VirtualBox</a> (VB from now on). The image is 666 MB big and it comes not in an .iso, but in a .img format. But, VB, a really awesome software, had no troubles booting from it. As with the majority of Linux distros nowadays, Moblin image is also a <a class="zem_slink" href="http://en.wikipedia.org/wiki/Live_CD" title="Live CD" rel="wikipedia">Live CD</a>, which means you can run it, without installing it.</p>
<div id="attachment_729" class="wp-caption alignright" style="width: 310px"><a href="http://robertbasic.com/blog/wp-content/uploads/2009/05/step10.png"><img src="http://robertbasic.com/blog/wp-content/uploads/2009/05/step10-300x247.png" alt="Installing Moblin" title="Installing Moblin" class="size-medium wp-image-729" height="247" width="300"></a><p class="wp-caption-text">Installing Moblin</p></div>
<p>The preinstall process is made up from 6-7 steps: choosing the language, the keyboard layout, the timezone and, of course, the partitioning. Basically, it&#8217;s just another boring “Next-Next” process. The installation itself took around 6 minutes to finish. When it&#8217;s done, it asks for a username and a password.</p>
<p>The first boot went pretty quickly, considering that booting under VB takes longer than booting under regular installations. The thing about VB is that it needs, the so called “Guest Additions” installed on the guest machine, so that the guest machine can be used normally. In this case, I failed to install it: Moblin comes with one version of the <a class="zem_slink" href="http://www.kernel.org/" title="Linux kernel" rel="homepage">Linux kernel</a> and the additions are for another version of the kernel. This prevented me in my quest to test Moblin fully. Anyway, I&#8217;ve managed to take a few screenshots of it, all are uploaded to <a href="http://picasaweb.google.com/robertbasic.com/Moblin">my Picasa profile</a>.</p>
<div id="attachment_732" class="wp-caption alignleft" style="width: 310px"><a href="http://robertbasic.com/blog/wp-content/uploads/2009/05/screen1.png"><img src="http://robertbasic.com/blog/wp-content/uploads/2009/05/screen1-300x247.png" alt="The m_zone" title="The m_zone" class="size-medium wp-image-732" height="247" width="300"></a><p class="wp-caption-text">The m_zone</p></div>
<p>There was one thing that was strange. It has a “<a href="http://moblin.org/documentation/moblin-netbook-intro/how-get-around-moblin-netbook-ui/status-panel">Status panel</a>”, from which you can update your profiles on social networks. A really useful stuff. I just opened it up and updated <a href="http://twitter.com/robertbasic">my Twitter profile</a>. Almost. I wasn&#8217;t logged in to Twitter from it and Moblin didn&#8217;t say a word about it. It just happily said that my status is updated. Once I found the “<a href="http://moblin.org/documentation/moblin-netbook-intro/show-me-how-connect-stuff/setting-web-services">Web services</a>” panel I logged in and this time I was really updating my Twitter stream.</p>
<p>I really was hoping to test it normally and write a detailed review of it, but this guest additions thingy thought otherwise. Moblin is a great <a class="zem_slink" href="http://en.wikipedia.org/wiki/Linux_distribution" title="Linux distribution" rel="wikipedia">distro</a>, even in this beta stage I believe it&#8217;s useful. What do you think? Did you test it already, saw it in action?</p>
<p>One thing&#8217;s for sure: when I&#8217;ll get myself a netbook, it&#8217;ll run on Moblin.</p>
<p>Cheers!</p>
<p>P.S.: Check out the <a href="http://moblin.org/documentation/moblin-netbook-intro">Moblin intro</a>, too!</p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/5d894d6e-e1b1-4532-9dc5-735a118271b5/" title="Reblog this post [with Zemanta]"><img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=5d894d6e-e1b1-4532-9dc5-735a118271b5" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://robertbasic.com/blog/moblin-linux-for-netbooks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Back</title>
		<link>http://robertbasic.com/blog/back/</link>
		<comments>http://robertbasic.com/blog/back/#comments</comments>
		<pubDate>Thu, 21 May 2009 03:42:40 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Blablabla]]></category>

		<category><![CDATA[Free time]]></category>

		<category><![CDATA[about]]></category>

		<category><![CDATA[grad work]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[random]]></category>

		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://robertbasic.com/blog/?p=706</guid>
		<description><![CDATA[It&#8217;s been a while since I last wrote something; didn&#8217;t have anything smart or interesting to say. Not that I do have this time. It&#8217;s 4AM and I can&#8217;t sleep. Can&#8217;t really find the inspiration for work and writing (if you can consider these scribblings as writing). Lots of ssss&#8230; stuff happened which had a [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since I last wrote something; didn&#8217;t have anything smart or interesting to say. Not that I do have this time. It&#8217;s 4AM and I can&#8217;t sleep. Can&#8217;t really find the inspiration for work and writing (if you can consider these scribblings as writing). Lots of ssss&#8230; stuff happened which had a great impact on my mood and my ability to do something useful. And I just didn&#8217;t felt like doing something about it. Until recently&#8230;</p>
<div class="zemanta-img" style="margin: 1em; display: block;">
<div>
<dl style="width: 250px;" class="wp-caption alignright">
<dt class="wp-caption-dt"><a href="http://www.flickr.com/photos/27948364@N00/1260953913"><img src="http://farm2.static.flickr.com/1022/1260953913_7eaa7229c6_m.jpg" alt="Tuborg" title="Tuborg" width="240" height="180"></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image by <a href="http://www.flickr.com/photos/27948364@N00/1260953913">Tony Austin</a> via Flickr</dd>
</dl>
</div>
</div>
<p>I was having a couple of beers with a friend of mine, with whom I go to college. After the 3rd beer or so, we came to an idea of submitting a paper to this year&#8217;s <a href="http://bmf.hu/conferences/sisy2009/">SISY</a> conference. All I will say for now, that it will include <a class="zem_slink" href="http://www.python.org/" title="Python (programming language)" rel="homepage">Python</a>, Assembly, microcontrollers, electric motors and lots of other geeky stuff. This project, even while the idea is still only in my head, got my mind running again and might be the way out of this state of indifference. Why? Well, to be able to start this project, I first need to finish my current project, my graduate work. To finish my grad work, I needed to start working on it again (which I did, honest!). I&#8217;ll even spend my whole Saturday this week in the college to write/test/debug my app there. If all goes well, the app will be finished this week and I can go onto writing the documentation for the grad work. Everything will go fine, right?</p>
<p>I installed <a class="zem_slink" href="http://www.ubuntu.com/" title="Ubuntu" rel="homepage">Ubuntu</a> 9.04 on my laptop a few days ago. Loving it! Had only 2 minor issues with the hardware upon the installation. First, the graphic card was messing around, it didn&#8217;t want to enable all those funky visual effects. That got sorted out, thanks to <a href="http://twitter.com/firusvg">@firusvg</a> who suggested to install compiz and <a href="http://twitter.com/ivan86">@ivan86</a> who pointed me to <a href="http://bud.bljak.org/?p=38">this article</a>. Second, when plugged in the headphones, the sound was still coming out on the speakers. <a href="http://twitter.com/Asgrim">@Asgrim</a> sent me <a href="https://wiki.ubuntu.com/LaptopTestingTeam/SonyVaioVGN-FW31J#Notes">this link</a> which helped me to sort this out. Apart from this, everything else works out-of-box. Even the wifi!</p>
<p>OK, enough for now. Here&#8217;s to hoping that the bad times are over and the good times are coming. Cheers!</p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/13cc664d-7645-41ee-9bb0-b30b8759e3e1/" title="Reblog this post [with Zemanta]"><img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=13cc664d-7645-41ee-9bb0-b30b8759e3e1" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://robertbasic.com/blog/back/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Happy birthday, dear magician…</title>
		<link>http://robertbasic.com/blog/happy-birthday-dear-magician/</link>
		<comments>http://robertbasic.com/blog/happy-birthday-dear-magician/#comments</comments>
		<pubDate>Sun, 10 May 2009 14:24:59 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Blablabla]]></category>

		<category><![CDATA[Free time]]></category>

		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://robertbasic.com/blog/?p=701</guid>
		<description><![CDATA[Edit: Once, there was a youtube video clip here; Uriah Heep - The Magicians Birthday. Now, it is gone. That is all.
]]></description>
			<content:encoded><![CDATA[<p>Edit: Once, there was a youtube video clip here; Uriah Heep - The Magicians Birthday. Now, it is gone. That is all.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertbasic.com/blog/happy-birthday-dear-magician/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wordpress as CMS tutorial</title>
		<link>http://robertbasic.com/blog/wordpress-as-cms-tutorial/</link>
		<comments>http://robertbasic.com/blog/wordpress-as-cms-tutorial/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 11:00:36 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[cms]]></category>

		<category><![CDATA[example]]></category>

		<category><![CDATA[hack]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[tutorial]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://robertbasic.com/blog/?p=644</guid>
		<description><![CDATA[Wordpress is one of the best blogging platforms out there &#8212; if not the best. It&#8217;s very powerful, can be easily extended and modified. It&#8217;s documentation is very well written and, so far, had answer to all of my crazy questions :)
You know what&#8217;s the best part of Wordpress? With some knowledge of PHP and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wordpress.org/">Wordpress</a> is one of the best blogging platforms out there &#8212; if not the best. It&#8217;s very powerful, can be easily extended and modified. It&#8217;s <a href="http://codex.wordpress.org/Main_Page">documentation</a> is very well written and, so far, had answer to all of my crazy questions :)</p>
<p>You know what&#8217;s the best part of Wordpress? With some knowledge of PHP and MySql, you can turn it into much more than just a blogging platform. After doing some HTML to WP work for <a href="http://twitter.com/styletime">Roger</a>, I thought of one way how could Wordpress be transformed into a CMS. Note the &#8220;one way&#8221;. This is not the only way for doing this, and, most likely, not the best way.</p>
<p>I didn&#8217;t look much, but I think that there are some nice plugins out there that can do this. But, where&#8217;s the fun in the download, upload, activate process? Nowhere!</p>
<p>I will show you how to change your Wordpress into a CMS and it really doesn&#8217;t take much coding to achieve this! The example presented here is <strong>simple</strong> and will have a static page for it&#8217;s home page, another static page for the &#8220;Portfolio&#8221; page and the blog. The home and portfolio page will have some of own content and both will include some content from other static pages. You all most likely know the blog part ;)</p>
<h2>Static pages</h2>
<p>Things you should know: each static page has it&#8217;s title, it&#8217;s slug or name (the thing that shows up in your browsers address bar: http://example.com/portfolio/ - right there, the portfolio is the slug!), has the parent attribute and the template attribute. The parent attribute is used when it&#8217;s needed to make one page a child of another, i.e. to show Page2 as a subpage of Page1. The template attribute is used when we want to apply some different layout and styling to a static page. Read more about <a href="http://codex.wordpress.org/Pages">static pages</a> and how to create your own <a href="http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates">page templates</a>.</p>
<p><span id="more-644"></span></p>
<p>If you want to, you can download the theme I created for this tutorial from <a href="http://robertbasic.com/downloads/wpascms.zip">here</a> (it&#8217;s not a designers masterpiece, what did you expect?), or you can use any theme you want.</p>
<p>I hope you read the part on <a href="http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates">creating page templates</a>, I really don&#8217;t feel like explaining the next part.</p>
<p>Create 3 new files in your template directory (if you&#8217;re using my theme, these files are already there): home.php, portfolio.php and blog.php. Contents of these files are:</p>
<pre name="code" class="php">
// home.php
&lt;?php
/*
Template Name: Home
*/
?&gt;

// portfolio.php
&lt;?php
/*
Template Name: Portfolio
*/
?&gt;

// blog.php
&lt;?php
/*
Template Name: Blog
*/

// Which page of the blog are we on?
$paged = get_query_var('paged');
query_posts('cat=-0&#038;paged='.$paged);

// make posts print only the first part with a link to rest of the post.
global $more;
$more = 0;

//load index to show blog
load_template(TEMPLATEPATH . '/index.php');
?&gt;
</pre>
<p>To understand the contents of the blog.php file, please take a look at <a href="http://codex.wordpress.org/Making_Your_Blog_Appear_in_a_Non-Root_Folder">this</a>.</p>
<p>Now, go to the dashboard, the Pages section and write 3 new static pages:</p>
<ul>
<li>Home, with the slug home, for the template choose Home from the drop-down list (it&#8217;s on the right side) and the parent leave as is (Main Page)</li>
<li>Portfolio, with the slug portfolio, for the template choose Portfolio</li>
<li>Blog, with the slug blog, for the template choose Blog</li>
</ul>
<p>You can add some content to the Home and Portfolio pages, but don&#8217;t add any to the Blog page.</p>
<h2>Organizing links</h2>
<p>Now, let&#8217;s make that when we are on http://example.com/ it shows us the Home page, instead of the Blog, and when on the http://example.com/blog/ to show us the blog!</p>
<p>Go to Settings->Reading and where it says &#8220;First page displays&#8221; choose &#8220;A static page&#8221;, and under the &#8220;Front page&#8221; drop-down choose &#8220;Home&#8221;.</p>
<p>Now, go to Settings->Permalinks and change the &#8220;Custom structure&#8221; to <code>/blog/%postname%/</code> or whatever is your preferred permalinks structure, but it must start with <code>/blog/</code>! If Wordpress can&#8217;t write to your .htaccess file (I hope it can&#8217;t!), open it up in your editor and type the following (or similar, depends on your setup):</p>
<pre name="code" class="php">
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
&lt;/IfModule&gt;
</pre>
<p>The point is in the <code>RewriteBase</code>, with that we&#8217;re telling WP where to find the blog. On default setups, when http://example.com/ points to the blog, the RewriteBase is simply / but with the blog located at http://example.com/blog/ we need to change the RewriteBase. If all is well, we&#8217;re done with organizing the links.</p>
<p>While you&#8217;re still in the dashboard, write some new static pages with content. For the parent of these pages choose Portfolio and leave the template the default (the default page template is page.php).</p>
<h2>Time for coding!</h2>
<p>Here are two functions I wrote for retrieving content from static pages which will be then included in other static pages:</p>
<pre name="code" class="php">
// functions.php
&lt;?php

/**
* Gets last $number_of_subpages from their $parent_page
* If the &lt;!--more--&gt; tag is ignored ($ignore_more=true) returns the entire content of the subpages
*
* @param mixed $parent_page Contains either the slug of the parent page or it's ID
* @param integer $number_of_subpages Number of subpages to return
* @param boolean $ignore_more Whether to ignore the &lt;!--more--&gt; tag or not
* @return array Contents and titles of subapages
*/
function wpascms_get_subpages($parent_page='portfolio', $number_of_subpages=2, $ignore_more=false)
{
    global $wpdb;

    if(is_string($parent_page))
    {
        $parent_page_ID = wpascms_get_parent_page_ID($parent_page);
    }
    else
    {
        $parent_page_ID = $parent_page;
    }  

    if($number_of_subpages == 0)
    {
        $limit = '';
    }
    else
    {
        $limit = 'LIMIT 0, ' . $number_of_subpages;
    }
    // Get all subpages that are published and are childs of the given parent page
    // and order them by date in descending order (latest first)
    // also, if needed, limit to the latest $number_of_subpages
    $subpages = $wpdb-&gt;get_results("SELECT * FROM $wpdb-&gt;posts
                                    WHERE `post_parent` = '$parent_page_ID' AND `post_type` = 'page' AND `post_status` = 'publish'
                                    ORDER BY `post_date` DESC $limit");

    if(!$ignore_more)
    {
        foreach($subpages as $key=&gt;$subpage)
            if(strpos($subpage-&gt;post_content, '&lt;!--more--&gt;') !== false)
            {
                $short_content = explode('&lt;!--more--&gt;', $subpage-&gt;post_content, 2);
                $subpages[$key]-&gt;post_content = $short_content[0] . '&lt;a href="' . get_permalink($subpage-&gt;ID) . '"&gt;Read more...&lt;/a&gt;';
            }
        }
    }

    return $subpages;
}

function wpascms_get_parent_page_ID($parent_page)
{
    global $wpdb;

    $id = $wpdb-&gt;get_var($wpdb-&gt;prepare("SELECT ID FROM $wpdb-&gt;posts WHERE `post_name` = %s AND `post_type` = 'page' AND `post_status` = 'publish'", $parent_page));

    return $id;
}

?&gt;
</pre>
<p>The first function, <code>wpascms_get_subpages()</code> returns the given number of subpages from a specific parent page. By default it will break the content on the &lt;!&#8211;more&#8211;&gt; tag and append a &#8220;Read more&#8230;&#8221; link. The first parameter can be either a string containing the slug of the parent page, or the ID of the parent page. The second parameter is the number of subpages we want returned. If it&#8217;s zero, all subpages will be returned. The second function is merely a helper function, to get the id of the parent page based on it&#8217;s slug. To read more on querying the database, <a href="http://codex.wordpress.org/Function_Reference/wpdb_Class">read this page</a>.</p>
<p>Here&#8217;s how I&#8217;m calling this function on my example Home page:</p>
<pre name="code" class="php">
&lt;?php
/*
Template name: Home
*/

get_header();
?&gt;

    &lt;div id="home"&gt;
    &lt;?php if (have_posts()) : while (have_posts()) : the_post(); ?&gt;

        &lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;

        &lt;?php the_content('&lt;p class="serif"&gt;Read the rest of this page &raquo;&lt;/p&gt;'); ?&gt;

    &lt;?php endwhile; endif; ?&gt;
    &lt;/div&gt;&lt;!-- home --&gt;

    &lt;div id="latest_works"&gt;
    &lt;h1&gt;Recent work&lt;/h1&gt;
    &lt;?php $subpages = wpascms_get_subpages();
    if(count($subpages) &gt; 0):
        foreach($subpages as $row=&gt;$subpage):
        if($row%2 == 0)
        {
            $class = "left_work";
        }
        else
        {
            $class = "right_work";
        }
    ?&gt;
        &lt;div class="&lt;?php echo $class; ?&gt;"&gt;
            &lt;h2&gt;&lt;a href=&lt;?php echo get_permalink($subpage-&gt;ID); ?&gt;&gt;&lt;?php echo $subpage-&gt;post_title; ?&gt;&lt;/a&gt;&lt;/h2&gt;
                &lt;?php echo $subpage-&gt;post_content; ?&gt;
        &lt;/div&gt;
    &lt;?php
        endforeach;
    endif;
    ?&gt;
    &lt;/div&gt;&lt;!-- latest_works --&gt;

&lt;?php
get_footer();
?&gt;
</pre>
<p>In words: including the header, then showing any content of the home page. After that getting the subpages: by default, <code>wpascms_get_subpages()</code> is getting the newest 2 subpages of the portfolio page. I&#8217;m showing the content of the subpages in 2 columns. What we got with this? Add a new subpage to the portfolio and it will automagically show up on the left side column. In the end, including the footer.</p>
<p>Here&#8217;s another example from the portfolio page:</p>
<pre name="code" class="php">
&lt;?php
/*
Template name: Portfolio
*/

get_header();
?&gt;

    &lt;div id="portfolio"&gt;
    &lt;?php if (have_posts()) : while (have_posts()) : the_post(); ?&gt;

        &lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;

        &lt;?php the_content('&lt;p class="serif"&gt;Read the rest of this page &raquo;&lt;/p&gt;'); ?&gt;

    &lt;?php endwhile; endif; ?&gt;
    &lt;/div&gt;&lt;!-- home --&gt;

    &lt;div id="latest_works"&gt;

    &lt;?php $subpages = wpascms_get_subpages('portfolio', 0);
    if(count($subpages) &gt; 0):
        foreach($subpages as $row=&gt;$subpage):
    ?&gt;
        &lt;div class="work"&gt;
            &lt;h2&gt;&lt;a href=&lt;?php echo get_permalink($subpage-&gt;ID); ?&gt;&gt;&lt;?php echo $subpage-&gt;post_title; ?&gt;&lt;/a&gt;&lt;/h2&gt;
                &lt;?php echo $subpage-&gt;post_content; ?&gt;
        &lt;/div&gt;
    &lt;?php
        endforeach;
    endif;
    ?&gt;
    &lt;/div&gt;&lt;!-- latest_works --&gt;

&lt;?php
get_footer();
?&gt;
</pre>
<p>Same thing is happening here: including the header, showing the content of the portfolio page. Getting the subpages, but now all of the subpages that are childs of the portfolio page, and showing them one under the other.</p>
<p>All subpages can be viewed each on it&#8217;s own page, but that is just a plain ol&#8217; page.php file, so I&#8217;ll skip that.</p>
<h2>And now something completely different</h2>
<p>I made a screencast to show this in action. Please forgive me on my bad accent. This will just show how much I suck in speaking English. Oh, well.</p>
<div style="text-align:center;"><object width="400" height="304"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3631432&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=F7E98C&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3631432&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=F7E98C&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="304"></embed></object><br /><a href="http://vimeo.com/3631432">Wordpress as CMS</a> from <a href="http://vimeo.com/robertbasic">Robert Basic</a> on <a href="http://vimeo.com">Vimeo</a>.</div>
<p>Don&#8217;t limit yourself to the existing plugins or waiting for one tutorial/example that will show how you can make everything. Don&#8217;t be afraid to get your hands dirty by hacking some code. It really doesn&#8217;t take too much to create magic with Wordpress ;)</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://robertbasic.com/blog/wordpress-as-cms-tutorial/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New blog - Try Open Source</title>
		<link>http://robertbasic.com/blog/new-blog-try-open-source/</link>
		<comments>http://robertbasic.com/blog/new-blog-try-open-source/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 15:36:33 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Free time]]></category>

		<category><![CDATA[Places on the web]]></category>

		<category><![CDATA[about]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[random]]></category>

		<category><![CDATA[site]]></category>

		<guid isPermaLink="false">http://robertbasic.com/blog/?p=635</guid>
		<description><![CDATA[Some of you might heard it, read it, that few of us started a new blog called Try Open Source. There&#8217;s not much there yet, but will be, I promise :)
The main purpose of this blog is to educate users about open source software and to show alternatives to proprietary software.
The original idea was a [...]]]></description>
			<content:encoded><![CDATA[<p>Some of you might heard it, read it, that few of us started a new blog called <a href="http://tryopensource.info/">Try Open Source</a>. There&#8217;s not much there yet, but will be, I promise :)</p>
<p>The main purpose of this blog is to educate users about open source software and to show alternatives to proprietary software.</p>
<p>The original idea was a blog only in Serbian, but we got this awesome domain, so it ended up as a multi-language blog. The English version is on <a href="http://tryopensource.info/">tryopensource.info</a> and the Serbian is on <a href="http://sr.tryopensource.info/">sr.tryopensource.info</a>.</p>
<p>Be sure to <a href="http://feeds2.feedburner.com/TryOpenSourceInfo">grab the feed</a> and read our first article, an <a href="http://tryopensource.info/developer-interview-robert-castley/">interview</a> with <a href="http://twitter/robertcastley">Robert Castley</a>, the man behind <a href="http://jotbug.org" title="There's so gonna be a post about JotBug here, soon!">JotBug</a> :)</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://robertbasic.com/blog/new-blog-try-open-source/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Online resources for Zend Framework</title>
		<link>http://robertbasic.com/blog/online-resources-for-zend-framework/</link>
		<comments>http://robertbasic.com/blog/online-resources-for-zend-framework/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 12:21:26 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Places on the web]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[book]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[resource]]></category>

		<category><![CDATA[site]]></category>

		<category><![CDATA[twitter]]></category>

		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://robertbasic.com/blog/?p=603</guid>
		<description><![CDATA[Besides the official documentation and the Quickstart, there are many useful resources for Zend Framework, like blogs and Twitter. I did my best to collect them. If you know something that&#8217;s not listed here, but should be, please leave a comment and I&#8217;ll update the post :)
Update #1 (seconds after publishing): Gotta love Twitter. Already [...]]]></description>
			<content:encoded><![CDATA[<p>Besides the <a href="http://framework.zend.com/manual/en/">official documentation</a> and <a href="http://framework.zend.com/docs/quickstart">the Quickstart</a>, there are many useful resources for <a href="http://framework.zend.com/">Zend Framework</a>, like blogs and Twitter. I did my best to collect them. If you know something that&#8217;s not listed here, but should be, please leave a comment and I&#8217;ll update the post :)</p>
<p><strong>Update #1 (seconds after publishing): Gotta love Twitter. Already got a message that I missed a blog. List is updated.</strong></p>
<p><strong>Update #2: Added more blogs to the list, thanks Jani for the recommendations!</strong></p>
<p><strong>Update #3: Thanks to Federico and Pablo, even more stuff to add :)</strong></p>
<p><strong>Update #4: Thank you Jon and Cal :)</strong></p>
<p><strong>Update #5: This is growing up into a pretty big list :) new stuff added!</strong></p>
<p><strong>Update #6: Should I keep adding these Update #x lines? :)</strong></p>
<p><strong>Update #7: A bunch of new stuff!</strong></p>
<p><strong>Update #8: A new ZF application <a href="http://phpimpact.wordpress.com/">via Federico&#8217;s blog!</a></strong></p>
<h2>Blogs</h2>
<p>Blogs are probably the most important resources out there. Besides the posts, comments can add a great value to the topic, so be sure to read them too. Here are the blogs that have posts on ZF and were updated recently (in the past month or two):</p>
<ul>
<li>Matthew Weier O&#8217;Phinney &#8212; <a href="http://weierophinney.net/matthew/">Phly, boy, phly</a></li>
<li>Pádraic Brady &#8212; <a href="http://blog.astrumfutura.com/">Maugrim The Reaper&#8217;s Blog</a></li>
<li>Rob Allen &#8212; <a href="http://akrabat.com/">Akra&#8217;s Dev Notes</a></li>
<li>Jani Hartikainen &#8212; <a href="http://codeutopia.net/blog/">CodeUtopia</a></li>
<li>Michelangelo van Dam &#8212; <a href="http://www.dragonbe.com/">DragonBe&#8217;s PHP blog</a></li>
<li>A.J. Brown &#8212; <a href="http://ajbrown.org/blog/">A.J. Brown&#8217;s Blog</a></li>
<li>Federico Cargnelutti &#8212; <a href="http://phpimpact.wordpress.com/">PHP::Impact ([str Blog])</a></li>
<li>Matthew Turland &#8212; <a href="http://ishouldbecoding.com/">I should be coding</a></li>
<li>Juozas Kaziukėnas &#8212; <a href="http://dev.juokaz.com/">Juozas devBlog</a></li>
<li>Bradley Holt &#8212; <a href="http://bradley-holt.blogspot.com/">Bradley Holt&#8217;s Blog</a></li>
<li>Jon Lebensold &#8212; <a href="http://www.zendcasts.com/">ZendCasts</a></li>
<li>Tom Graham &#8212; <a href="http://www.noginn.com/">Tom Graham&#8217;s Blog</a></li>
<li>Benjamin Eberlei &#8212; <a href="http://www.whitewashing.de/">Benjamin Eberlei&#8217;s Blog</a></li>
<li>Thomas Weidner &#8212; <a href="http://www.thomasweidner.com/flatpress/index.php">Blacksheeps paradise</a></li>
<li>Mike Rötgers &#8212; <a href="http://www.roetgers.org/">Mike Rötgers&#8217; Blog</a></li>
<li>Raphael Stolt &#8212; <a href="http://raphaelstolt.blogspot.com/">Raphael on PHP</a></li>
<li>Armando Padilla &#8212; <a href="http://www.armando.ws/">Online Notes</a></li>
<li>Faheem Abbas &#8212; <a href="http://zendguru.wordpress.com/">ZendGuru</a></li>
<li><a href="http://www.frontrangephp.org/presentations">FrontRangePHP users group</a></li>
<li><a href="http://blog.aditu.de/">Tobis blog</a> &#8212; in German</li>
<li><a href="http://www.ralfeggert.de/">Ralfs Zend Framework und PHP Blog</a> &#8212; in German</li>
<li><a href="http://zfblog.de/">ZFBlog.de</a> &#8212; in German</li>
</ul>
<p>Also, I recommend subscribing to <a href="http://phpdeveloper.org/">PHPDeveloper&#8217;s</a> and <a href="http://devzone.zend.com/">Zend Developer Zone&#8217;s</a> feeds, just in case I missed some good blogs ;)</p>
<h2>Twitter</h2>
<p>On <a href="http://twitter.com/">Twitter</a> there are many friendly developers willing to help out with any problems related to Zend Framework &#151 just write your question with a ZF hashtag and someone will most likely show up with the answer :)</p>
<ul>
<li><a href="http://twitter.com/wllm">Wil Sinclair</a></li>
<li><a href="http://twitter.com/weierophinney">Matthew Weier O&#8217;Phinney</a></li>
<li><a href="http://twitter.com/akrabat">Rob Allen</a></li>
<li><a href="http://twitter.com/padraicb">Pádraic Brady</a></li>
<li><a href="http://twitter.com/jhartikainen">Jani Hartikainen</a></li>
<li><a href="http://twitter.com/elazar">Matthew Turland</a></li>
<li><a href="http://twitter.com/BradleyHolt">Bradley Holt</a></li>
<li><a href="http://twitter.com/DragonBe">Michelangelo van Dam</a></li>
<li><a href="http://twitter.com/arjo">arjo</a></li>
<li><a href="http://twitter.com/barryroodt">Barry Roodt</a></li>
<li><a href="http://twitter.com/momcilovic">Milan Momčilović</a></li>
<li><a href="http://twitter.com/arkon108">Saša Tomislav Mataić</a></li>
<li><a href="http://twitter.com/mfacenet">Shawn Stratton</a></li>
<li><a href="http://twitter.com/webholics">Mario Volke</a></li>
<li><a href="http://twitter.com/bdeshong">Brian DeShong</a></li>
<li><a href="http://twitter.com/caseyw">Casey Wilson</a></li>
<li><a href="http://twitter.com/ralphschindler">Ralph Schindler</a></li>
<li><a href="http://twitter.com/tholder">Tom Holder</a></li>
<li><a href="http://twitter.com/walberty">Willie Alberty</a></li>
<li><a href="http://twitter.com/dshafik">Davey Shafik</a></li>
<li><a href="http://twitter.com/jacobkiers">Jacob Kiers</a></li>
<li><a href="http://twitter.com/CalEvans">Cal Evans</a></li>
<li><a href="http://twitter.com/fedecarg">Federico Cargnelutti</a></li>
<li><a href="http://twitter.com/zendcasts">ZendCasts</a></li>
<li><a href="http://twitter.com/RobertCastley">Robert Castley</a></li>
<li><a href="http://twitter.com/wjgilmore">Jason Gilmore</a></li>
</ul>
<h2>Books</h2>
<p>These <del datetime="2009-03-10T01:04:32+00:00">two</del> books are a must read. That is all :)</p>
<p><a href="http://www.survivethedeepend.com/">Surviving The Deep End</a> &#8212; a free online book that is written chapter by chapter. Author is <a href="http://blog.astrumfutura.com/">Pádraic Brady</a>:</p>
<blockquote>The book was written to guide readers through the metaphorical &#8220;Deep End&#8221;. It&#8217;s the place you find yourself in when you complete a few tutorials and scan through the Reference Guide, where you are buried in knowledge up to your neck but without a clue about how to bind it all together effectively into an application. This take on the Zend Framework offers a survival guide, boosting your understanding of the framework and how it all fits together by following the development of a single application from start to finish. I&#8217;ll even throw in a few bad jokes for free.</blockquote>
<p><a href="http://www.zendframeworkinaction.com/">Zend Framework in Action</a> &#8212; OK, this book is not an online resource, but it is great and surely must be mentioned :) Authors are <a href="http://akrabat.com/">Rob Allen</a>, <a href="http://www.ingredients.com.au/nick/">Nick Lo</a> and Steven Brown:</p>
<blockquote>Zend Framework in Action is a book that covers all you need to know to get started with the Zend Framework.<br />
The first part of the book works through the creation of web site using the MVC components (Zend_Controller, Zend_View and Zend_Db). The book then follows on by looking at user authentication and access control, forms, searching and email to round out the application. After considering deployment issues, we then look at other components that add value to a web site; including web services, PDF creation, internationalisation and caching.</blockquote>
<p><a href="http://www.phparch.com/c/books/id/9780973862157">Guide to Programming with Zend Framework</a> &#8212; another great book, a must have. Written by <a href="http://blog.calevans.com/">Cal Evans</a>.</p>
<blockquote>This book covers much of the primary functionality offered by the Zend Framework, and works well both as a thorough introduction to its use and as a reference for higher-level tasks</blockquote>
<p><a href="http://www.amazon.com/Beginning-Zend-Framework-Armando-Padilla/dp/1430218258">Beginning Zend Framework</a> &#8212; written by <a href="http://www.armando.ws/">Armando Padilla</a></p>
<blockquote>Beginning Zend Framework is a beginner’s guide to learning and using the Zend Framework. It covers everything from the installation to the various features of the framework to get the reader up and running quickly.</blockquote>
<p><a href="http://www.easyphpwebsites.com/">Easy PHP Websites with Zend Framework</a> by Jason Gilmore</p>
<blockquote>Easy PHP Websites with the Zend Framework is the ultimate guide to building powerful PHP websites. Combining over 330 pages of instruction with almost 5 hours of online video and all of the example code, you&#8217;ll have everything you need to learn PHP faster and more effectively than you ever imagined.</blockquote>
<h2>Applications powered by ZF</h2>
<p>Wanna see what&#8217;s ZF capable of?</p>
<ul>
<li>A web-based Project Management &#038; Issue/Bug Tracking solution &#8212; <a href="http://jotbug.org/">JotBug</a></li>
<li>A content management system &#8212; <a href="http://digitaluscms.com/">Digitalus CMS</a></li>
<li>A project management system &#8212; <a href="http://www.phprojekt.com/index.php?&#038;newlang=eng">PHPProjekt 6</a></li>
<li>eCommerce platform &#8212; <a href="http://www.magentocommerce.com/">Magento</a></li>
<li>PHP Lifestream Aggregator, by <a href="http://markupartist.com/">Johan Nilssons</a> &#8212; <a href="http://johannilsson.me/streams/list">a phplifestream example</a> and it&#8217;s <a href="http://github.com/johannilsson/phplifestream/tree/master">source</a></li>
<li>A free and open source collections based web-based publishing platform &#8212; <a href="http://omeka.org/">Omeka</a></li>
</ul>
<h2>Other resources</h2>
<p>Of course, there&#8217;s the good ol&#8217; IRC, channels are <strong>#zftalk</strong> and <strong>#zftalk.dev</strong>. For more information, visit <a href="http://www.zftalk.com/">ZFTalk</a>.</p>
<p><a href="http://codeutopia.net/blog/">Jani Hartikainen&#8217;s</a> <a href="http://epic.codeutopia.net/pack/">Packageizer</a> is a great tool to get only those ZF components you need.</p>
<p><a href="http://jokke.dk/blog/2009/01/introducing_the_scienta_zf_debug_bar">Scienta ZF Debug Bar</a> an awesome plugin for Zend Framework which &#8220;injects into every request a snippet of HTML with commonly used debug information.&#8221;</p>
<p>There&#8217;s also the <a href="http://www.zfforums.com/">Zend Framework Forum</a>. For those of you who understand it, here&#8217;s a German forum <a href="http://www.zfforum.de/">www.zfforum.de</a>.</p>
<p>The <a href="http://framework.zend.com/wiki/">Zend Framework Wiki</a> and the <a href="http://framework.zend.com/issues/">Zend Framework Issue Tracker</a> are also very helpful, so, be sure to check them out.</p>
<p>The unofficial PEAR channel for the Zend Framework can be found at <a href="http://zend.googlecode.com/">http://zend.googlecode.com/</a>.</p>
<p>That&#8217;s all from me. This are the resources I found useful and hopefully are and will be useful for you too :)</p>
<p>Do you know anything I missed? If so, please, leave a comment and I&#8217;ll update the post :)</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://robertbasic.com/blog/online-resources-for-zend-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>pywst - setting up web projects quickly</title>
		<link>http://robertbasic.com/blog/pywst-setting-up-web-projects-quickly/</link>
		<comments>http://robertbasic.com/blog/pywst-setting-up-web-projects-quickly/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 18:22:15 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[lamp]]></category>

		<category><![CDATA[project]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[script]]></category>

		<category><![CDATA[setup]]></category>

		<category><![CDATA[svn]]></category>

		<category><![CDATA[trac]]></category>

		<category><![CDATA[ubuntu]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://robertbasic.com/blog/?p=588</guid>
		<description><![CDATA[I wrote a Python script for automating the steps required to setup a web project environment on my local dev machine that runs on Ubuntu. Called it pywst: Python, Web, Svn, Trac. That&#8217;s the best I could do, sorry :P
The main steps for setting up a new project are:

Create a virtual host
Add it to /etc/hosts
Enable [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote a Python script for automating the steps required to setup a web project environment on my local dev machine that runs on Ubuntu. Called it pywst: <strong>Py</strong>thon, <strong>W</strong>eb, <strong>S</strong>vn, <strong>T</strong>rac. That&#8217;s the best I could do, sorry :P</p>
<p>The main steps for setting up a new project are:</p>
<ul>
<li>Create a virtual host</li>
<li>Add it to /etc/hosts</li>
<li>Enable the virtual host</li>
<li>Import the new project to the SVN repository</li>
<li>Checkout the project to /var/www</li>
<li>Create a TRAC environment for the project</li>
<li>Restart Apache</li>
</ul>
<p>After these steps I have http://projectName.lh/ which points to /var/www/projectName/public/, SVN repo under http://localhost/repos/projectName/ and the TRAC environment under http://localhost/trac/projectName/.</p>
<p>As I have this ability to forget things, I always forget a step or 2 of this process. Thus, I wrote <a href="http://robertbasic.com/downloads/pywst.txt">pywst</a> (note, this is a txt file, to use it, save it to your HDD and rename it to pywst.py). It&#8217;s not the best and nicest Python script ever wrote, but gets the job done. All that is need to be done to setup a project with pywst is:</p>
<pre name="code" class="php">
sudo ./pywst.py projectName
</pre>
<p>2 things are required: to run it with sudo powers and to provide a name for the project.</p>
<h2>Future improvements</h2>
<p>The first, and the most important is to finish the <code>rollback()</code> method. Now, it only exits pywst when an error occurs, but it should undo all the steps made prior to the error.</p>
<p>Second, to make it work on other distros, not only on Ubuntu. That would require for me getting those other distros, set them up, look where they store Apache and stuff, where&#8217;s the default document root, etc. Hmm&#8230; This will take a while :)</p>
<p>Third, support PHP frameworks - Zend Framework, CodeIgniter and CakePHP &#8212; ZF is a must :P Under support I mean to create the basic file structure for them automagically.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://robertbasic.com/blog/pywst-setting-up-web-projects-quickly/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
