<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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" version="2.0">

<channel>
	<title>The Mark Bao Weblog.</title>
	
	<link>http://weblog.markbao.com</link>
	<description>Entrepreneur, President &amp; CEO of Avecora, and high school sophomore.</description>
	<pubDate>Thu, 24 Jul 2008 20:17:48 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/auxiom" type="application/rss+xml" /><item>
		<title>Building a group micro-update webapp in 18 hours</title>
		<link>http://weblog.markbao.com/2008/how-i-built-a-webapp-in-18-hours-for-699/</link>
		<comments>http://weblog.markbao.com/2008/how-i-built-a-webapp-in-18-hours-for-699/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 17:13:56 +0000</pubDate>
		<dc:creator>Mark Bao</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Add new tag]]></category>

		<guid isPermaLink="false">http://weblog.markbao.com/?p=25</guid>
		<description><![CDATA[
News.YC readers: After receiving feedback on my original post, I decided to delete that posting and to rewrite it, with some more insight into less of what I did and rather why.
After being somewhat burned out of my Avecora OnDemand project (because my CSS and Javascript were throwing fits in Internet Explorer) (yes, this is [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://speakhq.com/images/screenshot1.png" alt="" width="638" height="474" /></p>
<p><strong>News.YC readers: After receiving feedback on my original post, I decided to delete that posting and to rewrite it, with some more insight into less of what I did and rather why.</strong></p>
<p>After being somewhat burned out of my Avecora OnDemand project (because my CSS and Javascript were throwing fits in Internet Explorer) (yes, this is the cause of my burnout) and after seeing a few <a href="http://www.techcrunch.com/2008/07/03/how-to-build-a-web-app-in-four-days-for-10000-say-hello-to-matt/">&#8220;how I built a webapp with just $x,000 and x people&#8221;</a> I decided to go ahead and build something I&#8217;ve been thinking about for a while.</p>
<p>Thus <a href="http://speakhq.com/">SpeakHQ</a> was born. SpeakHQ is a service that lets you take the micro-update/micro-blogging idea that is embedded within Twitter, for your group. This was originally developed for Avecora OnDemand, however I wanted to make it free to use for all, and with some other features like joining multiple groups.</p>
<p>Just to clarify, this doesn&#8217;t use the Twitter API (or else I&#8217;d have to deal with it going down every 10 minutes, hitting 70-requests-per-hour limits with 35 requests, etc.) and it&#8217;s built from scratch.</p>
<p><strong>Team:</strong></p>
<ul>
<li>Mark Bao, developer, designer, everything else</li>
</ul>
<div><strong>Timeframe:</strong></div>
<div>
<ul>
<li>July 3rd: 10am - 12am EDT.</li>
<li>July 4th: 10am - 2pm.</li>
</ul>
<div><strong>Why it&#8217;s useful:</strong></div>
<div>
<ul>
<li>Communication with micro-updates forces people to be concise and not go into large amounts of detail, one of the problems that plagues email (and skimming email)</li>
<li>Twitter demonstrated this - small updates are easy to digest. If they didn&#8217;t have a 140 character limit, Twitter would be nothing but a simplified weblog community.</li>
<li>Groups with Twitter is hard to do - the easiest way I&#8217;ve seen to do this is distributed direct messages. Although it leverages the user database of Twitter, it doesn&#8217;t present a clean solution.</li>
<li>Keep track of your own private groups with groups or projects, with co-workers, friends, or other group members, as well as public discussion groups with public groups through the group finder.</li>
</ul>
</div>
<div><strong>How it went down:</strong></div>
</div>
<ol>
<li>July 3rd. 10am EDT: I used a PHP <span style="text-decoration: line-through;">M</span>VC framework I wrote a few months back called ActiveVC. Doesn&#8217;t have anything to do with venture capitalists, though it is a MVC framework without the Model; essentially it is a simple template engine. (See Decisions Made below for more information.) I might release it sometime for the hell of it. Decided to use moo.ajax with prototype.lite.js at first, but decided that jQuery would be better for more useful Ajax calls as well as the rest of its set of features in CSS manipulation, etc. Started database schema and planned out the UI.</li>
<li>12pm: User account system ready, session data is able to be handled. Working on the basic user-group membership association, and loading groups and posting messages via Ajax.</li>
<li>3pm: decided on the name speakhq (it was either that or groupchan) and registered the domain. Cost: <strong>$6.99</strong></li>
<li>4pm: new group, group settings, user settings&#8230; and preview testing with some friends.</li>
<li>5pm: refreshed the interface, looks a little less bad now.</li>
<li>7pm: groups directory. joining/leaving.</li>
<li>9pm: new account creation, email invitations to public and private groups.</li>
<li>11pm: data sanitization (should have thought of it first) using a php function called __() (two underscores) that instead of using echo $var I use __($var) and it echos sanitized output.</li>
<li>12pm: bugfixing and then sleep.</li>
<li>July 4th. 10am EDT: checking on domain registration (T_T) and then fixing miscellaneous bugs and stuff.</li>
<li>12pm: opening VMware to test in IE6 and IE7. OH MY GOD IT IS SO BROKEN</li>
<li>12:30pm: half an hour wasted fixing IE problems with PNGs, margins, random stupid width problems, etc. Thank you stilleye guy for <a href="http://www.stilleye.com/temp/marginfix.html">IEmarginsFix.js</a>, and to whoever came up with the underscore hack.</li>
<li>1pm: uploading to server, changing database stuff, and it&#8217;s released. yay!</li>
</ol>
<div><strong>Decisions made:</strong></div>
<div>
<ul>
<li><strong>PHP MVC framework. </strong>Although my primary PHP development framework is Kohana, I decided to use my ActiveVC framework as it was light and fast at processing pages - and I didn&#8217;t need all of the features and larger library of Kohana (as it would only get in the way.)</li>
<li><strong>Usernames or emails + name? </strong>To ensure that all user accounts were universal in the application, and to reduce confusion, I decided to deviate from Twitter&#8217;s username + name model (which made things somewhat confusing) and just went with usernames.</li>
<li><strong>Database schema. </strong>I didn&#8217;t get a chance to catch Twitter&#8217;s SQL yesterday, but decided to set it up as follows:
<pre>+-------------------+
| Tables_in_speakhq |
+-------------------+
| groups            |
| invites           | (table holding invite codes)
| members           |
| messages          | (these are status messages)
| users             |
+-------------------+
5 rows in set (0.00 sec)</pre>
<pre><span style="font-family: 'Lucida Grande'; line-height: 19px; white-space: normal;">This makes things logical for SELECTs and JOINs, and I&#8217;m not sure how Twitter does their schema. I chose InnoDB for its better locking levels (row level lock in InnoDB vs table level lock in MyISAM.) Since I&#8217;m updating the groups table as new messages are posted, and that new messages are easily (and frequently) posted, InnoDB was the better choice for the database.</span></pre>
</li>
<li><strong>Public vs. private groups.</strong> I implemented the different privacy levels to easily facilitate SpeakHQ &#8220;discussion groups&#8221; on a certain topic, such as the group speakhq suggestions where users suggest improvements for the service. Based off of this, in public groups anyone that is a member of that group is allowed to invite others to the group, whereas in private groups only the group owner is allowed to invite (with a one-use randomly generated invite code that adds them automatically to the group upon registration completion.)</li>
<li><strong>No private messages and no profiles in first release. </strong>SpeakHQ is based on group discussion and collaboration, whereas Twitter is based on individuals sharing information to a group of other individuals (followers.) I&#8217;m still looking into what kind of messaging system should be put in place - form for email, or a system like Twitter&#8217;s direct messages?</li>
<li><strong>Lack of replies and permalinks.</strong> I will be implementing permalinks in the future, but I don&#8217;t see the value in replies in a group space - unlike Twitter, conversations aren&#8217;t between a large number of people (at least in private groups.) However, I&#8217;m going to expect that people will be asking for it, so I will implement it soon.</li>
<li><strong>User levels.</strong> Implemented into the database (binary member or administrator) but I didn&#8217;t implement a member level editor, for the reason that it would become more confusing in terms of how much control other group owners other than the group creator had over the member list, and the group privacy level (and we&#8217;re trying to keep things simple here.) Group owners don&#8217;t usually have much control over a group, other than changing group privacy level and the name of the group (and later deleting status messages, kicking people from the group, etc.)</li>
</ul>
</div>
<div><strong>Still left to do:</strong></div>
<div>
<ul>
<li>forgot password / password and email changing</li>
<li>deleting status updates</li>
<li>public group viewing</li>
<li>member list for administrators to be able to edit the group members (kicking, admining?)</li>
<li>customizable group avatars, environment (background colors, etc.)</li>
<li>yes, I<strong> will</strong> be releasing an API soon</li>
<li>outgoing SMS gateway</li>
<li>new design (it really needs one)</li>
<li>incorporate some colors</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://weblog.markbao.com/2008/how-i-built-a-webapp-in-18-hours-for-699/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AOD3days: Day 1, Beginning</title>
		<link>http://weblog.markbao.com/2008/aod3days-day-1-beginning/</link>
		<comments>http://weblog.markbao.com/2008/aod3days-day-1-beginning/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 14:17:17 +0000</pubDate>
		<dc:creator>Mark Bao</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[aod]]></category>

		<category><![CDATA[aod3days]]></category>

		<category><![CDATA[Avecora]]></category>

		<category><![CDATA[avecoraondemand]]></category>

		<guid isPermaLink="false">http://weblog.markbao.com/?p=24</guid>
		<description><![CDATA[As you may already know, I&#8217;m trying to make an effort to code as much of Avecora OnDemand as possible within three days. Now that school is over for the summer, I can (finally) get this product out the door as soon as possible, well-developed, of course.
The first thing on my list is to fix the deadlines [...]]]></description>
			<content:encoded><![CDATA[<p>As you may already know, I&#8217;m trying to make an <a href="http://weblog.markbao.com/2008/3-days-to-avecora-ondemand/">effort to code as much of Avecora OnDemand as possible</a> within three days. Now that school is over for the summer, I can (finally) get this product out the door as soon as possible, well-developed, of course.</p>
<p>The first thing on my list is to fix the deadlines system and view, taking out the calendar on that page and adding the support for time-zone customization. Next is to get the calendar logic done, as well as upcoming items; then, to work on the contacts system. For now, that&#8217;s all I will be doing. Expect to be finished by around 3pm (EDT).</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.markbao.com/2008/aod3days-day-1-beginning/feed/</wfw:commentRss>
		</item>
		<item>
		<title>3 Days to Avecora OnDemand</title>
		<link>http://weblog.markbao.com/2008/3-days-to-avecora-ondemand/</link>
		<comments>http://weblog.markbao.com/2008/3-days-to-avecora-ondemand/#comments</comments>
		<pubDate>Sat, 14 Jun 2008 18:29:45 +0000</pubDate>
		<dc:creator>Mark Bao</dc:creator>
		
		<category><![CDATA[Avecora]]></category>

		<category><![CDATA[aod]]></category>

		<category><![CDATA[aod3days]]></category>

		<category><![CDATA[avecoraondemand]]></category>

		<guid isPermaLink="false">http://weblog.markbao.com/?p=22</guid>
		<description><![CDATA[
I&#8217;ve been working on Avecora OnDemand for a little while: getting the design down, XHTML/CSSing the design, getting the framework squared away, and getting some database schema down, as well as doing some code in the areas of tasks, deadlines, etc.
Avecora OnDemand is a fully featured and easy-to-use small business management and team collaboration software [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://files.markbao.com/aodscreen2.png" alt="" width="432" height="213" /></p>
<p>I&#8217;ve been working on Avecora OnDemand for a little while: getting the design down, XHTML/CSSing the design, getting the framework squared away, and getting some database schema down, as well as doing some code in the areas of tasks, deadlines, etc.</p>
<p>Avecora OnDemand is a fully featured and easy-to-use small business management and team collaboration software that allows small business to organize company information and manage customers among their business, teams, and projects.</p>
<p>Starting on Wednesday 18 June 2008, when school <em>finally</em> ends, I will be developing full-force on the Avecora OnDemand project. I&#8217;ll see what my goal is, but I think it&#8217;ll be getting very close to launch/deployment.</p>
<p>What I already have finished:</p>
<ul>
<li>Authentication</li>
<li>Project Membership</li>
<li>General tasks system, creating, editing, deleting, assigning, deadlining</li>
<li>Deadline creation and week display</li>
<li>Message sending and basic viewing</li>
</ul>
<div>This was developed over a period of 1 month, where I worked on average a few hours a week for 4 weeks due to school/failing SATs/failing finals. In three days, I&#8217;m looking to develop most of AOD, twittering it and posting updates to this blog.</div>
<div><img src="http://files.markbao.com/aodcurtasks.png" alt="" width="432" height="612" /></div>
<div>See you on Wednesday.</div>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.markbao.com/2008/3-days-to-avecora-ondemand/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mac OS X: Fix High CPU Usage by syslogd</title>
		<link>http://weblog.markbao.com/2008/mac-os-x-fix-high-cpu-usage-by-syslogd/</link>
		<comments>http://weblog.markbao.com/2008/mac-os-x-fix-high-cpu-usage-by-syslogd/#comments</comments>
		<pubDate>Sat, 24 May 2008 20:57:39 +0000</pubDate>
		<dc:creator>Mark Bao</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[fix]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://weblog.markbao.com/?p=19</guid>
		<description><![CDATA[Recently, I&#8217;ve been experiencing a high CPU usage by the process syslogd in Mac OS X 10.5.2 Leopard, coupled with strange Console.app behavior. If you&#8217;re experiencing this as well, give this a shot and see if it works (at your own risk.)

FIrst, you should check if this is a problem on your system, which is [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I&#8217;ve been experiencing a high CPU usage by the process <strong>syslogd</strong> in Mac OS X 10.5.2 Leopard, coupled with strange Console.app behavior. If you&#8217;re experiencing this as well, give this a shot and see if it works (at your own risk.)</p>
<p><img src="/images/syslogd.png" alt="syslogd" width="831" height="144" /></p>
<p>FIrst, you should check if this is a problem on your system, which is usually caused by large asl.db files. Open Terminal.app (Applications/Utilities/Terminal.app) and enter the following:</p>
<p><code>du -hs /var/log/asl.db</code></p>
<p>and hit enter. If it shows that your asl.db file is pretty huge (mine was 80MB) you&#8217;ll want to run this fix. If it isn&#8217;t, a rampant syslogd is probably not due to the asl.db file, but instead some application doing a lot of logging. Open Console and look if there&#8217;s any applications that are logging a lot, like if you see &#8220; &#8212; last message repeated 500 times &#8212;&#8221;, that&#8217;s probably what is causing syslogd to own a lot of CPU.</p>
<p>If asl.db is huge, do the following. You&#8217;ll first have to <a href="http://www.macosxhints.com/article.php?story=20071025100950309">enable a root user to your system</a>. Then, go to Terminal, and enter the following (enter one by one, and hit enter afterwards):</p>
<p><code>sudo launchctl stop com.apple.syslogd<br />
sudo mv /var/log/asl.db /var/log/aslold.db<br />
sudo touch /var/log/asl.db<br />
sudo launchctl start com.apple.syslogd</code></p>
<p>You will be asked to enter the root password on the first command, while subsequent commands will automatically be authenticated as root.</p>
<p>Once you do this, the syslogd process should restart, but the CPU it uses should be next to nothing. Hope this helped.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.markbao.com/2008/mac-os-x-fix-high-cpu-usage-by-syslogd/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mozilla Personas for Firefox: Simple Browser Customization</title>
		<link>http://weblog.markbao.com/2007/mozilla-personas-for-firefox-simple-browser-customization/</link>
		<comments>http://weblog.markbao.com/2007/mozilla-personas-for-firefox-simple-browser-customization/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 13:27:29 +0000</pubDate>
		<dc:creator>Mark Bao</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://weblog.markbao.com/?p=15</guid>
		<description><![CDATA[Mozilla Labs has released an extension originally authored by Chris Beard that allows for very simple browser customization. Namely, it allows you to choose from different styles to apply to your browser, which essentially replaces the chrome background. It also works in all themes, or should. See below for example.
click to expand
But don&#8217;t take my [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.mozilla.com/">Mozilla Labs</a> has <a href="http://labs.mozilla.com/2007/12/personas-for-firefox/">released</a> an extension originally authored by <a href="http://cbeard.typepad.com/">Chris Beard</a> that allows for very simple browser customization. Namely, it allows you to choose from different styles to apply to your browser, which essentially replaces the chrome background. It also works in all themes, or should. See below for example.</p>
<p><a href="http://weblog.stevenbao.com/images/personas.png"><img src="http://weblog.stevenbao.com/images/personas_thumb.png" alt="Personas" /></a><br /><span style="font-size:0.9em;">click to expand</span></p>
<p>But don&#8217;t take my word for it, for I am a terrible screenshotter, here&#8217;s one from Chris Beard&#8217;s blog:</p>
<p><img src="http://weblog.stevenbao.com/images/personas-2.jpg" /></p>
<p>Why they decided to take this as an official Mozilla Labs is not too clear to me, however they cite the following pillars of the project which is pulled verbatim from their site, viz.:</p>
<blockquote>
<ul>
<li>themes today are too hard to find, install and use</li>
<li>graphic designers should be able to style the browser without having to code</li>
<li>Browsers can be more than just desktop software, they can include online components</li>
<li>people just want their computer to be a little more fun and personal</li>
</ul>
</blockquote>
<p>All good points, but unless it gains a <em>lot more</em> more options for skinning the theme, it&#8217;s not going to be very useful for the end user. In addition, I&#8217;m not sure why it&#8217;s taken in as a Mozilla Labs project and not stay an extension, but guessed it was due to the developer of the app being an employee of Mozilla.</p>
<p><strong>Edit:</strong> Looks like one interesting piece is that the active persona can be <a href="https://labs.mozilla.com/forum/index.php/topic,356.0.html">changed through the DOM via Javascript</a> (or at least that&#8217;s what it sounds like.) Also interesting is</p>
<blockquote><p>
I can also imagine that we could use this to build some sort of badge or icon art that people could put on their blogs or Web pages that indicates their current Persona, and if people click on it they can switch to it.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://weblog.markbao.com/2007/mozilla-personas-for-firefox-simple-browser-customization/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Facebook Isn’t Corporate — Yet</title>
		<link>http://weblog.markbao.com/2007/facebook-isnt-corporate-yet/</link>
		<comments>http://weblog.markbao.com/2007/facebook-isnt-corporate-yet/#comments</comments>
		<pubDate>Sun, 09 Dec 2007 19:19:26 +0000</pubDate>
		<dc:creator>Mark Bao</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://weblog.markbao.com/?p=14</guid>
		<description><![CDATA[Recently, Facebook released a new photo browser that doesn&#8217;t require loading and refreshing of a page to go to the next image. (Go to any photo page to try this out.) It&#8217;s essentially powered by ajax, almost all of the page, including loading comments (though adding comments is not ajax yet.) It&#8217;s somewhat indicative that [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, Facebook released a new photo browser that doesn&#8217;t require loading and refreshing of a page to go to the next image. (Go to any photo page to try this out.) It&#8217;s essentially powered by ajax, almost all of the page, including loading comments (though adding comments is not ajax yet.) It&#8217;s somewhat indicative that Facebook isn&#8217;t going corporate &#8212; yet.</p>
<p>By not loading a new page and replacing current contents of the page using ajax improves user experience. However, with the percentage of pages that are just interacting with photos, Facebook is losing a large amount of ad impressions and thus losing revenue while making ux more enjoyable.</p>
<p>This is similar to Google&#8217;s refusal to remove the I&#8217;m Feeling Lucky button, which by itself <a href="http://valleywag.com/tech/google/im-feeling-lucky-button-costs-google-110-million-per-year-324927.php?">costs Google $110 million a year</a> (<a href="http://marketplace.publicradio.org/display/web/2007/11/19/face_of_google/">listen</a>).</p>
<blockquote><p><strong>SERGEY BRIN:</strong>The reason it&#8217;s called &#8220;I&#8217;m Feeling Lucky,&#8221; is of course that&#8217;s a pretty damn ambitious goal. I mean to get the exact right one thing without even giving you a list of choices, and so you have to feel a little bit lucky if you&#8217;re going to try that with one go.</p>
</blockquote>
<blockquote><p><strong>TOM CHAVEZ:</strong> Basically you have $110 million of revenue loss per year associated with that button.</p>
</blockquote>
<blockquote><p><strong>MARISA MAYER: </strong>You know Larry and Sergey had the view, and I certainly share it, that <strong>it&#8217;s possible just to become too dry, too corporate, too much about making money.</strong> And you know what I think is really delightful about Google and about the &#8220;I&#8217;m Feeling Lucky,&#8221; is that they remind you that the people here have personality and that they have interests and that there is real people.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://weblog.markbao.com/2007/facebook-isnt-corporate-yet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Join the Boston Tech Community at Facebook Developer Garage Boston</title>
		<link>http://weblog.markbao.com/2007/join-the-boston-tech-community-at-facebook-developer-garage-boston/</link>
		<comments>http://weblog.markbao.com/2007/join-the-boston-tech-community-at-facebook-developer-garage-boston/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 14:36:46 +0000</pubDate>
		<dc:creator>Mark Bao</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://weblog.markbao.com/?p=13</guid>
		<description><![CDATA[Join us for the Facebook Developer Garage Boston on January 17, 2008! Discuss the Facebook Platform, web dev, monetization and investing, and more here with other Facebook Developers and enthusiasts. There will be people from Facebook here as well.
If you&#8217;re a regular to the Facebook Developer Boston events, you&#8217;ll know that this is the fourth [...]]]></description>
			<content:encoded><![CDATA[<p>Join us for the <a href="http://boston.avecora.com/fbgarage">Facebook Developer Garage Boston</a> on January 17, 2008! Discuss the Facebook Platform, web dev, monetization and investing, and more here with other Facebook Developers and enthusiasts. There will be people from Facebook here as well.</p>
<p>If you&#8217;re a regular to the Facebook Developer Boston events, you&#8217;ll know that this is the fourth Facebook event in Boston, and there hasn&#8217;t been one in a few months. Let&#8217;s make this the best Facebook Developer event yet!</p>
<p>A big thanks to our sponsors, <a href="http://molecular.com/">Molecular</a> and <a href="http://facebook.com/">Facebook</a>.</p>
<p>Molecular is setting up at the Facebook Developer Garage as one of the meetings of a course for a web development competition at MIT. They are taking suggestions for relevant courses for the beginning stages of Facebook development at the event.</p>
<p>The event will be crowdsourced; your suggestions and presentations will go into the event. Let us know of any suggestions you want, or presentations you want to make. Email fbgarage[at]boston.avecora.com.</p>
<p>The event will be free and open to the public. See the <a href="http://boston.avecora.com/fbgarage/">event page</a> and RSVP on <a href="http://hs.facebook.com/event.php?eid=7841003091">Facebook</a>, <a href="http://going.com/fbboston">Going</a>, or <a href="http://upcoming.yahoo.com/event/346291/?ps=5">Upcoming</a>. Event venue TBD - will announce on the main event page.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.markbao.com/2007/join-the-boston-tech-community-at-facebook-developer-garage-boston/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Get Creative. Can Do. Rock On. Brilliant Marketing</title>
		<link>http://weblog.markbao.com/2007/brilliant-marketing/</link>
		<comments>http://weblog.markbao.com/2007/brilliant-marketing/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 01:18:37 +0000</pubDate>
		<dc:creator>Mark Bao</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://weblog.markbao.com/?p=11</guid>
		<description><![CDATA[I apologize for the recent amount of video posts lately, but I couldn&#8217;t help but perpetuate (virally) this brilliant marketing video from the Singapore Media Development Authority. Kudos to the marketing team that thought of this.

(via TechCrunch)
]]></description>
			<content:encoded><![CDATA[<p>I apologize for the recent amount of video posts lately, but I couldn&#8217;t help but perpetuate (virally) this brilliant marketing video from the <a href="http://www.mda.gov.sg/wms.www/index_flash.aspx">Singapore Media Development Authority</a>. Kudos to the marketing team that thought of this.</p>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 "id="http://community.kawan2.com/kickapps/flash/premium_drop_v3.swf?b=1&#038;widgetHost=community.kawan2.com&#038;mediaType=VIDEO&#038;mediaId=113319&#038;as=7072" width="420" height="365"codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"><param name="movie" value="http://community.kawan2.com/kickapps/flash/premium_drop_v3.swf?b=1&#038;widgetHost=community.kawan2.com&#038;mediaType=VIDEO&#038;mediaId=113319&#038;as=7072"/><param name="quality" value="high" /><param name="menu" value="false" /><param name="allowScriptAccess" value="always" /><param name="bgcolor" value="#ffffff" /><param name="allowFullScreen" value="true" /><embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"  allowFullScreen="true" allowScriptAccess="always" quality="high" menu="false" bgcolor="#ffffff" src="http://community.kawan2.com/kickapps/flash/premium_drop_v3.swf?b=1&#038;widgetHost=community.kawan2.com&#038;mediaType=VIDEO&#038;mediaId=113319&#038;as=7072"type="application/x-shockwave-flash" width="420"height="365"></embed></object></p>
<p>(via <a href="http://www.techcrunch.com/2007/11/25/get-creative-can-do-rock-on-hahahaha/">TechCrunch</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.markbao.com/2007/brilliant-marketing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Where I Have Been</title>
		<link>http://weblog.markbao.com/2007/where-i-have-been/</link>
		<comments>http://weblog.markbao.com/2007/where-i-have-been/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 23:11:44 +0000</pubDate>
		<dc:creator>Mark Bao</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://weblog.markbao.com/?p=9</guid>
		<description><![CDATA[Auxiom has been down down for&#8230; longer than I can remember.
So where have I been?
First of all, an explanation. StevenBao.com and Auxiom.com were taken down by the host Hosting Department for &#8220;sending spam.&#8221; Very strange, and uh, frankly, that sounds like a load of BS to me. A normal host, suspecting spam being sent from [...]]]></description>
			<content:encoded><![CDATA[<p>Auxiom has been down down for&#8230; longer than I can remember.<br />
So where have I been?</p>
<p>First of all, an explanation. StevenBao.com and Auxiom.com were taken down by the host <a href="http://hostingdepartment.net/">Hosting Department</a> for &#8220;sending spam.&#8221; Very strange, and uh, frankly, that sounds like a load of BS to me. A normal host, suspecting spam being sent from a server, would temporarily suspend the account. However, being the, uh, special host that they are, HD decided to <strong>delete</strong> all of my data (files, MySQL, mail, etc.) and notify me after the fact. Nice work.</p>
<p>In their ToS they have a clause that describes that they will have weekly backups available. Seeing that my backups were all pretty old, I asked for one &#8212; only to be presented with that with the deactivation of my account, backups were gone also.</p>
<p>Uhh&#8230;</p>
<p>I didn&#8217;t know what exactly to do, so I picked up a temporary host with a friend, and now I&#8217;m here, trying to recover whatever parts of my blog was picked up by <a href="http://web.archive.org/web/*/http://auxiom.com/">the Wayback Machine</a> or <a href="http://feeds.feedburner.com/auxiom">Feedburner</a>. (edit: not Feedburner anymore.)</p>
<p>I&#8217;m also trying to find where my original theme is as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.markbao.com/2007/where-i-have-been/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Coding on the Facebook Platform.</title>
		<link>http://weblog.markbao.com/2007/coding-on-the-facebook-platform/</link>
		<comments>http://weblog.markbao.com/2007/coding-on-the-facebook-platform/#comments</comments>
		<pubDate>Sun, 10 Jun 2007 03:35:35 +0000</pubDate>
		<dc:creator>Mark Bao</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://weblog.markbao.com/?p=7</guid>
		<description><![CDATA[It is Saturday, May 26th. I am at home, headbanging to Breaking Benjamin, and catching NeighborFi (rare.) I’m just finding the Facebook Applications update. I look through the directory. In all nine pages at the time, I didn’t notice a del.icio.us or Flickr app. I decided that for that day I will work on developing [...]]]></description>
			<content:encoded><![CDATA[<p>It is Saturday, May 26th. I am at home, headbanging to Breaking Benjamin, and catching NeighborFi (rare.) I’m just finding the Facebook Applications update. I look through the directory. In all nine pages at the time, I didn’t notice a del.icio.us or Flickr app. I decided that for that day I will work on developing a del.icio.us app for Facebook Platform.</p>
<p><span id="more-7"></span></p>
<p>I had no idea where to start. I downloaded the PHP5 client libraries, looked at the documentation, and became confused. This was the first time I was using an API for actuality. This was the real deal, the real stuff. Went to IRC to chat a bit in #randomshapes – but remembered something. /j #facebook.</p>
<p>I saw the topic.</p>
<p><code>*** topic is Facebook Development Platform: http://developers.facebook.com :: Wiki: http://wiki.f8.facebook.com :: DJTrey's channel stats: http://74.236.248.200:8081/facebook/<br />
&lt;StevenBao&gt; This is the channel that I need!!</code></p>
<p>I was pointed to the Wiki at some point, where I educated myself on the Facebook Platform; I then went to the golden resource, a lesson by example, a tutorial on coding Facebook Platform Applications. I started reading the example. Didn’t get it at first. Didn’t get it at second. Got it at third. I store session data and usernames in my database. The only thing I really do is push data out to Facebook in the form of FBML. I then asked some stupid questions such as:</p>
<p><code>&lt;StevenBao&gt; does anyone know how to fix the problem of HTML tag not supported: "html"</code></p>
<p>And</p>
<p><code>&lt;StevenBao&gt; How do I display something on the profile page...?<br />
&lt;@OSUKid7&gt; profile.setFBML</code></p>
<p>Then I remembered that I wasn’t really sure how to use my Facebook app since it was hosted on my local server. I didn’t have a PHP5 server ready, and my host (a friend) was out on vacation and couldn’t upgrade to PHP5 anyway. I decided, for the time being, to port-forward the router and get a no-ip. The only way that I was going to do that, though, was to ‘hack’ into my neighbor’s router and change the port forwarding.</p>
<p>Easy enough. They didn’t care to change the password for the Linksys administration. I went in and port-forwarded Port 80 to my IP on the network. Hope they don’t notice. I haven’t rolled it back yet since it bugged out again later the next day.<br />
I then proceeded to set up a no-ip address and forward that stuff. Sloppy, but it needs to work for the time being. After a few short hours, I declared the beta of the del.icio.us app finished. It displayed the five latest links from a person’s del.icio.us account. It might have been, and should have been, alpha; I ran a slow-as-hell manual “cron” every fifteen minutes to ensure that I held my word that it updated every fifteen minutes, plus any manual updates a user may execute by going to the application page. This “cron” which turned out to update every half hour was probably the source of future, huge problems.</p>
<p>I submitted it to the application directory and waited, and expected a long wait. After a few hours, my del.icio.us app gained about 30 users. It blew my mind. Amazing. Thirty users. (Without sarcasm.) I then proceeded to develop a Flickr application, not intended to be at first extremely intense, but as it caused large amounts of criticism among users I decided to make it more of a developed application than it started out. The first beta required users to retrieve their usernames. I introduced this (read: linkspammed) this to two of my IRC channels, and gained a few users; then, the wireless crashed.</p>
<p>I was under a large amount of stress to get this stuff working. I already had del.icio.us on its own server that <a href="http://deusexcelsior.com/">Anthony Cole</a> of Fresh Pacific Media was kind enough to donate. However, my Flickr app, which I guess was gaining popularity, was offline because I was offline. I therefore went to a friend’s house as soon as possible and uploaded the Flickr application and its database to the server.</p>
<p>I was then notified on IRC by chips[zof] with the following:</p>
<p><code>&lt;chips[zof]&gt; StevenBao: well done on getting into the directory!</code></p>
<p>It was not even day after I submitted it to the applications directory, and amidst all of the others asking to be submitted, such as for Last.fm and other applications, I was submitted with my humble del.icio.us application. Not sure why, but okay! I was overjoyed. I watched the user count grow from 30 to 100.</p>
<p>The next day. I check. 300 users using my del.icio.us app! Amazing. However, I looked at the reviews. Errors. Stuff not showing up. Shit. I spent the next hour debugging and debugging the system. Something then happened, everything was resolved, I ran two crons for good measure.</p>
<p>The problem was that I as using a free DNS subdomain, and the domain was www.facebook.si. I registered sbao.facebook.si and apps.facebook.si. I found both of them deleted from my DNS account. I did an extremely quick fix, registering a .us.to and moving files over. Whew. Little did I know, though, that it wasn’t my last, nor largest crisis.</p>
<p>My Flickr app was criticized thoroughly. As I wanted to get the Flickr app out before anyone else, I opted to not learn how to use SimpleXML and use REST to get a username’s ID. That was my downfall. On Tuesday I was faced with a huge amount of ‘criticism’ (or better said, that it didn’t work), more than I could take, and I then took an hour to rewrite part of the system to function correctly, and then placed quite a number of todo items on my plate.</p>
<p>However, before that, a large crisis arose when I was on a 1.0mbps no-signal WiFi network. The system suddenly stopped working. FBML was working. My server was working. I tested and implemented a new parser for data. No luck. I went back to my previous parser and tried another data source. Worked. I was forced to come to the conclusion that del.icio.us blocked me from accessing their data. This is while I have about 700 users using this app. Not good.</p>
<p>In the little time I had left at the other friends’ house, I quickly hacked together a sort of proxy to access del.icio.us and eventually be banned from it altogether by my other server. I noticed that Joshua, the founder of del.icio.us, friended me on Facebook, and was using my del.icio.us app. Maybe he knew del.icio.us blocked me. Maybe not. However, the truth of the matter was that I hacked together a few lines of PHP that connected to a MySQL database with columns id (serialized), delicioususername, datastream, and requestnum, and every five requests requestnum was set back to zero and the del.icio.us server was asked for the data again. I called this my megacache; I used it once to update my del.icio.us links on Facebook, it worked, I jumped for joy, started to run a cron, but then the wireless disappeared.</p>
<p>I had nothing else to do but to ask another friend over phone to post on the del.icio.us app page that the problem should be fixed as of now.</p>
<p>Next day. TV/Video class. I log in to the other server’s cPanel account, and check my bandwidth. 500 megabytes of bandwidth was used by my application in eight hours alone. Astonishing. I check the number of people that are using my application. 1300 for del.icio.us. 500 for Flickr. Wow. I did a quick <code>SELECT * FROM cachefiles WHERE requestnum > 0</code>. Nothing. I didn’t even store anything into MySQL. Damn.</p>
<p>I then proceeded to finish an email I was writing to the founder of del.icio.us, which was at finishing point somewhat stubborn-sounding (though the negative connotations were not intended) and at nine full paragraphs. Later that afternoon I sent it to him, feeling bad for the founder because my email was so damn demanding-sounding. </p>
<p>Then I updated the Flickr as explained above, then stopped Facebook apps for the day. I had enough for Tuesday, even though only one hour was actual coding.</p>
<p>The next day. The founder of del.icio.us emails me back. He states that he can manually unblock my system from contacting del.icio.us data sources. He also stated that del.icio.us was building an offical Facebook application. That’s what I’ve been waiting for. An official application. I never expected that my del.icio.us app would be permanent; like other 3rd party apps, I anticipated it to be a temporary one. Nor did I expect it to gain such a huge response. I said I’d be happy to cooperate with him.</p>
<p>This was my first time managing a relatively large-scale project, and it was an excellent experience. I don’t really know what my motive is for creating this application, but who knows? That’s not the matter now; it’s not so much the matter of why one created something, but the response ensuing.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.markbao.com/2007/coding-on-the-facebook-platform/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
