<?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>qrisper &#187; Web Development</title>
	<atom:link href="http://blog.qrisper.com/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.qrisper.com</link>
	<description>the making of qrisper.com</description>
	<lastBuildDate>Fri, 14 Aug 2009 22:32:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A picture is worth a thousand answers</title>
		<link>http://blog.qrisper.com/2009/07/a-picture-is-worth-a-thousand-answers/</link>
		<comments>http://blog.qrisper.com/2009/07/a-picture-is-worth-a-thousand-answers/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 17:19:19 +0000</pubDate>
		<dc:creator>Jung Lee</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.qrisper.com/?p=202</guid>
		<description><![CDATA[So one of the feature requests for qrisper.com was the ability to add photos.  A pretty simple request&#8230;the execution piece was easier than I expected.  It was implementation, specifically figuring out how and where it made the most sense for users to add photos, that gave me the most trouble.
But before I even got to [...]]]></description>
			<content:encoded><![CDATA[<p>So one of the feature requests for qrisper.com was the ability to add photos.  A pretty simple request&#8230;the execution piece was easier than I expected.  It was implementation, specifically figuring out how and where it made the most sense for users to add photos, that gave me the most trouble.</p>
<p>But before I even got to the implementation bit, I had to ask myself, was I asking too much from the users?  First, they would have to answer a question.  Then if they were further inclined  to add validation to their answer, they could upload an image.  Well, after having gone through the process, I can say with a clear conscious (and with not a bit of biasity) that uploading images onto qrisper.com was more fun than I expected.</p>
<p>There are similar features in Facebook where you can become a fan of certain things and add a jumble of images to your profile.  But I never felt a connection with those random images that quickly became clutter.  On qrisper, I feel like there is an emotional attachment , where the images you upload are tied to the opinions you provide.  And that adds a level of enjoyment to uploading images that I haven&#8217;t felt in other sites.  That concludes the self-promotional portion of this program.</p>
<p>Syke!  Another feature that has just become available is the ability to choose the 5 primary topics that you&#8217;re interested in and customize the top navigation bar.</p>
<p>Finally, I had been looking into getting a Linode to host qrisper.  However, I quickly learned that maintaining my own server is something that I&#8217;m not ready to tackle at this moment.  So <a title="Host Nexus" href="http://www.hostnexus.com/">Host Nexus</a>, here we come!</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F07%2Fa-picture-is-worth-a-thousand-answers%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F07%2Fa-picture-is-worth-a-thousand-answers%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.qrisper.com/2009/07/a-picture-is-worth-a-thousand-answers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fast iterations and slow success (hopefully)</title>
		<link>http://blog.qrisper.com/2009/06/fast-iterations-and-slow-success-hopefully/</link>
		<comments>http://blog.qrisper.com/2009/06/fast-iterations-and-slow-success-hopefully/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 15:23:37 +0000</pubDate>
		<dc:creator>Jung Lee</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[redesign]]></category>

		<guid isPermaLink="false">http://blog.qrisper.com/?p=153</guid>
		<description><![CDATA[The month since the last development update has been a doozy.  First and foremost, qrisper.com has gone through yet another total redesign.  We&#8217;re at the 5th iteration now, for those that are counting.  Got a ton of feedback through the good folks at HackerNews, Collabfinder and the gang from FastTrac, not to mention my loyal [...]]]></description>
			<content:encoded><![CDATA[<p>The month since the last development update has been a doozy.  First and foremost, qrisper.com has gone through yet another total redesign.  We&#8217;re at the 5th iteration now, for those that are counting.  Got a ton of feedback through the good folks at <a title="hacker news" href="http://news.ycombinator.com/">HackerNews</a>, <a title="collabfinder" href="http://collabfinder.com">Collabfinder</a> and the gang from <a title="fasttrac" href="http://www.fasttrac.org/newventure.cfm">FastTrac</a>, not to mention my loyal alpha testers.</p>
<p>The overall gist of the feedback was that the colors sucked and that the previous landing page was confusing/not informative.  So I totally switched up the color scheme and added more content to the landing page.  Opening up the page layout allowed me to play with a different navigation flow to and from the homepage.  Here&#8217;s what the site looked like a few weeks ago.</p>
<p><a href="http://qrisper.com"><img class="size-medium wp-image-182 alignright" title="qrisper.com 4th" src="http://blog.qrisper.com/wp-content/uploads/2009/06/qrispera-300x237.jpg" alt="candy colored qrisper" width="300" height="237" /></a></p>
<p>One major difference now is the open availability of users&#8217; answers across the site and more emphasis on user activity.  Will this draw more users to sign up?  Let&#8217;s hope so.</p>
<p>A couple of other things that have been keeping me busy:</p>
<ul>
<li>Finally figured out how to add the question text into the url using mod rewrite.  Downside to that was I lost all of the SEO juice I had already accumulated because I didn&#8217;t bother with a redirect.</li>
<li>Created a star reward system for users &#8211; now users can get stars for being active qrispers, hooray!</li>
<li>Added Facebook Comments but immediately removed them due to performance issues (debating whether or not I should create my own comments).</li>
<li>Users can now change their answers.</li>
</ul>
<p>Coming up next: photo galleries, personalized categories and <a title="linode" href="http://www.linode.com/">Linode</a>!</p>
<p><span style="font-size: 10pt; font-family: Arial;"> </span></p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F06%2Ffast-iterations-and-slow-success-hopefully%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F06%2Ffast-iterations-and-slow-success-hopefully%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.qrisper.com/2009/06/fast-iterations-and-slow-success-hopefully/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>To procrastinate is to procreate ideas in your brain</title>
		<link>http://blog.qrisper.com/2009/05/to-procrastinate-is-to-procreate-ideas-in-your-brain/</link>
		<comments>http://blog.qrisper.com/2009/05/to-procrastinate-is-to-procreate-ideas-in-your-brain/#comments</comments>
		<pubDate>Mon, 25 May 2009 03:37:21 +0000</pubDate>
		<dc:creator>Jung Lee</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[mod-rewrite]]></category>
		<category><![CDATA[nettuts]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[stack overflow]]></category>
		<category><![CDATA[thumbnails]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://blog.qrisper.com/?p=143</guid>
		<description><![CDATA[I don&#8217;t know if this is how it works for other people but the less I think about a problem, the faster I can find a solution for it.  It&#8217;s like anytime I try to figure out a problem through sheer will and forceful brain flexing, I&#8217;m left beaten and frustrated.  But take a game [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know if this is how it works for other people but the less I think about a problem, the faster I can find a solution for it.  It&#8217;s like anytime I try to figure out a problem through sheer will and forceful brain flexing, I&#8217;m left beaten and frustrated.  But take a game break, surf the web or complete forget about the problem for a few days and the next time I approach the problem, it&#8217;s like it never was one.  Further evidence that procrastination is <em>the </em>method of creative geniuses?</p>
<p>Anyway, I made a number of breakthroughs during the past few weeks in my quest for the most frickin amazing website on the planet.  First off, I&#8217;m definitely getting more comfortable with ajax, as you can see from the registration validation that I&#8217;ve set up.  Never in my life did I think I&#8217;d be able to create a username and email check.  That was a great moment&#8230;<em>(wipes away a tear).</em> Thanks to <a title="yensdesign" href="http://yensdesign.com/2009/01/how-validate-forms-both-sides-using-php-jquery/">yensdesign.com</a>, <a title="roshans blog" href="http://roshanbh.com.np/2008/04/check-username-available-ajax-php-jquery.html">Roshan&#8217;s Blog</a> and <a title="amos" href="http://plasticpast.com/">the professor</a>.</p>
<p>Another pain in the ass was pagination.  I tried a number of techniques found <a title="php pagination" href="http://net.tutsplus.com/tutorials/php/how-to-paginate-data-with-php/#more-2928">here</a>, <a title="jquery pagination" href="http://d-scribe.de/webtools/jquery-pagination/demo/demo_options.htm">here</a> and a few others.  But either I couldn&#8217;t get it working or simply didn&#8217;t like the implementation.  Finally decided on a pretty simple version of the existing pagination code that I was using.  One thing I&#8217;d like to add is the ability to dynamically hide page links when there are too many&#8230;hoping that will come to me eventually.</p>
<p>I&#8217;m finally making some headway in using mod-rewrite to take control of my urls.  All of the user profile pages can now be access through <strong>qrisper.com/<em>username</em>/</strong>.  Shout out to <a title="one frickin great resource" href="http://stackoverflow.com/users/107427/jung">Stack Overflow</a>, one frickin great resource.  Planning to use mod-rewrite across all of qrisper.com.  One concern is what kind of performance hit I&#8217;m taking using htaccess.  Will need to move that over to the Apache config file eventually.</p>
<p>In addition, a few other minor modifications:</p>
<ul>
<li>sanitized 99% of qrisper.com&#8230; there&#8217;s one or two pages that still need a thorough scrubbing but hoping to have eliminated most of the possibility for any funny business</li>
<li>users can now change their previously submitted answers</li>
<li>a few design/nav tweaks (tweet answer link, what&#8217;s your answer link, updates to answers/skipped/index pages</li>
</ul>
<p>And lastly, I was using this <a title="php dynamic thumbnails" href="http://net.tutsplus.com/videos/screencasts/how-to-dynamically-create-thumbnails/">solution to manage thumbnail images</a> from the always helpful folks at <a title="nettuts" href="http://net.tutsplus.com/">nettuts</a>.  But at point, I broke it.  Plus, I wasn&#8217;t complete satisfied with the quality of the thumbnails.  So now I&#8217;m using the <a title="shifting pixel" href="http://shiftingpixel.com/2008/03/03/smart-image-resizer/">ridiculously awesome Smart Image Resizer by Joe Lencioni</a>.</p>
<p>That was a meaty update.  Next up, a city filter for local questions on <a title="qrisper" href="http://qrisper.com">qrisper.com</a>!</p>
<p><strong>Update:</strong> Ha, speaking of which&#8230;<a title="procrastinate yay" href="http://nymag.com/news/features/56793/?imw=Y&amp;f=most-viewed-24h5">In Defense of Distraction</a>.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F05%2Fto-procrastinate-is-to-procreate-ideas-in-your-brain%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F05%2Fto-procrastinate-is-to-procreate-ideas-in-your-brain%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.qrisper.com/2009/05/to-procrastinate-is-to-procreate-ideas-in-your-brain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OPP (other peoples programming)</title>
		<link>http://blog.qrisper.com/2009/05/opp-other-peoples-programming/</link>
		<comments>http://blog.qrisper.com/2009/05/opp-other-peoples-programming/#comments</comments>
		<pubDate>Tue, 05 May 2009 19:48:48 +0000</pubDate>
		<dc:creator>Jung Lee</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[addthis]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://blog.qrisper.com/?p=122</guid>
		<description><![CDATA[Sort of hit a developer&#8217;s wall, if such a thing exists.  I&#8217;m at a point where I can visualize what I want to code but can&#8217;t yet execute consistently.
Just read this post about why programmers don&#8217;t like to code and I feel the same way.  I get amped anytime I solve something with my own [...]]]></description>
			<content:encoded><![CDATA[<p>Sort of hit a developer&#8217;s wall, if such a thing exists.  I&#8217;m at a point where I can visualize what I want to code but can&#8217;t yet execute consistently.</p>
<p>Just read this post about <a title="programmers dont like coding" href="http://rentzsch.com/notes/programmersDontLikeToCode">why programmers don&#8217;t like to code</a> and I feel the same way.  I get amped anytime I solve something with my own code.  But more often than not, I prefer searching for pre-existing solutions and simply plugging that sucker in.  I&#8217;m not coding for the sake of coding.  I&#8217;m trying to do something that requires code&#8230;a means to an end blah blah blah.</p>
<p>Anyway, here are few updates:</p>
<ul>
<li>added an error message for when a login goes wrong (yeah didn&#8217;t have one yet)</li>
<li>users can now login with either a username or their email address</li>
<li>added validation to the registration form; currently working on a username and email check</li>
<li>did some SEO work, adding/modifying meta tags and fixing and reloading my xml sitemap</li>
<li>in the suggest question page, you can now track your suggested questions; will eventually add your friends&#8217; suggested questions as well</li>
<li>the follow/remove functionality in profile pages are now working as they should; had been having problems with those but problem solved</li>
<li>replaced the Digg/Buzz links with the <a title="addthis" href="http://www.addthis.com/">addthis button</a> &#8211; that&#8217;s a great little widget</li>
</ul>
<p>A couple of biggies.  <a title="qrisper eats" href="http://qrisper.com/eats">qrisper eats</a> is now complete.  The site is identical to qrisper except all questions are from the eats categories.  I plan to do the same for other categories as their question pool gets bigger.  Also, I definitely think I have some SEO juice going on because qrisper&#8217;s already getting hits through Google searches, with qrisper showing up in the first or second search results pages.  Pretty surprising&#8230;</p>
<p>Anyway, there&#8217;s a ton of things I still want to do&#8230;just have to chip away at it I guess.  I&#8217;m also looking into <a title="elance" href="http://elance.com">Elance.com</a> and <a title="collabfinder" href="http://collabfinder.com">Collabfinder.com</a>.  Gonna need some help sooner or later.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F05%2Fopp-other-peoples-programming%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F05%2Fopp-other-peoples-programming%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.qrisper.com/2009/05/opp-other-peoples-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>the 4th iteration of qrisper</title>
		<link>http://blog.qrisper.com/2009/04/the-4th-iteration-of-qrisper/</link>
		<comments>http://blog.qrisper.com/2009/04/the-4th-iteration-of-qrisper/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 18:13:57 +0000</pubDate>
		<dc:creator>Jung Lee</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[disqus]]></category>
		<category><![CDATA[facebook connect]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.qrisper.com/?p=104</guid>
		<description><![CDATA[For the none of you that frequent this blog, I&#8217;m sure you&#8217;ve noticed the change to the design.  For some reason, Wordpress themes felt so foreign to me.  But I wasn&#8217;t feeling the one I had before.  So I decided to take a crack at building a theme that incorporated the look of qrisper.  Wasn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>For the none of you that frequent this blog, I&#8217;m sure you&#8217;ve noticed the change to the design.  For some reason, Wordpress themes felt so foreign to me.  But I wasn&#8217;t feeling the one I had before.  So I decided to take a crack at building a theme that incorporated the look of qrisper.  Wasn&#8217;t too bad&#8230;just had to navigate through all of the Wordpress PHP.      Actually learned a couple of things about managing browser discrepancies by looking at how theme developers dealt with them.</p>
<p>Which brings me to IE7.  At some point, qrisper got totally broken on IE7.  Ended up using the * hack in my CSS files, which now won&#8217;t validate.  To that I say fuggem.  Rules are meant to be broken.</p>
<p>The development theme for the past week was spring cleaning.  I consolidated a number of pages, modularized my CSS (as much as I could), cleaned up and moved all my js files to the footer and tidied up all of my control/view files after the redesign.  qrisper just feels lighter to me now, although there wasn&#8217;t any noticeable improvement in performance.</p>
<p>A couple of new/updated pages:</p>
<ul>
<li>created a personalized 404 page&#8230;heard it&#8217;s a good thing to have</li>
<li>redid the splash page screenshots after the layout redesign&#8230;but need to redo them yet again</li>
<li>added Disqus comments to all answer pages.  I had comments in the pre-alpha version of qrisper but took them out because of poor site.  Still kinda slow but the ability to sign in via Facebook Connect was irresistable.  Too bad that ain&#8217;t working&#8230;can&#8217;t figure out what I&#8217;m doing wrong</li>
<li>Tweaked my existing autocomplete functionality&#8230;basically made it look nicer.  Only thing missing now is to add keyboard navigation functionality.</li>
</ul>
<p>Next up on my list is security and validation.  I&#8217;m already using sanitize classes to filter out all user input but I want to add additional layers of security.  Also want to incorporate jquery into the validation process so that users have a clear sense of what&#8217;s going on.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F04%2Fthe-4th-iteration-of-qrisper%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F04%2Fthe-4th-iteration-of-qrisper%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.qrisper.com/2009/04/the-4th-iteration-of-qrisper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>qrisper into twitter</title>
		<link>http://blog.qrisper.com/2009/04/qrisper-into-twitter/</link>
		<comments>http://blog.qrisper.com/2009/04/qrisper-into-twitter/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 03:29:17 +0000</pubDate>
		<dc:creator>Jung Lee</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[colors]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.qrisper.com/?p=111</guid>
		<description><![CDATA[Woo!  Two major accomplishments, both for qrisper and myself.
I finally figured out how to post qrisper answers to Twitter.  Users now have the option to auto-post all of their qrisper answers onto Twitter.  A small step for some but a giant leap for Jungkind.
Also finally figured out the correct MySQL query that displays on your [...]]]></description>
			<content:encoded><![CDATA[<p><a title="best thai restaurant" href="http://qrisper.com/answers/best-thai-restaurant-in-new-york/"><img class="alignright size-medium wp-image-106" title="best thai restaurant in ny" src="http://blog.qrisper.com/wp-content/uploads/2009/04/thai-300x191.gif" alt="best thai restaurant in ny" width="300" height="191" /></a>Woo!  Two major accomplishments, both for qrisper and myself.</p>
<p>I finally figured out how to post qrisper answers to Twitter.  Users now have the option to auto-post all of their qrisper answers onto Twitter.  A small step for some but a giant leap for Jungkind.</p>
<p>Also finally figured out the correct MySQL query that displays on your question page your submitted answers plus the answers that your followees submitted.  The key piece that I was missing&#8230;parentheses.  Blerg.  Think I need to more schooling on PHP and MySQL.</p>
<p>My next intended major tasks were going to be a qrisper app on Facebook and learning how to use Amazon Web Services.  However, I decided that I had nothing compelling to offer Facebook at the moment.  So that has been pushed back.  As for AWS, I&#8217;ve discovered that implementing qrisper in the cloud might be a tad complex for me at the moment.  Going to need a systems engineer to manage that for me.</p>
<p>Here are some additional updates:</p>
<ul>
<li>minor tweaks to the follow/do not follow functionality</li>
<li>added a list of newly suggested questions into the suggest question page (for registered users)</li>
<li>updated my php version of the sitemap but removed that page althogether and am now using an xml version</li>
<li>with all of recent redesigns to the current layout, I had neglected the admin pages.  Those pages are now macking the new look</li>
<li>added a list view for skipped questions (in addition to the current top ten view)</li>
</ul>
<p>I also fixed the category navigation in the splash page so that clicking on a specific category will keep you in that category question pool.</p>
<p>I had been getting some comments that the color scheme in qrisper was a bit noisy.  It might simply be personal taste (I like loud, bright colors) but I decided to tone it down a notch.  The one thing I cannot back down from is the yellow background.  I&#8217;ve tried different colors but so far haven&#8217;t been able to find one that maintains the qrisper vibe.  Think the new creamier yellow looks pretty good.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F04%2Fqrisper-into-twitter%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F04%2Fqrisper-into-twitter%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.qrisper.com/2009/04/qrisper-into-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>If you post a blog and no one is there to read it, does it matter?</title>
		<link>http://blog.qrisper.com/2009/03/86/</link>
		<comments>http://blog.qrisper.com/2009/03/86/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 05:06:40 +0000</pubDate>
		<dc:creator>Jung Lee</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[facebook connect]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.qrisper.com/?p=86</guid>
		<description><![CDATA[Sheesh, it&#8217;s already been almost three weeks since my last post.  Good thing no one reads this thing.
Anyway, a slew of updates for qrisper.com.

totally redesigned the layout&#8230;well, not really.  Just got rid of the image tabs and combined the center columns.  I spent so much time making those tabs though&#8230;oh well.  I&#8217;ve been meaning to [...]]]></description>
			<content:encoded><![CDATA[<p><a title="favorite beer" href="http://qrisper.com/answers/favorite-beer/"><img class="alignright size-medium wp-image-90" title="favorite beer" src="http://blog.qrisper.com/wp-content/uploads/2009/03/beer2-300x183.gif" alt="favorite beer" width="300" height="183" /></a>Sheesh, it&#8217;s already been almost three weeks since my last post.  Good thing no one reads this thing.</p>
<p>Anyway, a slew of updates for qrisper.com.</p>
<ul>
<li>totally redesigned the layout&#8230;well, not really.  Just got rid of the image tabs and combined the center columns.  I spent so much time making those tabs though&#8230;oh well.  I&#8217;ve been meaning to get rid of them&#8230;just couldn&#8217;t get myself to do it.  I think the site looks cleaner and more open.</li>
<li>also changed the content, design and navigation of the logged in pages.  The question page contains one question and a bunch of your recently answered questions.  Still trying to add the answers of the people you follow.  I&#8217;m basically ripping off Twitter.  But hey, whatever works right?</li>
<li>added a feedback tab to give it more of a presence.  Hopefully, users will hear the feedback tab beckoning for feedback and do its bidding.</li>
<li>fixed the user thumbnail uploader.  So you can upload pictures of yourselves into qrisper.  Hooray!  Problem was that I was trying to insert the image path into a mySQL table when I should have been updating the table.  Duh.</li>
<li>built out the account settings page.  Now you can update your info, password and profile pic.  Still working on the functionality that will autopost your answers to Twitter.</li>
<li>built out the find and follow people page.</li>
<li>added the timestamp of when you answered the question.  That was one major pain in the ass.  Could not for the life of me figure out the proper syntax for the mySQL query.</li>
<li>last but not least, I create profile pages for each user.  Whereas before you could only see your own activity, you can now peruse other users&#8217; answers and questions.  Much easier than I had expected.</li>
</ul>
<p>With all of that accomplished, I felt pretty good for like a minute.  But there&#8217;s still so much that I need to do.  I want to integrate Facebook Connect and create a FB page for qrisper.  Need to get the Twitter post working.  Also need to add a few more navigational features and content.  But I finally feel like I&#8217;m getting close to an official launch.  Been thinking long and hard about how to approach that.  Just gotta do it I guess.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F03%2F86%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F03%2F86%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.qrisper.com/2009/03/86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slow and steady wins the race</title>
		<link>http://blog.qrisper.com/2009/02/slow-and-steady-wins-the-race/</link>
		<comments>http://blog.qrisper.com/2009/02/slow-and-steady-wins-the-race/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 04:37:48 +0000</pubDate>
		<dc:creator>Jung Lee</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[simplepie]]></category>

		<guid isPermaLink="false">http://blog.qrisper.com/?p=60</guid>
		<description><![CDATA[Wow, lots of changes this week. First, I decided to remove all ads from qrisper.  Figured I wasn&#8217;t going to be making money that way any time soon.  So why clutter up the site?
Removing the ads gave me some room to play around with.  So I changed the content and layout a bit, primarily by [...]]]></description>
			<content:encoded><![CDATA[<p><a title="favorite nes game" href="http://qrisper.com/answers/favorite-nes-game/"><img class="alignright size-medium wp-image-62" title="favorite nes game" src="http://blog.qrisper.com/wp-content/uploads/2009/02/nes-300x181.gif" alt="favorite nes game" width="300" height="181" /></a>Wow, lots of changes this week. First, I decided to remove all ads from qrisper.  Figured I wasn&#8217;t going to be making money that way any time soon.  So why clutter up the site?</p>
<p>Removing the ads gave me some room to play around with.  So I changed the content and layout a bit, primarily by removing the leaderboard section.  I also gave search its own tab and removed the searchbar from the page.  And I moved the recent answers into the search tab and added categories to the left column.  After chewing on it for a bit, I think I&#8217;m going to bring back the search bar&#8230;just need to figure out where to put it.</p>
<p>Had a couple of duh moments.  I was maintaining duplicate files with slightly different content for logged in/not logged in users when I realized that a couple of PHP if statements could swap out the content using the session id.  Yeah, duh.  Doesn&#8217;t end there folks!</p>
<p>I was using <a href="http://simplepie.org/">Simplepie</a> to pull the latest q&amp;a&#8217;s from my database.  But then I realized, why the heck am I not pulling the data directly from my database instead of using my own RSS feed?  Umm, beats the heck out of me.  Anyway, changed that.  Progress!  Slow but tangible.</p>
<p>I didn&#8217;t forget about the non-existent logged in users out there!  The right column will become the exclusive domain for the logged in user.  Added some stats (questions answered, skipped, remaining, etc) so that users can keep track of their progress.  Gonna be adding a lot more exciting stuff so stay tuned!</p>
<p>Furthermore, the main questions page was modified to  focus is more on the users answers.  I came to the conclusion that I need build two very different qrispers &#8211; one for folks seeking answers, another for folks seeking questions.  And with that, qrisper just became a lot more complex.</p>
<p>I&#8217;ve been meaning to write a few thought pieces on where qrisper is headed.  Read a couple of interesting blog posts that I plan to respond to.  Hopefully some time next week.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F02%2Fslow-and-steady-wins-the-race%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F02%2Fslow-and-steady-wins-the-race%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.qrisper.com/2009/02/slow-and-steady-wins-the-race/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>By the power of jskill!</title>
		<link>http://blog.qrisper.com/2009/02/by-the-power-of-jskull/</link>
		<comments>http://blog.qrisper.com/2009/02/by-the-power-of-jskull/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 03:58:02 +0000</pubDate>
		<dc:creator>Jung Lee</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[google ajax]]></category>
		<category><![CDATA[ietester]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[minify]]></category>
		<category><![CDATA[nettuts]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[scriptaculous]]></category>

		<guid isPermaLink="false">http://blog.qrisper.com/?p=54</guid>
		<description><![CDATA[Well, I succeeded in removing four images from the index page.  But I replace those with a couple of hundred lines of javascript.  Meh, what&#8217;re you gonna do.  Went a little nuts with jQuery.  I changed the forgot password link to do a little switchToggle animation.  I also replaced the [...]]]></description>
			<content:encoded><![CDATA[<p><a title="favorite zombie movie" href="http://qrisper.com/answers/favorite-zombie-movie-of-all-time/"><img class="alignright size-medium wp-image-55" title="favorite zombie movie" src="http://blog.qrisper.com/wp-content/uploads/2009/02/zombie-300x181.gif" alt="favorite zombie movie" width="300" height="181" /></a>Well, I succeeded in removing four images from the index page.  But I replace those with a couple of hundred lines of javascript.  Meh, what&#8217;re you gonna do.  Went a little nuts with jQuery.  I changed the forgot password link to do a little switchToggle animation.  I also replaced the original qrisper leaderboard ad, which used to be a simple onclick/onmouseover event, with a <a title="snazzy sliding panel" href="http://nettuts.com/tutorials/javascript-ajax/build-a-top-panel-with-jquery/">snazzy sliding panel</a>.  I think it gets the message across, don&#8217;t you?</p>
<p>But I didn&#8217;t stop there with the javascriptin.  I wasn&#8217;t happy with just having the recent answers in the left column.  So I added a <a title="cool accordion function" href="http://nettuts.com/tutorials/javascript-ajax/create-a-simple-intelligent-accordion-effect-using-prototype-and-scriptaculous/">cool accordion function</a>, this time using prototype/scriptaculous.  I saw another version using jquery but I liked this one better.  I think it&#8217;s pretty neat.  Except I couldn&#8217;t figure out how to set the max height for the content (that&#8217;s why the recent answers heading isn&#8217;t sitting flush against the bottom).  I decided to leave it as is since it doesn&#8217;t look that bad.</p>
<p>The problem with the accordion function, however, is that as soon as the user clicks on on of the recent answers links, the page will load and the recent answers column will reset back to the bottom.  Not very user-friendly.  So I figured I&#8217;d add a dash of ajax and make the recent answers links load on the screen without a page refresh.  I found another <a title="ajax with jquery" href="http://nettuts.com/tutorials/javascript-ajax/how-to-load-in-and-animate-content-with-jquery/">handy tutorial on Nettuts</a> that did just that.  But the source code appears to have gone through a number of revisions, with the final version incompatible with the current versions of IE7 and Safari.  Looks great on Firefox though!</p>
<p>All of these javascript functions were weight my site down.  So I looked into ways to optimize the handling of my source codes.  Initially, I was using <a title="google minify" href="http://code.google.com/p/minify/">Google&#8217;s Minify</a> to minfiy my code.  But then I discovered that Google also hosts most of the popular javascript libraries.  So instead of attaching a copy of those files, you can link to Google hosted copies.  Those are already minified and could potentially provide a speed boost if your users already have a cached copy of the library, which most people probably do.  You can find all of the details at <a title="google ajax api" href="http://code.google.com/apis/ajaxlibs/">Google&#8217;s AJAX libraries API</a>.</p>
<p>With the addition of all of the new fancy effects, I also decided that <a title="qrisper.com" href="http://qrisper.com">qrisper </a>would no longer support IE6.  So I created a redirect page for those poor souls still using that wretched browser.  I&#8217;ve been using <a title="ie tester" href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a> to test qrisper on IE6.  Worked pretty well.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F02%2Fby-the-power-of-jskull%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F02%2Fby-the-power-of-jskull%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.qrisper.com/2009/02/by-the-power-of-jskull/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>With great power comes great responsibility</title>
		<link>http://blog.qrisper.com/2009/02/41/</link>
		<comments>http://blog.qrisper.com/2009/02/41/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 17:23:41 +0000</pubDate>
		<dc:creator>Jung Lee</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[modal]]></category>
		<category><![CDATA[nettuts]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.qrisper.com/?p=41</guid>
		<description><![CDATA[
Decided to take a breather on the php to focus on the interface.  Actually, the php issue was interface related so I guess what I really mean is focus on making qrisper a bit flashier looking.
The landing page was getting a little noisy so I decided to put the registration into a modal window. I [...]]]></description>
			<content:encoded><![CDATA[<p><a title="best beach" href="http://qrisper.com/answers/best-beach-in-the-world/"><img class="size-medium wp-image-46 alignright" title="best beach in the world" src="http://blog.qrisper.com/wp-content/uploads/2009/02/beach-300x181.gif" alt="best beach in the world" width="300" height="181" /></a></p>
<p>Decided to take a breather on the php to focus on the interface.  Actually, the php issue was interface related so I guess what I really mean is focus on making qrisper a bit flashier looking.</p>
<p>The landing page was getting a little noisy so I decided to put the registration into a modal window. I used jquery and followed a tutorial from <a title="Popup Window" href="http://yensdesign.com/tutorials/popupjquery/">yensdesign.com</a>.  Implementation was pretty straightforward. One thing I want to tinker with is the location of the window.  It looks a bit off-center&#8230;I noticed that on the tutorial as well.  If anyone can see the reason why, please holler (code below).</p>
<pre>function centerPopup(){

        var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $j("#popupSignup").height();
	var popupWidth = $j("#popupSignup").width();

	$j("#popupSignup").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeight/2,
		"left": windowWidth/2-popupWidth/2
	});
}</pre>
<p>I&#8217;m using jquery with prototype so I needed to make sure that I included jquery&#8217;s noconflict clause and change the $ variable for all jquery scripts (hence the $j).  There&#8217;s so much information out there about jquery that it&#8217;s hard not to use it.  But now that I have the power, I need to be responsible and practice restraint.  qrisper&#8217;s getting a little large around the waist from overindulging on all of those image files. Found this site on <a title="web optimization" href="http://www.websiteoptimization.com/">web optimization</a>, telling me that qrisper needs to go on a  diet.</p>
<p>Also added a little feedback button&#8230;meh&#8230;looks alright.  The button made me realize that I&#8217;m digging myself into a trap.  I am maintaining slightly different versions of the same page.  Which version the users see depends on whether or not they&#8217;re logged in.  Decided that I could probably use a php if statement to swap out includes depending on whether or not a session id exists.</p>
<p>Wanting to trim the fat further, I went to clean up my css files and optimize them with a few new tricks I learned.  Big mistake that was.  Spent a few hours fixing all of the damage I caused.  I found the <a title="css optimization" href="http://www.thefloatingfrog.co.uk/frog-blog/2008/09/10-css-shorthand-techniques-youll-use-everyday/">tips</a> from <a title="Bone Structure" href="http://bonestructure.com/blog/">David&#8217;s</a> <a title="dbone webdev" href="http://webdevconversations.blogspot.com/">old blog</a>.  Actually found a number of good resources&#8230;a few of which I used to fix a few issue that had been bugging me.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F02%2F41%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.qrisper.com%2F2009%2F02%2F41%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.qrisper.com/2009/02/41/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.344 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2009-10-04 11:16:04 -->
