<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
  <channel>
    <title>Karma&#039;s Nucleus DevBlog</title>
    <link>http://karma.nucleuscms.org/</link>
    <description>Karma&#039;s Nucleus Development Blog (NUDN)</description>
    <!-- optional tags -->
    <language>en-us</language>           <!-- valid langugae goes here -->
    <generator>Nucleus CMS v3.50</generator>
    <copyright>©</copyright>             <!-- Copyright notice -->
    <category>Weblog</category>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>http://karma.nucleuscms.org//nucleus/nucleus2.gif</url>
      <title>Karma&#039;s Nucleus DevBlog</title>
      <link>http://karma.nucleuscms.org/</link>
    </image>
    <item>
 <title><![CDATA[Bogus security reports]]></title>
 <link>http://karma.nucleuscms.org/item/113</link>
<description><![CDATA[<p>I was pointed to <a href="http://msgs.securepoint.com/cgi-bin/get/bugtraq0606/391.html">this reported "security issue"</a> today, and wanted to say a quick word about this.</p>

<p>The report is invalid. None of the specified URLs are exploitable.</p>
<ol>
 <li><code>action.php</code>: has <code>include('./config.php');</code> as first line. <code>config.php</code> defines <code>$DIR_LIBS</code>.</li>
 <li><code>media.php</code>: same thing: included <code>config.php</code> first, via a fixed path.</li>
 <li><code>xmlrpc/server.php</code>: again, the same: includes <code>config.php</code> via a fixed path.</li>
 <li><code>xmlrpc/api_metaweblog.inc.php</code>: this one is just funny, since this file doesn't execute any code when called (it's included from elsewhere). The only thing it does is composing an array and defining a number of functions.</li>
</ol>

<p>Including <code>config.php</code> as soon as possible, via a safe path, is crucial to Nucleus security: including <code>config.php</code> defines crucial variables (like <code>DIR_LIBS</code>) and bootstraps Nucleus (including security checks: that's why you'll receive a "Sorry, an error occurred" error message when trying these URLs)</p>

<p>The previous security issue, which led to the release of Nucleus v3.23, was possible because <code>PLUGINADMIN.php</code> has no reliable way of knowing where it is executing, and therefor cannot include <code>config.php</code> in a safe way. Instead, this file is included from plugin admin areas, which include the config file first. Should have called the file <code>PLUGINADMIN.inc</code>, actually.</p>

<p>Anyway, there's no need to worry about this report. You're only vulnarable to it if you've got an empty <code>config.php</code> file, and in that case, your site won't function anyway. As far as I know, Nucleus v3.23 is safe to use.</p>]]></description>
 <category>Inside Nucleus</category>
<comments>http://karma.nucleuscms.org/index.php?itemid=113</comments>
 <pubDate>Tue, 20 Jun 2006 02:26:53 +0800</pubDate>
</item><item>
 <title><![CDATA[Some info on the downtime]]></title>
 <link>http://karma.nucleuscms.org/item/112</link>
<description><![CDATA[<p>You might have noticed that all of the <code>nucleuscms.org</code> sites have been down for quite a long time today. Here's a quick update of what was/is wrong: we're using too much MySQL resources. The hosting provider pointed to the Japanese forum and Skins site archive as the reason for disabling the site.</p>
<p>Short term solution was to disable these two parts of the site. An upgrade to another hosting plan has also been started. Once complete, we'll re-enable the temporarily disabled sections.</p>
]]></description>
 <category>General</category>
<comments>http://karma.nucleuscms.org/index.php?itemid=112</comments>
 <pubDate>Thu, 9 Mar 2006 21:03:49 +0700</pubDate>
</item><item>
 <title><![CDATA[OpenOffice Sucks]]></title>
 <link>http://karma.nucleuscms.org/item/111</link>
