<?xml version="1.0" encoding="utf-8" ?>

<rss version="0.91" >
<channel>
<title>NFG's DBMail Blog</title>
<link>http://blog.dbmail.eu/</link>
<description>You get what you need</description>
<language>en</language>
<image>
        <url>http://blog.dbmail.eu/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: NFG's DBMail Blog - You get what you need</title>
        <link>http://blog.dbmail.eu/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Pruning the dbmail_headervalue table </title>
    <link>http://blog.dbmail.eu/archives/12-Pruning-the-dbmail_headervalue-table.html</link>

    <description>
        &lt;p&gt;
In DBMail 2.2 the dbmail_headervalue table will contain all header-values for all messages in store. Even for medium-sized installations this can easily result in a very large table.
&lt;/p&gt;
&lt;p&gt;
However, since that table is just about only used for IMAP search you might consider dropping a couple of headernames from the cache.
&lt;/p&gt;
&lt;p&gt;
For example:
&lt;pre&gt;
DELETE FROM dbmail_headername WHERE headername = &#039;received&#039;;
&lt;/pre&gt;

will delete from dbmail_headervalue all entries regarding the Received header. 
&lt;/p&gt;

&lt;p&gt;
To determine which headernames should be dropped you could use a view like this:
&lt;pre&gt;
CREATE VIEW header_count AS 
    SELECT count(1) AS count, n.id, n.headername 
    FROM dbmail_headervalue v 
    LEFT JOIN dbmail_headername n ON v.headername_id=n.id 
    GROUP BY n.id;
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
After that you can do:
&lt;pre&gt;
SELECT * FROM header_count ORDER BY count; 
&lt;/pre&gt;

and delete all headernames from dbmail_headername for those headers you deem unlikely to ever be used in IMAP search.

&lt;pre&gt;
DELETE FROM dbmail_headername WHERE headername = &#039;Received&#039;;
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;Doing this for a couple of the most prolific - but un-used headers - will drastically reduce the size
of the dbmail_headervalue tables. But remember you will have to keep an eye on the header_count, and re-issue the
delete queries on a regular basis.
&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>DBMail on twitter</title>
    <link>http://blog.dbmail.eu/archives/11-DBMail-on-twitter.html</link>

    <description>
        &lt;p&gt;
I&#039;ve added a post-receive hook to my GIT repository at git.dbmail.eu so you can stay in touch with dbmail changes via twitter.
&lt;/p&gt;
&lt;p&gt;
You can follow me at http://twitter.com/pjstevns.
&lt;/p&gt;
&lt;p&gt;
The script I&#039;m using is really simple. Some others might also find this useful:
&lt;/p&gt;
&lt;pre&gt;
#!/bin/sh

# copyright Paul Stevens, 2010, paul@nfg.nl
# licence GPLv2
#
# example hook script to send out twitter messages.
# This script will send out messages summarizing new revisions
# introduced by the change received
#
#
# Config
# ------
# hooks.twitterid
#   the username on twitter
# hooks.twitterpw
#   the password on twitter
# hooks.hashtag
#   insert a hashtag at the start of the message
# hooks.hashurl
#   replace hash signs in commit messages with an url. This
#   is used to link hash ids in messages to a bugtracker since
#   they typically refer to a bug-id.
#


GIT_DIR=$(git rev-parse --git-dir 2&gt;/dev/null)
if [ -z &quot;$GIT_DIR&quot; ]; then
	echo &gt;&amp;2 &quot;fatal: post-receive: GIT_DIR not set&quot;
	exit 1
