<?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>Donald Jackson</title>
	<atom:link href="http://www.ddj.co.za/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ddj.co.za</link>
	<description>Kannel, mobile and web development</description>
	<lastBuildDate>Mon, 05 Jul 2010 09:18:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>How to motivate software developers</title>
		<link>http://www.ddj.co.za/archives/130/how-to-motivate-software-developers</link>
		<comments>http://www.ddj.co.za/archives/130/how-to-motivate-software-developers#comments</comments>
		<pubDate>Mon, 05 Jul 2010 09:18:13 +0000</pubDate>
		<dc:creator>Donald Jackson</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[motivate]]></category>
		<category><![CDATA[software developers]]></category>

		<guid isPermaLink="false">http://www.ddj.co.za/?p=130</guid>
		<description><![CDATA[I was thinking the other day about the importance of quality software architecture and about how the planning of such software architecture can fundamentally affect the success of a business. Indeed, the benefits of adequate planning are painfully obvious to those who have worked on projects- both badly planned and well planned ones. The following [...]]]></description>
			<content:encoded><![CDATA[<p>I was thinking the other day about the importance of quality software architecture and about how the planning of such software architecture can fundamentally affect the success of a business. Indeed, the benefits of adequate planning are painfully obvious to those who have worked on projects- both badly planned and well planned ones.</p>
<p><img class="alignleft size-medium wp-image-134" title="Frustrated Computer Geek" src="http://www.ddj.co.za/wp-content/uploads/2010/07/office-space-300x225.jpg" alt="" width="300" height="225" />The following question then occurred to me: “How does one motivate software developers to do the right thing while they are developing?” As we all know, there is an &#8216;easy&#8217; way to do things and a &#8216;hard&#8217; way. At this point it may be useful to use the analogy of building a house to explain my point. The first (easy) option of building a house would be to build it out of wood, with merely satisfactory foundations. The second (harder) option would be to build it out of cement and concrete, with deep foundations. Both options would serve their purpose; however, under extreme weather conditions, (and, in fact, inevitably over time), the first house would start to creak and no longer be able to perform its task, while the second would remain strong.</p>
<p>The same principle applies to software development. The question is thus raised regarding how to motivate the developers in a company (or on a project) to make the right choices; to lay the right foundations; and stick to these principles over time. Importantly, the issue is not simply how to motivate them to work, but rather, how to motivate them to do their job to the best of their ability.</p>
<p>I would argue that there are two major categories of developers. The first kind of developer is a developer who may have needed to make a career choice after school, and who chose IT because it was the option people suggested (s)he decide on. The choice to become a developer was, as such, essentially reducible to the choice to pursue a seemingly “good” job. The second kind of developer, however, is passionate about technology and would most likely be involved in IT regardless of any career potentials offered by the field.</p>
<p>I would not know how to motivate the first kind of developer in this example- I believe that these types rarely elevate themselves to the heights that are truly needed in the industry (unless they transition to the second type). I suppose that the pay-check at the end of each month would probably be enough motivation in most cases, although this is only likely to be motivation to simply show up at work; not to go the extra mile. If a company’s developers are of the first type only, the company or project would almost certainly need a strong architect to set policies and expectations in place, and to make sure that these are carried out.</p>
<p>The real question I would like to address here concerns the issue of motivating the second type of developer- the passionate one. (I believe that I am personally passionate about technology and software development so forgive me if I have related this question to myself too readily). Luckily, I work for myself now, so my motivation to offer excellent client service is certainly present. However, since I have begun to outsource more work, I have also been urged to think back to a time during which I worked for companies, and not for myself. In retrospect, a pressing question for me concerns what these companies did to make me lose interest. What would have kept me motivated? And more importantly, how do I keep my people motivated now? I have identified four issues that may help add clarity to this issue, and these are what I would like to share with you here.</p>
<h3><img class="alignright size-medium wp-image-131" title="Software Architecture" src="http://www.ddj.co.za/wp-content/uploads/2010/07/softDev-300x114.jpg" alt="" width="300" height="114" />1) Listen to the Senior Developers</h3>
<p>At almost every company I have worked, there has been a power-struggle about delivery and priorities, between the top levels of management and development teams. The developers are desperate for time to update the architecture and design of  software, while management push only for new features to drive short term sales. In the long term, if these managers consistently win  this debate without making any compromises, the software will inevitably fall short, as developers are not able to see their proposals met and the architecture ultimately fails. Technology is ever-changing; and if you are still developing the same way you did five years ago, your competitors are getting ahead of you and your developers will remain frustrated.</p>
<h3>2) Keep innovating</h3>
<p>Nobody who is passionate about technology wants to do the same thing for three years. They want to do new things; use new tools; use new technology and generally-speaking, innovate. This is not always an easy goal to achieve, but if followed out, it will serve two purposes. Not only will the developers be more satisfied with and excited about their day-to-day work, but innovation will also open up new revenue streams within a business.</p>
<h3>3) Give a sense of ownership</h3>
<p>By this I don&#8217;t mean giving someone a &#8220;Team Leader&#8221; title and telling them to run with it. I mean genuine ownership. I would suggest that software or technology companies should have an optional staff share plan in place. This would encourage developers to make sure that the work they conduct is sustainable for years to come, since they will benefit directly from the company&#8217;s success. Giving staff ownership options will ensure that staff remains motivated on a second account, too: When they leave the company, their software will continue to generate income for them.</p>
<h3>4) Financial reward</h3>
<p>In most organizations the senior developers are well aware of the kind of money that they are generating for the business. Therefore, if for example, a developer makes your business $10 million in revenue, why not give them a $100,000 bonus? Don&#8217;t base rewards on a percentage of their salary- base it on the revenue they generate. This will ensure that developers keep pushing to make your systems perform better, as well as ensuring that they are always available to do so, etc. (This is partially related to my third point, but direct bonuses are also a good way to keep the developer enthused).</p>
<p><img class="alignleft size-medium wp-image-132" title="tech2" src="http://www.ddj.co.za/wp-content/uploads/2010/07/tech2-300x261.gif" alt="" width="300" height="261" />In closing, I feel that any business that can develop these principles will create a place of innovation and of performance. And inevitably, this cycle is reversible, too. If for example, I was a developer and the company interviewing me had no passion, I would certainly pick up on that fact, and would no longer be interested in joining the company. If, however, they were genuinely passionate about their jobs, their rewards and their systems, that fact would be obvious to me, too, and would immediately incite me to become involved. Indeed, for a company to portray passion in interviewing potential developers is an invaluable objective, and will ultimately ensure that the right kind of developers enter the business.</p>
<p>If you’d like to share your thoughts on this topic with me, please don’t hesitate to do so. I would love to hear from other passionate guys out there, and to gain insight into what they think may be the motivating factors for software developers in today’s ever-changing, technology-driven society.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ddj.co.za/archives/130/how-to-motivate-software-developers/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Birthday Wishlist 2010</title>
		<link>http://www.ddj.co.za/archives/126/birthday-wishlist-2010</link>
		<comments>http://www.ddj.co.za/archives/126/birthday-wishlist-2010#comments</comments>
		<pubDate>Wed, 19 May 2010 21:17:38 +0000</pubDate>
		<dc:creator>Donald Jackson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[birthday]]></category>
		<category><![CDATA[wishlist]]></category>

		<guid isPermaLink="false">http://www.ddj.co.za/?p=126</guid>
		<description><![CDATA[Yes ladies and gentlemen it&#8217;s time for my annual Birthday wish list for all you thousands of would-be gift buyers out there. Apparently I&#8217;m nearly impossible to buy gifts for, so instead of getting 50 pairs of socks, I use this list&#8230; As always I will break it up into 3 categories to fit your [...]]]></description>
			<content:encoded><![CDATA[<p>Yes ladies and gentlemen it&#8217;s time for my annual Birthday wish list for all you thousands of would-be gift buyers out there. Apparently I&#8217;m nearly impossible to buy gifts for, so instead of getting 50 pairs of socks, I use this list&#8230; As always I will break it up into 3 categories to fit your wallet size!</p>
<h3>Very Expensive</h3>
<ul>
<li>Pay off all my bonds</li>
<li>Double cab bakkie (newer than 2007!)</li>
<li><a href="http://www.bhphotovideo.com/c/product/423691-USA/Canon_1056B002AA_EF_85mm_f_1_2L_II.html" target="_blank">Canon f/1.2 85 mm L series lens</a></li>
<li>Audi R8</li>
<li>Trip to Thailand</li>
</ul>
<p><strong>Medium expensive</strong></p>
<ul>
<li>Espresso/coffee machine</li>
<li><a href="http://www.amazon.com/Corsair-Performance-Internal-Solid-CMFSSD-256GBG2D/dp/B0026V5MY0" target="_blank">Corsair 256GB Performance Series SSD</a></li>
<li>Canvas print vouchers</li>
<li>Clothes that will make me look cool (not sure these exist)</li>
<li><a href="http://www.amazon.com/Vanguard-ELITE-CP324-Lightweight-Professional-Monopod/dp/B000YH49OC">Monopod</a></li>
</ul>
<p><strong>Less expensive</strong></p>
<ul>
<li>Woolworths short sleeve large white T-Shirt&#8217;s</li>
<li>Nivea roll-on</li>
<li>Socks</li>
<li>Rechargeable batteries</li>
<li>Titleist Pro V1x golf balls</li>
<li>Footjoy softjoy golf gloves</li>
<li>Double adapters</li>
<li>Buy a big issue from someone who needs the cash</li>
<li>Wash my car + scooter</li>
<li>Give me hugs</li>
<li>High five me</li>
<li>Say Happy Birthday</li>
</ul>
<p>Something for everyone&#8217;s budget, hopefully <img src='http://www.ddj.co.za/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ddj.co.za/archives/126/birthday-wishlist-2010/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What should be the next game in the &#8216;Hero&#8217; series?</title>
		<link>http://www.ddj.co.za/archives/123/what-should-be-the-next-game-in-the-hero-series</link>
		<comments>http://www.ddj.co.za/archives/123/what-should-be-the-next-game-in-the-hero-series#comments</comments>
		<pubDate>Fri, 05 Mar 2010 10:14:06 +0000</pubDate>
		<dc:creator>Donald Jackson</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Lightbulbs]]></category>
		<category><![CDATA[Band Hero]]></category>
		<category><![CDATA[DJ Hero]]></category>
		<category><![CDATA[Guitar Hero]]></category>
		<category><![CDATA[I am a Hero]]></category>

		<guid isPermaLink="false">http://www.ddj.co.za/?p=123</guid>
		<description><![CDATA[I posted a question on Twitter this morning about Violin Hero (being a former violinist myself this seemed obvious) and I had some other suggestions, so I wanted to check the opinion of the general public on what the next &#8216;Hero&#8217; game should be. Let&#8217;s see how the results turn out. What should be the [...]]]></description>
			<content:encoded><![CDATA[<p>I posted a question on Twitter this morning about Violin Hero (being a former violinist myself this seemed obvious) and I had some other suggestions, so I wanted to check the opinion of the general public on what the next &#8216;Hero&#8217; game should be. Let&#8217;s see how the results turn out.</p>
<p><center></p>
<form method="post" action="http://poll.pollcode.com/iglo">
<table border="0" width="350" style="background-color:#FFFFFF;color:#5552A8;font-family:'Verdana';font-size:13px;" cellspacing="0" cellpadding="2">
<tr>
<td colspan="2" style="padding:2px;"><strong>What should be the next game in the &#8216;Hero&#8217; series?</strong></td>
</tr>
<tr>
<td width="5">
<input type=radio name="answer" value="1"></td>
<td style="padding:2px;">Violin Hero</td>
</tr>
<tr>
<td width="5">
<input type=radio name="answer" value="2"></td>
<td style="padding:2px;">Bagpipe Hero</td>
</tr>
<tr>
<td width="5">
<input type=radio name="answer" value="3"></td>
<td style="padding:2px;">Triangle Hero</td>
</tr>
<tr>
<td width="5">
<input type=radio name="answer" value="4"></td>
<td style="padding:2px;">Saxophone Hero</td>
</tr>
<tr>
<td width="5">
<input type=radio name="answer" value="5"></td>
<td style="padding:2px;">Aeolian Wind Harp Hero</td>
</tr>
<tr>
<td width="5">
<input type=radio name="answer" value="6"></td>
<td style="padding:2px;">Didgeridoo Hero</td>
</tr>
<tr>
<td width="5">
<input type=radio name="answer" value="7"></td>
<td style="padding:2px;">Flute Hero</td>
</tr>
<tr>
<td width="5">
<input type=radio name="answer" value="8"></td>
<td style="padding:2px;">Tambourine Hero</td>
</tr>
<tr>
<td colspan="2"><center><br />
<input type="submit" value="Vote"></center></td>
</tr>
</table>
</form>
<p></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ddj.co.za/archives/123/what-should-be-the-next-game-in-the-hero-series/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Outraged &#8211; An Open Letter to Mr Delivery</title>
		<link>http://www.ddj.co.za/archives/117/outraged-an-open-letter-to-mr-delivery</link>
		<comments>http://www.ddj.co.za/archives/117/outraged-an-open-letter-to-mr-delivery#comments</comments>
		<pubDate>Sun, 03 Jan 2010 10:49:58 +0000</pubDate>
		<dc:creator>Donald Jackson</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Vents]]></category>
		<category><![CDATA[Cape Town]]></category>
		<category><![CDATA[Complaint]]></category>
		<category><![CDATA[Mr Delivery]]></category>
		<category><![CDATA[Posticino]]></category>
		<category><![CDATA[Sea Point]]></category>

		<guid isPermaLink="false">http://www.ddj.co.za/?p=117</guid>
		<description><![CDATA[I would like to add comment here but I think the letter says it all, we received the worst possible service from Mr Delivery last night and I simply cannot keep quiet about it. Here is an &#8216;Open Letter&#8217; to Mr Delivery below. TO whom it may concern, We placed an order this evening (the [...]]]></description>
			<content:encoded><![CDATA[<p>I would like to add comment here but I think the letter says it all, we received the worst possible service from Mr Delivery last night and I simply cannot keep quiet about it. Here is an &#8216;Open Letter&#8217; to Mr Delivery below.</p>
<blockquote>
<div id="_mcePaste">
<p class="MsoNormal">TO whom it may concern,</p>
<p class="MsoNormal">We placed an order this evening (the 2nd January 2009) at 8pm online as we have done many times previously.</p>
<p class="MsoNormal">By 9:30pm we had heard nothing, our order was not confirmed as usual. We tried repeatedly to contact Mr. Delivery Sea Point with no answer. It was our intent at this stage to cancel the order as we had made other eating arrangements. Eventually someone did answer and said that our order was &#8220;on its way&#8221;, with expected arrival approximately 10 minutes.</p>
<p class="MsoNormal">After 20 minutes had elapsed and we had still not heard anything; we called Posticino&#8217;s directly to check if our order had actually been collected. They informed us it had just been collected a few minutes earlier. After waiting another 10 minutes we still had no joy. We called Mr. Delivery Sea Point once again, thankfully someone answered and then informed us that the restaurant had been very busy, causing the delay. A few minutes later the door bell rang and the order was delivered, cold, of course. According to the driver, the delay was because of the huge amount of traffic on the roads. (I basically live 3km’s from the restaurant, so that is pretty hysterical!)</p>
<p class="MsoNormal">I indicated to the driver that I had opted to pay via credit card for our order as I usually do, but this was not reflected on the slip. The driver said that the office would be contacting us to confirm payment. He seemed happy to accept our signature, but left without leaving us any copies. This was at 10pm; at this point we had actually already eaten after waiting so long and retired for the evening. Pretty exhausted and disappointed about the whole ordeal.</p>
<p class="MsoNormal">Not long after, we were woken up by the door bell, I was quite shocked to find that the delivery guy, Kingsley, had returned and was demanding immediate payment. We explained to him calmly that he should contact us in the morning to claim his money as we were now in bed and not willing to conclude this at this hour.</p>
<p class="MsoNormal">He then threatened us and said he would contact the police to claim his money. He was unreasonably aggressive and persistent. We eventually managed to get him to leave the door. A few minutes later the &#8216;manager&#8217; of Mr. Delivery Sea Point called us again, to claim their money. No apology was offered whatsoever. We explained our story and to our immense surprise, instead of offering an apology for causing us so much hassle, he proclaimed that it was actually our fault the payment didn’t go through when we made our online order. He refused to take any responsibility and then advised us to take up the matter with the driver!</p>
<p class="MsoNormal">We then went back to sleep, only to be woken up again at midnight (00:00) by an insistent and persistent knock on our front door (which is in a secure complex). We opened the door to two armed policemen and the aforementioned driver. The police were quiet while the driver ranted on about his money and us not having any sympathy for him. The police repeatedly told him to keep his voice down as it would disturb the other residents of our building. We explained the situation completely and calmly to the police officers and the driver once more which we believe was very generous of us given the circumstances. In an effort to calm the situation I offered to pay the driver in cash, less his tip and delivery fee, which he declined with the police as witnesses.</p>
<p class="MsoNormal">
<p class="MsoNormal">To be made to feel like criminals in our own home amongst our <span style="mso-ansi-language: EN-ZA;" lang="EN-ZA">neighbours</span> and friends is completely and utterly unacceptable for the sake of two pizzas. Not only was this a complete invasion of personal space, it completely ruined our evening. <span style="mso-spacerun: yes;"> </span>This kind of behavior can only be construed as harassment on the part of Mr. Delivery. The very epitome of Poor service delivery. The Manager spoke to me as though I was a complete idiot – he was thoroughly insulting and unsympathetic – in all fairness we believe he had the same attitude towards his employee.</p>
<p class="MsoNormal">We cannot imagine how something like this can be acceptable in an organization such as Mr. Delivery in a world class city like Cape Town. We are also astounded by the management&#8217;s lack of control and accountability in this situation, as we feel it could have been easily rectified.</p>
<p class="MsoNormal">In closing, we would like to have some basic questions answered.</p>
<p class="MsoNormal">1) What is an acceptable turnaround time for food ordered? When we ordered the delivery time was indicated to be 9:05pm and it had not arrived by 10pm (2 hours).</p>
<p class="MsoNormal">2) Is it acceptable that food is delivered cold?</p>
<p class="MsoNormal">3) After a late delivery where Mr. Delivery was at fault with the billing, is it acceptable to be harassed for a further two hours after the fact?</p>
<p class="MsoNormal">4) Who is responsible for the systems in place at Mr. Delivery, the client, or Mr. Delivery?</p>
<p class="MsoNormal">5) How is it possible that our order was placed successfully online and yet our payment details were somehow misplaced?</p>
<p class="MsoNormal">6) In a matter like this, especially given that it is impossible to get through to your call centre’s, who does one phone in this situation?</p>
</div>
</blockquote>
<p class="MsoNormal">
<p><a name="update_1" ></a><br />
<strong>UPDATE: 2010/01/04 &#8211; Response from Mr Delivery</strong></p>
<p>I received this email from Laurence Levine yesterday.</p>
<blockquote>
<p>Dear Mr. Jackson</p>
<p>Please accept my humble apologies this type of behaviour is definitely not condoned by my Company and all guilty parties will be dealt with accordingly .</p>
<p>I am currently oversees and I will get my Head of Operations to take care of this matter in my absence( Mrs Zettie Potgieter ) .</p>
<p>However I will be following up personally  on this matter on my return to SA  .</p>
<p>In the meanwhile I would like to offer you two complimentary pizza’s and free delivery on your next order or if you wish to eat at Posticino I will pay for your next meal there  .</p>
<p>Lastly thank you kindly for contacting me with this unacceptable service without customers like you I can never fix problems such as these .</p>
<p>Kind regards</p>
<p>Laurence Levine</p></blockquote>
<p>While I am thankful for the gesture and also the apology, I really hope something is done to prevent something like this in future. Mrs Zettie Potgieter did indeed call me today, and I discussed the issue with her further. She indicated to me that she would be following up with me further based on what action was taken. I will be posting all the details here as they come in.</p>
<blockquote></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.ddj.co.za/archives/117/outraged-an-open-letter-to-mr-delivery/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>The Christmas Presents</title>
		<link>http://www.ddj.co.za/archives/99/the-christmas-presents</link>
		<comments>http://www.ddj.co.za/archives/99/the-christmas-presents#comments</comments>
		<pubDate>Mon, 28 Dec 2009 11:08:37 +0000</pubDate>
		<dc:creator>Donald Jackson</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Christmas]]></category>
		<category><![CDATA[SMS Gateway]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.ddj.co.za/?p=99</guid>
		<description><![CDATA[So admittedly I have been one of the most useless blogger&#8217;s around over the past year. It has been an intense year after going it alone business wise. Now that the dust has settled on an amazing 2009 I have given myself some Christmas presents. My blogging frequency is largely to blame on the hate [...]]]></description>
			<content:encoded><![CDATA[<p>So admittedly I have been one of the most useless blogger&#8217;s around over the past year. It has been an intense year after <a title="archi.tech" href="http://www.thearchitech.com">going it alone</a> business wise. Now that the dust has settled on an amazing 2009 I have given myself some Christmas presents. <a href="http://www.ddj.co.za/"><img class="alignright size-thumbnail wp-image-104" title="Donald Jackson" src="http://www.ddj.co.za/wp-content/uploads/2009/12/Screen-shot-2009-12-28-at-12.54.47-PM-150x150.png" alt="Donald Jackson" width="150" height="150" /></a>My blogging frequency is largely to blame on the hate for my previous <a title="wordpress" href="http://www.wordpress.org">wordpress</a> theme, so in an effort to combat this&#8230;</p>
<h3>Gift #1 &#8211; The blog update</h3>
<p>So yes, I have updated my blog to the latest <a href="http://www.wordpress.org">wordpress</a> version and removed any in script hacks that I did previously and just moved to plugins to keep things simple. I must say, the wordpress platform has come a long way since my old blog and I am extremely impressed! In addition to this I &#8216;refreshed&#8217; my <a title="About Donald Jackson" href="/about/">about page</a> to be a bit more relevant to where I am and what I&#8217;m up to now.</p>
<h3>Gift #2 &#8211; The product site</h3>
<p>I have developed quite a cool <a title="Elite SMS Gateway" href="http://www.elite-sms-software.com" target="_blank">SMS gateway product</a> (IMHO) but I have done absolutely no marketing for it thus far. I have just been distributing it via word of mouth and through connections of mine in the industry. <a href="http://www.elite-sms-sofware.com"><img class="alignright size-medium wp-image-102" title="Elite SMS Gateway" src="http://www.ddj.co.za/wp-content/uploads/2009/12/Screen-shot-2009-12-28-at-12.52.05-PM-300x39.png" alt="Elite SMS Gateway" width="300" height="39" /></a>I decided it was time to release it into the wild and get a site up and running to spread the word, hence I have setup <a title="Elite SMS Gateway" href="http://www.elite-sms-software.com">the site for Elite SMS Gateway</a>. Yes, I know the name is a bit cheesy but my marketing creativity leaves much to be desired <img src='http://www.ddj.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Gift #3 &#8211; The photo blog</h3>
<p>Those of you close to me, will know that I recently aquired a <a title="Canon EOS 7D" href="http://www.badphotographer.com/2009/11/11/its-arrived-canon-eos-7d/" target="_blank">Canon EOS 7D</a> and before I even received the camera I had planned on launching a photo blog. As they say about a panel beaters car, the same applied to my own personal blogs. <a href="http://www.badphotographer.com"><img class="alignright size-full wp-image-100" title="the bad photographer" src="http://www.ddj.co.za/wp-content/uploads/2009/12/Screen-shot-2009-12-26-at-1.26.04-PM.png" alt="the bad photographer" width="329" height="54" /></a>So finally I managed to get it up and running at <a title="the bad photographer" href="http://www.badphotographer.com/2009/11/11/its-arrived-canon-eos-7d/" target="_blank">www.badphotographer.com</a>. I called it &#8216;the bad photographer&#8217; as a play on the idea that there is no good or bad photography, it&#8217;s all a matter of each person&#8217;s tastes. I&#8217;d love to get some comments on this blog on the photos.</p>
<p>So that&#8217;s it on the gift front, I am excited to keep the blogs moving and get a big of feedback from the community.</p>
<p>Have a safe festive season <img src='http://www.ddj.co.za/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ddj.co.za/archives/99/the-christmas-presents/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kannel presentation to GeekDinner</title>
		<link>http://www.ddj.co.za/archives/75/kannel-presentation-to-geekdinner</link>
		<comments>http://www.ddj.co.za/archives/75/kannel-presentation-to-geekdinner#comments</comments>
		<pubDate>Sat, 03 Oct 2009 17:49:15 +0000</pubDate>
		<dc:creator>Donald Jackson</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Kannel]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[GeekDinner]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://www.ddj.co.za/archives/73/kannel-presentation-to-geekdinner</guid>
		<description><![CDATA[Apologies for the delay as I promised to have this up the day after GeekDinner Thanks to all those involved with organizing these events, they are really enjoyed by all. Thanks to the sponsors Delheim for providing the wine for the event. Anyway, without further ado here is the presentation I gave on Kannel at [...]]]></description>
			<content:encoded><![CDATA[<p>Apologies for the delay as I promised to have this up the day after GeekDinner <img src='http://www.ddj.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Thanks to all those involved with organizing these events, they are really enjoyed by all. Thanks to the sponsors <a href="http://www.delheim.com/">Delheim</a> for providing the wine for the event.</p>
<p>Anyway, without further ado here is the presentation I gave on <a href="http://www.kannel.org">Kannel</a> at GeekDinner on Monday the 28th of September 2009.</p>
<p>I hope it provides some insight into the gateway <img src='http://www.ddj.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><object id="prezi_42ghl_mizc56" name="prezi_42ghl_mizc56" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="500" height="400"><param name="movie" value="http://prezi.com/bin/preziloader.swf"/><param name="allowfullscreen" value="true"/><param name="allowscriptaccess" value="always"/><param name="bgcolor" value="#ffffff"/><param name="flashvars" value="prezi_id=42ghl_mizc56&amp;lock_to_path=1&amp;color=ffffff&amp;autoplay=no"/><embed id="preziEmbed_42ghl_mizc56" name="preziEmbed_42ghl_mizc56" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="400" bgcolor="#ffffff" flashvars="prezi_id=42ghl_mizc56&amp;lock_to_path=1&amp;color=ffffff&amp;autoplay=no"></embed></object></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/Kannel" rel="tag">Kannel</a>, <a class="performancingtags" href="http://technorati.com/tag/GeekDinner" rel="tag">GeekDinner</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ddj.co.za/archives/75/kannel-presentation-to-geekdinner/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kannel for Windows &#8211; Some Cygwin Binaries</title>
		<link>http://www.ddj.co.za/archives/74/kannel-for-windows-some-cygwin-binaries</link>
		<comments>http://www.ddj.co.za/archives/74/kannel-for-windows-some-cygwin-binaries#comments</comments>
		<pubDate>Wed, 08 Apr 2009 15:56:27 +0000</pubDate>
		<dc:creator>Donald Jackson</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Kannel]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Binaries]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.ddj.co.za/archives/72/kannel-for-windows-some-cygwin-binaries</guid>
		<description><![CDATA[A customer of mine recently asked me for a windows version of Kannel. Prior to this I had no experience with Cygwin/Windows development at all. It was actually extremely simple to build Kannel using Cygwin (thanks to the Kannel developers for being, well, pretty cool ). Obviously it&#8217;s not the easiest thing in the world [...]]]></description>
			<content:encoded><![CDATA[<p>A customer of mine recently asked me for a windows version of Kannel. Prior to this I had no experience with Cygwin/Windows development at all. It was actually extremely simple to build Kannel using Cygwin (thanks to the Kannel developers for being, well, pretty cool <img src='http://www.ddj.co.za/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). </p>
<p>Obviously it&#8217;s not the easiest thing in the world for non-developers so I thought I would make it easy for everyone to just simply download some binaries of Kannel and get going.</p>
<p>So with that said, I have built two installers for Kannel to run on windows. I have built against the stable release 1.4.3 and then I have done a CVS snapshot build against CVS dated 2009-04-07.</p>
<p>If you are interested in these, please navigate to my <a href="http://www.ddj.co.za/kannel-for-windows">kannel for windows</a> page which I will keep up to date as more stable releases get done.</p>
<p>Just a bit of background of how to build your own versions on Cygwin below:</p>
<ol>
<li>Download latest version of Cygwin</li>
<li>Install, making sure you select the development packages (gcc, automake, libxml2-devel, openssl-devel, etc)</li>
<li>Download and extract the source of Kannel from <a href="http://www.kannel.org">www.kannel.org</a></li>
<li>Change directory to the extracted source</li>
<li>Run ./configure</li>
<li>Run make</li>
<li>Then if you wish, run make install to install (need privileges unless alternative &#8211;prefix was specified)</li>
</ol>
<p>Easy !</p>
<p>Just as a final note, Kannel on windows should NOT be treated as a production ready piece of software, so this should be used strictly for convenience, testing, development, etc.</p>
<p>As always, if you have any questions, leave a comment or mail me via <a href="mailto:blog@ddj.co.za">blog@ddj.co.za</a></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/Kannel" rel="tag">Kannel</a>, <a class="performancingtags" href="http://technorati.com/tag/Windows" rel="tag">Windows</a>, <a class="performancingtags" href="http://technorati.com/tag/Cygwin" rel="tag">Cygwin</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=ffdb99eb-2d6f-895b-be9b-c071d4b1408a" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ddj.co.za/archives/74/kannel-for-windows-some-cygwin-binaries/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Extracting meta-data from SMPP TLV’s with Kannel</title>
		<link>http://www.ddj.co.za/archives/71/extracting-meta-data-from-smpp-tlvs-with-kannel</link>
		<comments>http://www.ddj.co.za/archives/71/extracting-meta-data-from-smpp-tlvs-with-kannel#comments</comments>
		<pubDate>Sun, 15 Mar 2009 13:18:13 +0000</pubDate>
		<dc:creator>Donald Jackson</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Kannel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[SMPP]]></category>
		<category><![CDATA[TLV]]></category>

		<guid isPermaLink="false">http://www.ddj.co.za/archives/69/extracting-meta-data-from-smpp-tlvs-with-kannel</guid>
		<description><![CDATA[I have been relatively quiet the past few weeks with various operations going on, but seeing as I have a few minutes to spare I thought I would do a quick post explaining how to extract SMPP TLV&#8217;s using the new Kannel meta data features which are in the current CVS branch. These are scheduled [...]]]></description>
			<content:encoded><![CDATA[<p>I have been relatively quiet the past few weeks with various operations going on, but seeing as I have a few minutes to spare I thought I would do a quick post explaining how to extract SMPP TLV&#8217;s using the new Kannel meta data features which are in the current CVS branch.</p>
<p>These are scheduled for the 1.5.0 stable release of Kannel, so for now you&#8217;ll need to do a CVS checkout of the main branch (as described in my previous posts).</p>
<p>I will be demonstrating how to set a test TLV and then extracting this data when a reply is received. Once you have setup your &#8216;smpp-tlv&#8217; group, you simply need to specify an additional parameter in your smsbox request. This parameter is named &#8216;meta-data&#8217;. The format for this variable is &#8216;?&lt;bind_type&gt;?&lt;dataset&gt;&#8217; currently the only supported bind type is &#8216;smpp&#8217; but it was done this way to allow future support.</p>
<p>The dataset argument, is a URL encoded key/value pair string. So for these tests I have configured a smpp-tlv group called &#8216;my-custom-var&#8217;. In order to set this, I need to build a string like this for meta-data purposes.</p>
<p><code><br />?smpp?my-custom-var=This+is+a+cool+var<br /></code></p>
<p>As you can see my-custom-var is set as a URL encoded variable, this will still need to be URL-encoded for submission in the meta-data parameter sent to smsbox.</p>
<p>So just to demonstrate, using PHP how you would build this string, you would use.</p>
<p><code></p>
<p>$bind_type = "smpp";<br />$my_custom_var = "This is a cool var";<br />$meta_data = "?".$bind_type."?my-custom-var=".urlencode($my_custom_var);<br />/* Now we need to urlencode this string */<br />$meta_data = urlencode($meta_data);<br />/* So URL would look like */<br />/* cgi-bin/sendsms?to=...&amp;from=...&amp;meta-data=$meta_data */</p>
<p></code></p>
<p>So now, when you set this to smsbox, it will be sent via the smpp bind as a TLV. Easy!</p>
<p>Now on the converse, if your smpp bind returns a TLV in a deliver_sm or other PDU, this will also passed to your URL (if you have configured it. Here below is a basic function for parsing the meta data out of this string.</p>
<p><code></p>
<p>/* This function will take the meta-data string and return an associative array */<br />function parse_metadata($var) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $pos = strpos($var, "?", 1) + 1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Simply stripping out bind type 'smpp', this can be modified if you need it <img src='http://www.ddj.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  */<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $var = substr($var, $pos);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $data = parse_str($var, $out);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $out;<br />}</p>
<p>/* Example: */<br />$meta_data = parse_metadata($_GET['meta-data']);</p>
<p>echo "My custom var = ".$meta_data['my-custom-var'];</p>
<p></code></p>
<p>I hope this helps you with your SMPP TLV requirements. Good luck, don&#8217;t forget to email me if you need any assistance with Kannel/SMS, etc and I will do my best to help you as best I can.</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/Kannel" rel="tag">Kannel</a>, <a class="performancingtags" href="http://technorati.com/tag/SMPP" rel="tag">SMPP</a>, <a class="performancingtags" href="http://technorati.com/tag/TLV" rel="tag">TLV</a>, <a class="performancingtags" href="http://technorati.com/tag/Kannel%20Support" rel="tag">Kannel Support</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ddj.co.za/archives/71/extracting-meta-data-from-smpp-tlvs-with-kannel/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Send SMS using Java Midlet/J2ME and Clickatell</title>
		<link>http://www.ddj.co.za/archives/68/send-sms-using-java-midletj2me-and-clickatell</link>
		<comments>http://www.ddj.co.za/archives/68/send-sms-using-java-midletj2me-and-clickatell#comments</comments>
		<pubDate>Fri, 23 Jan 2009 17:31:08 +0000</pubDate>
		<dc:creator>Donald Jackson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Lightbulbs]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Clickatell]]></category>
		<category><![CDATA[J2ME]]></category>

		<guid isPermaLink="false">http://www.ddj.co.za/archives/66/send-sms-using-java-midletj2me-and-clickatell</guid>
		<description><![CDATA[I have had some time to experiment with J2ME which is something I&#8217;ve always wanted the time to do. So during the course of this week (maybe a few hours total) I have put together my first Midlet. It&#8217;s a simple piece of software which allows you to send an SMS via the Clickatell SMS [...]]]></description>
			<content:encoded><![CDATA[<p>I have had some time to experiment with J2ME which is something I&#8217;ve always wanted the time to do. So during the course of this week (maybe a few hours total) I have put together my first Midlet. It&#8217;s a simple piece of software which allows you to send an SMS via the Clickatell SMS gateway.</p>
<p>You&#8217;ll need a Clickatell HTTP API Account to do so, if you don&#8217;t already have one click <a href="http://affiliates.clickatell.com/central/campaigns/redir.php?cid=89753" target="_blank">here</a> to get one.      </p>
<p>I have posted the source code <a href="http://www.ddj.co.za/sendsms.tar.gz">here</a> or you can point your mobile device directly at:</p>
<p><a href="http://www.ddj.co.za/s.jad">http://www.ddj.co.za/s.jad</a></p>
<p>Alternatively, download the jar file directly (I had to do this to get it working on my Windows Mobile 6.1 phone) at <a href="http://www.ddj.co.za/s.jar">http://www.ddj.co.za/s.jar</a></p>
<p>I wrote it using a Mac with Eclipse (with ME add-on&#8217;s) using mpowerplayer as the emulator. It is *just* a prototype and by no means uses best practice programming so don&#8217;t judge me on this quick hack <img src='http://www.ddj.co.za/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <br />Enjoy! If you like this app and you want me to modify it for you please get in touch via <a href="mailto:midlet@ddj.co.za">midlet@ddj.co.za</a></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/SMS" rel="tag">SMS</a>, <a class="performancingtags" href="http://technorati.com/tag/J2ME" rel="tag">J2ME</a>, <a class="performancingtags" href="http://technorati.com/tag/Midlet" rel="tag">Midlet</a>, <a class="performancingtags" href="http://technorati.com/tag/Clickatell" rel="tag">Clickatell</a><br />
<center><br />
<a href='http://new.ddj.co.za/wp-content/uploads/2009/01/picture-21.png' title='J2ME Midlet Running in mpowerplayer'><img src='http://new.ddj.co.za/wp-content/uploads/2009/01/picture-21.png' alt='J2ME Midlet Running in mpowerplayer' /></a><br />
Midlet running in mpowerplayer<br />
</center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ddj.co.za/archives/68/send-sms-using-java-midletj2me-and-clickatell/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kannel Web Configuration Tool v0.1 available</title>
		<link>http://www.ddj.co.za/archives/67/kannel-web-configuration-tool-v01-available</link>
		<comments>http://www.ddj.co.za/archives/67/kannel-web-configuration-tool-v01-available#comments</comments>
		<pubDate>Mon, 05 Jan 2009 13:04:44 +0000</pubDate>
		<dc:creator>Donald Jackson</dc:creator>
				<category><![CDATA[Kannel]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Web Configuration]]></category>

		<guid isPermaLink="false">http://www.ddj.co.za/archives/65/kannel-web-configuration-tool-v01-available</guid>
		<description><![CDATA[Hi everyone, I have &#8216;released&#8217; version 0.1 of the Kannel Web Configuration tool. I have created somewhat of a home page for it here for those who are interested. It is available as &#8216;donation-ware&#8217; with full source code. Admittedly it was done in a hurry so hopefully later releases will see some code enhancements. I [...]]]></description>
			<content:encoded><![CDATA[<p>Hi everyone,</p>
<p>I have &#8216;released&#8217; version 0.1 of the Kannel Web Configuration tool. I have created somewhat of a home page for it <a href="http://www.ddj.co.za/kannel-web-configuration-tool">here</a> for those who are interested.</p>
<p>It is available as &#8216;donation-ware&#8217; with full source code. Admittedly it was done in a hurry so hopefully later releases will see some code enhancements.</p>
<p>I am more than happy to provide assistance wherever necessary on this project.</p>
<p>Enjoy!</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/Kannel" rel="tag">Kannel</a>, <a class="performancingtags" href="http://technorati.com/tag/Web%20Configuration" rel="tag">Web Configuration</a>, <a class="performancingtags" href="http://technorati.com/tag/SMS" rel="tag">SMS</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ddj.co.za/archives/67/kannel-web-configuration-tool-v01-available/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
