<?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>SMK Software</title>
	<atom:link href="http://www.smksoftware.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.smksoftware.com</link>
	<description>A software company in the making.</description>
	<lastBuildDate>Fri, 29 Jan 2010 14:39:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DocBook and Good Output</title>
		<link>http://www.smksoftware.com/2010/01/29/docbook-and-good-output/</link>
		<comments>http://www.smksoftware.com/2010/01/29/docbook-and-good-output/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 14:39:34 +0000</pubDate>
		<dc:creator>durand</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.smksoftware.co.za/?p=1504</guid>
		<description><![CDATA[It&#8217;s really taken quite some time for me to get a grip on the entire concept of DocBook and, specifically, how it goes from DocBook to a pretty PDF file. Every time I&#8217;ve started fiddling around with it, it&#8217;s cost me several hours just trying to remember how it all works and fits together.
Today I [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s really taken quite some time for me to get a grip on the entire concept of DocBook and, specifically, how it goes from DocBook to a pretty PDF file. Every time I&#8217;ve started fiddling around with it, it&#8217;s cost me several hours just trying to remember how it all works and fits together.</p>
<p>Today I am happy to say that it all finally clicked into place for me.  And, in hindsight, I went about understanding and learning DocBook using an incorrect approach &#8211; basically back-to-front.  I tried to understand DocBook, then the transformation layer and then get to XSL FO. No.. bad idea.  If you&#8217;re trying to learn DocBook and get a good understanding of how everything works, you need to learn in order:</p>
<ul>
<li><strong>XML Namespaces</strong> &#8211; Just kinda know what they are about and how to import them and use them.</li>
<li><strong>XSL FO</strong> &#8211; Learn about blocks, general attributes and properties, documents and flows.</li>
<li><strong>XSLT</strong> &#8211; Figure out how XSLT works, the templates, callbacks, &#8220;variables&#8221;, etc. Understand that it&#8217;s not a procedural language and not a see-this-replace-with-that kind of engine. Understand that you&#8217;ll actually building a DOM.</li>
<li><strong>DocBook</strong> &#8211; Get acquainted with the allows tags, the hierarchy and what they&#8217;re used for in the document.</li>
<li><strong>DocBook XSL</strong> &#8211; The stylesheets you can get which perform XSLT transformations from DocBook schema into FO schema, for example.</li>
</ul>
<p>Still, it&#8217;ll take some time if you&#8217;re coming in as a newbie.  Speaking as a programmer, I found it really different.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.smksoftware.com/2010/01/29/docbook-and-good-output/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gSOAP and types</title>
		<link>http://www.smksoftware.com/2009/10/20/gsoap-and-types/</link>
		<comments>http://www.smksoftware.com/2009/10/20/gsoap-and-types/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 20:52:03 +0000</pubDate>
		<dc:creator>durand</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.smksoftware.co.za/?p=1392</guid>
		<description><![CDATA[Well I had this problem and I thought I&#8217;d write a quick post about it because I couldn&#8217;t find anything useful on the Internet.  It took me in depth debugging to resolve the issue. The issue was, I was getting this error in TEST.log: &#8220;Validation constraint violation: data type mismatch  in element &#8216;id&#8217;&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Well I had this problem and I thought I&#8217;d write a quick post about it because I couldn&#8217;t find anything useful on the Internet.  It took me in depth debugging to resolve the issue. The issue was, I was getting this error in TEST.log: &#8220;Validation constraint violation: data type mismatch  in element &#8216;id&#8217;&#8221; where my id tag was defined as an xsd:long.  This had an internal type in gsoap of LONG64.</p>
<p>So, what the heck was the problem?   I fiddled with a custom typemap.dat and made sure the xsd__long was defined as an int64_t (&#8216;cos it is on my platform) and I even found some suggestions on the Internet to use &#8220;-e&#8221; when compiling using soapcpp2.  Nada.</p>
<p>That&#8217;s when I started debugging gSOAP &#8211; as I have been doing continuously the last two weeks &#8211; and I traced the problem all the way back to a function inside stdsoap2.cpp called &#8220;soap_s2LONG64&#8243;. This function is responsible for string to long conversion. Now the first thing I noticed is that it&#8217;s possible for the entire function to be completely empty because almost all of it is conditional with a lot of #ifdefs.  I double checked this by having a look at my compiled assembly and sure enough it was completely empty.  There was no way for this function to ever succeed.</p>
<p>What had I done wrong?  Well I had included the gsoap code directly into my build &#8211; my makefile &#8211; and I wasn&#8217;t building it as a separate library. What I had failed to notice though is that the stdsoap2.h needs config.h to determine which functions are available on the system. Some of these functions are the very ones used within soap_s2LONG64.  Since there was no detection and definition of the defines, there was no real body to the function. That&#8217;s why it was happening.</p>
<p>Of course, I just added the checks into autoconf and made sure that stdsoap2.h&#8217;s include directive for the config.h file was pointing to the right place.  Viola.  It was working like a charm.</p>
<p>In summary:  If you&#8217;ve included stdsoap2.cpp into your build, then you need to define which string to long conversion functions are in your system.  You can do with this with your compilation command (g++ -DHAVE_STRTOLL) or define it just before you include stdsoap2.h in your code.  Of course, autoconf makes it a lot easier.  It&#8217;s up to the build system you&#8217;re using.  If you&#8217;re doing it manually, try defining HAVE_STRTOLL or HAVE_SSCANF.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.smksoftware.com/2009/10/20/gsoap-and-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Support through FogBugz</title>
		<link>http://www.smksoftware.com/2009/10/02/support-through-fogbugz/</link>
		<comments>http://www.smksoftware.com/2009/10/02/support-through-fogbugz/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 15:49:41 +0000</pubDate>
		<dc:creator>durand</dc:creator>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.smksoftware.co.za/?p=1384</guid>
		<description><![CDATA[Today I signed up for the trial of FogBugz. It&#8217;s an issue tracking/customer support/project management/other stuff kind of system. So far it seems to live up to what it promises.
I needed a nice support architecture where, if someone sent an email to support, it would get pulled into a system, processed, etc and everything would [...]]]></description>
			<content:encoded><![CDATA[<p>Today I signed up for the trial of <a href="http://www.fogcreek.com/FogBUGZ/">FogBugz</a>. It&#8217;s an issue tracking/customer support/project management/other stuff kind of system. So far it seems to live up to what it promises.</p>
<p>I needed a nice support architecture where, if someone sent an email to support, it would get pulled into a system, processed, etc and everything would happen to give the person a fantastic support experience &#8211; if there is such a thing.  This seems to do it. </p>
<p>It&#8217;s also incredibly easy to setup and fast to get going.  There&#8217;s basically no learning curve. The entire setup, including creating an email address on my side, took about 10-30 minutes. Support system done.  So far so good.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.smksoftware.com/2009/10/02/support-through-fogbugz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boost, their build system and Solaris</title>
		<link>http://www.smksoftware.com/2009/10/01/boost-their-build-system-and-solaris/</link>
		<comments>http://www.smksoftware.com/2009/10/01/boost-their-build-system-and-solaris/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 12:42:56 +0000</pubDate>
		<dc:creator>durand</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.smksoftware.co.za/?p=1374</guid>
		<description><![CDATA[Today I had the experience of trying to modify the boost build system (boost 1.35.0) to adapt to a specific environment of mine &#8211; a temporary Solaris environment.  Boost&#8217;s build system is really quite err&#8230; different.   I&#8217;m not sure if &#8220;sucks&#8221; is the right word.  I would need to get a [...]]]></description>
			<content:encoded><![CDATA[<p>Today I had the experience of trying to modify the boost build system (boost 1.35.0) to adapt to a specific environment of mine &#8211; a temporary Solaris environment.  Boost&#8217;s build system is really quite err&#8230; different.   I&#8217;m not sure if &#8220;sucks&#8221; is the right word.  I would need to get a complete understanding of how it all works before I would be confident using bad words about it.  For such a useful and good library, I never expected just getting it to build to be such a problem.</p>
<p>Most people won&#8217;t have the problem I&#8217;m having since I think it might work out-of-the-box for a &#8220;common&#8221; system like Linux or their package management system has installed it for them.  For me, however, I wanted to do two thing:</p>
<ul>
<li>Add some extra compiler flags to specify the correct CPU architecture</li>
<li>Make sure the Sun linker was correctly detected instead of boost using the g++ frontend to do the linking. The command line options are incorrect.</li>
</ul>
<p>Seems simple enough?  Well the problem when you roll-your-own build systems like this is that it differs from the standard conventions. So you can&#8217;t use any knowledge or experience to fix this. You have to suddenly learn something new.  This shouldn&#8217;t be the case for a standard library.</p>
<p>For example, just overriding CPPFLAGS, CFLAGS or CXXFLAGS on the command line had absolutely no effect despite the fact that the configure script said it would. And where do you set the linker easily &#8230; ?  Well, you cant.</p>
<p>However, I managed to combine knowledge I acquired from several different sites to get this working.</p>
<p><a href="http://www.pion.org/files/pion-platform/common/doc/README.solaris">http://www.pion.org/files/pion-platform/common/doc/README.solaris</a><br />
<a href="http://blogs.sun.com/sga/entry/how_to_build_boost_1">http://blogs.sun.com/sga/entry/how_to_build_boost_1</a><br />
<a href="http://shoaibmir.wordpress.com/2009/08/12/building-boost-under-solaris/">http://shoaibmir.wordpress.com/2009/08/12/building-boost-under-solaris/</a></p>
<p>Each of which has some useful piece of information. And so I did the following&#8230; I made sure the prefixes and everything were set up.</p>
<p><code><br />
<strong><em>./configure --prefix=&lt;path&gt; LDFLAGS="-L&lt;path&gt;" CPPFLAGS="-I&lt;path&gt;" </em></strong><br />
</code></p>
<p>(Not sure of the CPPFLAGS or LDFLAGS were honoured, I didn&#8217;t check.)  And then this generates a &#8220;user-config.jam&#8221; file in the top directory.  I modified mine as follows:</p>
<p><code><br />
<strong><em># Boost.Build Configuration<br />
# Automatically generated by Boost configure</p>
<p># Compiler configuration<br />
using gcc : : : &lt;compileflags&gt;-mcpu=v9 &lt;linker-type&gt;sun ;</p>
<p># Python configuration<br />
using python : 2.3 : /usr/sfw ;</em></strong><br />
</code></p>
<p>If you don&#8217;t specify the CPU architecture, you get warnings from the assembler (as) about the opcode &#8220;cas&#8221; being incorrect for the architecture &#8211; applicable to v9&#8217;s instead of v8&#8217;s &#8216;cos &#8220;cas&#8221; is atomic on v9&#8217;s.  &#8220;(Requires v9|v9a|v9b; requested architecture is v8.)&#8221;. And then &#8230;.</p>
<p><code><br />
<strong><em>make</em></strong><br />
</code></p>
<p>viola.  Easy, huh?  No &#8230;. not at all.  The above represents several hours of work.  I&#8217;m not even sure that it&#8217;s the &#8220;correct&#8221; way to do it. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.smksoftware.com/2009/10/01/boost-their-build-system-and-solaris/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XML in C++</title>
		<link>http://www.smksoftware.com/2009/09/30/xml-in-c/</link>
		<comments>http://www.smksoftware.com/2009/09/30/xml-in-c/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 14:21:11 +0000</pubDate>
		<dc:creator>durand</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.smksoftware.co.za/?p=1370</guid>
		<description><![CDATA[I needed some new XML libraries because most of my experience with these things were based on some internal, proprietary convenience libraries developed in-house at my last place of employment.  I thought it would be easy and I&#8217;d find some useful and convenient libraries.  However, it turns out that while XML is conceptually [...]]]></description>
			<content:encoded><![CDATA[<p>I needed some new XML libraries because most of my experience with these things were based on some internal, proprietary convenience libraries developed in-house at my last place of employment.  I thought it would be easy and I&#8217;d find some useful and convenient libraries.  However, it turns out that while XML is conceptually easy, the general programming conventions for these things are not! In fact, I&#8217;d say working with XML and the open source libraries available is a real pain.  </p>
<p>In the end I&#8217;ve discovered two libraries which I find useful:</p>
<ul>
<li><a href="http://xerces.apache.org/xerces-c/">Xerces-C++</a> which is a part of the Apache project.  It&#8217;s a fully implemented, validating XML parser which supports DOM, SAX and SAX2 APIs.  It&#8217;s very good. It&#8217;s very big. It does it all.</li>
<li>If you don&#8217;t care about completeness and you just want to get the job done with your XML, then I&#8217;d recommend this <a href="http://www.applied-mathematics.net/tools/xmlParser.html">small, simple, cross-platform, free and fast C++ XML Parser</a> which is basically a header file and an implementation file.  It&#8217;s quick and easy to use.  Initially I was attracted to it because the API was almost exactly the same as the convenience library I&#8217;d used in my previous work. However, I didn&#8217;t end up using it because it really just cares about getting the job done and extracting or building XML. So other nice things like error codes, etc have been neglected. For example, the inability of the parser to parse a file will result in the parser exit()&#8217;ing the entire application. So I couldn&#8217;t use this in an end-user product.  Otherwise, great for RAD.  The author will also re-license the code to you if you need a BSD license.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.smksoftware.com/2009/09/30/xml-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taxes and IP export laws</title>
		<link>http://www.smksoftware.com/2009/09/21/taxes-and-ip-export-laws/</link>
		<comments>http://www.smksoftware.com/2009/09/21/taxes-and-ip-export-laws/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 13:35:59 +0000</pubDate>
		<dc:creator>durand</dc:creator>
				<category><![CDATA[Company]]></category>

		<guid isPermaLink="false">http://www.smksoftware.co.za/?p=1367</guid>
		<description><![CDATA[It turns out that the export of Intellectual Property or licensing of it to people outside of South Africa is supposed to be regulated by government institutions. It&#8217;s essentially the same as exporting and importing of physical goods. So I&#8217;m meeting with a specialist in the field tomorrow to discuss my entire setup and make [...]]]></description>
			<content:encoded><![CDATA[<p>It turns out that the export of Intellectual Property or licensing of it to people outside of South Africa is supposed to be regulated by government institutions. It&#8217;s essentially the same as exporting and importing of physical goods. So I&#8217;m meeting with a specialist in the field tomorrow to discuss my entire setup and make sure I&#8217;m not breaking any international laws.  He&#8217;s also going to get me hooked up with the appropriate licenses and I&#8217;ll be able to distribute SuiteSMPP under my proposed Open Source Compatible license.</p>
<p>Also, from what I can see, my entire current business costs are tax deductible to approximately 150% of the value.  It turns out that South Africa offers a huge tax incentive for R&#038;D in the whole Intellectual Property space.  The definition of R&#038;D is broad enough to include the salaries of software developers.  Awesome.  This incentive is further sweetened for some countries outside of the Republic &#8211; including the UK, China, Belgium and others &#8211; because they can then claim deducations from both South Africa and their own governments.  It&#8217;s interesting and complicated stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.smksoftware.com/2009/09/21/taxes-and-ip-export-laws/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delayed SuiteSMPP release</title>
		<link>http://www.smksoftware.com/2009/09/11/delayed-suitesmpp-release/</link>
		<comments>http://www.smksoftware.com/2009/09/11/delayed-suitesmpp-release/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 12:01:31 +0000</pubDate>
		<dc:creator>durand</dc:creator>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.smksoftware.co.za/?p=1364</guid>
		<description><![CDATA[Originally I had planned to release SuiteSMPP on the 11th of September.  Apart from the obvious coincidence of 9/11 which was probably not a good idea, I&#8217;ve decided to delay this by a week or so for a couple reasons:

I actually have quite a lot of work at the moment doing an integration project. [...]]]></description>
			<content:encoded><![CDATA[<p>Originally I had planned to release SuiteSMPP on the 11th of September.  Apart from the obvious coincidence of 9/11 which was probably not a good idea, I&#8217;ve decided to delay this by a week or so for a couple reasons:</p>
<ul>
<li>I actually have quite a lot of work at the moment doing an integration project.  This is taking up all of my time.</li>
<li>I haven&#8217;t yet received access to the Sun EZQual virtual lab to compile the code on a SUN machine.</li>
</ul>
<p>I&#8217;m eventually going to need a SUN machine of my own but then that brings in the problem of cost and of hosting.  Ah well&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.smksoftware.com/2009/09/11/delayed-suitesmpp-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sun Associate Partner Status</title>
		<link>http://www.smksoftware.com/2009/09/03/sun-associate-partner-status/</link>
		<comments>http://www.smksoftware.com/2009/09/03/sun-associate-partner-status/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 14:45:32 +0000</pubDate>
		<dc:creator>durand</dc:creator>
				<category><![CDATA[Company]]></category>

		<guid isPermaLink="false">http://www.smksoftware.co.za/?p=1360</guid>
		<description><![CDATA[It turns out that Sun is pretty good with supporting third-parties who wish to use their systems and software.  Support comes in the form of discounted hardware, use of logos, access to testing and development labs and all sorts of things.  I applied last week for Associate Partnership and today I received it [...]]]></description>
			<content:encoded><![CDATA[<p>It turns out that Sun is pretty good with supporting third-parties who wish to use their systems and software.  Support comes in the form of discounted hardware, use of logos, access to testing and development labs and all sorts of things.  I applied last week for Associate Partnership and today I received it which includes permission to use their logo.  You&#8217;ll notice it on the front page. I need to place it somewhere better and get a few more awesome logos.  It certainly adds some weight to the front page, I think.</p>
<p>Of course, I&#8217;m sure Microsoft and others are equally as supportive.  After all, they&#8217;re all fighting for the same space.  I&#8217;ll investigate what it takes to achieve a Microsoft partnership.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.smksoftware.com/2009/09/03/sun-associate-partner-status/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New offices</title>
		<link>http://www.smksoftware.com/2009/09/01/new-offices/</link>
		<comments>http://www.smksoftware.com/2009/09/01/new-offices/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 20:41:21 +0000</pubDate>
		<dc:creator>durand</dc:creator>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.smksoftware.co.za/?p=1353</guid>
		<description><![CDATA[I&#8217;m renting some office space right next to the Fourways Mall about 5 minutes drive from my house.  Today&#8217;s the day I moved in.  It went okay and I rocked up with my laptop, got my Internet working and settled in.  It&#8217;s nice having a place of work again.  There are [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m renting some office space right next to the <a href="http://www.fourwaysmall.co.za/">Fourways Mall</a> about 5 minutes drive from my house.  Today&#8217;s the day I moved in.  It went okay and I rocked up with my laptop, got my Internet working and settled in.  It&#8217;s nice having a place of work again.  There are too many distractions at home and at least there are zero distractions at the office.  </p>
<p>It&#8217;s quite pleasant to be able to walk across the road and visit the mall. I can do my daily shopping during my lunch break.  It has a branch of the Virgin Active gym to which I have a membership.  So my plan for the next couple months is to work and work out.  After about 5 years of sitting in a chair doing software development for my previous company, I have a lot of health and fitness to recover.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.smksoftware.com/2009/09/01/new-offices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Company Rule and Policies</title>
		<link>http://www.smksoftware.com/2009/08/21/company-rule-and-policies/</link>
		<comments>http://www.smksoftware.com/2009/08/21/company-rule-and-policies/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 19:42:31 +0000</pubDate>
		<dc:creator>durand</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.smksoftware.co.za/?p=1336</guid>
		<description><![CDATA[The company rules and policies are largely complete.  They&#8217;re good. I spent a lot of time on them.  I would like to work at this company!
]]></description>
			<content:encoded><![CDATA[<p>The <a href="/company/policies-and-rules/">company rules and policies</a> are largely complete.  They&#8217;re good. I spent a lot of time on them.  I would like to work at this company!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.smksoftware.com/2009/08/21/company-rule-and-policies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