<description><![CDATA[<p>Since I don't use document editors, spreadsheets or presentation software very often, I decided to install the 'free' <a href="http://www.openoffice.org/">OpenOffice 2.0</a> suite instead of Microsoft Office (which would cost me way too much compared to how much I'd use it). Actually, I've had OpenOffice installed for quite some time now, and it neatly opens any <code>ppt</code> or <code>xls</code> files.</p>

<p>Lately, I started creating some actual documents: spreadsheets. That worked fine. Hurray! The utter user-unfriendlyness (mainly when editing charts), didn't really bother me. Hey! It's free.</p>

<p>Next task: setting up a small database with OpenOffice Base... My first attempts to create tables with some inter-table relationships eventually resulted in an OpenOffice crash, which rendered the entire database file unusable. That's like... a bummer.</p>

<p>It took a couple of days before I got my courage back and started over. One single table with some views and forms this time. No fancy options. During the next week, I entered some data.</p>

<p>Today, after adding an extra boolean field in the main table: BOOM! OpenOffice started spitting out SQL errors. I couldn't even access the table in question. Bye Bye data!</p>

<p>Things like these make me slowly turning into a Microsoft fanboy. Really. Putting the user in control rather than the software.</p>]]></description>
 <category>Rant</category>
<comments>http://karma.nucleuscms.org/index.php?itemid=111</comments>
 <pubDate>Sat, 18 Feb 2006 12:10:14 +0700</pubDate>
</item><item>
 <title><![CDATA[Skin Design Contest Reminder]]></title>
 <link>http://karma.nucleuscms.org/item/110</link>
<description><![CDATA[<p>The deadline for <a href="http://skins.nucleuscms.org/contest/">Nucleus CMS Skin Design Contest</a> submissions is getting closer (<del>January</del><ins>June</ins> 30th). If you haven't started on a design yet, the time to do so is now :)</p>
<div><a href="http://skins.nucleuscms.org/contest/" title="Nucleus CMS Skin Design Contest"><img src="http://skins.nucleuscms.org/media/8/contest-halfbanner.jpg" width="234" height="60" alt="Nucleus CMS Skin Design Contest" /></a></div>]]></description>
 <category>General</category>
<comments>http://karma.nucleuscms.org/index.php?itemid=110</comments>
 <pubDate>Sun, 22 Jan 2006 10:45:36 +0700</pubDate>
</item><item>
 <title><![CDATA[CVS Branch point: Branch-NewAdminArea]]></title>
 <link>http://karma.nucleuscms.org/item/109</link>
<description><![CDATA[<p>Lately, Moraes and others have been doing a lot of work on a <a href="http://wakka.xiffy.nl/newadmin:index" title="Nucleus Wiki: New Admin Area Project">new &amp; improved admin area</a>. In the <a href="http://sourceforge.net/cvs/?group_id=66479">CVS</a> repository, a new branch has been created for this. Quoting Moraes:</p>

<blockquote><p>Ok, the <code>Branch-NewAdminArea</code> was created. These files and the libs
directory were branched:</p>

<pre><code>/nucleus/nucleus/bookmarklet.php
/nucleus/nucleus/index.php
/nucleus/nucleus/media.php
/nucleus/nucleus/libs/</code></pre></blockquote>

<p>For information on previous tags and branches, see the <a href="/category/2/blogid/1">archive for the CVS category</a>.</p>]]></description>
 <category>CVS</category>
<comments>http://karma.nucleuscms.org/index.php?itemid=109</comments>
 <pubDate>Sun, 22 Jan 2006 10:40:56 +0700</pubDate>
</item><item>
 <title><![CDATA[Activating ActiveX Controls &amp; Object Context]]></title>
 <link>http://karma.nucleuscms.org/item/108</link>