fi
projectdesc=$(sed -ne &#039;1p&#039; &quot;$GIT_DIR/description&quot;)
# Check if the description is unchanged from it&#039;s default, and shorten it to a
# more manageable length if it is
if expr &quot;$projectdesc&quot; : &quot;Unnamed repository.*$&quot; &gt;/dev/null
	then
	projectdesc=&quot;UNNAMED PROJECT&quot;
fi


generate_message()
{
	oldrev=$(git rev-parse $1)
        newrev=$(git rev-parse $2)
	refname=&quot;$3&quot;
	message=`git log --pretty=oneline ${oldrev}..${newrev} $refname|cut -f2- -d&#039; &#039;|sed &#039;s/$/, /g&#039;`
	hashurl=`echo &quot;$hashurl&quot;|sed &#039;s/?/?/&#039;`
	if [ -n &quot;$hashtag&quot; ]; then
		echo -n &quot;#${hashtag} &quot;
	fi
	echo $message|sed -e &quot;s,#,${hashurl},g&quot; -e &#039;s/,$//&#039;
}		

send_twitter()
{
	message=&quot;$@&quot;
	curl --basic --user ${twitterid}:${twitterpw} --data status=&quot;$message&quot; 
		https://twitter.com/statuses/update.xml &gt;/dev/null
}




twitterid=$(git repo-config hooks.twitterid)
twitterpw=$(git repo-config hooks.twitterpw)
hashurl=$(git repo-config hooks.hashurl)
hashtag=$(git repo-config hooks.hashtag)

# --- Main loop
# Allow dual mode: run from the command line just like the update hook, or if
# no arguments are given then run as a hook script
if [ -n &quot;$1&quot; -a -n &quot;$2&quot; -a -n &quot;$3&quot; ]; then
        # Output to the terminal in command line mode - if someone wanted to
        # resend an email; they could redirect the output to sendmail themselves
        generate_message $1 $2 $3
else
        while read oldrev newrev refname
        do
                message=`generate_message $oldrev $newrev $refname`
		send_twitter &quot;$message&quot;
        done
fi
&lt;/pre&gt;

 
    </description>
</item>
<item>
    <title>re-theming dbmail.org</title>
    <link>http://blog.dbmail.eu/archives/10-re-theming-dbmail.org.html</link>

    <description>
        &lt;p&gt;The look and functionality of dbmail.org has been a neglected steph-child of abandonment for too long. So I decided to spent
some time revising and redesigning.&lt;/p&gt;

&lt;p&gt;The major goal was offering a more professional impression to first time visitors, and providing a better insight into the dynamic of 
the project as a whole. This is why I made it a portal-style site, showing several small blocks of recent activity concerning code-changes,
news, and yes blog entries like this one.&lt;/p&gt;

&lt;p&gt;I&#039;m not a graphics designer, but I still hope the designers among you won&#039;t be too offended by the lack of gloss and finish. Still, I did utilize one
small trick by applying another project I&#039;ve been buzy working on &lt;a href=&quot;http://webfonts.biz&quot; title=&quot;WebFonts: web fonts made easy&quot;&gt;http://webfonts.biz&lt;/a&gt; - a font-service.&lt;/p&gt;

&lt;p&gt;Hope you like it.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>A RESTful interface is coming</title>
    <link>http://blog.dbmail.eu/archives/7-A-RESTful-interface-is-coming.html</link>

    <description>
        &lt;p&gt;
Again and again, dbmail administrators ask us about the best way for their application 
to talk to dbmail. And our answer has always been the same: talk IMAP. 
&lt;/p&gt;
&lt;p&gt;
However, IMAP is a notorious protocol for many. Not because it is inherently evil, but because 
creating a parser for imap formatted data is not a trivial thing. It&#039;s simply a lot of work, and easy 
to get wrong. It&#039;s also top-heavy; a lot of the capabilities in IMAP are simply not needed at all by
your typical webapp developer.
&lt;/p&gt;
&lt;p&gt;
So the question was: how can we design a solution that will allow an application developer to quickly
integrate with dbmail, using standard tools and languages. 
&lt;/p&gt;
&lt;p&gt;
Being forward compatible could be considered a secondary, but no less important requirement. The chosen
approach - short of IMAP - often comes as custom build queries talking directly with the database backend. Few if any
who walked this path, spent any effort on supporting database servers other than the one they use. This does not
make for long-term viability, and does not support the community at large. Also, dbmail&#039;s schema has and will - 
quite possibly - change. Retrieving a message from the database was simple, but is 
no longer. Finally, not being able to leverage the scalability features included in the recent releases means you
have to worry about a denial of service on your database server when the number of visitors of your webapp
increases.
&lt;/p&gt;
&lt;p&gt;
So enters a solution: dbmail-httpd. A simple event-driven daemon that will expose the object model of dbmail
through a RESTful interface. A php5 userland module will also be provided both to test the interface and to 
demonstrate the power of this approach. Where possible, requested data will be returned as JSON. This makes parsing
completely trivial of course.
&lt;/p&gt;
&lt;p&gt;
It is our hope and expectation that this will drive development for a new class of webmail interfaces built on top of dbmail, but also 
enable construction of a new - and native - administration interface that will not require additional hosting sit-ups.
&lt;p&gt;
so stay tuned for more.
&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>DBMail 2.3.6 released</title>
    <link>http://blog.dbmail.eu/archives/9-DBMail-2.3.6-released.html</link>

    <description>
        &lt;p&gt;I&#039;ve just released dbmail 2.3.6, the latest development release.&lt;/p&gt;
&lt;p&gt;There are still some rough edges in the packaging and documentation, but otherwise 
the code is approaching productionlevel quality.&lt;/p&gt;

&lt;p&gt;New features in this release: &lt;/p&gt;

&lt;h3&gt;Single-instance header storage&lt;/h3&gt;

&lt;p&gt;The header caching tables used since 2.2 have been replaced with a new schema, optimized for a much smaller storage footprint, and therefor faster access. 
Headers are now cached using a single-instance storage pattern, similar to the one used for the message parts. This change also introduces for the
first time the appearance of views in the database, which is somewhat experimental because of some uncertainties with regard to the possible performance impact
this may have.&lt;/p&gt;

&lt;h3&gt;Authentication logging&lt;/h3&gt;
&lt;p&gt;A new table was added to the schema to log a couple of key metrics for users connecting to one of the daemons.&lt;/p&gt;

&lt;h3&gt;Storage migration&lt;/h3&gt;
&lt;p&gt;dbmail-util now supports migrating your old content into the single-instance storage.&lt;/p&gt;

&lt;h3&gt;Of course, a number of bugs have also been fixed along the way:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000689&quot;&gt;0000689&lt;/a&gt;: [Command-Line programs (dbmail-users, dbmail-util)] dbmail-exports fails with File size limit exceeded (paul) - resolved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000775&quot;&gt;0000775&lt;/a&gt;: [PIPE delivery (dbmail-smtp/dbmail-deliver)] Issue with multiple inline attachments (paul) - resolved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000783&quot;&gt;0000783&lt;/a&gt;: [General] Boundary missing in message construction (paul) - resolved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000681&quot;&gt;0000681&lt;/a&gt;: [General] message reconstruction fails on message (paul) - resolved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000774&quot;&gt;0000774&lt;/a&gt;: [IMAP daemon] SQLException using dbmail-imapd - resolved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000766&quot;&gt;0000766&lt;/a&gt;: [POP3 daemon] dbmail-pop3d crash (paul) - resolved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000754&quot;&gt;0000754&lt;/a&gt;: [General] single instance storage for headervalues (paul) - resolved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000760&quot;&gt;0000760&lt;/a&gt;: [LMTP daemon] DNS Regresion in 2.3.5 (netvulture) - resolved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000743&quot;&gt;0000743&lt;/a&gt;: [LMTP daemon] Memory leak in lmtpd (paul) - resolved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000755&quot;&gt;0000755&lt;/a&gt;: [POP3 daemon] POP3D crash when fetchmail tries to connect (paul) - resolved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=0000720&quot;&gt;0000720&lt;/a&gt;: [Command-Line programs (dbmail-users, dbmail-util)] Missing operations on dbmail-util (paul) - resolved.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href=&quot;http://git.dbmail.eu/cgit/cgit.cgi/paul/dbmail/commit/?id=f8e78884e36d8d1a756411c1c891e1a2b767ba17&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://git.dbmail.eu/cgit/cgit.cgi/paul/dbmail/snapshot/dbmail-2.3.6.tar.bz2&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;

 
    </description>
</item>
<item>
    <title>DBMail 2.3.4 released</title>
    <link>http://blog.dbmail.eu/archives/8-DBMail-2.3.4-released.html</link>

    <description>
        &lt;p&gt;
It is with great pleasure that I&#039;m announcing the availability of
DBMail version 2.3.4, the latest in the &#039;unstable&#039; development series.
&lt;/p&gt;

&lt;p&gt;
The main focus of this release has been stability. I hope and expect
this version to mark the final milestone before 2.4.0.
&lt;/p&gt;

&lt;p&gt;Special thanks to Jonathan Feally who&#039;s help in fixing bugs and adding features was invaluable.&lt;/p&gt;

&lt;p&gt;The only new feature that deserves special attention is the new fine-grained logging mechanism written by Jon.&lt;p&gt;

&lt;p&gt;Also, IMAP-IDLE works again without any problems.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://git.dbmail.eu/?p=paul/dbmail;a=shortlog;h=v2.3.4&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.dbmail.org/download/2.3/dbmail-2.3.4.tar.gz&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;happy testing&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>DBMail 2.2.11 second release candidate</title>
    <link>http://blog.dbmail.eu/archives/6-DBMail-2.2.11-second-release-candidate.html</link>

    <description>
        &lt;p&gt;
I&#039;ve finally been able to get back into the rhythm. The buildup towards 2.4 is progressing nicely, and I held a small bug-squasher for 2.2.
&lt;/p&gt;
&lt;p&gt;
So here it is: dbmail-2.2.11 second release candidate; way overdue - sorry about that.
&lt;/p&gt;
&lt;p&gt;
Things changed since 2.2.10
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=731&quot;&gt;0000731&lt;/a&gt;: [Documentation] Missing documentation of database layer logging control (paul)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=723&quot;&gt;0000723&lt;/a&gt;: [Database layer] simultaneous mailbox creation (paul)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=709&quot;&gt;0000709&lt;/a&gt;: [Database layer] Some sql optimizations (paul)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=725&quot;&gt;0000725&lt;/a&gt;: [IMAP daemon] Fix Thunderbird and ACL shared folders (paul)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=721&quot;&gt;0000721&lt;/a&gt;: [Authentication layer] mail quota in ldap not used during delivery (paul)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=698&quot;&gt;0000698&lt;/a&gt;: [IMAP daemon] PostgreSQL 8.3.1 can&#039;t execute query (paul)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=712&quot;&gt;0000712&lt;/a&gt;: [General] traces to stderr may cause core dumps if hostname &gt;=16 (paul)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=710&quot;&gt;0000710&lt;/a&gt;: [IMAP daemon] eliminate annoying &quot;[Illegal seek] on read-stream&quot; message from imap4d&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=704&quot;&gt;0000704&lt;/a&gt;: [IMAP daemon] IMAP TEXT searches stop at headers&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dbmail.org/mantis/view.php?id=670&quot;&gt;0000670&lt;/a&gt;: [IMAP daemon] IMAP TEXT searches only seem to search headers (paul)&lt;/li&gt;
&lt;/ul&gt;
 
    </description>
</item>
<item>
    <title>Code as a Rhythm</title>
    <link>http://blog.dbmail.eu/archives/2-Code-as-a-Rhythm.html</link>

    <description>
        &lt;p&gt;
Changes don&#039;t happen overnight. Or at least, that&#039;s not the end of it.
&lt;/p&gt;
&lt;p&gt;
Working on big invasive changes in production code poses it&#039;s own challenges. But after going through the motions over a couple of major releases I&#039;m learning that even though the actual workload underhand maybe breaking new terrain in my personal corner of the world, whether it&#039;d be learning about C, imap, mime or warping my head around threads and event-driven designs - the kind of work, effort or mental labour if you will, continues to be much the same all along.
&lt;/p&gt;
&lt;p&gt;
It&#039;s not just about &#039;sticking with it&#039; - though persistency does help alot. It&#039;s also about feeling the rhythm, and respecting it. Just don&#039;t rush it, keep the pace, feel the beat, if you know what I mean. 
&lt;/p&gt;
&lt;p&gt;
There are bigger cycles, with smaller ones within. Changes are steps, bound in a pattern all of their own. From a prototype &#039;proof of concenpt&#039; change, to &#039;pattern established: implement&#039; change, to a consistency change wrapping it up. Consistency changes demonstrate and finalize one of those cycles. They clean-up and codify a new element of elegance, beauty if you will. It&#039;s when the code underhand starts to smell right again, and any bugs are easily tracked down and fixed with minimal effort. Until of course, the downhill ride ends where the next hill rises to the horizon...
&lt;/p&gt; 
    </description>
</item>
<item>
    <title>DBMail 2.3.3 released</title>
    <link>http://blog.dbmail.eu/archives/5-DBMail-2.3.3-released.html</link>

    <description>
        &lt;p&gt;
DBMail just received a huge performance boost: version 2.3.3 released today features a shiny new networking/database core. 
&lt;/p&gt;
&lt;p&gt;
The new shared database connection pool drastically reduces the number of database connections (and backend network sockets) required to serve large amounts of concurrent frontend users. 
&lt;/p&gt;
&lt;p&gt;
The frontend itself, meanwhile, has been rewritten as an asynchronous event-driven process.
&lt;/p&gt;
&lt;p&gt;
Combined, these changes provide solid fundamentals for a future 2.4.x release series focused on performance and scalability.
&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://blog.dbmail.eu/archives/5-DBMail-2.3.3-released.html#extended&quot;&gt;Continue reading &quot;DBMail 2.3.3 released&quot;&lt;/a&gt;
    </description>
</item>
<item>
    <title>Multifoo lift-off</title>
    <link>http://blog.dbmail.eu/archives/4-Multifoo-lift-off.html</link>

    <description>
        &lt;p&gt;
Today I&#039;ve reached a major milestone in the multifoo rewrite.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;For those of you who don&#039;t know what I mean by multifoo; It&#039;s a term that was coined (afaik) by Aaron Stone to describe a server design for dbmail with multi-plexed asynchronous network IO and multi-threaded command processing.
&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Last week I found a pattern to make all IMAP commands run in the thread-pool to keep them from blocking the main thread. But somehow I kept being bitten by &lt;a href=&quot;http://en.wikipedia.org/wiki/Heisenbug&quot; title=&quot;Heisenbug&quot;&gt;heisenbugs&lt;/a&gt; which made me have to reconsider. Last night however I had an epiphany; there were still some calls used while running in the threadpool that send data over the network. The bug was quickly fixed today, and my design saved. &lt;a href=&quot;http://www.imapwiki.org/ImapTest&quot; title=&quot;Dovecot&#039;s imap testtool&quot;&gt;Imaptest&lt;/a&gt; now doesn&#039;t generate anymore errors, and basic message browsing works using thunderbird.
&lt;/p&gt;
&lt;p&gt;
I can now start testing more fat clients such as thunderbird and outlook against what should become a release candidate for 2.3.3. Looking very good indeed.
&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Interfacing with the DBMail database</title>
    <link>http://blog.dbmail.eu/archives/3-Interfacing-with-the-DBMail-database.html</link>

    <description>
        &lt;p&gt;
A typical question that pops up now and then is about direct database access:
&lt;/p&gt;
&lt;blockquote&gt;
I&#039;m looking for an application to help me save emails to a Database. I
read about your email solution, DBMail, and it looks really good. I
already have a mail server I&#039;m using for my webmail, but my question is
whether it would be possible to setup logging of emails to a database
using my current mail server and DBMail.
&lt;/blockquote&gt;

&lt;p&gt;
DBMail uses a database to store its messages. Currently PostgreSQL,
MySQL and Sqlite are supported. The intent of the database backend is to
provide speed, scalability and integrity in storage. The database
backend is not especially suited for direct access. The database schema
is heavily normalized and contains numerous indexes and caching tables
for speed, as well as trigger logic to ensure data integrity.
&lt;/p&gt;
&lt;p&gt;
It&#039;s best to let DBMail manage the database contents and do message
storage and retrieval through the appropriate mail protocols (LMTP for
storage, POP3 or IMAP4 for retrieval). An additional advantage of this
approach is, you can swap in or out any mail server under your webmail
scripts layer. These protocols are widely used and well understood.
&lt;/p&gt;
 
    </description>
</item>
<item>
    <title>Welcome to my dbmail experience</title>
    <link>http://blog.dbmail.eu/archives/1-Welcome-to-my-dbmail-experience.html</link>

    <description>
        &lt;p&gt;
Here I will come to share what it means for me to work on this little open-source project called dbmail. Hopefully it will be as much of a learning experience to write about it, as it is to work on it.
&lt;/p&gt;
&lt;p&gt;
But first, a disclaimer; Whatever I tell you, don&#039;t take my word for it! Seek confirmation from those you trust. If you want to talk about a specific problem, seek the best specialist you can find.
&lt;/p&gt;
&lt;p&gt;
Dbmail, for me, is about writing code, enjoying the act of creation, learning to love C, dealing with matters of consistency, assurance, and trust. It&#039;s about getting it right. Making mistakes. And being honest about both. 
&lt;/p&gt;
&lt;p&gt;
Communities of trust don&#039;t just happen. They take a lot of effort, affection and rejection. Trust yourself as well as others. Where fear or lack of confidence do not deflect you from pursuing your vision, experience will be your teacher. Perseverance will take us halfway any task. Stick to it, and enjoy the ride. 
&lt;/p&gt; 
    </description>
</item>

</channel>
</rss>
