<?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>Zit Seng&#039;s Superwall &#187; web applications</title>
	<atom:link href="http://zitseng.com/archives/tag/web-applications/feed" rel="self" type="application/rss+xml" />
	<link>http://zitseng.com</link>
	<description>A Singaporean&#039;s technology and lifestyle blog</description>
	<lastBuildDate>Tue, 22 May 2012 07:53:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Building Scaleable Web Apps &#8211; Syscalls</title>
		<link>http://zitseng.com/archives/3274</link>
		<comments>http://zitseng.com/archives/3274#comments</comments>
		<pubDate>Wed, 21 Sep 2011 03:01:42 +0000</pubDate>
		<dc:creator>Zit Seng</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://zitseng.com/?p=3274</guid>
		<description><![CDATA[I recently found myself babysitting a certain web application project as it went live. It was besieged with many performance problems as it scaled up to meet real-life usage. This is a pretty common problem. I deliver a guest lecture from time to time on the topic of building scaleable web application infrastructure, and although this is something pretty familiar to me, I can see that many people are bewildered by the complexities of real-world production web application infrastructure. The...
Related posts:<ol>
<li><a href='http://zitseng.com/archives/1912' rel='bookmark' title='The New Operating System'>The New Operating System</a> <small>Virtualization is not new to me. I&#8217;m now using a...</small></li>
<li><a href='http://zitseng.com/archives/212' rel='bookmark' title='N95 Apps to Annoy Your Friends'>N95 Apps to Annoy Your Friends</a> <small>Here are some applications for your Nokia N95 to annoy...</small></li>
<li><a href='http://zitseng.com/archives/3205' rel='bookmark' title='Building My New PC'>Building My New PC</a> <small>It&#8217;s been quite a long while since I last built...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-3275" title="IMG_20100717_102959" src="http://zitseng.com/uploads/2011/09/IMG_20100717_102959-180x180.jpg" alt="" width="180" height="180" /></p>
<p>I recently found myself babysitting a certain web application project as it went live. It was besieged with many performance problems as it scaled up to meet real-life usage. This is a pretty common problem. I deliver a guest lecture from time to time on the topic of building scaleable web application infrastructure, and although this is something pretty familiar to me, I can see that many people are bewildered by the complexities of real-world production web application infrastructure.</p>
<p><span id="more-3274"></span>The challenge of building scaleable web application infrastructure is that you need domain knowledge that cuts through all layers of the OSI model (or the TCP/IP model if you prefer). Most of the time, application developers are the main drivers of web application projects, but they don&#8217;t know much about operating systems, server hardware, storage, and networking. It is usually not their job to know all those things, because there are other people to take care of them.</p>
<p>However, there is a big divide between the people who operate above the operating system level, and the people who work with the operating system or below. The divide often means the two sides don&#8217;t communicate on the same terms with each other, and they don&#8217;t appreciate the problems experienced by the other.</p>
<p>So, anyway, what&#8217;s interesting this time around is about syscalls. A syscall (or system call) is a call to an operating system function. It is below the user library, or the common system libraries that still run in &#8220;userland&#8221;. A syscall is more expensive than an ordinary function call because there is the matter of &#8220;privileged transfer&#8221; into operating system code.</p>
<p>I was looking into this Drupal application to find out why it was sucking up so much CPU. Web applications are usually not really CPU-bound. But this problem was rather unusual. So I started to strace the httpd processes. I found this drupal application made over 46K syscalls to service a single web request. Sounds horrendous.</p>
<p>I know 46K is too many syscalls, but I forgot what is a &#8220;right number&#8221;. I have a site running on Drupal, and I tested that. This site made over 6K syscalls. That&#8217;s almost an order of magnitude less. But even then, I thought 6K is still plenty.</p>
<p>For many years, we have been developing our own network management portal. It has grown into a mammoth application, and it has also gotten very old and dated. I tested its mod_perl-based web-front. Nice&#8230; just over 500 syscalls to service a single web request. As I looked through the 500 syscalls, I realize that many &#8220;wrong things&#8221; have crept into our code, but nevermind, 500 syscalls is already an order of magnitude lesser than our better Drupal site.</p>
<p>I next tested a WordPress website I have. It&#8217;s actually the old instance of this blog. Nice, 700+ syscalls per request. I&#8217;m suddenly not liking Drupal, and liking WordPress a lot more. WordPress does deserve its CMS-of-the-year award.</p>
<p>Just to put things in perspective, the number of syscalls isn&#8217;t anywhere the most important metric to look at. Not all syscalls are equal either. Syscalls that result in disk I/O are generally going to be more expensive (time-wise) than one that, say, fetches the system time. This is something worth looking at when you&#8217;re trying to squeeze the last drop of performance out of the app.</p>
<p>Related posts:</p><ol>
<li><a href='http://zitseng.com/archives/1912' rel='bookmark' title='The New Operating System'>The New Operating System</a> <small>Virtualization is not new to me. I&#8217;m now using a...</small></li>
<li><a href='http://zitseng.com/archives/212' rel='bookmark' title='N95 Apps to Annoy Your Friends'>N95 Apps to Annoy Your Friends</a> <small>Here are some applications for your Nokia N95 to annoy...</small></li>
<li><a href='http://zitseng.com/archives/3205' rel='bookmark' title='Building My New PC'>Building My New PC</a> <small>It&#8217;s been quite a long while since I last built...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://zitseng.com/archives/3274/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Scaling Out CodeCrunch</title>
		<link>http://zitseng.com/archives/3251</link>
		<comments>http://zitseng.com/archives/3251#comments</comments>
		<pubDate>Sun, 04 Sep 2011 11:37:29 +0000</pubDate>
		<dc:creator>Zit Seng</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[NUS]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://zitseng.com/?p=3251</guid>
		<description><![CDATA[I recently found myself leading an application system project: CodeCrunch. This is an online system for automated assessment of programming tasks. It is designed to help students learn computer programming by providing a web-based system to retrieve programming tasks, submit program solutions, perform automatic assessment, and obtain feedback of testing results. CodeCrunch originally began as a student Final Year Project, until we inherited the system in early 2010, and rolled-out to go-live in July 2010. We had pushed out CodeCrunch with...
Related posts:<ol>
<li><a href='http://zitseng.com/archives/3274' rel='bookmark' title='Building Scaleable Web Apps &#8211; Syscalls'>Building Scaleable Web Apps &#8211; Syscalls</a> <small>I recently found myself babysitting a certain web application project...</small></li>
<li><a href='http://zitseng.com/archives/3254' rel='bookmark' title='Moving on to Solid-State Drives'>Moving on to Solid-State Drives</a> <small>I think the best upgrade you can do for your...</small></li>
<li><a href='http://zitseng.com/archives/184' rel='bookmark' title='Cold Storage is Charged'>Cold Storage is Charged</a> <small>This Cold Storage is charged. With static electricity, that is....</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://zitseng.com/uploads/2011/09/IMG_20100730_142327.jpg"><img class="alignleft size-thumbnail wp-image-3252" title="IMG_20100730_142327" src="http://zitseng.com/uploads/2011/09/IMG_20100730_142327-180x180.jpg" alt="" width="180" height="180" /></a>I recently found myself leading an application system project: CodeCrunch. This is an online system for automated assessment of programming tasks. It is designed to help students learn computer programming by providing a web-based system to retrieve programming tasks, submit program solutions, perform automatic assessment, and obtain feedback of testing results. CodeCrunch originally began as a student Final Year Project, until we inherited the system in early 2010, and rolled-out to go-live in July 2010.</p>
<p><span id="more-3251"></span>We had pushed out CodeCrunch with the intention that it will one day replace an older automated programming assessment system we&#8217;re running. The two most important advantages of CodeCrunch are: web-based user interface, and system designed to scale out.</p>
<p>Everyone&#8217;s familiar with using web browsers, and so clearly any web-based system is going to be much preferred over another that requires client-side software installation. No need to elaborate anymore here.</p>
<p>The other advantage about scalability is rather fascinating. One of the limitation of the other system (and possibly many other simliar systems used elsewhere) is that it cannot easily scale to accommodate more demanding workloads. Think about a programming lab exam where there might be 500 students submitting programs for automatic assessment. Sure, you deploy more power hardware, faster CPUs, more RAM, etc. But in our past experience, the achilles heel is working with Java programs. How powerful a system do you need to support, possibly, 500 concurrent Java compilations and testing sequences? What if each JVM required a few hundred MBs of memory?</p>
<p>The only solution, really, is for the system to scale out to a distributed architecture. Better yet if the workload can be scheduled asynchronously. This is, in my opinion, the biggest strong point of CodeCrunch&#8217;s system architecture.</p>
<p>Today, the CodeCrunch cluster comprises:</p>
<ul>
<li>One cluster head node: Database, scheduler, and central storage.</li>
<li>6x worker nodes: These are the compute nodes doing the grunt program compilation, testing and assessment.</li>
<li>2x web server nodes: The web servers have very light load, but we run two simply for redundancy purposes.</li>
</ul>
<p>The cluster is fronted by a pair of load balancers, which also serve to terminate and accelerate SSL connections. On top of the failover/high-availability provided by the load balancer, the SSL termination is particularly helpful, because it relieves the web servers from encryption/decryption overheads. (Our load balancer also performs on-the-fly content compression.)</p>
<p>The distributed design allows the system to scale out to additional nodes rather trivially if required by the workload demand. The nature of asynchronous job scheduling also means that the system will not work itself to death if, for any reason, it cannot keep up with the workload thrown at it.</p>
<p>An interesting phenomenon of web application systems is that, if not properly designed, they often run into a danger of killing themselves as they near peak capacity. Here&#8217;s how it typically happens. As the rate of web requests increase, the response gets slower because of CPU bottlenecks, storage I/O bottlenecks, database lock contentions, etc. As response gets slower and slower, at some point, users get &#8220;fed up&#8221; and click reload on their web browser. The web server doesn&#8217;t necessarily know that the previous request has been &#8220;abandoned&#8221; and simply sees the reloads as additional web requests, thus further worsening the situation. If not properly managed, the problem will simply escalate exponentially until the site kils itself.</p>
<p>The problem is actually so easy to solve as to simply add more nodes to a distributed system. At some point, your distributed system will also get overloaded. The challenge is really to get the system to &#8220;fail&#8221; gracefully.</p>
<p>CodeCrunch&#8217;s nodes are, actually, not real physical hosts. They are virtual machines running on blade servers (like the one pictured above). This allows us to easily move VM instances from a more busy physical host to a less busy physical host when needed. It also allows us to easily manage hardware failures. Better yet, we can even easily spawn additional VM instances during peak usage, or shutdown some VM instances and consolidate others into fewer physical hosts during lull periods. Oh yes, that&#8217;s what some vendors are selling as being &#8220;green&#8221;.</p>
<p>We use MySQL for our database, and like most MySQL users, we have not gone the path of MySQL Cluster. This means that the database is both a potential performance bottleneck and a single-point-of-failure. Not too urgent at this time, but at some point we&#8217;ll need to look into this.</p>
<p>Another concern is with storage. There is currently a single central storage volume. We can easily the volume size without too much trouble. In fact, I just did that this morning (<a href="http://www.jaddog.org/2009/08/12/expanding-a-xen-disk-images-space/">JADDOG&#8217;s guide</a> was helpful). But this central storage volume is a single-point-of-failure.</p>
<p>Not all problems need to be fixed, of course. The MySQL and storage are concerns, but it may turn out that solving them may not be worthwhile for our purposes.</p>
<p>Related posts:</p><ol>
<li><a href='http://zitseng.com/archives/3274' rel='bookmark' title='Building Scaleable Web Apps &#8211; Syscalls'>Building Scaleable Web Apps &#8211; Syscalls</a> <small>I recently found myself babysitting a certain web application project...</small></li>
<li><a href='http://zitseng.com/archives/3254' rel='bookmark' title='Moving on to Solid-State Drives'>Moving on to Solid-State Drives</a> <small>I think the best upgrade you can do for your...</small></li>
<li><a href='http://zitseng.com/archives/184' rel='bookmark' title='Cold Storage is Charged'>Cold Storage is Charged</a> <small>This Cold Storage is charged. With static electricity, that is....</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://zitseng.com/archives/3251/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Widget For Drivers</title>
		<link>http://zitseng.com/archives/1238</link>
		<comments>http://zitseng.com/archives/1238#comments</comments>
		<pubDate>Sat, 29 Nov 2008 01:31:32 +0000</pubDate>
		<dc:creator>Zit Seng</dc:creator>
				<category><![CDATA[Motoring]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://zitseng.com/?p=1238</guid>
		<description><![CDATA[Ever since I signed up for broadband data on my mobile phone, I&#8217;ve been trying to make it easy for me to access information on the go. One of the things I&#8217;ve done is to write a simple widget to fetch little bits of information from different sources and mash it up into a tight little display area. For example, I have displays to show information from work, webcam feed from home, etc. One page that will probably find general...
Related posts:<ol>
<li><a href='http://zitseng.com/nokia/nokia-secret-codes' rel='bookmark' title='Nokia Secret Codes'>Nokia Secret Codes</a> <small>This page lists a couple of useful and/or interesting &#8220;codes&#8221;...</small></li>
<li><a href='http://zitseng.com/archives/199' rel='bookmark' title='Shaming Idiotic Drivers'>Shaming Idiotic Drivers</a> <small>I wonder what has happened with Parking Idiots blog? Some...</small></li>
<li><a href='http://zitseng.com/archives/1533' rel='bookmark' title='Boost In Google PageRank'>Boost In Google PageRank</a> <small>I wonder if Google has become more generous with their...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="mceTemp">
<dl id="attachment_1237" class="wp-caption alignleft" style="width: 190px;">
<dt class="wp-caption-dt"><a href="http://zitseng.com/blog/wp-content/uploads/2008/11/screenshot0004.jpg"><img class="size-medium wp-image-1237  " title="screenshot0004" src="http://zitseng.com/blog/wp-content/uploads/2008/11/screenshot0004-225x300.jpg" alt="Mobile widgets for drivers" width="180" height="240" /></a></dt>
</dl>
</div>
<p>Ever since I signed up for broadband data on my mobile phone, I&#8217;ve been trying to make it easy for me to access information on the go. One of the things I&#8217;ve done is to write a simple widget to fetch little bits of information from different sources and mash it up into a tight little display area. For example, I have displays to show information from work, webcam feed from home, etc. One page that will probably find general interest to other people as well is the display of traffic information, weather forecast and CNA front page news. I&#8217;ve since cleaned it up and moved this to a public server so that it can be shared with everyone.</p>
<p>If you&#8217;ve got a mobile broadband plan on your phone, point your phone&#8217;s web browser to <a href="http://zitseng.com/widget">http://zitseng.com/widget</a>. The page is plain and simple, so that it loads fast and minimizes unnecessary clutter and distraction on your phone. It is rendered in XHTML Mobile profile to maximize compatibility with most phone browsers (web browsers required though, not WAP-only browsers), and it will also display on all modern PC (Windows, Mac, Linux, etc) browsers as well.</p>
<p><span id="more-1238"></span>The data displayed is fetched from different sources on the web. Traffic data is from One Motoring, weather is the 12 hour forecast from NEA, and CNA news is from CNA of course. When you access the widget, the local server cache is checked for recent copies of data. If they are too old, new data is fetched from the origin site in real time. The timestamp of the data is displayed so you can see how fresh it is.</p>
<p>This is a web widget, which means there is nothing to install in your phone. It is just a webpage, and bookmarking it is all that is needed to &#8220;install&#8221;.</p>
<p>It&#8217;ll be cool if a web page can extract cell tower information like how the Google Maps mobile application does, in order to deliver location-aware information. I don&#8217;t know if this can be done through a web-based application?</p>
<p>Related posts:</p><ol>
<li><a href='http://zitseng.com/nokia/nokia-secret-codes' rel='bookmark' title='Nokia Secret Codes'>Nokia Secret Codes</a> <small>This page lists a couple of useful and/or interesting &#8220;codes&#8221;...</small></li>
<li><a href='http://zitseng.com/archives/199' rel='bookmark' title='Shaming Idiotic Drivers'>Shaming Idiotic Drivers</a> <small>I wonder what has happened with Parking Idiots blog? Some...</small></li>
<li><a href='http://zitseng.com/archives/1533' rel='bookmark' title='Boost In Google PageRank'>Boost In Google PageRank</a> <small>I wonder if Google has become more generous with their...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://zitseng.com/archives/1238/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why Do Ugly Things Work Better</title>
		<link>http://zitseng.com/archives/959</link>
		<comments>http://zitseng.com/archives/959#comments</comments>
		<pubDate>Wed, 08 Oct 2008 15:13:37 +0000</pubDate>
		<dc:creator>Zit Seng</dc:creator>
				<category><![CDATA[Rants]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://zitseng.com/?p=959</guid>
		<description><![CDATA[I&#8217;ve been evaluating a couple of software lately. I&#8217;m looking for a nice platform to do tons of documentation. I talk about &#8220;nice&#8221;, because things need to be beautiful for people to want to use. But at the same time, they have to work. Actually, having to work is even more important. It is such a dilemma sometimes when you have to choose between what&#8217;s beautiful and what works. The obvious solution for documentation to a netizen is a wiki....
Related posts:<ol>
<li><a href='http://zitseng.com/archives/995' rel='bookmark' title='Learning To Blog'>Learning To Blog</a> <small>One of the cute little things that Vanessa tries to...</small></li>
<li><a href='http://zitseng.com/archives/1020' rel='bookmark' title='Copycat Logo'>Copycat Logo</a> <small>I was coming home a couple of days ago when...</small></li>
<li><a href='http://zitseng.com/archives/256' rel='bookmark' title='Teaching People to Work Together'>Teaching People to Work Together</a> <small>It&#8217;s funny how when we are small kids, we don&#8217;t...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://zitseng.com/blog/wp-content/uploads/2008/08/photo-7.jpg"><img class="alignleft size-thumbnail wp-image-655" title="Zit Seng" src="http://zitseng.com/blog/wp-content/uploads/2008/08/photo-7-150x150.jpg" alt="" width="150" height="150" /></a>I&#8217;ve been evaluating a couple of software lately. I&#8217;m looking for a nice platform to do tons of documentation. I talk about &#8220;nice&#8221;, because things need to be beautiful for people to want to use. But at the same time, they have to work. Actually, having to work is even more important. It is such a dilemma sometimes when you have to choose between what&#8217;s beautiful and what works.</p>
<p><span id="more-959"></span>The obvious solution for documentation to a netizen is a wiki. There are plenty of wiki software. I have specific requirements too. Yes, functional requirements apart from the fact that the software has to be, hopefully, beautiful. Basically, I want a system with  good functional WYSIWYG editor and supported by a MySQL backend storage. It needs to integrate images, file attachments. It should be somewhat mainstream, actively supported or have an active development community. All these quickly narrows down the candidate list to almost nothing. Okay, let&#8217;s leave out beauty and see what we&#8217;ve got. Still, nothing stands out.</p>
<p>Fine. I start thinking about other solutions. The idea of a CMS portal soon comes to mind. After poking around a selection of CMS platforms, I eventually started to focus on <a href="http://www.joomla.org/">Joomla</a> and <a href="http://drupal.org/">Drupal</a>. Yes how uninteresting, it&#8217;s what most people try to choose between too.</p>
<p>Joomla is beautiful. Drupal is ugly. But for what I want to do, it seems Drupal works better. It has better capabilities to handle a site that will be managed by a bunch of different people and supported by a community of contributors. I&#8217;m not trying to start a Joomla vs Drupal debate here&#8230; so let&#8217;s just leave it at this. Bottom-line is that I like how Joomla looks, but more how Drupal works.</p>
<p>The next item of consideration is the WYSIWYG editor. The two top choices that come into consideration are <a href="http://tinymce.moxiecode.com/">TinyMCE</a> and <a href="http://www.fckeditor.net/">FCKeditor</a>. TinyMCE is ugly. FCKeditor looks cool.</p>
<p>But I discover an annoying problem with FCKeditor. It outputs HTML (that gets sent back to Drupal) that concatenates all the text into continuous lines. Sure, as far as HTML is concerned, whether you actually put line breaks or not, the rendered output is still the same (except of course within certain types of HTML tags that mark up pre-formatted output). TinyMCE doesn&#8217;t have this problem.</p>
<p>I need the WYSIWYG editor to produce formatted HTML output that has line breaks at suitable places. This is to make sure that lines don&#8217;t run too long, and they are broken up at predictable places, and so that diffs between versions are easier to to digest.</p>
<p>So again, I have to choose TinyMCE. But I guess this is a bug that FCKeditor folks can fix, and I certainly hope they do.</p>
<p>Related posts:</p><ol>
<li><a href='http://zitseng.com/archives/995' rel='bookmark' title='Learning To Blog'>Learning To Blog</a> <small>One of the cute little things that Vanessa tries to...</small></li>
<li><a href='http://zitseng.com/archives/1020' rel='bookmark' title='Copycat Logo'>Copycat Logo</a> <small>I was coming home a couple of days ago when...</small></li>
<li><a href='http://zitseng.com/archives/256' rel='bookmark' title='Teaching People to Work Together'>Teaching People to Work Together</a> <small>It&#8217;s funny how when we are small kids, we don&#8217;t...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://zitseng.com/archives/959/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Urgent Security Update to WordPress</title>
		<link>http://zitseng.com/archives/190</link>
		<comments>http://zitseng.com/archives/190#comments</comments>
		<pubDate>Sun, 30 Dec 2007 04:41:11 +0000</pubDate>
		<dc:creator>Zit Seng</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[IT security]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[vulnerabilities]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://zitseng.com/archives/190</guid>
		<description><![CDATA[Yes it keeps us busy even during the festive season. A number of critical security issues were identified with WordPress 2.3.1 (may apply to older versions too) that necessitated an urgent security release. WordPress 2.3.2 is now available. One of the problem is a SQL Injection Vulnerability that exposes internal information about your WordPress installation. These are common problems that plague web applications. I did a brief presentation on Secure Web Programming a few moons ago. It was primarily intended...
Related posts:<ol>
<li><a href='http://zitseng.com/archives/227' rel='bookmark' title='Urgent WordPress Security Update'>Urgent WordPress Security Update</a> <small>Security updates keeps us busy during festive holidays again. The...</small></li>
<li><a href='http://zitseng.com/archives/329' rel='bookmark' title='WordPress 2.5.1 Security Update'>WordPress 2.5.1 Security Update</a> <small>WordPress 2.5.1 was just released yesterday to fix one very...</small></li>
<li><a href='http://zitseng.com/archives/1177' rel='bookmark' title='WordPress 2.6.5 Security Update'>WordPress 2.6.5 Security Update</a> <small>WordPress has been updated to version 2.6.5, which fixes one...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://zitseng.com/gallery/main.php?g2_itemId=524"><img class="alignleft" title="IMG_7430-1.JPG" src="http://zitseng.com/gallery/main.php?g2_view=core.DownloadItem&amp;g2_itemId=525&amp;g2_GALLERYSID=fd4ad309360e012062bbd8525d90c951" alt="IMG_7430-1.JPG" width="101" height="150" /></a>Yes it keeps us busy even during the festive season. A number of critical security issues were identified with WordPress 2.3.1 (may apply to older versions too) that necessitated an urgent security release. <a href="http://wordpress.org/development/2007/12/wordpress-232/">WordPress 2.3.2</a> is now available. One of the problem is a <a href="http://blogsecurity.net/wordpress/wordpress-231-sql-injection-vulnerability/">SQL Injection Vulnerability</a> that exposes internal information about your WordPress installation. These are common problems that plague web applications. I did a brief presentation on <a href="http://zitseng.com/files/Secure%20Web%20Programming.ppt">Secure Web Programming</a> a few moons ago. It was primarily intended to be a high-level overview to familiarize programmers with web application security issues. You can download it if you&#8217;re interested. <img src='http://zitseng.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Related posts:</p><ol>
<li><a href='http://zitseng.com/archives/227' rel='bookmark' title='Urgent WordPress Security Update'>Urgent WordPress Security Update</a> <small>Security updates keeps us busy during festive holidays again. The...</small></li>
<li><a href='http://zitseng.com/archives/329' rel='bookmark' title='WordPress 2.5.1 Security Update'>WordPress 2.5.1 Security Update</a> <small>WordPress 2.5.1 was just released yesterday to fix one very...</small></li>
<li><a href='http://zitseng.com/archives/1177' rel='bookmark' title='WordPress 2.6.5 Security Update'>WordPress 2.6.5 Security Update</a> <small>WordPress has been updated to version 2.6.5, which fixes one...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://zitseng.com/archives/190/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