<description><![CDATA[<p>A while ago, I wrote about <a href="/item/101">Internet Explorer security zones and dynamically created elements</a>. Until such an element was attached to an existing document, all operations on that element were executed in the zone corresponding with <code>about:blank</code>.</p>

<p>I ran into a similar situation while making changes to automatically <a href="http://msdn.microsoft.com/library/?url=/workshop/author/dhtml/overview/activating_activex.asp">activate an ActiveX control</a>.</p>

<p>Because of the Eolas patent, which describes how a browser can use external applications, Microsoft is <a href="http://www.eweek.com/article2/0,1895,1895907,00.asp">planning</a> to release an update for Internet Explorer where users will need to click an ActiveX control before it becomes active. <a href="http://msdn.microsoft.com/subscriptions/">MSDN subscribers</a> can already download a test release of this update.</p>

<p>Creating webpages with controls that respond directly to user input is still possible, by creating the object dynamically from an <em>external</em> JavaScript file. Because the file is external, it's not a violation of the Eolas patent (I think). The technique is described on <a href="http://msdn.microsoft.com/library/?url=/workshop/author/dhtml/overview/activating_activex.asp">MSDN</a> . I based my code on this article and ended up with something like this:</p>

<pre><code>...
var obj = document.createElement('object');
obj.classid= "clsid:xxxxxxxx-xxxx-...";
...
container.appendChild(obj);</code></pre>

<p>This worked magnifically: the control loaded and was activated immediately. One big problem however: the ActiveX control was unable to access the <code>IWebBrowser2</code> interface of the top level browser. The control accessed this interface as described in <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q257717">KB257717: How To Retrieve the Top-Level IWebBrowser2 Interface from an ActiveX Control</a>, from the <code>OnSetClientSite</code> method. The interface was then used to get the URL location and switch to/from full screen mode.</p>

<p>As I eventually found out, the reason for this malfunctioning had to do with object context. As long as the created object element has not been added to the document, there is no top level browser window. The <code>OnSetClientSite</code> is called when setting the <code>classid</code>, so it fails.</p>

<p>The solution, as in my <a href="/item/101">previous post</a>, is to add the element to the document tree as soon as possible, before filling out the <code>classid</code>:</p>

<pre><code>...
var obj = document.createElement('object');
<strong>container.appendChild(obj);</strong>
obj.classid= "clsid:xxxxxxxx-xxxx-...";
...</code></pre>]]></description>
 <category>Other Programming</category>
<comments>http://karma.nucleuscms.org/index.php?itemid=108</comments>
 <pubDate>Tue, 17 Jan 2006 20:06:37 +0700</pubDate>
</item><item>
 <title><![CDATA[Quiz: i += i++ + ++i]]></title>
 <link>http://karma.nucleuscms.org/item/107</link>
