<?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>David Sutoyo</title>
	<atom:link href="http://davidsutoyo.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://davidsutoyo.com</link>
	<description>My Life in Pixels</description>
	<lastBuildDate>Mon, 31 Oct 2011 23:58:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WordPress Multisite with Subdomains and External Domains on Dreamhost</title>
		<link>http://davidsutoyo.com/articles/wordpress-multisite-with-subdomains-and-external-domains-on-dreamhost/</link>
		<comments>http://davidsutoyo.com/articles/wordpress-multisite-with-subdomains-and-external-domains-on-dreamhost/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 22:50:15 +0000</pubDate>
		<dc:creator>dsutoyo</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://davidsutoyo.com/?p=134</guid>
		<description><![CDATA[WordPress multisite is a great feature for those who run multiple blogs. Recently I was tasked to set up such a configuration on Dreamhost, only to find that multisite doesn't play well when it comes to using subdomains (and by extension, external domains) in a shared hosting environment. According to the official documentation, you'll need access to your Apache httpd.conf file for subdomains to work. For most shared hosting plans, it's understandably not allowed. Fortunately for those of us on a budget, there are some workarounds.]]></description>
			<content:encoded><![CDATA[<p class="notice"><em><strong>Warning:</strong> WordPress multisite is not officially supported by Dreamhost. Also, multisite with external domains is not officially support by WordPress. Refer to the following information at your own risk. Your mileage may vary!</em></p>
<p>WordPress multisite is a great feature for those who run multiple blogs. Recently I was tasked to set up such a configuration on Dreamhost, only to find that multisite doesn&#8217;t play well when it comes to using subdomains (and by extension, external domains) in a shared hosting environment. According to the <a href="http://codex.wordpress.org/Create_A_Network">official documentation</a>, you&#8217;ll need access to your Apache <code>httpd.conf</code> file for subdomains to work. For most shared hosting plans, it&#8217;s understandably not allowed. Fortunately for those of us on a budget, there are some workarounds.</p>
<h2>Multisite with subdomains</h2>
<p>Getting subdomains to work with multisite on Dreamhost is fairly straightforward, actually. There are two ways to do this &#8212; after you follow <a href="http://codex.wordpress.org/Create_A_Network">all the steps to set up multisite</a>, of course. For the first method, create the subdomain in your WordPress admin, then create the same subdomain in your Dreamhost panel. Pick the option to fully host the subdomain, but point its web directory to your root domain. For example, if your root domain is <code>domain.com</code>, create <code>subdomain.domain.com</code> and set the web directory to <code>domain.com</code>, as shown in the screenshot:</p>
<p><a class="fancybox" href="http://davidsutoyo.com/files/2011/10/dreamhost-fully-hosted.png"><img title="Fully hosted subdomain" src="http://davidsutoyo.com/files/2011/10/dreamhost-fully-hosted-560x122.png" alt="Fully hosted subdomain" /></a></p>
<p>The second method is to set the subdomain as the mirror of your root domain.</p>
<p><a class="fancybox" href="http://davidsutoyo.com/files/2011/10/dreamhost-mirror.png"><img title="Mirrored subdomain" src="http://davidsutoyo.com/files/2011/10/dreamhost-mirror-560x144.png" alt="Mirrored subdomain" /></a></p>
<p>There are no substantial differences, as far as I can tell. Then again, I haven&#8217;t done much extensive testing. The fully-hosted option gives you a bit more flexibility, I suppose.</p>
<h2>Multisite with external domains</h2>
<p>Getting multisite to work with external domains on shared hosting is trickier. One method requires a plugin, while the other does not. The plugin method worked much better for me, so skip down to that section if that&#8217;s what you&#8217;re looking for.</p>
<h3>Without plugins</h3>
<p>I found <a href="http://interconnectit.com/840/wordpress-3-0-multisite-with-multiple-domains-setup/">a post</a> detailing how to set up multisite with external domains. It assumes you are able to create virtual hosts, but some of that information is still applicable to Dreamhost. Set up subdomains using one of the methods I covered just now. Then, edit the hosting options for your external domain to also use one of the two methods I described. Then, hop on over to <a href="http://interconnectit.com/840/wordpress-3-0-multisite-with-multiple-domains-setup/">Interconnecit&#8217;s post</a> and skip to the section &#8220;Adding a new domain&#8221; and start from step 5. With that, multisite with external domains works, sort of. For me, I was not able to administer the new domain as a super admin and activate themes and plugins. There are <a href="http://blog.mixu.net/2010/05/17/setting-up-multisite-wordpress-3-0-with-multiple-different-domains/">workarounds</a> (see the comments), but I really did not want to get into the habit of changing WordPress core files. That led me to the plugin.</p>
<h3>Using the Domain Mapping plugin</h3>
<p>This methods works by using the <a href="http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/">WordPress MU Domain Mapping plugin</a>. WordPress developer Sam &#8220;Otto&#8221; Wood covers it in an <a href="http://ottopress.com/2010/wordpress-3-0-multisite-domain-mapping-tutorial/">excellent tutorial</a>. Again, you&#8217;ll need to set up the hosting options for your subdomain and external domain using one of the subdomain multisite methods. I found that your <em>subdomain needs to mirror your root domain</em>, but the external domain can be either mirrored or fully-hosted using the root domains web directory. I found that the fully-hosted option worked better. To repeat: fully host your external domain, but point its web directory to the root domain, and have your subdomain mirror your root domain. Then follow Otto&#8217;s tutorial to map your subdomain to the external domain.</p>
<p>I have not tested any of these methods extensively, so I recommend backing up your site before you try any of this!</p>
]]></content:encoded>
			<wfw:commentRss>http://davidsutoyo.com/articles/wordpress-multisite-with-subdomains-and-external-domains-on-dreamhost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Goodbye Textpattern, Hello WordPress</title>
		<link>http://davidsutoyo.com/articles/goodbye-textpattern-hello-wordpress/</link>
		<comments>http://davidsutoyo.com/articles/goodbye-textpattern-hello-wordpress/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 06:09:40 +0000</pubDate>
		<dc:creator>dsutoyo</dc:creator>
				<category><![CDATA[Website]]></category>

		<guid isPermaLink="false">http://davidsutoyo.com/?p=119</guid>
		<description><![CDATA[It&#8217;s true, I&#8217;ve let this here blog lay fallow for a little too long. Even though this design was launched a little over a year ago, the industry has grown and changed rapidly. Internet Explorer 6 is (FINALLY!!!) dying out, HTML5 is totally usable, and smartphones and tablet computers are ever more popular. This marks [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s true, I&#8217;ve let this here blog lay fallow for a little too long. Even though this design was launched a little over a year ago, the industry has grown and changed rapidly. Internet Explorer 6 is (FINALLY!!!) dying out, HTML5 is totally usable, and smartphones and tablet computers are ever more popular. This marks a fundamental change in how users interact with websites and how publishers deliver their content. In the meantime, this little blogging platform called WordPress is growing fast as well. I hear that it powers an astounding <a href="http://techcrunch.com/2011/08/19/wordpress-now-powers-22-percent-of-new-active-websites-in-the-us/">22% of new active websites</a>. Given these developments, my old Textpattern-powered site seemed rather outdated all of a sudden.</p>
<p>Let&#8217;s get one thing straight, though. Textpattern has been good to me. It has given me a platform to build and hone my skills as a budding designer, developer, and blogger (ahem). Alas, my needs have outgrown it, and the work I did for the <a href="http://laverne.edu">University of La Verne</a> redesign as well as other theming work really got me comfortable with working with WordPress. Furthermore, having used it with various clients, I have to say its admin interface, while not perfect, is still very user-friendly for the average user. Imagine trying to teach a client how to use Textile or Markdown for use in TextPattern. Yeah, right. It&#8217;s simple for web-savvy users, but for many of my clients it might as well be, er, HTML.</p>
<h2> Why not another CMS?</h2>
<p>I&#8217;m not interested in starting a CMS debate, and I&#8217;ll link to why <a href="http://sonspring.com">Nathan Smith</a> <a href="http://sonspring.com/journal/why-drupal">chose Drupal</a>. For me it just came down to what I was comfortable with. WordPress meets my expectations as well as my clients&#8217; needs. As such, I&#8217;m not terribly interested in learning yet another CMS. For that effort, I&#8217;d much rather pick up a web framework, which for me right now is Ruby on Rails. Consider the age-old Photoshop/Fireworks or Mac/PC debates &#8211; there is never any end in sight, and the winners are the ones who are producing great work, regardless of tools.</p>
<h2>It&#8217;s Responsive</h2>
<p>The migration to WordPress gave me a good excuse to update some of the underlying code. Those efforts centered around moving to HTML5 as well as a responsive layout. Even though the movement for <a href="http://www.alistapart.com/articles/responsive-web-design/">responsive web design</a> has been around for a while, this is my first RWD site. Since this was not a redesign, the responsive portions are bolted on after the fact. Don&#8217;t be surprised if there are kinks.</p>
<h2>What now?</h2>
<p>The content has been migrated, and the code updated. That was the easy part. All that technology is nothing without content, which I see as the biggest challenge for this site. I really hope I can start writing more. Right now, I&#8217;m being cautiously optimistic. Stay tuned&#8230;here, I hope.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://davidsutoyo.com/articles/goodbye-textpattern-hello-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What I Learned From Making Balloon Ride</title>
		<link>http://davidsutoyo.com/articles/what-i-learned-from-making-balloon-ride/</link>
		<comments>http://davidsutoyo.com/articles/what-i-learned-from-making-balloon-ride/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 11:29:47 +0000</pubDate>
		<dc:creator>dsutoyo</dc:creator>
				<category><![CDATA[iOS Development]]></category>

		<guid isPermaLink="false">http://wordpress.dev/?p=80</guid>
		<description><![CDATA[I released Balloon Ride on December 1, 2010. It was my second iPhone game, after Memory Flash. It wasn’t an easy journey, but one that was quite fulfilling nonetheless. Here’s what I learned while making the game. Programming (in Objective-C) is hard Let’s start from the top: I’m not a programmer. At the least, let’s just say I [...]]]></description>
			<content:encoded><![CDATA[<p>I released <a href="http://itunes.apple.com/us/app/balloon-ride/id404889801?mt=8">Balloon Ride</a> on December 1, 2010. It was my second iPhone game, after <a href="//itunes.apple.com/us/app/memory-flash/id396332523?mt=8">Memory Flash</a>. It wasn’t an easy journey, but one that was quite fulfilling nonetheless. Here’s what I learned while making the game.</p>
<h2>Programming (in Objective-C) is hard</h2>
<p>Let’s start from the top: I’m not a programmer. At the least, let’s just say I don’t plan on selling my services as an iPhone programmer anytime soon. No, I started my career in digital media as a web designer/developer. I come from a world of Photoshop, Illustrator, CSS, and HTML. My programming experience was limited to some C classes and long days programming visual stimuli for <a href="http://en.wikipedia.org/wiki/Electroencephalography">EEG</a>experiments in <a href="http://www.mathworks.com/">MATLAB</a> while in <a href="http://www.cogsci.uci.edu/">graduate school</a>. I know a bit of PHP, enough to write basic functions while I make WordPress themes, and I’m somewhat familiar with the MVC pattern through working with Ruby on Rails (I worked mostly on the view part). Suffice it to say that learning Objective-C was not an easy task. I bought three books to start learning and gave up twice over the course of a year. I learned enough to perhaps build some really simple and basic apps, but nothing close to an actual game. Enter cocos2D.</p>
<p>I stumbled onto cocos2D while looking for frameworks for making iPhone apps. I knew of <a href="http://phonegap.com/">PhoneGap</a> and found <a href="http://www.gamesalad.com/">GameSalad</a>. I didn’t give either a serious try because I wasn’t exactly sure of PhoneGap’s capabilities, and I was wary of GameSalad’s price and in-game branding (note: stuff has changed at GameSalad, but I haven’t been keeping up with the specifics). The overall concept of cocos2D kind of clicked with me, interestingly, after playing with GameSalad’s creator. Directors and scenes and objects made more sense to me after I realized I was just creating pseudo-code in GameSalad. This isn’t to say that stuff was easy from then on, but it was sort of an a-ha moment that led me to create my first game. Many <a href="http://www.raywenderlich.com/">tutorials</a> and sample code later, I created Memory Flash (more on that <a href="http://davidsutoyo.com/articles/my-first-iphone-app">here</a>).</p>
<p>While I did create a functional game, I felt like I didn’t understand cocos2D well enough. By chance, I came across Steffen Itterheim’s <a href="http://www.learn-cocos2d.com/">blog</a> and saw that his latest<a href="http://apress.com/ecommerce/cart?act=add&amp;bid=1524">book</a> was in alpha. After browsing through the sample chapters, I was sold, and read through most of his book in one day. Through it I learned a lot more about cocos2D and game programming, and that was when I formulated the idea for Balloon Ride — a game that is simple enough to try out what I learned from the book. But what I thought would be simple was not so after all.</p>
<h2>Game design is harder</h2>
<p>The premise of Balloon Ride seemed simple enough: you tilt your phone to avoid enemies and collect stars. Nothing hard about that, right? In a sense, no, it isn’t hard. With the help of cocos2D and the book, implementing the basics was simple for the most part. Once I got past the basics, game design-related issues that I haven’t considered before popped up one by one. How fast should the enemies come flying? How soon do I ramp up the difficulty? Is the game too hard? Is the game too easy? It was the details that kept my head spinning, trying to find the right balance between hard and fun. I learned that what makes a game great is in the experience, and designing that experience is no walk in the park. In that sense game design is absolutely no different than web design: one may be able to learn how to program or use Photoshop using tutorials and a book, but truly great designs come from intuition, experience, and mastery.</p>
<p>On a somewhat related note, the graphics for the game came the easiest for me, as I’ve had plenty of experience with Photoshop and Illustrator. However, supporting Retina display was rather tedious as I had to create two versions of almost everything. This was when I came to appreciate Fireworks and its unique blend of vector and bitmap tools. I haven’t really used Fireworks even though most web designers swear by it, as I’ve already develop a level of comfort in Photoshop. But after this experience I might consider using Fireworks for my web mockups.</p>
<p>After a solid month of non-stop development and a couple rounds of testing, I finally managed to submit the app and got it approved. I thought the hardest part was over. Boy, was I wrong.</p>
<h2>Marketing is hardest</h2>
<p>There are 300,000+ apps on the App Store, and many of them are free. How does one app cut through the noise and reach its intended audience? To be honest, I hadn’t really seriously considered it. Memory Flash got 600+ downloads despite me doing next to nothing to get the word out (I blogged about it and tweeted about it once). It’s peanuts compared to other games, but way more than I expected. Even at this writing, after two months after release, Memory Flash is still getting downloads. I’m still not sure how these people found Memory Flash (App Store analytics, anyone?), but it led to the belief that something on the App Store helped people find my game. Surely, then, a better game would be easier to market, right? What I hadn’t considered was the power of the almighty dollar, or in my case, 99 cents.</p>
<p>First, the price, however low, prevented people from downloading Balloon Ride. Memory Flash was free, and there was no consequence in downloading it and trying it out. Once money enters the equation, the rules change against my favor. Second, paid apps are subject to piracy (I’m not sure if free or freemium apps are subject, and I didn’t check). I knew piracy existed, but I was surprised at how rampant it was. In comparing leaderboard entries and my actual sales I found that a whopping ninety percent of the game’s users are using the pirated version. While that really put a damper on things, I felt my real issue is that I’m not getting the word out about the game. Not only was I late on creating a<a href="http://balloonridegame.com/">website</a> and <a href="http://www.youtube.com/watch?v=SLHp2HltFIk">trailer</a>, I realized I had almost no experience in marketing, well, anything. I may be good with Photoshop, I may have picked up Objective-C, but marketing is an entirely different beast. So here I am, writing a post-mortem to be included in Steffen’s <a href="http://www.learn-cocos2d.com/2010/11/cocos2d-linkvent-calendar-2010">Linkvent calendar</a> as part of the marketing effort. I have some other ideas/venues to try, including a lite version of the game, but I have to say this is all a painful learning process. If anyone reading has any good suggestions (and not just about marketing) I’m all ears!</p>
<h2>Design is fun</h2>
<p>However difficult the process may have been, I did learn that creating a game was really fun. It is nothing like creating a website (and as a <a href="http://www.webstandards.org/">standardist</a> and iPhone fan, I’m not really including Flash here…) in that there is a lot more one can do with a touch device. The fact that I was able to create a fully function iPhone app is a testament to cocos2D and how powerful it is. While I do plan on keeping up with the framework, I recently discovered a real competitor that has pique my interest: <a href="http://www.anscamobile.com/corona">Corona</a>, which uses a much simpler language in Lua. All due respect to cocos2D, but it’s still Objective-C. Despite lagging sales, I’m still interested in creating another game, whether it is with cocos2D or Corona, but I’m sure I will be building on what I’ve learned so far. In the meantime, I leave you with this:</p>
]]></content:encoded>
			<wfw:commentRss>http://davidsutoyo.com/articles/what-i-learned-from-making-balloon-ride/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>My First iPhone App</title>
		<link>http://davidsutoyo.com/articles/my-first-iphone-app/</link>
		<comments>http://davidsutoyo.com/articles/my-first-iphone-app/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 22:27:53 +0000</pubDate>
		<dc:creator>dsutoyo</dc:creator>
				<category><![CDATA[iOS Development]]></category>

		<guid isPermaLink="false">http://wordpress.dev/?p=9</guid>
		<description><![CDATA[I didn’t think this would happen, but it did — I released my first iPhone game on October 12, 2010. It’s a simple card matching game called Memory Flash. It was originally intended as a learning project as I try to fight my way through learning Objective-C and object-oriented programming. Since I ended up with a [...]]]></description>
			<content:encoded><![CDATA[<p>I didn’t think this would happen, but it did — I released my first iPhone game on October 12, 2010. It’s a simple card matching game called <a href="//itunes.apple.com/us/app/memory-flash/id396332523?mt=8">Memory Flash</a>. It was originally intended as a learning project as I try to fight my way through learning Objective-C and object-oriented programming. Since I ended up with a functional game, I thought I might as well try to release it on the App Store, and much to my pleasant surprise, Apple approved it.</p>
<p>I’ve had several people ask me why I’m taking on programming even though my bread and butter is front-end design and development. Even though that is what I enjoy doing the most, I constantly felt that I was limited by content management systems that require arm-twisting. I wanted more control over the things I design. So I started learning Ruby on Rails and Objective-C. Yes, I’m trying to learn both, and that’s after I caught myself trying to do too much reading about Django, CodeIgniter, and Drupal. I decided to settle on Rails because I was already familiar with it, and Objective-C because it’s a channel into the mobile arena.</p>
<p>Programming is hard, and object-oriented programming was a lot to wrap my brain around. And let’s not even get into memory management. I was close to giving up on Objective-C many times until I stumbled across the excellent <a href="http://www.cocos2d-iphone.org/">cocos2d framework</a>. With that, things started to make more sense, and I was able to build off of some tutorials. To be honest, I’m still very shaky with Objective-C — I think I only finished this game through sheer determination, and lots of time.</p>
<p>I actually finished the game in July, but didn’t submit it because I thought I should be supporting Retina Display. Unfortunately, conflicts between Apple’sUIKit and cocos2d prevented proper display of hi-res images. And so my app sat there for 2 months collecting dust. It wasn’t until two weeks ago that I decided to follow through on the old software adage: “Release early, release often.” I’m glad I did. I’ve already submitted my first patch to fix a scoring bug. Hi-res display is coming soon as well. In its first three days of release the game has been downloaded almost 300 times. Nothing spectacular for sure, but much better than the 10 friend downloads I was expecting.</p>
<p>So, am I thinking of making another game? I’m not sure, but I do have an idea that I think might be decent. Stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://davidsutoyo.com/articles/my-first-iphone-app/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Version 6 &#8211; Realigning and Reorganizing</title>
		<link>http://davidsutoyo.com/articles/version-6-realigning-and-reorganizing/</link>
		<comments>http://davidsutoyo.com/articles/version-6-realigning-and-reorganizing/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 12:59:15 +0000</pubDate>
		<dc:creator>dsutoyo</dc:creator>
				<category><![CDATA[Website]]></category>

		<guid isPermaLink="false">http://wordpress.dev/?p=5</guid>
		<description><![CDATA[If there’s anything I learned from not really blogging the last couple of years, it’s this: you don’t blog more by starting up more blogs. I think I share Wilson Miner’s perspective on personal projects — personal projects are interesting until they become, well, uninteresting and not up to par. Without any real impetus (read: money and/or [...]]]></description>
			<content:encoded><![CDATA[<p>If there’s anything I learned from not really blogging the last couple of years, it’s this: you don’t blog more by starting up more blogs. I think I share Wilson Miner’s perspective on <a href="http://www.wilsonminer.com/posts/2008/oct/15/excuses-excuses">personal projects</a> — personal projects are interesting until they become, well, uninteresting and not up to par. Without any real impetus (read: money and/or passion) behind writing, my blogs quickly run fallow as I move on to designing newer and more interesting projects.</p>
<h2>Trimming the fat</h2>
<p>Starting with this version of my blog, I’m doing a hard reset on my sites. This blog moved from david.sutoyo.com to the new davidsutoyo.com, starting fresh with no old articles. The old domain redirects to here, although the old version of the blog can be found <a href="http://v5.davidsutoyo.com/">here</a>. As for my other blogs — <a href="http://davidsutoyo.com/asimplecell.com">asimplecell.com</a> is next up in line to be revived without a blog, and I plan to shut down <a href="http://helloschema.com/">Schema</a> and move most of its articles here. To paraphrase Jerry Maguire, it’s less blogs, more personal attention. Single serving sites such as <a href="http://twoversionsbehind.com/">Two Versions Behind</a> will stay as they are (although it will soon be <a href="http://ie.microsoft.com/testdrive/">three versions behind</a>!).</p>
<h2>What next?</h2>
<p>Like I mentioned, <a href="http://davidsutoyo.com/asimplecell.com">asimplecell.com</a> is up next for a realign. After that, I don’t really know. <a href="http://twitter.com/">Twitter</a> and <a href="http://facebook.com/">Facebook</a> has really diminished the need for dedicated personal blogs. This blog will focus more on design, but to battle for attention in this niche is definitely not an easy task. What I can promise, though, is that there will be no list articles. It’s like they say, quality over quantity.</p>
]]></content:encoded>
			<wfw:commentRss>http://davidsutoyo.com/articles/version-6-realigning-and-reorganizing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

