<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title><![CDATA[Hotaru CMS - Blogs - Nick's Hotaru CMS Blog by Nick]]></title>
		<link>http://hotarucms.org/blog.php?u=1</link>
		<description>Hotaru CMS is an open source social bookmarking platform written in PHP.</description>
		<language>en</language>
		<lastBuildDate>Mon, 08 Feb 2010 23:05:40 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>60</ttl>
		<image>
			<url>http://hotarucms.org/images/misc/rss.jpg</url>
			<title><![CDATA[Hotaru CMS - Blogs - Nick's Hotaru CMS Blog by Nick]]></title>
			<link>http://hotarucms.org/blog.php?u=1</link>
		</image>
		<item>
			<title>Time to Get Zipping</title>
			<link>http://hotarucms.org/blog.php?b=69</link>
			<pubDate>Thu, 04 Feb 2010 17:31:10 GMT</pubDate>
			<description><![CDATA[I think it's a good time to zip up all the files and offer a download version of Hotaru CMS. We used to have everything zipped up, but it became a...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">I think it's a good time to zip up all the files and offer a download version of Hotaru CMS. We used to have everything zipped up, but it became a real chore to maintain when so many updates were being made across so many files. Now, though, things have changed somewhat. I don't expect any major overhauls of the core system, and plugins can be dealt with separately. But what exactly is involved in &quot;zipping up&quot; the files?<br />
<br />
There are currently 46 plugins for Hotaru. So each forum thread for each plugin needs to be updated to match the version number, requirements and description stated in the plugin itself. Then, each plugin needs to be zipped and added as an attachment. Ideally, a screenshot will be added, too.<br />
<br />
Once that's done, and if my hand hasn't fallen off with a Repetitive Strain Injury, I'll choose the most important plugins and wrap them up in a &quot;social bookmarking suite&quot;. After that, the Theme Downloads section needs updating, too.<br />
<br />
Finally, the core files need to be zipped, and an announcement posted about its availability. Oh, and I still have a load of updates that need making in the Documentation section.<br />
<br />
Still, it's all good fun, eh? :D</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=69</guid>
		</item>
		<item>
			<title>Bugs Abound!</title>
			<link>http://hotarucms.org/blog.php?b=68</link>
			<pubDate>Wed, 03 Feb 2010 01:05:07 GMT</pubDate>
			<description><![CDATA[It's typical that a few hours after announcing 1.0.5 that some rather nasty bugs revealed themselves, mostly to do with removing user content. I had...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">It's typical that a few hours after announcing 1.0.5 that some rather nasty bugs revealed themselves, mostly to do with removing user content. I had one user that was upset at people criticizing the quality of his submission. First he edited his comments so they were blank. That made the Latest Comments and Activity widgets look broken. Then he edited the post description with *ADMINS - PLEASE DELETE ACCOUNT ENTIRELY*, and from then on things went really bad as Hotaru failed to &quot;clean&quot; his history completely from the database, and for good measure, emptied the comments table completely! 14,000+ comments over more than two years gone! Naturally, I reverted to the previous day's backup. More bugs followed such as not being able to close the comment form and not being able to change a user's name (<i>Edit:</i> both fixed at SVN trunk rev. 1103)<br />
<br />
So I've got my work cut out to identify what's causing these and get them fixed ASAP. Unfortunately, my son is also buggy - throwing up and poo'ing everywhere - so he's off school today and I'm taking care of him which takes priority for now.</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=68</guid>
		</item>
		<item>
			<title>Bob, On the Job!</title>
			<link>http://hotarucms.org/blog.php?b=67</link>
			<pubDate>Mon, 01 Feb 2010 15:00:56 GMT</pubDate>
			<description><![CDATA[My son's a fan of Bob the Builder (http://www.youtube.com/watch?v=bA16sqCusbY), a British kids show about a team of construction vehicles and their...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">My son's a fan of <a href="http://www.youtube.com/watch?v=bA16sqCusbY" target="_blank">Bob the Builder</a>, a British kids show about a team of construction vehicles and their leader, Bob. In every episode, all the characters chant &quot;Can we fix it? Yes, we can!&quot;<br />
<br />
So I've had the theme song for that in my head this last week while doing my best to fix all the bugs that have surfaced since putting JapanSoc on Hotaru. There are still a few more bugs and loose ends I want to sort out, and that's delaying things a bit, but I have the whole day free tomorrow and hope to get v.1.0.5 on the SVN trunk so you can play with it.<br />
<br />
Oh, nearly forgot! I upgraded the server to a dedicated one so you should find these forums and the demo site running much quicker than before. If you'd like to contribute $3 a month towards the running costs, please <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=11082422" target="_blank">click here</a>! :o</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=67</guid>
		</item>
		<item>
			<title>Anti-Spam Progress</title>
			<link>http://hotarucms.org/blog.php?b=66</link>
			<pubDate>Sat, 30 Jan 2010 09:05:04 GMT</pubDate>
			<description><![CDATA[Since moving JapanSoc to HotaruCMS about 48 hours ago, I've added 32 spammers to the StopForumSpam database and have four pages of them on my...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Since moving JapanSoc to HotaruCMS about 48 hours ago, I've added 32 spammers to the StopForumSpam database and have four pages of them on my &quot;Blocked List&quot;. I usually get hit by the same spammers again and again, so hopefully once they're all banned, things will quieten down a lot.<br />
<br />
Now that I'm getting some real spam to test Hotaru's numerous anti-spam features on, I'm uncovering a few issues that makes zapping spammers less fun than it should be. First of all, the email notifications of pending posts and comments had no information in them other than a link to the post edit page or Comment Manager. That would be fine if you wanted to go to those pages and click &quot;Delete&quot;, but what we really needed was a link to the User Manager page so you could delete and ban the user along with their posts. I've now done that by including all details in the email. Here's an edited example of the new &quot;pending post&quot; notification email:<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				Hi Nick<br />
<br />
A new post has been submitted at JapanSoc<br />
<br />
Post Status:  pending<br />
Post Title: <i>Title</i><br />
Post Content: <i>Content</i><br />
Post Page: <i>Link</i><br />
Edit  Post: <i>Link</i><br />
Post  Management: <i>Link to posts with this status, in this case &quot;pending&quot;</i><br />
<br />
User  Name: <i>user name</i><br />
User Role: member<br />
User Email: <i>User email address</i><br />
User Account: <i>Link</i><br />
User  Management:<i> Link to users with this status, in this case &quot;member&quot;</i><br />
<br />
Thank  you,<br />
JapanSoc Admin
			
		</div>
	</div>
</div> That means I can easily go to User Management and zap the user, having seen the post content in the email body. Alternatively, of course, if it's not spam, I can go to the Post Management page and approve the post.<br />
<br />
So while that helps a lot, there's still another problem. What if you come back to your machine and find 30 spam posts waiting for you, submitted by 30 different users? Of course, you can set all new users to &quot;pending&quot; when they register, but at that stage you don't yet know if they are spammers or legitimate users. Assuming you're putting the first X posts into moderation, what you really need is to be able to check the box next to all the spammers in a list and zap them all in one go. The User Manager has such a list, but you need the Post Manager page open in another tab so you can see which users submitted spam, and which submitted ham. Checking back and forth like that is somewhat tedious, so I'm going to work on that and see what I can improve. The biggest hurdle is that User, Post and Comment Managers are all independent plugins, so if we want to tie them in with each other, we have to do it with plugin hooks, and that's quite a challenge.<br />
<br />
This is where my focus is right now, but I'll try to find time on Sunday to move what we've got sitting on the SVN 1.0 branch to the trunk.</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=66</guid>
		</item>
		<item>
			<title>JapanSoc Down, Hotaru Standing By</title>
			<link>http://hotarucms.org/blog.php?b=65</link>
			<pubDate>Mon, 25 Jan 2010 15:26:11 GMT</pubDate>
			<description><![CDATA[Yep, it's true... 
 
 
---Quote--- 
JapanSoc was plagued by spam. You never saw it, but I got it in my email box and manually deleted it everyday for...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Yep, it's true...<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				JapanSoc was plagued by spam. You never saw it, but I got it in my email box and manually deleted it everyday for the last two years and three months. As a result, the database had grown to ugly proportions, filled with the remnants of deleted users, stories, votes, comments, tags, and more. In fact, it was too big for phpMyAdmin’s export feature, so I decided to run a database cleanup module I made ages ago. That module worked, and I was able to backup the database after all the spam had been wiped. Unfortunately, I then realized I couldn’t log in, and I got an email from one of our top users whose account had been deleted! I guess my module was overly keen.<br />
<br />
<br />
 I’m taking this as a signal to scrap everything and start again. Start again fresh with a new CMS, one which I’ve been developing myself, a clean database, and a spam free inbox to wake up to every morning.<br />
<br />
<br />
 To those of you who have given so much to JapanSoc over the last couple of years, I’m really sorry that all your content will be wiped. I could try moving it to the new system, but there are a lot of complications migrating from JapanSoc to Hotaru CMS, specifically with how user accounts are mapped with RPX, the provider that lets you sign in with Google, Twitter, Facebook, etc. I’m not a big business with a tech support department. I’m just a guy at home in the mountains of Gifu, playing with the internet.<br />
<br />
<br />
 Some of you might be reluctant to sign-up again on the new JapanSoc in case I wipe everything again, and that is totally understandable. I hope, however, that you re-join us anyway! <img src="http://blog.japansoc.com/wp-includes/images/smilies/icon_smile.gif" border="0" alt="" />
			
		</div>
	</div>
</div> <a href="http://blog.japansoc.com/2010/01/25/japansoc-broken-will-start-from-scratch/" target="_blank">http://blog.japansoc.com/2010/01/25/...-from-scratch/</a><br />
<br />
So it looks like Hotaru will take to the stage earlier than expected. This can only be a good thing as it will get some serious testing on JapanSoc.com. Wish me luck!</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=65</guid>
		</item>
		<item>
			<title><![CDATA[Oh Lovely. PhpMyAdmin's Gone Screwy]]></title>
			<link>http://hotarucms.org/blog.php?b=64</link>
			<pubDate>Sat, 23 Jan 2010 12:19:10 GMT</pubDate>
			<description><![CDATA[Here's phpMyAdmin as I look at it now: 
 
[ATTACH=CONFIG]372[/ATTACH] 
 
No idea what's causing that. Will lose the next few hours trying to figure...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Here's phpMyAdmin as I look at it now:<br />
<br />
<a href="http://hotarucms.org/attachment.php?attachmentid=372&amp;d=1264249062" id="attachment372" rel="Lightbox_64" ><img src="http://hotarucms.org/attachment.php?attachmentid=372&amp;d=1264249062&amp;thumb=1" border="0" alt="Click image for larger version

Name:	phpMyAdmin_screwed_up.png
Views:	39
Size:	89.4 KB
ID:	372" class="thumbnail" style="float:CONFIG" /></a><br />
<br />
No idea what's causing that. Will lose the next few hours trying to figure it out, no doubt. :(<br />
<br />
<i>Edit:</i> Fixed by upgrading to phpMyAdmin 3.2.5 (Phew!)</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=64</guid>
		</item>
		<item>
			<title>Speed Tests</title>
			<link>http://hotarucms.org/blog.php?b=62</link>
			<pubDate>Fri, 22 Jan 2010 05:06:14 GMT</pubDate>
			<description><![CDATA[I recently blogged about my concerns over Hotaru's loading speed (http://hotarucms.org/entry.php?59-Thinking-About-Speed), but before I attempt Jon's...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">I recently blogged about my concerns over <a href="http://hotarucms.org/entry.php?59-Thinking-About-Speed" target="_blank">Hotaru's loading speed</a>, but before I attempt Jon's suggestions of using Expires Headers and gzip, I thought I'd run some tests to see exactly what is consuming those valuable microseconds.<br />
<br />
The first thing to note is the total time:<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				22 Jan 2010 12:52:22: INDEX TEMPLATE START - 1264132342.8745<br />
22 Jan 2010 12:52:23: INDEX TEMPLATE END - 1264132343.9985
			
		</div>
	</div>
</div> It took about 1.12 seconds which is well over my desired time of around 0.5 seconds. I know even 1.12 seconds sounds reasonable, but <u>this test was done on my own computer using WampServer, so it's quicker than what you see on the demo site</u>.<br />
<br />
Let's get into the nitty-gritty. The full output is too long to post here, but here's an excerpt. Can you spot which plugins are eating up the time?<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				22 Jan 2010 12:52:22: INDEX TEMPLATE START - 1264132342.8745<br />
22 Jan 2010 12:52:22: 1264132342.8762 pluginHook: theme_index_top (sb_base)<br />
22 Jan 2010 12:52:22: 1264132342.8857 pluginHook: sb_base_theme_index_top (search)<br />
22 Jan 2010 12:52:22: 1264132342.8882 pluginHook: sb_base_theme_index_top (tags)<br />
22 Jan 2010 12:52:22: 1264132342.8904 pluginHook: sb_base_theme_index_top (media_select)<br />
22 Jan 2010 12:52:22: 1264132342.8928 pluginHook: sb_base_theme_index_top (categories)<br />
22 Jan 2010 12:52:22: 1264132342.8993 pluginHook: sb_base_functions_preparelist (search)<br />
22 Jan 2010 12:52:22: 1264132342.9001 pluginHook: sb_base_functions_preparelist (tags)<br />
22 Jan 2010 12:52:22: 1264132342.9008 pluginHook: sb_base_functions_preparelist (media_select)<br />
22 Jan 2010 12:52:22: 1264132342.9016 pluginHook: sb_base_functions_preparelist (users)<br />
<font color="Red">22 Jan 2010 12:52:22: 1264132342.9051 pluginHook: sb_base_functions_preparelist (categories)</font><br />
22 Jan 2010 12:52:22: 1264132342.9988 pluginHook: theme_index_top (submit)<br />
22 Jan 2010 12:52:23: 1264132342.9995 pluginHook: theme_index_top (submit_light)<br />
22 Jan 2010 12:52:23: 1264132343.0075 pluginHook: theme_index_top (vote)<br />
22 Jan 2010 12:52:23: 1264132343.0108 pluginHook: theme_index_top (widgets)<br />
22 Jan 2010 12:52:23: 1264132343.0247 pluginHook: theme_index_top (tweet_this)<br />
22 Jan 2010 12:52:23: 1264132343.0272 pluginHook: theme_index_top (activity)<br />
22 Jan 2010 12:52:23: 1264132343.0313 pluginHook: theme_index_top (video_inc)<br />
22 Jan 2010 12:52:23: 1264132343.0333 pluginHook: theme_index_top (comments)<br />
22 Jan 2010 12:52:23: 1264132343.042 pluginHook: theme_index_top (rpx)<br />
22 Jan 2010 12:52:23: 1264132343.0462 pluginHook: theme_index_top (user_signin)<br />
22 Jan 2010 12:52:23: 1264132343.0511 pluginHook: theme_index_top (users)
			
		</div>
	</div>
</div> It's not obvious, but the second Categories function takes very close to 0.1 seconds. Of the 300+ lines of total output, if we can isolate other functions that take 0.1 seconds, then we've got a full second right there! Let's keep looking...<br />
<br />
The <i>header_include</i> hook takes a combined 0.15 seconds, but that's not bad for 36 iterations so we'll leave that...<br />
<br />
Ah! Here again, we've got Categories eating up another 0.08 seconds:<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				22 Jan 2010 12:52:23: 1264132343.2432 pluginHook: header_end (categories)<br />
22 Jan 2010 12:52:23: 1264132343.3253 pluginHook: category_bar_end (media_select)
			
		</div>
	</div>
</div> So that's 0.18 seconds already for just two iterations of Categories....<br />
<br />
... and that's it. The rest seems to just be the result of over 300 pluginHook calls for my sample index page. One interesting observation though is that the avatar hooks are getting triggered 54 times out of the total 301. Looking at them closely, each one takes about 0.002 seconds, so that would total about 0.1 seconds.<br />
<br />
Hmm... so if we disabled Categories and Gravatar, we should save nearly 0.3 seconds. Obviously we don't want to do that, but just for fun let's see what the total would be...<br />
<br />
As expected, the number of pluginHook calls is cut to under 250, and the total time is 0.84 seconds:<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				22 Jan 2010 13:19:00: INDEX TEMPLATE START - 1264133940.0368<br />
22 Jan 2010 13:19:00: INDEX TEMPLATE END - 1264133940.8732
			
		</div>
	</div>
</div> So by disabling those two plugins, we've shaved 25% off the load time. The next challenge will be to speed up the Categories plugin so we can keep it. It must be getting caught up in its recursive functions that look for sub categories. Hmm... perhaps that can be cached... :confused:<br />
<br />
<b>AFTER LUNCH...</b><br />
<br />
Now this is very interesting. I've just noticed that even though I disabled categories, it was still showing up in the log:<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				22 Jan 2010 13:45:44: 1264135544.7432 pluginHook: sb_base_theme_index_top (media_select)<br />
<font color="Red">22 Jan 2010 13:45:44: 1264135544.7456 pluginHook: sb_base_theme_index_top (categories)</font><br />
22 Jan 2010 13:45:44: 1264135544.7538 pluginHook: sb_base_functions_preparelist (search)<br />
22 Jan 2010 13:45:44: 1264135544.7547 pluginHook: sb_base_functions_preparelist (tags)<br />
22 Jan 2010 13:45:44: 1264135544.7554 pluginHook: sb_base_functions_preparelist (media_select)<br />
22 Jan 2010 13:45:44: 1264135544.7561 pluginHook: sb_base_functions_preparelist (users)<br />
<font color="Red">22 Jan 2010 13:45:44: 1264135544.7587 pluginHook: sb_base_functions_preparelist (categories)</font><br />
22 Jan 2010 13:45:44: 1264135544.8612 pluginHook: theme_index_top (submit)
			
		</div>
	</div>
</div> Looking at the pluginHook function, I can see that I'm writing to the log file just before skipping disabled plugins, so there's nothing out of the ordinary here... or is there? If the plugin is disabled, why is it still taking such a long time to ...erm... not run? Looking at the output above, we can see that Categories is the last plugin to be check at each hook. I wonder, if we move it up the plugin list, will the results change? Let's move it above Media Select and see...<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				22 Jan 2010 13:57:22: 1264136242.4893 pluginHook: sb_base_theme_index_top (tags)<br />
<font color="Red">22 Jan 2010 13:57:22: 1264136242.4916 pluginHook: sb_base_theme_index_top (categories)</font><br />
22 Jan 2010 13:57:22: 1264136242.4916 pluginHook: sb_base_theme_index_top (media_select)<br />
22 Jan 2010 13:57:22: 1264136242.5045 pluginHook: sb_base_functions_preparelist (search)<br />
22 Jan 2010 13:57:22: 1264136242.5056 pluginHook: sb_base_functions_preparelist (tags)<br />
<font color="Red">22 Jan 2010 13:57:22: 1264136242.5063 pluginHook: sb_base_functions_preparelist (categories)</font><br />
22 Jan 2010 13:57:22: 1264136242.5063 pluginHook: sb_base_functions_preparelist (media_select)<br />
<font color="Blue">22 Jan 2010 13:57:22: 1264136242.507 pluginHook: sb_base_functions_preparelist (users)</font><br />
22 Jan 2010 13:57:22: 1264136242.6088 pluginHook: theme_index_top (submit)
			
		</div>
	</div>
</div> Bingo! That's more like it. The Categories plugin has been disabled so it takes no time at all, and now the Users plugin is last and appears to take 0.1 seconds to run, which we now know is not true! The most time consuming task must be happening somewhere between <i>sb_base_functions_preparelist </i> and <i>theme_index_top</i>.<br />
<br />
That raises the question of why my earlier results shaved 0.3 seconds off the total time if Categories wasn't the problem? That, I don't yet know. Perhaps a caching thing... :confused:<br />
<br />
Anyway, I will investigate this further and see if I can isolate the true cause of that 0.1 second delay!</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=62</guid>
		</item>
		<item>
			<title>Yet Another Update!</title>
			<link>http://hotarucms.org/blog.php?b=61</link>
			<pubDate>Mon, 18 Jan 2010 03:52:44 GMT</pubDate>
			<description><![CDATA[Since there wasn't much happening (http://hotarucms.org/entry.php?60-All-s-Quiet-At-HotaruCMS), I figured I may as well let everyone have the latest...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Since there <a href="http://hotarucms.org/entry.php?60-All-s-Quiet-At-HotaruCMS" target="_blank">wasn't much happening</a>, I figured I may as well let everyone have <a href="http://hotarucms.org/showthread.php?365-Hotaru-1-0-3-Maintenance-Update" target="_blank">the latest changes</a>, even if they come just two days after the last batch! It must be a pain for those of you uploading files to your server, but it shouldn't take more than a minute to upgrade if you're testing locally with WampServer, etc.<br />
<br />
I'm kind of torn between putting out frequent updates vs. fewer updates. I guess since we're still not *officially* released (i.e. no download files), it's better to keep pushing forward until we're all satisfied Hotaru works well enough to use on a live site.</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=61</guid>
		</item>
		<item>
			<title><![CDATA[All's Quiet At HotaruCMS]]></title>
			<link>http://hotarucms.org/blog.php?b=60</link>
			<pubDate>Sun, 17 Jan 2010 06:32:34 GMT</pubDate>
			<description><![CDATA[I'm supposed to be flooded with bug reports right now, but everything's been answered in the forums, and I've passed the only remaining ticket...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">I'm supposed to be flooded with bug reports right now, but everything's been answered in the forums, and I've passed the <a href="http://www.assembla.com/spaces/HotaruCMS/tickets/76-Double-Vote-by-Refreshing" target="_blank">only remaining ticket</a> back to Carlo, so ... I'm just twiddling my thumbs. Either Hotaru isn't getting a thorough testing, or everything is already ship-shape! <br />
<br />
Perhaps we should wrap it up in .zip files and let more people get their hands on it?</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=60</guid>
		</item>
		<item>
			<title>Thinking About Speed</title>
			<link>http://hotarucms.org/blog.php?b=59</link>
			<pubDate>Fri, 15 Jan 2010 16:40:36 GMT</pubDate>
			<description><![CDATA[I've updated the demo site to v.1.0.2 (coming soon to the SVN trunk), but it's feeling really sluggish compared to these forums. I'm just not sure...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">I've updated the demo site to v.1.0.2 (coming soon to the SVN trunk), but it's feeling really sluggish compared to these forums. I'm just not sure why.<br />
<br />
Hotaru uses caching quite extensively, especially from the second page view. Here are the stats from the home page of the demo site:<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				52 database queries and a page load time of 1.8 seconds. This page used 6.9 MB bytes of memory.   [Hotaru CMS v.1.0.2]
			
		</div>
	</div>
</div> But it feels more like 6 seconds. Two processes which you would expect to strain the server are (1) checking plugin hooks, and (2) finding and merging all the CSS and JavaScript files from plugins. But...<br />
<br />
1) When a plugin is installed, the hooks it uses are saved in the database's <i>pluginhooks</i> table. The pluginHook function queries this table and caches the results for 12 hours, unless a new plugin is installed. So using the cached results should be lightning fast.<br />
<br />
2) Hotaru uses PHP's <i>file_exists</i> function to find the CSS and JavaScript files and check their last modified dates. If a file has been modified, all the files are merged into one and archived as a single file which is used until anothermerger is necessary. Apparently, <a href="http://www.webmasterworld.com/forum88/6032.htm" target="_blank">file system access is faster than using a database</a>, so this should be pretty quick, too...<br />
<br />
Hmm....<br />
<br />
Hold on! How about this:<br />
<br />
Even though we know which plugin functions to call at each pluginHook, Hotaru still has to create a new object for every plugin function called. Come to think of it, even the main Hotaru class itself creates new objects for all the functions it redirects to. Perhaps this is the cause of the sluggishness? <br />
<br />
Any ideas? Or maybe the demo loads pretty fast for you?</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=59</guid>
		</item>
		<item>
			<title>A Few Goodies in the Works</title>
			<link>http://hotarucms.org/blog.php?b=58</link>
			<pubDate>Thu, 14 Jan 2010 08:01:11 GMT</pubDate>
			<description><![CDATA[You might have noticed the number of commits to the SVN has dropped off since Hotaru 1.0.1. That's because I'm working on 1.0.2 on my local computer...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">You might have noticed the number of commits to the SVN has dropped off since Hotaru 1.0.1. That's because I'm working on 1.0.2 on my local computer and haven't commited any changes yet because you'll need to run the upgrade script. So I'm holding off until I'm done.<br />
<br />
So far, I've made a &quot;Recent Visitors&quot; plugin, a &quot;Who's Online&quot; plugin, added the ability to clear all cache folders in one go, and my favorite, a little form on the admin Maintenance page which you can use to add a site-wide announcement to the top of every page. The biggest fix is Hotaru's SmartCache which isn't working in 1.0.1 (did you even notice? :rolleyes:).<br />
<br />
I still want to add the ability to edit default permissions and user settings before Hotaru 1.0.2 goes public.<br />
<br />
One minor setback is my mouth. I've just had a bottom wisdom tooth pulled out and it's really uncomfortable! I've had nothing but milk for the last 36 hours and I'm getting really hungry! :eek:</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=58</guid>
		</item>
		<item>
			<title>Looking Back At My Things-To-Do List</title>
			<link>http://hotarucms.org/blog.php?b=57</link>
			<pubDate>Tue, 12 Jan 2010 13:35:52 GMT</pubDate>
			<description><![CDATA[Back in November, I posted my Things-to-do list (http://hotarucms.org/entry.php?31-My-Things-to-Do-List-%28Nov-10th-2009%29). I thought I'd take...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Back in November, I posted my <a href="http://hotarucms.org/entry.php?31-My-Things-to-Do-List-%28Nov-10th-2009%29" target="_blank">Things-to-do list</a>. I thought I'd take another look at it and see how my priorities have changed:<br />
<ul><li> Daily submission/comment limit options <font color="Red">[DONE]</font></li>
<li> Ability to edit your profile <font color="Red">[DONE]</font></li>
<li> Option to post articles without a link<font color="Red"> [DONE]</font></li>
<li> External Vote Button (EVB) <font color="Red">[DONE]</font></li>
<li> A way to alert mods about rule-breaking comments</li>
<li> Ability to &quot;friend&quot; or perhaps &quot;follow&quot; other users</li>
<li> Option to limit the number of urls allowed in posts/comments <font color="Red">[DONE]</font></li>
<li> A plugin to let you email some or all users <font color="Red">[DONE]</font></li>
<li> A way to allow users to &quot;message&quot; each other</li>
<li> New Vote plugin with additional options</li>
<li> Pageview voting</li>
<li> A plugin to support RPX <font color="Red">[DONE]</font></li>
<li> An RSS Importer plugin</li>
<li> A settings page for users to customize their site preferences <font color="Red">[DONE]</font></li>
</ul>So I did 8 out of 14. Not bad.<br />
<br />
Of the ones I didn't do, none of them seem as pressing as these:<br />
<ul><li>Ability to change default permissions for roles (e.g. &quot;moderator&quot; or &quot;member&quot; groups)</li>
<li>Ability to change default &quot;user settings&quot; for roles</li>
<li>Filtering options for users (e.g. so users can hide selected categories, users they don't like, or posts from specified domains)</li>
<li>A Who Voted? plugin</li>
<li>Error logging</li>
<li>A settings page for the Posts Widget so you can specify how many posts to show in the widget</li>
<li>A way to alert mods about rule-breaking comments (Ha! Okay, this was from my original list :o)</li>
</ul>The number one priority, though, is to get any bugs fixed. That comes first, features come second.</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=57</guid>
		</item>
		<item>
			<title>Stop Spam Plugin Stretches Its Legs</title>
			<link>http://hotarucms.org/blog.php?b=56</link>
			<pubDate>Tue, 12 Jan 2010 06:00:26 GMT</pubDate>
			<description><![CDATA[I've just managed to fix the problems I was having submitting spammers to the Stop Forum Spam (http://stopforumspam.com/) database, and I have to say...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">I've just managed to fix the problems I was having submitting spammers to the <a href="http://stopforumspam.com/" target="_blank">Stop Forum Spam</a> database, and I have to say that this is just totally brilliant! The demo site got its first spammer, so I went to User Manager, checked the box next to the spammer, checked &quot;Add to Blocked List&quot;, checked &quot;Add to StopForumSpam.com&quot;, selected &quot;Killspam&quot; and voila, the guy is double-banned and his spam post deleted.<br />
<br />
What do I mean by double-banned? Not only will his record on the demo site's <i>Blocked List</i> prevent him from registering on the demo site again, but his IP, username and email address are now listed at StopForumSpam.com, so he won't be able to spam any other Hotaru sites either!<br />
<br />
I'm a bit disappointed that Akismet didn't catch his post in the first place, but perhaps Akismet just needs more training with the kind of spam that social bookmarking sites attract. Fortunately, when you delete a post in Hotaru, Akismet is notified and learns from it for next time. We shall see... <br />
<br />
For the time being, I've enabled another anti-spam option as well: All first-time posts go into moderation and will need approving before the user can post freely. Fortunately, as site admin, I get emailed immediately of any such submissions so can approve things pretty quickly. If I wanted to, I could delegate the approval task to moderators.</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=56</guid>
		</item>
		<item>
			<title>Changing the PostVotes Table</title>
			<link>http://hotarucms.org/blog.php?b=55</link>
			<pubDate>Mon, 11 Jan 2010 14:32:19 GMT</pubDate>
			<description>One thing that I meant to do before releasing Hotaru 1.0 was to change the way votes were stored in the PostVotes table in the database. In the...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">One thing that I meant to do before releasing Hotaru 1.0 was to change the way votes were stored in the PostVotes table in the database. In the current version, votes are either &quot;positive&quot;, &quot;negative&quot; or &quot;alert&quot;, but that doesn't leave much room for flexibility.<br />
<br />
So I'm working on changing this to use integers instead. In order for the Pligg Importer to import sites that use Pligg's Star Rating system, I've chosen values between -10 and +10, and -999 for flagged posts. The current Vote plugin uses Digg-style votes, so all votes will be +10. For Reddit-style voting, you could use -10 for negative votes. Star rating-style systems can use a range of numbers, most likely 2, 4, 6, 8 and 10 so that sites imported from Pligg can still function.<br />
<br />
The challenge for me was writing the correct SQL queries in the Hotaru upgrade script that would change the current strings in the PostVotes table to their integer equivalents, and change the column data type from ENUM to SMALLINT. Not surprisingly, I screwed up on the first attempt and lost all my test data! :rolleyes:<br />
<br />
Tomorrow I'll try it on the demo site, and if it works there I'll move the changes to the SVN trunk.</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=55</guid>
		</item>
		<item>
			<title>And so it begins...</title>
			<link>http://hotarucms.org/blog.php?b=54</link>
			<pubDate>Sat, 09 Jan 2010 16:01:15 GMT</pubDate>
			<description>Nine days into 2010, and Hotaru CMS is now publicly available (http://hotarucms.org/showthread.php?336-Hotaru-CMS-1-0-Available-for-Testing) from our...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Nine days into 2010, and Hotaru CMS is now <a href="http://hotarucms.org/showthread.php?336-Hotaru-CMS-1-0-Available-for-Testing" target="_blank">publicly available</a> from our SVN on Assembla.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				<div class="bbcode_postedby">
					<img src="images/misc/quote_icon.png" alt="Quote" /> Originally Posted by <strong>Nick</strong>
					<a href="showthread.php?p=1321#post1321" rel="nofollow"><img class="inlineimg" src="images/buttons/viewpost-right.png" alt="View Post" /></a>
				</div>
				<div class="message">As promised, Hotaru 1.0 is now available for testing on the SVN trunk. Thank you for your patience over the last month.</div>
			
		</div>
	</div>
</div> What a month! I made 127 commits to the SVN between December 12th and January 9th and am feeling thoroughly knackered. Although I expect users will find a bucket load of bugs, I'm very happy with this latest version of Hotaru. My goals were to make plugin and theme development easier and I think I've done that. Using the Hotaru class as a library of shortcuts to other class methods works really well for simplifying code. It's not perfect, but pretty close to my original plan. The SB Base plugin also serves its purpose by giving some logical order to how page names and types are determined, therefore untangling the knots in my brain that debugging previous plugins caused.<br />
<br />
Now I'll sit back and wait for bug reports to come in. I'd like to extend the documentation, but will need feedback from people who are actually making themes and plugins so I know what kind of help I can give them.<br />
<br />
With that said, I'm off to bed. Maybe I'll wake up and everyone will be playing with Hotaru... or perhaps no-one will and <a href="http://demo.hotarucms.org" target="_blank">the demo</a> will be hacked! :p</blockquote>

 ]]></content:encoded>
			<dc:creator>Nick</dc:creator>
			<guid isPermaLink="true">http://hotarucms.org/blog.php?b=54</guid>
		</item>
	</channel>
</rss>