<description><![CDATA[<p>It's a simple enough question, which you should try to solve in your head: <em>What</em> does the following code display, and <em>why</em>?</p>

<pre><code>&lt;?php
  $i = 1;
  $i += $i++ + ++$i;
  echo 'i=', $i;
?&gt;</code></pre>

<p>Bonus question: Is the result always the same in other programming languages (JavaScript, Java, C#, ...; provided the syntax is adapted to the host language :))? Why (not)?</p>]]></description>
 <category>Other Programming</category>
<comments>http://karma.nucleuscms.org/index.php?itemid=107</comments>
 <pubDate>Mon, 9 Jan 2006 19:44:37 +0700</pubDate>
</item><item>
 <title><![CDATA[Nucleus CMS Skin Contest]]></title>
 <link>http://karma.nucleuscms.org/item/104</link>
<description><![CDATA[<p>If you weren't aware of the <a href="http://skins.nucleuscms.org/contest/">Nucleus CMS Skin Design Contest</a> yet, you are now.</p>
<div><a href="http://skins.nucleuscms.org/contest/" title="Nucleus CMS Skin Design Contest"><img src="http://skins.nucleuscms.org/media/8/contest-halfbanner.jpg" width="234" height="60" alt="Nucleus CMS Skin Design Contest" /></a></div>
<p>Check it out!</p>]]></description>
 <category>General</category>
<comments>http://karma.nucleuscms.org/index.php?itemid=104</comments>
 <pubDate>Tue, 6 Dec 2005 18:52:06 +0700</pubDate>
</item><item>
 <title><![CDATA[Google Analytics]]></title>
 <link>http://karma.nucleuscms.org/item/103</link>
<description><![CDATA[<p>I'm not such a stats freak. But when Google unleashed <a href="http://www.google.com/analytics/">Google Analytic</a> some weeks ago, I installed it on the main <a href="http://www.nucleuscms.org/">nucleuscms.org</a> site. Some interesting findings are collected in this post.</p><h4>Goal Conversion</h4>

<p>Google Analytics allows you to set up "goals", and track how much visitors are "converted" to that goal. For the Nucleus CMS site, the only appropriate goal I could think of was the <a href="http://www.nucleuscms.org/downloads.php">downloads</a> page. While visiting the downloads page is in no way an indication that the visitor will actually download the package, it does give an idea of how much visitors have the intent to download.</p>

<p>The goal conversion (<i>amount of visitors of downloads page</i> / <i>total visitors</i>) for the "Download" goal is at a steady 13-15%.</p>

<h4>Browsers</h4>

<p>Internet Explorer is still used by about 50% of the visitors. Luckily, 97% of these are using IE6, which is good news. Firefox -- at 39% --, has a wider range of different versions.</p>



<h4>Countries</h4>

<p>Fascinating: almost 11% of our visitors is from Japan.</p>



<h4>Version Check</h4>

<p>In the Nucleus admin area, one can click the version number to do a manual version check. When the admin area is linked from the main site, this link is often followed by search engine bots, giving a global idea of which Nucleus versions are most common:</p>



<p>If this graph is representative, it indicates that 40% of the users are still using v3.2 or v3.21...</p>

<p>Maybe we need an automatic check which starts displaying a message once the version is out of date. This check could run when visiting the admin area, if the previous check was more than e.g. 7 days ago. The result (+date of last check) could be stored in the database.</p>]]></description>
 <category>General</category>
<comments>http://karma.nucleuscms.org/index.php?itemid=103</comments>
 <pubDate>Sun, 4 Dec 2005 14:36:05 +0700</pubDate>
</item><item>
 <title><![CDATA[Captcha's]]></title>
 <link>http://karma.nucleuscms.org/item/102</link>
<description><![CDATA[<p>Captcha images are quite effective at halting comment spam. However, besides being inherently inaccessible, they're also quite annoying to regular users.</p>
<p>How to maintain a spam-free site, without annoying your users? That's the question.</p>
<p>One idea would be to make the captcha-generating code more intelligent. The NP_Captcha Nucleus plugin already does this in a limited way, by not generating challenges for registered site members. But that's only a start. There are a lot of possible tweaks.</p>

<p>How about never displaying the captcha challenge immediately? After the user hits the submit button, a set of rules (blacklist, heuristics, ...) could be used to identify a comment as "likely being spam". Only in such a case, the user would be presented with an actual captcha challenge:</p>



<p>Result: in most cases, a user can post comments without interference of any kind. Only when a message has spam-like characteristics, an extra step is required.</p>

<p>How about the visually impaired, I hear you ask? The captcha should be accompagnied by an alternative audio-challenge. The challenge for developers here is to make such an audio file as good in telling computers and humans apart as a visual captcha. One site where I saw an audio captcha in action was the <a href="https://accountservices.passport.net/">Passport</a> registration wizard.</p>

<p>By the way, the same technique could be applied without the captcha. If the post looks like spam, the user could be allowed to fine-tune it, rather than dropping the post immediately. This is something which has annoyed me in NP_Blacklist in the past: a valid comment was seen as spam, a redirect to the spamtrap page occurred, and hitting the back button returned to an empty comment form :(</p>

<p>Just a bunch of thoughts...</p>]]></description>
 <category>Thoughts</category>
<comments>http://karma.nucleuscms.org/index.php?itemid=102</comments>
 <pubDate>Thu, 24 Nov 2005 21:56:39 +0700</pubDate>
</item>
  </channel>
</rss>