<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11134270</id><updated>2012-01-11T02:46:30.567+09:00</updated><category term='microsite'/><category term='fansite'/><category term='asperger'/><category term='adsense'/><category term='autistic savant'/><title type='text'>A Developer's Lifestream</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bemmu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default?start-index=101&amp;max-results=100'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>270</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11134270.post-4731410017922690562</id><published>2011-07-22T15:49:00.003+09:00</published><updated>2011-07-22T15:59:56.750+09:00</updated><title type='text'>Progress report</title><content type='html'>I've had some tiny amounts of success with my recent projects, but really only enough to frustrate me. I added the some paid features to &lt;a href="http://apps.facebook.com/fanofthe/"&gt;Fan of the Week&lt;/a&gt; and made one sale in the first week, however it was worth $59.90 so not that shabby. &lt;br /&gt;&lt;br /&gt;The Japanese candy subscription service &lt;a href="http://www.candyjapan.com"&gt;Candy Japan&lt;/a&gt; has 40 subscribers now. I've been investigating how to comply with FDA regulations to have some peace of mind when sending to USA, but it seems that their rules are designed for people who deal with tens of thousands of products instead of just a few. I will probably be better off just marking the packages as "gifts" for now, but would really like to do it properly.&lt;br /&gt;&lt;br /&gt;I managed to find a direct advertiser for my site &lt;a href="http://www.memeface.com"&gt;MemeFace&lt;/a&gt;. It is a company selling &lt;a href="http://www.memestickers.ca"&gt;Meme Stickers&lt;/a&gt; online. The owner is very cool.&lt;br /&gt;&lt;br /&gt;Still everything I mentioned here put together would not be enough to support my modest Japanese lifestyle. I estimate I would need something like 1200 eur / month to pay for rent, food, taxes, health insurance etc. For now I'll be ok from what I have saved from my previous projects, but I better have some hit soon again, just for my sanity.&lt;br /&gt;&lt;br /&gt;I took another look at my iOS game project &lt;a href="http://www.valleystory.com/"&gt;Valley Story&lt;/a&gt; and am considering putting in the final touches to finish it. I got burned out mostly on memory management issues when developing it before and missed my launch date and then just started doing the above mentioned other things. Now I could run the game again and look at it with fresher eyes and it doesn't look that bad really. If I could just release it I could probably sell a few copies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4731410017922690562?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4731410017922690562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4731410017922690562'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/07/progress-report.html' title='Progress report'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-7910470682541449377</id><published>2011-07-06T03:15:00.002+09:00</published><updated>2011-07-06T03:17:37.045+09:00</updated><title type='text'>Japanese Candy Club</title><content type='html'>Today I finally made a homepage for this "candy club" I've already been running for a while. I was inspired to do this after finding that ideal domain, candyjapan.com was available. So if you'd like to join the club, click over to &lt;a href="http://www.candyjapan.com/"&gt;Candy Japan&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-7910470682541449377?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7910470682541449377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7910470682541449377'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/07/japanese-candy-club.html' title='Japanese Candy Club'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-1323195535696892020</id><published>2011-07-03T22:28:00.004+09:00</published><updated>2011-07-03T22:42:15.837+09:00</updated><title type='text'>Fan of the Week for Facebook Pages</title><content type='html'>Fan of the Week is an add-on for Facebook Pages. It makes fans use your pages more actively, encouraging them to like your page, its posts and to post on the wall themselves if you would like to encourage that. Because of Facebook's EdgeRank, when fans interact with your pages more, your page updates will also be more likely to appear on their news feed. So in short, you should really go &lt;a href="http://apps.facebook.com/fanofthe"&gt;add it to your page right now&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is one example of how people are using this add-on on their pages. &lt;a href="http://clubdville.com/"&gt;Club D'Ville&lt;/a&gt; is a nightclub in Ireland. They have been using Fan of the Week to not only pick a fan to get the honorary title, but also give them free entrance tickets to the club. Every week the app automatically picks a fan and announces them as that week's fan. The announcement is customizable, as you can see here:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/YwLyk.png"/&gt;&lt;br /&gt;&lt;br /&gt;Below you can see what the add-on page tab looks like. It is also completely customizable. Fans are picked based on not just random chance, but also on how much they interacted with the page. Each page interaction is like a lottery ticket that gives the fan a chance to get picked.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/pRgjE.png"/&gt;&lt;br /&gt;&lt;br /&gt;If you have a Facebook page and think Fan of the Week would be a nice addition to it, you can &lt;a href="http://apps.facebook.com/fanofthe"&gt;add it to your page here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-1323195535696892020?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1323195535696892020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1323195535696892020'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/07/fan-of-week-for-facebook-pages.html' title='Fan of the Week for Facebook Pages'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-807365498677699533</id><published>2011-06-13T20:33:00.002+09:00</published><updated>2011-06-13T20:38:00.546+09:00</updated><title type='text'>To Shanghai from Shikoku, boat or plane?</title><content type='html'>Found out that at lowest it costs 17360 yen to fly from Takamatsu to Shanghai and back (return ticket), by china-sss. Their homepage advertises "4100 yen". So kind of like Ryanair, all kinds of hidden fees you only see after going further in the ordering process.&lt;br /&gt;&lt;br /&gt;Boat return ticket for Osaka - Shanghai for comparison is 33000 yen at &lt;a href="http://www.shanghai-ferry.co.jp/english/"&gt;Shanghai Ferry&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-807365498677699533?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/807365498677699533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/807365498677699533'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/06/to-shanghai-from-shikoku-boat-or-plane.html' title='To Shanghai from Shikoku, boat or plane?'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-3401130134260744660</id><published>2011-06-13T10:08:00.004+09:00</published><updated>2011-07-03T22:44:36.585+09:00</updated><title type='text'>Brainstorming #1: Fan of the Day for Facebook Pages</title><content type='html'>I want to brainstorm a few ideas today with the goal of releasing at the end of the week, start working on something in the evening. So here's #1.&lt;br /&gt;&lt;br /&gt;- Which page owners the app is for: &lt;br /&gt;&lt;br /&gt;Any pages which want to grow their fanbase.&lt;br /&gt;&lt;br /&gt;- What benefit those page owners get from adding the app: &lt;br /&gt;&lt;br /&gt;Encourages more people to fan your page by daily picking a random fan as "fan of the day".&lt;br /&gt;&lt;br /&gt;- Rough sense of how the app might make money: &lt;br /&gt;&lt;br /&gt;Basic version free, enabling extra options costs something, custom tier for big companies that costs more and provides email support and custom features.&lt;br /&gt;&lt;br /&gt;- A somewhat scalable way of reaching those page owners&lt;br /&gt;&lt;br /&gt;Default feature in free version will be to post "fan of the day" message into the page feed and that message will also include a link to the tab, that should make the app spread quite nicely even if I just put it on my own pages. I might get some friends to add it and could at least mention it on HN or some forums to get the initial amount of users.&lt;br /&gt;&lt;br /&gt; - Rough screen sketches of how it would work.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/mEQ95.jpg" style="width:500px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt; After some searching, I found out that it's &lt;a href="http://bugs.developers.facebook.net/show_bug.cgi?id=12880"&gt;impossible to get list of page fans&lt;/a&gt; so this idea is actually impossible in the described form. Maybe I should add "is possible" to the list of idea requirements :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt; Figured out a way to make it possible after all. Can't pick a totally random fan, but can pick one if they interacted with the page. Coded up the app, &lt;a href="http://bemmu.blogspot.com/2011/07/fan-of-week-for-facebook-pages.html"&gt;read more here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-3401130134260744660?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3401130134260744660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3401130134260744660'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/06/brainstorming-1-fan-of-day-for-facebook.html' title='Brainstorming #1: Fan of the Day for Facebook Pages'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6018969787661676932</id><published>2011-06-12T18:33:00.006+09:00</published><updated>2011-06-12T21:16:09.884+09:00</updated><title type='text'>Ways I could reach owners of Facebook pages</title><content type='html'>In my last post about &lt;a href="http://bemmu.blogspot.com/2011/06/facebook-pages-apps.html"&gt;Facebook pages apps&lt;/a&gt; I wrote about why I feel they are a nice opportunity and defined what I mean by an idea for such an app, so this time I want to come up with one such idea.&lt;br /&gt;&lt;br /&gt;I feel the most difficult part is a way to reach page owners. Therefore I should start brainstorming from that part, because it's the best filter for unworkable app ideas.&lt;br /&gt;&lt;br /&gt;Page owners I might be able to reach:&lt;br /&gt;&lt;br /&gt; - A tiny number of iOS app developers through my Chrome Extension &lt;a href="https://chrome.google.com/webstore/detail/olcmimpceehliglonceahbidlfmajpoo"&gt;iTunes Connect Fix&lt;/a&gt;.&lt;br /&gt; - Startup founders due to being an active participant on Hacker News and #startups on Freenode. Many would have their own Facebook page, but many seem to be a bit anti-Facebook, so there would be a bit of backlash if I try to promote to them.&lt;br /&gt; - Agents for movie stars probably could pay something to enhance the actors' Facebook pages, there are also some good keywords to target them.&lt;br /&gt;&lt;br /&gt;Obvious places to get constant streams of users with $$$: Facebook / Google ads. A bit more involved but possibly better bang for buck: contacting bloggers to try to reach their audiences. "You are always renting someone's audience, if not a blogger's audience, you are paying Google to rent the audience of their search", as someone clever said on Hacker News. &lt;br /&gt;&lt;br /&gt;Promoting the page app on the page app itself would also be useful, but probably only doable well if it's freemium, I doubt people would tolerate very overt advertising in a paid app. It might work really well if it's something you could put on any page. Hmm... actually I think I just got an idea!&lt;br /&gt;&lt;br /&gt;Now should I go ahead and just code it in a mad spurt or try to brainstorm some more. I'm entering that "ooh new idea, me loves" phase.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6018969787661676932?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6018969787661676932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6018969787661676932'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/06/ways-i-could-reach-owners-of-facebook.html' title='Ways I could reach owners of Facebook pages'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-751668598686389715</id><published>2011-06-12T18:17:00.005+09:00</published><updated>2011-06-12T18:39:23.117+09:00</updated><title type='text'>Facebook pages apps</title><content type='html'>Strangely the only project I currently have that is showing any growth is &lt;a href="http://www.memeface.com"&gt;Memeface&lt;/a&gt;, a site where you can mimic popular rage faces with your webcam. I enjoy improving on it, because I'm a big fan of rage faces myself and I feel more comfortable making big changes to the site because it's not a very serious project. However that project will clearly never reach the kind of pageviews it would require to make money on a low CPM site like that, so I'll have to think about other things too.&lt;br /&gt;&lt;br /&gt;Currently the most accessible opportunity I see for a sole developer is apps for Facebook pages or perhaps apps that somehow work over email as it is a very powerful but maybe a bit underappreciated channel for growth. It's a lot easier to come up with ideas for Pages apps, so I've mostly been thinking about those. It seems not every niche is filled yet. There don't seem to be that many apps for them yet. Bar is a lot lower than for game apps, because Pages apps usually don't require a lot of content (graphics/sounds/scripts). It's a lot easier to see how to monetize them. Probably a freemium model would work very naturally and from a Facebook pages app designed for a company it is a lot easier to charge for features.&lt;br /&gt;&lt;br /&gt; I worry about marketing the apps. For games / entertainment it's easy to let the word out, as almost anyone is a potential user, but an app only useable for people that have pages about certain things is relevant only to a much more limited group. Last week I spent making a Pages app for &lt;a href="http://apps.facebook.com/airbnblistings"&gt;Airbnb Listings&lt;/a&gt;, only to realize after pushing it to the production server that I have no idea how to naturally reach Airbnb hosts to get them to make use of the app. I found a few dozen hosts on Facebook and tried to send them direct messages about the app, but couldn't really do it in away which would feel natural.&lt;br /&gt;&lt;br /&gt;So my definition of an "idea" for a Facebook pages app should cover at least:&lt;br /&gt;&lt;br /&gt; - Which page owners the app is for.&lt;br /&gt; - What benefit those page owners get from adding the app in the form of a pitch for those people.&lt;br /&gt; - A somewhat scalable way of reaching those page owners!&lt;br /&gt; - Rough sense of how the app might make money.&lt;br /&gt; - Rough screen sketches of how it would work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-751668598686389715?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/751668598686389715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/751668598686389715'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/06/facebook-pages-apps.html' title='Facebook pages apps'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-3715820611135260295</id><published>2011-06-09T12:05:00.003+09:00</published><updated>2011-06-09T12:12:54.221+09:00</updated><title type='text'>Airbnb Listings</title><content type='html'>Released the first version of my "Airbnb Listings" app. It lets you list your &lt;a href="http://www.airbnb.com?af=41286&amp;c=direct_link"&gt;Airbnb&lt;/a&gt; properties on your Facebook page, so that more people can find them easily. You can install it &lt;a href="http://www.facebook.com/add.php?api_key=f20e5eb926328df752cddc12eef27f15&amp;pages"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/CLX0b.png" style="width:500px;"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-3715820611135260295?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3715820611135260295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3715820611135260295'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/06/airbnb-listings.html' title='Airbnb Listings'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-8529180077305058520</id><published>2011-04-29T18:56:00.002+09:00</published><updated>2011-04-29T18:58:17.336+09:00</updated><title type='text'>Neverending Valley Story #7 + memeface</title><content type='html'>To take a break from coding Valley Story, released an initial version of &lt;a href="http://www.memeface.com"&gt;MemeFace&lt;/a&gt;, a site where you can mimic popular memes with your webcam. Going back to coding Valley Story, I discovered memory leaks and problems with sound working on the actual device, also choppy animation. Blergh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-8529180077305058520?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8529180077305058520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8529180077305058520'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/04/neverending-valley-story-7-memeface.html' title='Neverending Valley Story #7 + memeface'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-584082162359331358</id><published>2011-04-22T17:36:00.000+09:00</published><updated>2011-04-22T17:37:01.598+09:00</updated><title type='text'>Neverending Valley Story #7</title><content type='html'>&lt;img src="http://i.imgur.com/mhjz9.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-584082162359331358?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/584082162359331358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/584082162359331358'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/04/neverending-valley-story-7.html' title='Neverending Valley Story #7'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-3760069635177792365</id><published>2011-04-18T11:52:00.002+09:00</published><updated>2011-04-18T15:58:54.312+09:00</updated><title type='text'>Neverending Valley Story #6</title><content type='html'>&lt;img src="http://i.imgur.com/Ip4Y0.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-3760069635177792365?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3760069635177792365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3760069635177792365'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/04/neverending-valley-story-6.html' title='Neverending Valley Story #6'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-3967769705711526260</id><published>2011-04-13T15:19:00.002+09:00</published><updated>2011-04-13T15:21:06.578+09:00</updated><title type='text'>Neverending Valley Story #5</title><content type='html'>&lt;img src="http://i.imgur.com/WU1SJ.png"/&gt;&lt;br /&gt;&lt;br /&gt;The dorm room, first environment in the game. It's difficult to draw areas where walls would overlap the view, have to draw cut-out walls. Also I want to add more stuff here, maybe discarded red bull cans, a corkboard in the college hallway etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-3967769705711526260?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3967769705711526260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3967769705711526260'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/04/neverending-valley-story-5.html' title='Neverending Valley Story #5'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6038310537556078947</id><published>2011-04-12T10:14:00.005+09:00</published><updated>2011-04-12T11:35:39.403+09:00</updated><title type='text'>Neverending Valley Story #4</title><content type='html'>&lt;img src="http://i.imgur.com/AizXQ.png"/&gt;&lt;br /&gt;&lt;br /&gt;I'm having a problem with the design of this game. This was supposed to follow quite closely how "Game Dev Story" works, but instead of depicting life in a game company, it is supposed to be about life in a web startup. Well, there's one thing about startups that really isn't suitable for this game: the fact that there is only one product!&lt;br /&gt;&lt;br /&gt;The fun part of Game Dev Story is the cycle of developing products. Initially you are excited to see how many points the product gets for different attributes. Then you watch the developers churn away, adding attributes to the product, here especially exciting is when one of them gets into the zone and adds a ton of points to some attribute (or a ton of bugs). Then you get to launch the product and can excitedly anticipate what kind of scores it will get from reviewers and how well it will sell.&lt;br /&gt;&lt;br /&gt;Apart from the zone, none of these best parts of Game Dev Story can apply to Valley Story, because there is only one product! There is no product cycle. A startup is about working on one product, that seems to be difficult to change, and if I did change that then this would no longer really be about startups and would be a much more direct clone of Game Dev Story, not what I really want. But not having that makes this significantly more boring to play. Auugh!&lt;br /&gt;&lt;br /&gt;There need to be exciting points to this game. Now it's about just looking at the screen while the usercount and money gradually increase. No exciting points at all. Bleh. There is nothing here that would make the player think "wow I wish I had enough Y to reach X".&lt;br /&gt;&lt;br /&gt;Now I must depart from looking at Game Dev Story, because none of it applies to this game any more. The only part that ends up being the same is just the visual look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6038310537556078947?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6038310537556078947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6038310537556078947'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/04/blog-post.html' title='Neverending Valley Story #4'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-1174433752416048269</id><published>2011-04-07T16:13:00.006+09:00</published><updated>2011-04-08T09:40:11.797+09:00</updated><title type='text'>Neverending Valley Story #3</title><content type='html'>Drew a sheet for the character walking.. well it turned out to look like he is walking to the left. It was supposed to look that he was walking southwest isometrically.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/FSVxp.png"/&gt;&lt;br /&gt;&lt;br /&gt;This took 4 hours to draw. I can't believe I'm still working on this. Southeast should be matter of mirroring. For northwest and northeast I have to draw an entirely new set.&lt;br /&gt;&lt;br /&gt;I haven't found any good pixel drawing tools. GIMP doesn't really have the best workflow and working with animations is cumbersome. Pixen crashes constantly and is buggy with colors. Grafx2 doesn't support animations.&lt;br /&gt;&lt;br /&gt;2.5 hours pass ...&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/Tp0n7.png"/&gt;&lt;br /&gt;&lt;br /&gt;And after some polishing...&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/lDhOW.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-1174433752416048269?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1174433752416048269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1174433752416048269'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/04/neverending-valley-story-3.html' title='Neverending Valley Story #3'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6528103970154485648</id><published>2011-04-01T17:58:00.002+09:00</published><updated>2011-04-01T18:00:21.900+09:00</updated><title type='text'>Neverending Valley Story #2</title><content type='html'>&lt;img src="http://i.imgur.com/nM36G.png"/&gt;&lt;br /&gt;&lt;br /&gt;Sprite knows how to move along the graph now. I didn't ask for it, but seems that subpixel accuracy rendering is enabled by default, so when the character is moving between points it appears blurry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6528103970154485648?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6528103970154485648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6528103970154485648'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/04/neverending-valley-story-2.html' title='Neverending Valley Story #2'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-9022511919166849143</id><published>2011-03-31T20:47:00.001+09:00</published><updated>2011-03-31T20:49:25.075+09:00</updated><title type='text'>Neverending Valley Story</title><content type='html'>&lt;img src="http://i.imgur.com/8cKnD.png"/&gt;&lt;br /&gt;&lt;br /&gt;Realized I need a graph showing where the points of interest in each map are and how the players should walk there. Decided to just hardcode the coordinates, since manipulating data with objective c seems so cumbersome compared to Python.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-9022511919166849143?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/9022511919166849143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/9022511919166849143'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/neverending-valley-story.html' title='Neverending Valley Story'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-326845283252804480</id><published>2011-03-30T14:08:00.004+09:00</published><updated>2011-03-30T15:23:58.035+09:00</updated><title type='text'>Valley Story continues</title><content type='html'>Yeah, still working on Valley Story. Harder than I thought this would be.&lt;br /&gt;&lt;br /&gt;Right now I'm trying to get the graphics working on iOS. My previous prototype was in Javascript, so now I have to take what I learned from my JS code and write equivalent in Objective C. One big thing I learned was that I probably don't need a full isometric engine for this. Instead I can just have sprites for the player characters and for anything that might be in front of them, which isn't very many things since I can control the paths of the characters to avoid getting too near any obstacles.&lt;br /&gt;&lt;br /&gt;I'm planning on totally isolating the game logic from the graphics. The game logic will just spout out commands like "Drew walked in the door", "Drew sat in the chair" and then my graphics code will show that. This lets me prototype the gameplay as text while I still don't have graphics for everything.&lt;br /&gt;&lt;br /&gt;Sprites I'm going to show by just creating UIImageViews and moving them around on the screen. So when the graphics code gets a message like "Drew walked in the door" from the game logic, it will first see if we have this "Drew" guy already on screen. If not, then it will look at character definitions to see which sprite sheet Drew should be using. Further which sprite in that sheet, cuts out that UIImage from the sheet and updates Drew's UIImageView using that. Then it keeps updating the graphics and location while Drew walks around, sorting the UIImageViews properly so that it appears in front of / behind other stuff.&lt;br /&gt;&lt;br /&gt;Here's another shortcut that I came up with from my prototype. In the prototype I had a "sort point" for each sprite that signified the point in the texture that should be used when deciding if this character is in front of / behind something. I don't really need that, instead I can align all sprites such that the sort points would overlap by just positioning more carefully in my art.&lt;br /&gt;&lt;br /&gt;I know UIImageView already has "animationImages" and "startAnimating", but it seems more convenient to do it myself each frame as I have to update the view location there anyway. Also my graphics in the sprite sheet might not be in the order I want to animate them in and the ordering might depend on what the character is doing. Like if they are sitting down I have to show some sprites in the opposite order than if they are getting up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-326845283252804480?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/326845283252804480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/326845283252804480'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/valley-story-continues.html' title='Valley Story continues'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-2862760255719946385</id><published>2011-03-28T03:05:00.003+09:00</published><updated>2011-03-28T03:08:22.861+09:00</updated><title type='text'>Valley Story</title><content type='html'>&lt;img src="http://i.imgur.com/gDacz.png"/&gt;&lt;br /&gt;&lt;br /&gt;I can reveal the name of the game now since I registered the domain, it will be called "&lt;a href="http://www.valleystory.com"&gt;Valley Story&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/jVWre.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-2862760255719946385?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2862760255719946385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2862760255719946385'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/valley-story.html' title='Valley Story'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-23708131296902569</id><published>2011-03-22T19:08:00.001+09:00</published><updated>2011-03-22T19:08:44.980+09:00</updated><title type='text'>Isometric progress #8</title><content type='html'>&lt;img src="http://i.imgur.com/Ols8d.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-23708131296902569?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/23708131296902569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/23708131296902569'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/isometric-progress-8.html' title='Isometric progress #8'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-5618611161517922550</id><published>2011-03-18T11:41:00.004+09:00</published><updated>2011-03-18T12:00:14.144+09:00</updated><title type='text'>1.1.2011 - now, looking back</title><content type='html'>Wow, it's already the middle of March and still no revenue to speak of. Where did this time go? Skimmed through my older blogposts since start of the year, and it seems that I've spent all my time learning the details that go into an isometric engine, learning how to do pixel art, thinking about game design and studying iOS development.&lt;br /&gt;&lt;br /&gt;I do feel I really know more about these things than I did back then, but I'm prone to judging my progress more based on revenue rather than some improved knowledge, just because I can't buy ramen by having more potential that doesn't materialize anywhere.&lt;br /&gt;&lt;br /&gt;I did release 1 iOS app, 1 website, 2 chrome extensions and made a significant revenue-increasing tweak in Coolest Friends, but still this hasn't been a very successful three and a half months. Besides the revenue tweak none of it mattered much. I'm starting to feel increasingly disappointed in my progress and need to have some measure of success soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-5618611161517922550?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5618611161517922550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5618611161517922550'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/112011-now-looking-back.html' title='1.1.2011 - now, looking back'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-5640063597135260153</id><published>2011-03-16T10:53:00.003+09:00</published><updated>2011-03-16T10:55:01.549+09:00</updated><title type='text'>Buttersafe shading experiment</title><content type='html'>I'm a fan of the webcomic &lt;a href="http://www.buttersafe.com"&gt;buttersafe&lt;/a&gt;. It's often a great comic, but what is really inspiring is how his artwork is pretty bad at first, but then improves a lot as time passes. One of the improvements I noticed is subtle shading. I like his clear-lined style.&lt;br /&gt;&lt;br /&gt;Here's my attempt to replicate it with some kind of cute animal.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/22z9P.png" alt="cute animal"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-5640063597135260153?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5640063597135260153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5640063597135260153'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/buttersafe-shading-experiment.html' title='Buttersafe shading experiment'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-7993133692050131586</id><published>2011-03-16T02:17:00.004+09:00</published><updated>2011-03-16T02:39:12.615+09:00</updated><title type='text'>Is exploration fun in games?</title><content type='html'>It's really cool to have a large environment with places to go, but who likes to scroll around? Actually it was a positive point in GameDev Story that all the action happens on one screen. Also while playing The Sims I also remember being perfectly happy that everything happened in the house, going outside didn't seem that much fun even when it was possible in later games. On the other hand, in that island survival game it was a big part of the fun to be able to explore outside.&lt;br /&gt;&lt;br /&gt;So why does it sometimes work? Where's the fun?&lt;br /&gt;&lt;br /&gt;In The Sims going to places wasn't fun, because it didn't feel like you can advance in things like career path or relationships by doing it. It wasn't really even part of the game if you think about the game as a set of rules to take advantage of for improving on the stats.&lt;br /&gt;&lt;br /&gt;What if in the island survival game the player was limited to one screen. All the food gathering and raft building would happen right there. It might work, walking around really wasn't all that much fun in it, but discovering new places was because they often had very significant effect on the player's success in the game. For example discovering a new source of food. In The Sims places had no such significance.&lt;br /&gt;&lt;br /&gt;In GameDev Story you actually can go to one place, the gamedex expo. In the expo the player can get fans for the game he is making, but it isn't clear if it really affects the success of the game. It feels unimportant. Also like in The Sims, it takes a lot of player time to go out with no clear benefit, not really that much fun.&lt;br /&gt;&lt;br /&gt;Conclusion from this rambling seems to be that exploration is fun only if there's a clear benefit to the player.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-7993133692050131586?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7993133692050131586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7993133692050131586'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/exploration-in-lifesim-games.html' title='Is exploration fun in games?'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-794921652238571082</id><published>2011-03-13T23:36:00.005+09:00</published><updated>2011-03-16T10:55:50.154+09:00</updated><title type='text'>Isometric progress #7</title><content type='html'>This is where the main character will go for lunch. Pretty happy with the roof, but everything else needs work. The hat and most importantly the banner need some work to be passable, the walls will get redone because I did them completely wrong in the first try. Maybe later I will explain why you don't want to position your walls right in the center of tiles.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/oogMs.png" width="500px;"/&gt;&lt;br /&gt;&lt;br /&gt;To make the roof possible, added support for layers that can be offset from each other. That should also solve the door draw ordering problem, but haven't tackled it yet as it seems unimportant for creating fun.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; this looks so lame it makes me sick whenever I happen to see this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-794921652238571082?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/794921652238571082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/794921652238571082'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/isometric-progress-7.html' title='Isometric progress #7'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4509650326444269490</id><published>2011-03-10T13:25:00.004+09:00</published><updated>2011-03-10T13:29:01.527+09:00</updated><title type='text'>Domain availability checker for Chrome</title><content type='html'>Released an early beta version of a &lt;a href="https://chrome.google.com/extensions/detail/ccmekgooddbakffndcalfgidlfiakfgo?hl=en"&gt;domain checking tool for Chrome&lt;/a&gt;. It's the fastest way to check if a domain is available or not that I know of. Not entirely bug-free yet. In some edge cases like reserved domain names it may claim that some domain is available (like a.org) even though it isn't. Also working on some server-side stability issues too. I wrote the server in &lt;a href="http://nodejs.org/"&gt;node.js&lt;/a&gt;, which I had never used before.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://chrome.google.com/extensions/img/ccmekgooddbakffndcalfgidlfiakfgo/1299360370.32/logo128/1?itemtype=ext&amp;hl=en"/&gt;&lt;br /&gt;&lt;br /&gt;In my continuing effort to learn how to make passable graphics, I tried to make a nice icon for it. The texture of the magnifying glass handle is actually scanned from the leather in my wallet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4509650326444269490?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4509650326444269490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4509650326444269490'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/domain-availability-checker-for-chrome.html' title='Domain availability checker for Chrome'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-2720434324010693582</id><published>2011-03-02T00:14:00.001+09:00</published><updated>2011-03-13T23:36:25.977+09:00</updated><title type='text'>Isometric progress #6</title><content type='html'>Argh.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/pdxAJ.png"/&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/Dv3Ie.png"/&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/fv0Qg.png"/&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/AF3JK.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-2720434324010693582?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2720434324010693582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2720434324010693582'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/isometric-progress-5_02.html' title='Isometric progress #6'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4509863235943327277</id><published>2011-03-01T03:49:00.002+09:00</published><updated>2011-03-13T23:35:10.127+09:00</updated><title type='text'>Isometric progress #5</title><content type='html'>&lt;img src="http://i.imgur.com/EhfYi.png"/&gt;&lt;br /&gt;&lt;br /&gt;Wasn't really sure how to proceed, so did some wall pieces. Very time consuming to try to get pieces to match.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4509863235943327277?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4509863235943327277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4509863235943327277'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/03/isometric-progress-5_01.html' title='Isometric progress #5'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4575405685863611355</id><published>2011-02-28T17:54:00.003+09:00</published><updated>2011-02-28T17:56:31.185+09:00</updated><title type='text'>Isometric progress #4</title><content type='html'>&lt;img src="http://i.imgur.com/pNEGi.png" style="width:500px;"/&gt;&lt;br /&gt;&lt;br /&gt;Added another resource: tiredness. Doing nothing increases it slowly, programming increases it faster. Sleep decreases it. Also if you are programming while really sleepy, the chance of making mistakes becomes higher.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4575405685863611355?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4575405685863611355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4575405685863611355'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/isometric-progress-4.html' title='Isometric progress #4'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6767143445921548280</id><published>2011-02-28T14:22:00.002+09:00</published><updated>2011-02-28T14:24:08.581+09:00</updated><title type='text'>Isometric progress #3</title><content type='html'>&lt;img src="http://i.imgur.com/zHXrY.png" style="width:500px;"/&gt;&lt;br /&gt;&lt;br /&gt;The engine itself is still pretty buggy and I'm missing a lot of tiles, but it's now possible to walk (ok, slide) to the computer and start writing code. Time passes and the lines of code written increase while sitting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6767143445921548280?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6767143445921548280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6767143445921548280'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/isometric-progress-3.html' title='Isometric progress #3'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-468311924483000182</id><published>2011-02-28T07:20:00.008+09:00</published><updated>2011-03-01T02:43:00.816+09:00</updated><title type='text'>Minimum viable Jones</title><content type='html'>One of my favorite games is Jones in the Fast Lane. It's a life simulation about work, education and money. There's a variety of interesting decisions you can make in the game, such as is it better in the long run to eat at McDonald's every day, or should I buy a fridge and shop at the supermarket instead? There are 13 places in the game that players can visit, each with important functions. Or how important are they really?&lt;br /&gt;&lt;br /&gt;I took another look at the game, this time with this design question in mind: how much could you take away from the game, while still allowing for some gameplay to happen?&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/8IKUO.png" style="width:500px;" alt="Jones in the Fast Lane"/&gt;&lt;br /&gt;&lt;br /&gt;Playing it again while trying to avoid doing anything except bare necessities, the minimal gameplay experience is:&lt;br /&gt;&lt;br /&gt;- Wake up at house.&lt;br /&gt;- Go to employment office to get a job at hamburger place.&lt;br /&gt;- Go to hamburger place. Click on "work" until run out of time. Eat.&lt;br /&gt;- Sometimes go to employment office to check if I qualify for the next better job yet.&lt;br /&gt;- Repeat until boredom.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/XDH64.png"/&gt;&lt;br /&gt;&lt;br /&gt;So out of 13 places, only 3 are actually necessary for at least 5-10 minutes of gameplay. &lt;br /&gt;&lt;br /&gt;This gameplay can then be extended by adding requirements like having certain type of clothing before being allowed to work at the next job level, which then introduces the clothes shop into the game. In this way elements could be gradually added to extend the time before player gets bored.&lt;br /&gt;&lt;br /&gt;I believe adding things gradually is the path for sustaining motivation while building a game. Doing all of those 13 buildings at once would be demotivating, and I imagine also more difficult to balance. &lt;br /&gt;&lt;br /&gt;&lt;!--It would be extremely motivational to have a minimal game like this, with an influx of people trying it out and a nice graph that would show the average minutes to boredom achieved. Perhaps throw up a minimal version on a webpage, spend $5 / day buying clicks from StumbleUpon and then look at the "average time on site" graph on Google Analytics.--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-468311924483000182?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/468311924483000182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/468311924483000182'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/minimum-viable-jones.html' title='Minimum viable Jones'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-3053367918274147450</id><published>2011-02-28T06:26:00.003+09:00</published><updated>2011-02-28T06:30:10.613+09:00</updated><title type='text'>Isometric progress #2</title><content type='html'>&lt;img src="http://i.imgur.com/oX1xB.png"/&gt;&lt;br /&gt;&lt;br /&gt;Been adding more tiles.  Realized I need layers to avoid having to create every combination of floor + things on the floor. Putting off coding them until I have some idea what I'm really going to use this stuff for. &lt;br /&gt;&lt;br /&gt;Joined #gamedev on freenode, started reading &lt;a href="http://www.reddit.com/r/gamedev"&gt;r/gamedev&lt;/a&gt; instead of my usual Hacker News sometimes. Noticed many people seem to make a tile engine but never progress anywhere after that. This alerted me to the need of adding some gameplay asap.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-3053367918274147450?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3053367918274147450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3053367918274147450'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/isometric-progress-2.html' title='Isometric progress #2'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-879902219801438958</id><published>2011-02-26T17:53:00.004+09:00</published><updated>2011-02-26T19:15:24.304+09:00</updated><title type='text'>Isometric progress</title><content type='html'>&lt;img src="http://i.imgur.com/6eCFE.png"/&gt;&lt;br /&gt;&lt;br /&gt;Scrolling works, there's sprites and tiles can be set with mouse. Latest breakthrough is that now pathfinding works. Just simple breadth-first search, but seems to be fast enough for small maps.&lt;br /&gt;&lt;br /&gt;Had a graphics-related realization that I had been unconsciously holding the belief that scales have to be accurate. My grass looks like noise because I figured that's how big the blades of grass really are relative to my characters. But when looking at other games, I noticed that the graphics is more symbolical. You can show huuuge blades of grass if that lets you show more clearly that yes, this is grass. Screenshot from the game Sunday Lawn from Donut Games:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/umP18.png"/&gt;&lt;br /&gt;&lt;br /&gt;Some blades of grass here are as big as the character's leg, yet it looks fine. I think I'll try to change my grass to something more similar to this game, with individually visible blades so that I can show the direction of the light in them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-879902219801438958?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/879902219801438958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/879902219801438958'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/isometric-progress.html' title='Isometric progress'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-8641988286458693720</id><published>2011-02-25T02:59:00.005+09:00</published><updated>2011-02-25T03:06:16.308+09:00</updated><title type='text'>Isometric sorting flaw</title><content type='html'>I just realized there's a flaw in the way I was attempting to sort display objects in my isometric code. If the graphics of the tile is a thin wall to one side of the tile for example, then it's possible to walk so that it appears that the character is in front of the "wall", instead of behind.&lt;br /&gt;&lt;br /&gt;This is because the tile graphics is just graphics to the engine. It doesn't understand that it implies some geometry to the viewer. &lt;br /&gt;&lt;br /&gt;Works when wall-graphic tile is in (0, 1) and player is in tile (1, 1).&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/MpN2v.png" style="width:500px;"/&gt;&lt;br /&gt;&lt;br /&gt;Fails when player is inside same tile (0, 1) and base of player is lower, so assumed nearer and sorted "wrong" (although depending on the graphics it could be right, for example if it's a picture of a tree instead of a wall).&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/ohY1H.png" style="width:500px;"/&gt;&lt;br /&gt;&lt;br /&gt;I don't have a solution yet. More discussion about this issue &lt;a href="http://board.flashkit.com/board/showthread.php?t=807843"&gt;on flashkit forums&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-8641988286458693720?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8641988286458693720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8641988286458693720'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/isometric-sorting-flaw.html' title='Isometric sorting flaw'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-7980069163493334250</id><published>2011-02-24T13:06:00.021+09:00</published><updated>2011-02-24T20:19:16.623+09:00</updated><title type='text'>Generating leather procedurally</title><content type='html'>Subdued textures are all the rage now in app visual design. I've been making mockups for a simple financial app. To indicate wealth, I figured a leather texture would be suitable. Leather is expensive, and also associated with money because of wallets. Not having much luck in making good use of any leather textures in my screen design, I started getting interested in the material itself.&lt;br /&gt;&lt;br /&gt;What would it take to generate it with code? So there are some kind of cells in there, competing against each other for growth space. What would the algorithm be like for this? First come up with "birth points" for the cells. Here's my initial javascript simulation of it. Pick a random point. If no cell nearby, put one there until no more space is left. After the positions have been picked, adding a bit of randomness can lead to more interesting shapes later.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/iWO1H.png"/&gt;&lt;br /&gt;&lt;br /&gt;Each cell controls all the pixels nearest to it.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/bz6Hk.png"/&gt;&lt;br /&gt;&lt;br /&gt;To emphasize the borders, for each pixel I checked about a hundred random nearby pixels and saw how much competition there was around that area. The more competition the darker the pixel. Unintentionally I got subpixel-accuracy rendering too, since this is a stochastic sampling method. The result is a greyscale picture I can use as a height map for the cells.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/9WRCm.png" alt="procedural leather heightmap"/&gt;&lt;br /&gt;&lt;br /&gt;Next I opened the javascript-generated height map in Gimp. To make the top of the cells rounded, I made a copy of the depth map and did a gaussian blur on it, then grain extracted it from the height map. I used emboss and a gradient to shine a light on it, then adjusted the hue / saturation / lightness to get it to appear more leather colored. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/meWXg.png" alt="leather texture"/&gt;&lt;br /&gt;&lt;br /&gt;That's my version of leather. While researching about this, I came across an interesting Wikipedia entry on &lt;a href="http://en.wikipedia.org/wiki/Tanned#Ancient_methods"&gt;how leather was tanned in ancient times&lt;/a&gt; (it involves urine, feces and brains). I also ran across a cool article about how this cell-style procedure can be used for &lt;a href="http://natewm.com/blog/2009/04/26/procedural-adventure-map-generation/"/&gt;procedural computer game map generation&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-7980069163493334250?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7980069163493334250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7980069163493334250'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/foobar.html' title='Generating leather procedurally'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-5184786824124405836</id><published>2011-02-23T10:55:00.006+09:00</published><updated>2011-02-23T15:02:59.928+09:00</updated><title type='text'>Tokyo Subway Map</title><content type='html'>I simply wanted to know what the Tokyo subway map would look like if I look up the location of every station and connect them with lines. I used the same line colors to make comparison against an official map easy. &lt;br /&gt;&lt;br /&gt;Official map from Tokyo Bureau of Transportation:&lt;br /&gt;&lt;a href="http://i.imgur.com/MIc1t.gif"&gt;&lt;img src="http://i.imgur.com/MIc1t.gif" style="width:500px"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Real physical map of stations by yours truly:&lt;br /&gt;&lt;a href="http://i.imgur.com/Ulxz3.png"&gt;&lt;img src="http://i.imgur.com/Ulxz3.png" style="width:500px;"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've learned several things while doing this.&lt;br /&gt;&lt;br /&gt;- Physical map of the subway is almost nothing like the conceptual map published by Tokyo Bureau of Transportation. The conceptual map is more of a graph visualization than a map. It spaces out the stations so that they beautifully fit the space, while keeping out of areas that would be in the ocean or the imperial palace gardens.&lt;br /&gt;&lt;br /&gt;- In the conceptual map, angles only change in 45 degree steps. Direction of a line can even change from going north-south to west-east if that makes the stations fit better (look at the salmon colored line at the bottom).&lt;br /&gt;&lt;br /&gt;- Even individual subway lines aren't lines. Sometimes they have branches. Sometimes a branch connects back to the main line. So subway lines are actually graphs themselves.&lt;br /&gt;&lt;br /&gt;- In the conceptual map, non-underground stations (private railways / yamanote line / arakawa street car) are also displayed, but they get a tiny symbol. Second largest symbol goes to metro stations that only connect with one line. When multiple lines stop at the same station, they get a big box with stopping lines listed inside of it. &lt;br /&gt;&lt;br /&gt;- For the lines with 4 or more connections, the lines listing box can take more advanced blocky shapes if that makes it more easy to visualize. If there's an underground passage between nearby stations, that is shown as a connection between the boxes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-5184786824124405836?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5184786824124405836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5184786824124405836'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/tokyo-subway-map.html' title='Tokyo Subway Map'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-922180531210817779</id><published>2011-02-22T22:42:00.002+09:00</published><updated>2011-02-22T22:43:38.191+09:00</updated><title type='text'>Thief Tower</title><content type='html'>&lt;img src="http://i.imgur.com/ALv7z.png" style="width:400px;"/&gt;&lt;br /&gt;&lt;br /&gt;I was making a social platformer game called "thief tower" last october. Somehow I abandoned it, even though it seems pretty promising. I should figure out how this game could work and continue on it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-922180531210817779?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/922180531210817779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/922180531210817779'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/thief-tower.html' title='Thief Tower'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-2946836054065112123</id><published>2011-02-21T16:33:00.012+09:00</published><updated>2011-02-21T19:06:05.808+09:00</updated><title type='text'>Farm mouse</title><content type='html'>Now that I can calculate which tile the mouse is moving over, I'd like to think a bit about how mouse interaction in general should work on the tile area. I like looking at Farmville as an example, because it shows what is "good enough" according to a hundred million people.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/7qx4m.png"/&gt;&lt;br /&gt;&lt;br /&gt;I can see that the mouse is used at least in these ways on the area:&lt;br /&gt;&lt;br /&gt;- Buttons overlaid on the tile area can be clicked and take precedence. The buttons can be any graphics, not just rectangular areas.&lt;br /&gt;&lt;br /&gt;- Tiles can be clicked and have tile-specific behavior. However in FV the graphics of the tile define the clickable area, not the base of the tile. This means that if a high structure is in front of a back tile, that back tile cannot be clicked at all. Somehow in practice this doesn't seem to happen though, I suppose no tiles are that high.&lt;br /&gt;&lt;br /&gt;- Clicking on a tile that has no specific behavior causes the character to move there. Movement seems to be happen in world space instead of tile space. The character moves towards the clicked spot in a bit of a random stagger, somehow still managing to avoid walking through buildings. There are such few buildings in the game that instead of pathfinding, perhaps being on top a building simply pushes the character away from it.&lt;br /&gt;&lt;br /&gt;- Moving characters can be clicked too.&lt;br /&gt;&lt;br /&gt;- Level can be dragged.&lt;br /&gt;&lt;br /&gt;- Mouse cursor can change to indicate what kind of action clicking would do. In javascript this can be done by setting style.cursor.&lt;br /&gt;&lt;br /&gt;There's also zooming, which I haven't thought about at all yet.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://localhost:8890/iso/2/iso.js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-2946836054065112123?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2946836054065112123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2946836054065112123'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/looking-at-farmville-for-tile-area.html' title='Farm mouse'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-2502302922817452783</id><published>2011-02-21T03:31:00.008+09:00</published><updated>2011-02-21T16:33:42.392+09:00</updated><title type='text'>Isometric math</title><content type='html'>I have some basic code working that draws an 8x8 isometric area with no support for anything yet, except embedding. Here, I'm attempting to embed it below:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.bemmu.com/iso/1/iso.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;I ended up having three coordinate spaces. One is the world space, which starts at (0,0) and grows like usual, woX increases 1 pixel to the right, woY increases 1 pixel down. Then I have a "window space", which is like world space except it takes scrolling into account. Then there's tile space which also starts at (0,0), I'm calling the basis U and V, which hop from one tile to the next.&lt;br /&gt;&lt;br /&gt;All I had to do so far was to transform between these spaces and figure out how to set the window transformation so that the tile area would be centered.&lt;br /&gt;&lt;br /&gt;I still feel unhappy about how to store the tiles. I don't want to specify the center point and extents for each tile by hand, but how else can I cut them out from a sprite sheet?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-2502302922817452783?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2502302922817452783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2502302922817452783'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/isometric-math.html' title='Isometric math'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-2552371895538410344</id><published>2011-02-18T16:47:00.013+09:00</published><updated>2011-02-21T03:30:17.275+09:00</updated><title type='text'>Isometric thoughts</title><content type='html'>Next I'd like to accomplish a small test where the grid of isometric tiles is shown and mousing over a tile causes it to highlight.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/E9mHl.png"/&gt;&lt;br /&gt;&lt;br /&gt;I'd like to create a kind of component that would be easy to continue from in future tests. For language I'll be going with Javascript, as for me it has the fastest cycle between writing some code and seeing if it works or not. It should be totally trivial to include an isometric field of tiles in a project, otherwise I wouldn't use it. To get an isometric hello world, I should be able to copy some piece of code, similar to copying AdSense ad codes and it should just work with reasonable defaults.&lt;br /&gt;&lt;br /&gt;The code to copy should be something like &amp;lt;script src="http://www.example.com/iso/1/iso.js"&gt;&amp;lt;/script&gt;. Putting this on the page with nothing else would magically create an isometric field right there. That would also be convenient for demonstrating things here.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.bemmu.com/iso/1/iso.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;What kind of parameters would an isometric field need? At least some sort of description of how big each tile is. The ratio of the size is always 2:1 in my perspective, so just giving the width of the diamond should suffice. Then it should know where the graphics for the tiles are. Maybe this could be given implicitly by having the name of the graphics file be part of the name of a tile, like "car_4" would mean the fourth tile in the file "car.png". There might be big differences in the size of tiles though, so unsure how to know where they are in the file.&lt;br /&gt;&lt;br /&gt;Size of the playing field and initial position of the window to the playing field are important too. Maybe assume 8x8 like a chess board and have the initial window be such that it would show that board reasonably.&lt;br /&gt;&lt;br /&gt;Since there is "screen space" and "tile space", there will be two coordinate systems.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/SoCAx.png"/&gt;&lt;br /&gt;&lt;br /&gt;Screen space is the usual. Basis is x=(1, 0), y=(0, 1). In tile space it will be u=(width_of_tile/2, height_of_tile/2), v=(-width_of_tile/2, height_of_tile/2). To know which tile the mouse is over will involve first translating the mouse position from the current scroll position so that it's in the world position, then a change of basis from screen space to tile space.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/892811/drawing-isometric-game-worlds"&gt;StackOverflow had a pretty nice QA about this too&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-2552371895538410344?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2552371895538410344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2552371895538410344'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/how-to-make-isometric-game-engine-4.html' title='Isometric thoughts'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4523631333829493907</id><published>2011-02-17T17:44:00.005+09:00</published><updated>2011-02-18T15:37:36.157+09:00</updated><title type='text'>How to Make an Isometric Game Engine #3</title><content type='html'>Previously on "how to make an isometric game engine".  Confusion ensued as guy floated over some shrubberies, instead of being between the bushes as laws of physics demand. And now, the conclusion. To that one problem.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/UtCJe.png"/&gt;&lt;br /&gt;&lt;br /&gt;Think about what the correct drawing order should be. I claimed before that it is to draw each row, starting from the back coming to the front, in the order as indicated in the picture below.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/jqaW2.png"/&gt;&lt;br /&gt;&lt;br /&gt;That does happen to draw the tiles in the correct order in the case of this tile engine, but generally what should happen is that things in the back get drawn before things in the front. And depth here depends on how high the tile appears on the screen. The red block is the highest, so it should be drawn first. Next are the yellow and green tiles. The violet block is lowest, so it is drawn last and appears in front of the others.&lt;br /&gt;&lt;br /&gt;But wait a second. The yellow and green tiles were equally high. Doesn't that mean that we could actually draw them in either order? Yes, the opposite order works just the same:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/BP1YH.png"/&gt;&lt;br /&gt;&lt;br /&gt;This works for the movable characters too. We can put the guy and the tiles in the same list of things to draw on screen, then sort that list such that the highest item is drawn first, then proceed to draw them all. This way the drawing order will be correct. One exception is that if characters float or jump, that height should be added after sorting to maintain correct order.&lt;br /&gt;&lt;br /&gt;When it is time to draw things, the difference between a tile and other graphical objects no longer matters. After the tiles have been moved from the tile array to the sorted display list, they are just the same. For the game logic it might still be convenient to have the array though, as it can be necessary to be aware of any special meaning of the tile the player is over, such as is walking through the tile possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4523631333829493907?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4523631333829493907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4523631333829493907'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/how-to-make-isometric-game-engine-3.html' title='How to Make an Isometric Game Engine #3'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4386903202188133883</id><published>2011-02-17T14:41:00.003+09:00</published><updated>2011-02-17T17:41:34.971+09:00</updated><title type='text'>How to Make an Isometric Game Engine #2</title><content type='html'>Continuing from my last post, I am now going to ruin everything. Last time I said a simple 2D array would suffice for representing an isometric level, and things would appear correctly by just drawing them in the order they are in the array. For some games that might be ok, but in most cases it isn't enough.&lt;br /&gt;&lt;br /&gt;Suppose you have a character that can smoothly walk from one cell to another.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/eJQHU.png"/&gt;&lt;br /&gt;&lt;br /&gt;This naughty red shirt isn't in his tile! Well, no problem you think, I'll just have the mobile characters separate from the underlying tiles. First draw tiles, then draw characters. Which works great when the floor is totally flat, but when you start having tiles that are a bit higher, like these bushes here, this happens:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/QbG4w.png"/&gt; &lt;img src="http://i.imgur.com/UtCJe.png"/&gt;&lt;br /&gt;&lt;br /&gt;The character should actually be drawn between the tiles, but now he seems to be floating in air. Your first thought might be to figure out which tile the character is in and draw him after right after that tile. The problem with that is that the drawing order could still be different if he is slightly behind the tree.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/5oLz0.png"/&gt; &lt;img src="http://i.imgur.com/aE1hn.png"/&gt;&lt;br /&gt;&lt;br /&gt;One possible solution to this in the next post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4386903202188133883?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4386903202188133883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4386903202188133883'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/isometric-game-engine-considerations-2.html' title='How to Make an Isometric Game Engine #2'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-1307594612058685477</id><published>2011-02-17T13:02:00.006+09:00</published><updated>2011-02-18T15:54:31.988+09:00</updated><title type='text'>How to Make an Isometric Game Engine #1</title><content type='html'>What does Civilization 3 have in common with Farmville? For one, they are both isometric games. Turns out many popular games use this style of graphics. Unlike perspective graphics with a vanishing point, in isometric games the world consists of isometric tiles which are laid evenly to build game levels.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/z83kd.png"/&gt;&lt;br /&gt;&lt;br /&gt;It looks very simple. First of all, how would you represent such a level? That's easy you say, just have a two dimensional array of values. Each value represents what kind of tile there is in that space. Just like in a 2D tile-based game seen straight from above, X coordinate could increase to the right and Y coordinate down, except at a slight tilt.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/lS9Ta.png"/&gt;&lt;br /&gt;&lt;br /&gt;This is not the only possible coordinate system of course, but this way the tiles can be drawn in the traditional loop of increasing X and Y, and still occlude each other correctly. That's it then? All the complexities of an isometric engine solved. Not quite.&lt;br /&gt;&lt;br /&gt;To be continued...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-1307594612058685477?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1307594612058685477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1307594612058685477'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/isometric-game-engine-considerations.html' title='How to Make an Isometric Game Engine #1'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-7880137302610270893</id><published>2011-02-17T05:56:00.004+09:00</published><updated>2011-02-17T06:14:02.050+09:00</updated><title type='text'>Good morning</title><content type='html'>Woken 4am by a dream; iOS app devs stalking in the night with flashlights to discover each other's app development secrets. Munched on a peanut butter sandwich watching Dragon's Den. Morning ideas. There don't seem to be any good cave flying games like Auts / KOPS for iOS even though it seems suitable. Walked to convenience store for more coffee. Idea on the way. It's difficult to get backlinks for niche blogs. Maybe a sort of link trading scheme could work where blogs could get points for introducing other blogs. Maybe spin it as a social network for blogs, where your blog can friend another one. Sort of formalizing what blogrolls already are. Probably wouldn't work. Finally waking up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-7880137302610270893?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7880137302610270893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7880137302610270893'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/good-morning.html' title='Good morning'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4698924307747292162</id><published>2011-02-14T23:53:00.005+09:00</published><updated>2011-02-16T14:16:17.047+09:00</updated><title type='text'>Slow progress</title><content type='html'>Low point. Writing this to gather some energy again to make progress. I've been reading my own past blogposts, re-read &lt;a href="http://bemmu.blogspot.com/2011/01/2011-income-goal.html"&gt;my post about my $100 / day goal&lt;/a&gt; and my fantasies of creating some sort of survival game. I've made some progress towards each, but nowhere near enough.&lt;br /&gt;&lt;br /&gt;On the game front, as you can see from some previous posts I made &lt;a href="http://bemmu.blogspot.com/2011/01/pixel-comic-4.html"&gt;some progress in learning how to make pixel art&lt;/a&gt;. It's not that great, but to me it seems like acceptable art as long as the gameplay itself is interesting. At least it could serve as a placeholder until in a later version it could be replaced by something made by someone more focused in creating art. Re-read my &lt;a href="http://bemmu.blogspot.com/2010/11/what-to-make-next.html"&gt;post about what type of game I'd like to create&lt;/a&gt;. Very vague and about a few lightyears away from being a real concept of anything, but I still agree with myself that the direction / general themes I describe are still interesting to me.&lt;br /&gt;&lt;br /&gt;In the income side I'm currently doing something like this:&lt;br /&gt;&lt;br /&gt; $0.25 / day total from 2 paid iOS apps&lt;br /&gt; $0.25 / day from 1 ad-based iOS app&lt;br /&gt; $0.33 / day from Finnish-language guide to &lt;a href="www.bemmu.com/tag/Tokio"&gt;Tokio&lt;/a&gt;&lt;br /&gt; $1.70 / day from &lt;a href="http://www.heartbooth.com"&gt;HeartBooth&lt;/a&gt; which I launched a week ago&lt;br /&gt; $1.00 / day from &lt;a href="http://www.coolestfriends.com"&gt;Coolest Friends&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; -----&lt;br /&gt; ~$3.53 / day&lt;br /&gt;&lt;br /&gt;My goal for 2011 is to reach $100 / day, so really far from that still.&lt;br /&gt;&lt;br /&gt;What should I do to progress? I think I need to find ways to take small steps, like releasing small games that would as a side-product generate art assets that I could then use in bigger projects. However I'm skeptical enough about the chances of making any revenue on really small game projects that it's preventing me from trying. I feel pulled towards releasing social sites / more everyday tools for iOS since it's easier to picture those making money. For example I recently had an idea about making a start-up equity investment simulator for start-up founders to see how their stake in their company would evolve as it goes through several rounds of funding. I could imagine such an app to sell some copies even if pretty expensive, but I'm not sure it would take me any further on the game side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4698924307747292162?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4698924307747292162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4698924307747292162'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/slow-progress.html' title='Slow progress'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-108293592900146924</id><published>2011-02-08T21:44:00.006+09:00</published><updated>2011-02-10T12:03:38.304+09:00</updated><title type='text'>HeartBooth</title><content type='html'>Monday morning I woke up at 2am, had an idea for a site and worked on it 20 hours straight. Just before going to sleep I released it. It's called &lt;a href="http://www.heartbooth.com"&gt;HeartBooth&lt;/a&gt; and allows you to make heart-shaped mosaics with your webcam.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/ls08Z.png" style="width:450px;"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-108293592900146924?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/108293592900146924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/108293592900146924'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/heartbooth.html' title='HeartBooth'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-695502512779181568</id><published>2011-02-04T18:34:00.001+09:00</published><updated>2011-02-04T18:36:45.101+09:00</updated><title type='text'>MetaExtension part 5</title><content type='html'>&lt;img src="http://i.imgur.com/x2c4q.png" alt="isometric shower"/&gt;&lt;br /&gt;&lt;br /&gt;Shower is a great time for uninterrupted thought. Today's shower thought was "Wait a minute, I have Facebook connect and through MetaExtension I can get access to peoples' list of installed extensions. Why not add an option to share the list with friends?"&lt;br /&gt;&lt;br /&gt;I don't think I ever made any money from my shower ideas though, probably just wasted water :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-695502512779181568?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/695502512779181568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/695502512779181568'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/metaextension-part-5.html' title='MetaExtension part 5'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-5857775773524838796</id><published>2011-02-04T15:03:00.003+09:00</published><updated>2011-02-04T15:14:58.000+09:00</updated><title type='text'>Mailprop #2</title><content type='html'>What happened to my Mailprop idea? The idea was to get businesses subscribed to paid newsletters that customers could use to request goods and services from them. So for example companies in the promotional products industry could subscribe, and then whenever a customer uses the Mailprop form to request a quote on for example a large order on t-shirts or a pens, it would be blasted out to all the subscribers, who could then contact the customer back if they want.&lt;br /&gt;&lt;br /&gt;Well, to see if the idea would work, I put it online and got some adwords to promote it to customers and businesses. I started with Finnish businesses in the promotional products industry. I kept the customer-side adwords up until I got one lead. Then I contacted several companies about the lead, each personally through handcrafted emails. It made me feel miserable to bother people with emails, I contacted 8 companies and managed to get the requested products to the customer, but was disappointed that I could only convince one person to subscribe to the newsletter.&lt;br /&gt;&lt;br /&gt;Through the adwords I managed to get two more subscribers, but then they dried up and I haven't gotten any since then. I'm not really willing to do email rounds again, since it made me feel pretty bad to bother people like that, even though it did bring valuable business to them and helped the customer too. One advice I got on Hacker News was to start a niche blog about the industry and find customers that way. Well, I tried it. I started a blog about the promotional products industry in Finnish (&lt;a href="http://www.yrityslahjat.com"&gt;Yrityslahjat&lt;/a&gt;) and wrote several blog posts for it. I did some simple research and spent about 12 hours writing pretty good quality posts and scheduled them to be published weekly. I have enough written to last until March.&lt;br /&gt;&lt;br /&gt;But again I was hit by the simple inability to just get anyone to know about the blog. It ranks for the finnish term for promotional products "yrityslahjat" on the second page in Google already, but since it's an industry with only a few players in a very small country, I'm just not getting any readers for it. With no readers obviously I can't convert any to subscribe to the mailing lists either. So this idea is on hold until I can find some non-annoying way to get more people using it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-5857775773524838796?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5857775773524838796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5857775773524838796'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/mailprop-2.html' title='Mailprop #2'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-299472715724636885</id><published>2011-02-01T18:31:00.001+09:00</published><updated>2011-02-01T18:33:09.421+09:00</updated><title type='text'>MetaExtension part 4</title><content type='html'>I managed to release the first version of MetaExtension before perfectionism got to me. &lt;a href="https://chrome.google.com/webstore/detail/opfiladnocnjpbbbinadghgmnaeljekp"&gt;install it from Chrome Store&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-299472715724636885?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/299472715724636885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/299472715724636885'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/02/metaextension-part-4.html' title='MetaExtension part 4'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-3065385806782952571</id><published>2011-01-27T18:45:00.003+09:00</published><updated>2011-01-27T18:46:32.857+09:00</updated><title type='text'>MetaExtension part 3</title><content type='html'>Had an idea to integrate the suggestion system with the chrome web store, so that you could suggest extensions for a host straight from the extension page. Turns out that you can't alter chrome store pages with chrome extensions. Possibly to prevent people from ... not sure what. Faking high ratings or something through their extension?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-3065385806782952571?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3065385806782952571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3065385806782952571'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/metaextension-part-3.html' title='MetaExtension part 3'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-1634592684485321300</id><published>2011-01-27T11:44:00.003+09:00</published><updated>2011-01-27T11:54:42.903+09:00</updated><title type='text'>MetaExtension part 2</title><content type='html'>I have coder's block about how to do the submission system for MetaExtension (a free extension for Chrome that shows a small icon in the address bar whenever there are relevant extensions available for the site you are visiting). I've listed several options, but none of them make me feel like aha this is it.&lt;br /&gt;&lt;br /&gt;My goals:&lt;br /&gt;- Good quality lists&lt;br /&gt;- Good coverage, at least some extensions for all popular sites&lt;br /&gt;- Efficient, not requiring hiring / spending own time&lt;br /&gt;&lt;br /&gt;Way 1:&lt;br /&gt;&lt;br /&gt; Wiki style. Anyone can just edit the list for a site.&lt;br /&gt; &gt; Someone could spam all the lists with their app.&lt;br /&gt;   - Well wikipedia has this same issue?&lt;br /&gt;   - Or could limit that one app can only appear in N lists.&lt;br /&gt; &gt; What if there isn't anything yet for a site? Maybe right-click menu could "edit this site" then.&lt;br /&gt; &gt; Could still have admins too, but their job would just be to look at changes.&lt;br /&gt;&lt;br /&gt; Quality: neutral&lt;br /&gt; Coverage: good&lt;br /&gt; Efficient: yes&lt;br /&gt;&lt;br /&gt;Way 2:&lt;br /&gt;&lt;br /&gt; Submit &amp; approve.&lt;br /&gt; &gt; There will be less submissions because you can't see the effect right away.&lt;br /&gt; &gt; Need admins to approve the submissions.&lt;br /&gt; &gt; There needs to be some interface for admins to rearrange the apps anyway.&lt;br /&gt;&lt;br /&gt; Quality: good&lt;br /&gt; Coverage: bad&lt;br /&gt; Efficient: no&lt;br /&gt;&lt;br /&gt;Way 3:&lt;br /&gt;&lt;br /&gt; Submit &amp; upvotes.&lt;br /&gt; &gt; Users could see extensions immediately.&lt;br /&gt; &gt; Everyone needs to have an account.&lt;br /&gt; &gt; Still need to protect against spammers upvoting their own stuff.&lt;br /&gt; &gt; Probably wouldn't be a critical mass of users for upvoting to have any point.&lt;br /&gt;&lt;br /&gt;- Popularity isn't necessarily the best way for ranking. Some app could be very relevant&lt;br /&gt;  and useful for a site, but not that popular. Some very very popular app could be then&lt;br /&gt;  only slightly relevant to the site and rank higher because of popularity.&lt;br /&gt;&lt;br /&gt; Quality: good&lt;br /&gt; Coverage: neutral&lt;br /&gt; Efficient: yes&lt;br /&gt;&lt;br /&gt;To avoid getting blocked by this issue, I've decided to make an initial list focusing on coverage myself for the top 1000 sites and then release the app with a very basic submission system and see what happens.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-1634592684485321300?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1634592684485321300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1634592684485321300'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/metaextension-part-2.html' title='MetaExtension part 2'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4717225536737163057</id><published>2011-01-25T15:52:00.002+09:00</published><updated>2011-01-25T15:59:34.626+09:00</updated><title type='text'>Random update</title><content type='html'>Still working on the Chrome extension. Like always, it turns out to be more work than I expected. The extension itself is just the tip of the iceberg, underneath lays the database that somehow needs to be maintained. The database will indicate which website is related to which extension. I can seed it myself, but need to get people actively curating the lists. There are thousands of extensions and apps, can't do it all by myself.&lt;br /&gt;&lt;br /&gt;Still getting basically no income from anywhere. I'm basically a hobo now, except I happen to have some savings. The three iPhone apps are bringing in about $1 / day total. Facebook apps are bringing in $0.05 / day. MySpace something like $3 / day. I think in the end of the month I'll make an income report and post it.&lt;br /&gt;&lt;br /&gt;I want to continue learning pixel art, but it's tough doing it without a good reason. I wasn't so happy with where the pixel art comic was going. The storyline seemed really dull, although I was pretty happy with the art itself. I should probably attempt to make some minimalistic game. What's the most minimal pixel art game I could make?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4717225536737163057?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4717225536737163057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4717225536737163057'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/random-update.html' title='Random update'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6962749900589753018</id><published>2011-01-20T16:36:00.005+09:00</published><updated>2011-01-20T17:21:33.643+09:00</updated><title type='text'>I heard you like Chrome extensions</title><content type='html'>I'm working on an extension that will show you which extensions to use on sites that you visit.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/vSy2C.png"/&gt;&lt;br /&gt;&lt;br /&gt;Currently not sure how to get a good quality database done. There are thousands of extensions. I'm scraping the Chrome extension site to get an initial list, but it looks like it will need some serious curating. Probably need to enlist some help on this one.&lt;br /&gt;&lt;br /&gt;On the mailprop project I've had some signups to the mailing list, but so far haven't pushed any posts to the list. Still trying to come up with a better way to get signups. It doesn't seem very scalable to go to industry events or contact industry members directly. As a test I started from the promotional products industry. Bought google adwords on related terms, trying to address people in that industry through those. It's not working, since I don't believe people in these industries actively search for these terms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6962749900589753018?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6962749900589753018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6962749900589753018'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/i-heard-you-like-chrome-extensions.html' title='I heard you like Chrome extensions'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6428062556864829730</id><published>2011-01-15T18:28:00.002+09:00</published><updated>2011-01-15T18:36:53.768+09:00</updated><title type='text'>Fleshing out a new idea</title><content type='html'>Searching online for an advertising agency and seeing a ton of adwords bought for different companies, I started thinking about what happens if a customer clicks on such an ad, but then discovers that this particular agency doesn't actually offer the services they need. Will that sales lead then be wasted? Instead would it maybe be better to capture the customer's need and broadcast it to several different companies, which could then buy that lead if they want.&lt;br /&gt;&lt;br /&gt;I know that is business as usual in the US, but I hadn't heard of anyone attempting the same in Finland (although later I found some). I quickly fleshed out my own idea in a currently Finnish-only service called &lt;a href="http://www.mailprop.com"&gt;Mailprop&lt;/a&gt; ("mail" as in e-mail, "prop" as in proposal / RFP). Instead of having everything happen on the site itself, I made it more e-mail based inspired by Jason L. Baptiste's posting on &lt;a href="http://jasonlbaptiste.com/commentary/email-newsletters-business/"&gt;email newsletters&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6428062556864829730?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6428062556864829730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6428062556864829730'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/fleshing-out-new-idea.html' title='Fleshing out a new idea'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-9213423875622519167</id><published>2011-01-13T16:58:00.005+09:00</published><updated>2011-01-13T17:06:27.917+09:00</updated><title type='text'>Your Japanese Name for iOS, part 26</title><content type='html'>Previously I wrote that I would attempt to tweak some features and then promote the app to users of the Facebook version. Well, I did that and it seems to have little effect. I'll get maybe ~500 users out of the promotion, very poor. I was hoping for something between 5000-10000 new installs from the promotion since I had ~700k users on the Facebook version.&lt;br /&gt;&lt;br /&gt;This is the message I sent:&lt;br /&gt;&lt;pre&gt;Still remember that app on Facebook that translated your name into&lt;br /&gt;Japanese characters? Well, it's now out for iPhone / iPod touch.&lt;br /&gt;If you have one of those devices, use this link to get it for free:&lt;br /&gt;        &lt;br /&gt;itms://itunes.com/apps/JapanName&lt;br /&gt;                &lt;br /&gt;Using the app you can turn your name into Japanese characters and&lt;br /&gt;even use it as your wallpaper on the device.&lt;br /&gt;                        &lt;br /&gt;Alternatively you can use the free Facebook version here:&lt;br /&gt;http://apps.facebook.com/youarecute/&lt;/pre&gt;&lt;br /&gt;I'm not sure if the click-through rate of this message was really bad or if delivery was just really bad. I can send email to users who have agreed to receive email from Japan Name on Facebook. Since most users signed up way back in the day when email was still checked by default, I assumed a large portion of them would have email enabled. Not sure if Facebook has made some changes since them to retroactively disable that option from older apps.&lt;br /&gt;&lt;br /&gt;Well, my plan called for abandoning this project if the new features and this promotion fail, so I suppose I'll have to think of something new now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-9213423875622519167?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/9213423875622519167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/9213423875622519167'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/your-japanese-name-for-ios-part-26.html' title='Your Japanese Name for iOS, part 26'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-1927474082676544800</id><published>2011-01-13T16:52:00.001+09:00</published><updated>2011-01-13T16:52:30.439+09:00</updated><title type='text'>Pixel comic #7</title><content type='html'>&lt;img src="http://www.bemmu.com/static/comic7.png" style="width:320px;"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-1927474082676544800?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1927474082676544800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1927474082676544800'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/pixel-comic-7.html' title='Pixel comic #7'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4624054594951722174</id><published>2011-01-10T14:24:00.001+09:00</published><updated>2011-01-10T14:25:31.076+09:00</updated><title type='text'>Pixel comic #6</title><content type='html'>&lt;img src="http://www.bemmu.com/static/comic6.png" style="width:320px;"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4624054594951722174?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4624054594951722174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4624054594951722174'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/pixel-comic-6.html' title='Pixel comic #6'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4584197201969963477</id><published>2011-01-09T08:04:00.002+09:00</published><updated>2011-01-09T08:06:34.790+09:00</updated><title type='text'>Your Japanese Name for iOS, part 25</title><content type='html'>Sent updated version 1.1 of &lt;a href="http://itunes.com/apps/JapanName"&gt;Japan Name&lt;/a&gt; to Apple. Updating was very painless, just had to increment version number in the info.plist file, create a new version in iTunes Connect and then use application loader to send the new version. The new version will get checked before approval though. New version is about 1/3 the size of the old one, which should increase downloads a bit. New features are using translation as wallpaper or sharing by email.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4584197201969963477?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4584197201969963477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4584197201969963477'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/your-japanese-name-for-ios-part-25.html' title='Your Japanese Name for iOS, part 25'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-5489731327058520090</id><published>2011-01-08T20:38:00.001+09:00</published><updated>2011-01-08T20:39:21.749+09:00</updated><title type='text'>Katakana Vid #2</title><content type='html'>&lt;a href="http://itunes.com/apps/KatakanaVid"&gt;KatakanaVid&lt;/a&gt;, the pocket katakana reference is now available in the app store. I'm pretty satisfied I got this little app done and submitted this quickly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-5489731327058520090?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5489731327058520090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5489731327058520090'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/katakana-vid-2.html' title='Katakana Vid #2'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-5250222354812149243</id><published>2011-01-07T13:12:00.003+09:00</published><updated>2011-01-07T13:15:55.698+09:00</updated><title type='text'>Your Japanese Name for iOS, part 24</title><content type='html'>Recoded the vector drawing routine to allow fitting characters more accurately. Now I can create a drawing that snugly fits any bounding box. Had to do some offset &amp; scaling math, did not enjoy. Now I can use this routine to create paths that can be then turned into images that can be attached to emails or saved as wallpaper. Still need to rasterize.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/lqjsT.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-5250222354812149243?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5250222354812149243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5250222354812149243'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/your-japanese-name-for-ios-part-24.html' title='Your Japanese Name for iOS, part 24'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6702424975499094313</id><published>2011-01-06T16:11:00.002+09:00</published><updated>2011-01-06T16:24:31.536+09:00</updated><title type='text'>Your Japanese Name for iOS, part 23</title><content type='html'>It seems income from ads for the app has settled around $0.30 / day. That's pretty disappointing, considering it seems to outrank other similar apps. The "fill rate" for the ads is only about 30%, so most of my inventory is wasted. If KatakanaVid gets accepted, I can advertise it with house ads and maybe get some value out of that blank 70%.&lt;br /&gt;&lt;br /&gt;Shouldn't waste too much time on the app, but there's still two things I should do with it. First I should add share by email. It probably won't go viral, but it's possible I can get a small boost to usage. Then after that's in place, I can use the Facebook version to promote the app and hopefully get a nice one-time boost.&lt;br /&gt;&lt;br /&gt;If those fail to have any impact, I'll abandon this app and work on something else.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6702424975499094313?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6702424975499094313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6702424975499094313'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/your-japanese-name-for-ios-part-23.html' title='Your Japanese Name for iOS, part 23'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4692570858555195513</id><published>2011-01-06T12:59:00.002+09:00</published><updated>2011-01-10T14:26:58.886+09:00</updated><title type='text'>Pixel comic #5</title><content type='html'>&lt;img src="http://www.bemmu.com/static/comic5.png" style="width:320px;"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bemmu.blogspot.com/2011/01/pixel-comic-6.html"&gt;next&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4692570858555195513?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4692570858555195513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4692570858555195513'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/pixel-comic-5.html' title='Pixel comic #5'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-986530944496803802</id><published>2011-01-06T09:42:00.001+09:00</published><updated>2011-01-06T13:00:30.333+09:00</updated><title type='text'>Pixel comic #4</title><content type='html'>&lt;img src="http://www.bemmu.com/static/comic4.png" style="width:320px;"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bemmu.blogspot.com/2011/01/pixel-comic-5.html"&gt;next&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-986530944496803802?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/986530944496803802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/986530944496803802'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/pixel-comic-4.html' title='Pixel comic #4'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4121183841058430093</id><published>2011-01-05T17:44:00.004+09:00</published><updated>2011-01-06T09:44:31.708+09:00</updated><title type='text'>Pixel comic #3</title><content type='html'>&lt;img src="http://www.bemmu.com/static/comic3.png" style="width:320px;"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bemmu.blogspot.com/2011/01/pixel-comic-4.html"&gt;next&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4121183841058430093?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4121183841058430093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4121183841058430093'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/pixel-comic-3_05.html' title='Pixel comic #3'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4500693528201618172</id><published>2011-01-05T09:03:00.004+09:00</published><updated>2011-01-05T16:16:58.713+09:00</updated><title type='text'>2011 income goal</title><content type='html'>My goal for 2011 is to have a variety of income sources that combine to make a somewhat predictable and stress-free $100 / day. For example:&lt;br /&gt;&lt;br /&gt;25% from a variety of iPhone apps, some paid, some ad-based&lt;br /&gt;25% from ad-based Android ports of those apps / other Android apps&lt;br /&gt;25% from ad-supported &lt;s&gt;informational&lt;/s&gt; sites on the open web&lt;br /&gt;25% from MySpace / Facebook with both ads and virtual currency&lt;br /&gt;&lt;br /&gt;Stuff currently bringing in some money:&lt;br /&gt;- Coolest Friends on MySpace&lt;br /&gt;- Japan Name on iOS&lt;br /&gt;- In-Between on iOS&lt;br /&gt;&lt;br /&gt;I'm still quite far from my goal, but it's the first week of the year. It will be a lot of work, but should be doable.&lt;br /&gt;&lt;br /&gt;Honestly from experience I know that there isn't really such a thing as "passive income". Things change and require updating. Sometimes you hit gold and get one thing making $1000 / day instead of a hundred things that combine to make $100 / day, and then of course you run with what you've got. But as a motivational tool, I think pursuing a variety of small things is a good psychological trick to get yourself working harder. And who knows, it might even be possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4500693528201618172?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4500693528201618172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4500693528201618172'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/2011-income-goal.html' title='2011 income goal'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-663467467646852233</id><published>2011-01-05T08:49:00.003+09:00</published><updated>2011-01-05T14:10:27.503+09:00</updated><title type='text'>Katakana Vid #1</title><content type='html'>I'm making an app so I can learn how to do video playback and how to use UITableView. One of the first things a new student of Japanese does is learning katakana characters. I have a video for each character that we shot a year ago. Those videos have been used on &lt;a href="http://apps.facebook.com/youarecute"&gt;Japan Name on Facebook&lt;/a&gt; and also in the &lt;a href="http://itunes.apple.com/hk/app/japan-name/id409981113?mt=8"&gt;Japan Name iPhone app&lt;/a&gt;. Now I'm going to use them the third time and bundle them into a simple app that lists each character and lets you view the videos for each. I imagine this might be used by some students as reference. I can probably charge a bit more for this, so I'll try the next tier of $1.99 on it. If it sells a copy a week, that would be fine.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; Submitted it to App Store today!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-663467467646852233?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/663467467646852233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/663467467646852233'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/katakana-vid-1.html' title='Katakana Vid #1'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-2396971243053236203</id><published>2011-01-04T14:38:00.004+09:00</published><updated>2011-01-04T14:47:39.316+09:00</updated><title type='text'>Pixel Forklift</title><content type='html'>&lt;img src="http://i.imgur.com/Gevwt.png"/&gt;&lt;br /&gt;&lt;br /&gt;How to make pixel art? Just use unreasonable amounts of time.&lt;br /&gt;&lt;br /&gt;For comedy value, below is the first version I did with no reference material. Picture of the world in my head is clearly lacking.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/unSpS.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-2396971243053236203?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2396971243053236203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2396971243053236203'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2011/01/pixel-forklift.html' title='Pixel Forklift'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-8667122908335277277</id><published>2010-12-22T05:42:00.003+09:00</published><updated>2011-01-05T17:47:01.071+09:00</updated><title type='text'>Pixel comic #2</title><content type='html'>&lt;img src="http://www.bemmu.com/static/comic2.png" style="width:320px;"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bemmu.blogspot.com/2011/01/pixel-comic-3_05.html"&gt;next&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-8667122908335277277?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8667122908335277277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8667122908335277277'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/pixel-comic-2.html' title='Pixel comic #2'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6137027919981952353</id><published>2010-12-21T16:42:00.003+09:00</published><updated>2010-12-23T14:58:18.635+09:00</updated><title type='text'>Pixel comic</title><content type='html'>&lt;img src="http://www.bemmu.com/static/comic1.png" style="width:320px;"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bemmu.blogspot.com/2010/12/pixel-comic-2.html"/&gt;next&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6137027919981952353?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6137027919981952353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6137027919981952353'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/pixel-comic.html' title='Pixel comic'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4835876045358794771</id><published>2010-12-21T05:14:00.002+09:00</published><updated>2010-12-21T14:23:49.941+09:00</updated><title type='text'>Your Japanese Name for iOS, part 22</title><content type='html'>&lt;a href="http://itunes.apple.com/us/app/japan-name/id409981113?mt=8"&gt;Japan Name in App Store&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/rHkZ9.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4835876045358794771?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4835876045358794771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4835876045358794771'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-22.html' title='Your Japanese Name for iOS, part 22'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-2090722568667152466</id><published>2010-12-19T17:56:00.002+09:00</published><updated>2010-12-19T17:56:36.788+09:00</updated><title type='text'>Graphics</title><content type='html'>I'm getting tired of having no gfx. So I will learn some simple pixel artistry for myself, so I can use it for games.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-2090722568667152466?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2090722568667152466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2090722568667152466'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/graphics.html' title='Graphics'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-7633720760076228800</id><published>2010-12-16T12:21:00.005+09:00</published><updated>2010-12-21T16:47:56.536+09:00</updated><title type='text'>What to make next.</title><content type='html'>Now that I have &lt;a href="http://bit.ly/ftD0Gr"&gt;one test app&lt;/a&gt; in the App Store and have just submitted another one, I think I have a pretty good idea how much effort it is to make stuff and how to get it published. At my current skill level it's about two weeks of effort to get an initial prototype of something very simple working. I have to come up with something revenue-generating now. I have a few years of runway from apps I previously made on Facebook and MySpace, but time passes fast.&lt;br /&gt;&lt;br /&gt;In my imagination, devs often just create an app, put it in the app store and then feel sad because it isn't selling as well. Which isn't surprising because most people will never see the app unless they specifically search for it. My dream would be to have some niche app, priced pretty high say $5 - $20 per install, but paired with actual marketing. It could even be something that already exists in the app store, but with more effort put into spreading the word.&lt;br /&gt;&lt;br /&gt;To get a bit of a break from coding, I think from now till christmas I will try to find such a niche by trolling obscure websites and forums, try to discover what apps those people might need and see if there is a way to get them interested in buying it. I imagine the best forums would be relatively popular non-geeky forums about some very specific interest that isn't properly catered to yet. Although looking at the app store I'd be surprised if any topic didn't have at least a few apps already for it.&lt;br /&gt;&lt;br /&gt;I'm going to begin by reading the &lt;a href="http://rankings.big-boards.com/?p=all"&gt;big boards list&lt;/a&gt; for some ideas.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; This sucks. I'm not making an app about pro wrestling or ponies or whatever does-not-interest-me topic unless I can get some proof that people would buy it. Or should I ... PONY PRO WRESTLING CHAMPIONSHIP. No.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-7633720760076228800?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7633720760076228800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7633720760076228800'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/what-to-make-next.html' title='What to make next.'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-448786161121588179</id><published>2010-12-15T17:59:00.007+09:00</published><updated>2010-12-15T20:44:02.598+09:00</updated><title type='text'>Your Japanese Name for iOS, part 21</title><content type='html'>Motivation low point. My drawing routine ended up so confusing I couldn't manage to hack it to scale to a given size. This is required in order for "save as wallpaper" button to work. To make sure this project doesn't die at this point, I've decided to split the features even more. Instead of releasing version 0.5, I'll release a severely crippled version 0.25 just to get something out there.&lt;br /&gt;&lt;br /&gt;It will only translate the name. It won't have share buttons, or sounds or anything. It won't be too popular because of the lack of sharing, but surely having something released is better than nothing and might give a boost in motivation. Besides, if I manage to add the other features in before the app gets checked by Apple, then this will just get the app released faster. Or does it put my app in the back of the queue again if I change it?&lt;br /&gt;&lt;br /&gt;Had to rename app because "Your Name in Japanese" was too long to display in springboard (home screen).&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/YiSoF.png"/&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Alright, it seems to work. Tested with one tester and no crashes or major problems (although the dictionary should maybe be a bit larger). Calling this version 0.25 and submitting. Now what was all that provisioning stuff again that I need to do... it was explained &lt;a href="http://developer.apple.com/ios/manage/distribution/index.action"&gt;here&lt;/a&gt;. That also explained how to update the app (last section).&lt;br /&gt;&lt;br /&gt;Name of upload program is "application loader". Need to click "ready to upload" in upper right in itunes connect to get it to recognize the app.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-448786161121588179?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/448786161121588179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/448786161121588179'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-21.html' title='Your Japanese Name for iOS, part 21'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-7426913275411640909</id><published>2010-12-14T16:01:00.008+09:00</published><updated>2010-12-15T05:45:37.568+09:00</updated><title type='text'>Your Japanese Name for iOS, part 20</title><content type='html'>Project difficulty = how many times I have to blog about it. Each post represents one block of effort. No post =  no serious work that day. Name app reached 20 posts. So far Iworked about an equal amount as for Acey Deucey. In each post made less progress, some low days there. Could hardly bring myself to sit at the computer. Energy is back. Ready to give this the final push.&lt;br /&gt;&lt;br /&gt;Dreaming about doing a Chrome Extension as the next serious project instead of an iOS app, but we'll see how I feel later. Got one pretty nice extension idea that has some revenue model built in too, and it isn't affiliate links.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Today tried to make a view class that would know how to display one vertical line of katakana text. Plan: scale this view to get different sized UIImages out of it. But impossible, views can't be scaled (?). Instead have to scale when drawing. Attempt to quickly hack it. Positioning and scaling code is tricky. Must try again tomorrow with clearer mind. Bigger picture is to get an UIImage that could be saved to Photos, so the user can use it as wallpaper on iDevice.&lt;br /&gt;&lt;br /&gt;Instead set up iTunes Connect. Hoping could release this week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-7426913275411640909?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7426913275411640909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7426913275411640909'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-20.html' title='Your Japanese Name for iOS, part 20'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-8215633061355208895</id><published>2010-12-14T00:42:00.008+09:00</published><updated>2010-12-14T04:59:56.950+09:00</updated><title type='text'>Your Japanese Name for iOS, part 19</title><content type='html'>Entering a name now turns it into katakana!&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/UuArF.png"/&gt;&lt;br /&gt;&lt;br /&gt;I thought showing the characters vertically is just the same as horizontal, but actually it isn't. The vowel elongation character needs to be turned 90 degrees so it goes up-down instead of left-right. Also I'm missing proper consonant doubling character. Luckily it's the same as the "TSU" sound except a bit smaller, so I can just scale the TSU graphics I already have. Still need to test it more, should probably try to make it show every possible character to make sure it doesn't crash on anything and to see that characters are properly positioned. I'm guessing some of the smaller characters won't be displayed properly. But maybe I should work on some other part of this program now. Curious about how email will work.&lt;br /&gt;&lt;br /&gt;I use the chrome browser. It doesn't work well with iTunes Connect site which is used to look at these graphs, so I wrote a &lt;a href="https://chrome.google.com/webstore/detail/olcmimpceehliglonceahbidlfmajpoo"&gt;Chrome extension that fixes iTunes Connect sales graph&lt;/a&gt;. I'm checking my sales stats for &lt;a href="http://bit.ly/ftD0Gr"&gt;Acey Deucey&lt;/a&gt; every day. It's crazy, I thought sales would be zero, but instead I've been getting a sale or two every day. I can buy two delicious peanut butter sandwiches every week with this. Well, the government will eat at least half of the other sandwich. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/e5YU8.png"/&gt;&lt;br /&gt;&lt;br /&gt;Learned that it's possible to attach an image to an email as long as I save it as a file first. To get this file, I can &lt;a href="http://stackoverflow.com/questions/1112947/how-to-create-a-uiimage-from-the-current-graphics-context"&gt;turn the graphics context into an image&lt;/a&gt; and then perhaps do&lt;pre&gt;NSData *imageData = UIImagePNGRepresentation(image);&lt;/pre&gt;&lt;br /&gt;I'm not sure if I should though. Pros are that the user might be more likely to send an email if the image is nicely displayed already in the preview. Cons are that it will require a bit more bandwidth from the user, only a few kilobytes though. Probably the user will not perceive this to be much, but who knows. Unknown if the recipient will find it less or more appealing to click through if the email already has an image or not. It might not be even displayed by default. Hmm.. probably easier and more reliable to just provide a link to an image in the mail, rather than the image itself. That's how e-cards work. Actually I should probably look at the layout of the emails some e-card companies send to get an idea what works.&lt;br /&gt;&lt;br /&gt;Interesting, http://www.123greetings.com/ has an option for "Let me know when the receiver views this ecard". Maybe I should take this opportunity too to contact the sender again? And they just send a link to the site, so OK that's the best way to go. Where should the link lead though? Probably some page that shows the result and a link to the application. Most recipients probably wouldn't have an iPhone. Should probably indicate that the recipient doesn't need one.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;I just sent you "Jackie" in Japanese.&lt;br /&gt;&lt;br /&gt;You can view it by clicking here:&lt;br /&gt;http://...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Keep it simple!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-8215633061355208895?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8215633061355208895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8215633061355208895'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-19.html' title='Your Japanese Name for iOS, part 19'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-2107425417522814393</id><published>2010-12-13T11:50:00.005+09:00</published><updated>2010-12-13T12:02:03.606+09:00</updated><title type='text'>Your Japanese Name for iOS, part 18</title><content type='html'>The app will have two ways to convert latin characters into katakana characters. First one is a dictionary that I wrote with Nachi for &lt;a href="http://apps.facebook.com/youarecute"&gt;Your Japanese Name on Facebook&lt;/a&gt;. If a name isn't in the dictionary, then the second way is an algorithm. Actually the algorithm is almost as good as the dictionary is, because the conversion is quite straightforward.&lt;br /&gt;&lt;br /&gt;I wrote the algo originally in Python, where it was 6k in size. I just finished the Objective-C conversion and it turned out to be 8.5k. Luckily Cocoa had good unicode support, so it wasn't nearly as bad as I feared. Doing things like removing diacritics was as easy on both. Line with the difference was biggest was&lt;pre&gt;r = s[::-1].replace("l", "r") &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Which in Obj-C became&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;+ (NSString *)stringReversedFromString:(NSString *)s {&lt;br /&gt; NSMutableString *reversed = [NSMutableString stringWithString:@""];&lt;br /&gt; NSUInteger len = [s length];&lt;br /&gt; for (int i = len - 1; i &gt;= 0; i--) {&lt;br /&gt;  unichar ch = [s characterAtIndex:i];&lt;br /&gt;  NSString *charStr = [NSString stringWithFormat:@"%C", ch];&lt;br /&gt;  [reversed appendString:charStr];&lt;br /&gt; }&lt;br /&gt; return reversed;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;NSMutableString *r = [[self stringReversedFromString:s] mutableCopy];&lt;br /&gt;NSRange replaceRange = NSMakeRange(0, [r length]);&lt;br /&gt;[r replaceOccurrencesOfString:@"l" withString:@"r" options:NSCaseInsensitiveSearch range:replaceRange];&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-2107425417522814393?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2107425417522814393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2107425417522814393'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-18.html' title='Your Japanese Name for iOS, part 18'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-5505919068447095723</id><published>2010-12-11T04:35:00.004+09:00</published><updated>2010-12-11T22:03:30.204+09:00</updated><title type='text'>Acey Deucey part 18</title><content type='html'>Apple approved it!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bit.ly/ftD0Gr"&gt;Acey Deucey aka In-Between is up for sale!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I don't expect it to sell, but it feels great to finally have released something for an iDevice. I'll have much more confidence building more stuff, now that I know I can navigate the submission process.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/hAfBH.png"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; I made a sale! Who was it, someone from this blog perhaps? Thank you.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/5wyPv.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-5505919068447095723?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5505919068447095723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/5505919068447095723'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/acey-deucey-part-18.html' title='Acey Deucey part 18'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-1951518984098308376</id><published>2010-12-10T13:12:00.007+09:00</published><updated>2010-12-10T16:50:35.270+09:00</updated><title type='text'>Your Japanese Name for iOS, part 17</title><content type='html'>Getting really tired of this project, but I'm going to finish it like a boss. What upsets me is that this turned out to be more work than I expected, but still the upside is very small. Maybe I picked the wrong risk-reward ratio here. Well, at least I'm learning a lot.&lt;br /&gt;&lt;br /&gt;Inside my UISlider I'm adding a bunch of my own KatakanaView objects that render the SVGs I drew. Next I'll have to add support for variable sized characters. That means that the owner of the KatakanaView should decide the width, but KatakanaView decides the height and reports it back to the owner.&lt;br /&gt;&lt;br /&gt;... why is the background of my UIView black, even though I'm not drawing it so?&lt;br /&gt;&lt;br /&gt;Ah the backbuffer for a view gets initialized to zero by default. Have to set backgroundColor to UIColor clear and opaque to NO.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/AAmG2.png"/&gt;&lt;br /&gt;&lt;br /&gt;Basically it works, even calculates proper distance between views vertically. Now the characters are too small though. I can't just maximize each character horizontally, because they need to be consistent with each other. Might suffice to just experimentally increase size until it looks good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-1951518984098308376?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1951518984098308376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1951518984098308376'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-17.html' title='Your Japanese Name for iOS, part 17'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-7024980740115002380</id><published>2010-12-08T15:00:00.011+09:00</published><updated>2010-12-08T18:36:32.725+09:00</updated><title type='text'>Your Japanese Name for iOS, part 16</title><content type='html'>Today I hope to get at least AdMob working and display the SVG characters I made on screen. AdMob came with simple enough instructions, but after I included it in my project the app started crashing. I probably missed some step in their integration document or did something wrong, since their example works fine. Looking forward to their dashboard showing a non-zero amount for me.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/QXtHk.png"/&gt;&lt;br /&gt;I'm least looking forward to handling Twitter, Facebook and email. I suppose I'll have to recode some picture routines to run on my server too, as I might not be able to make the necessary attachments in the iOS program itself.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Got it working! Not sure why, but I had to connect the "Ad View Controller" in Interface Builder to an AdViewController IBOutlet in my own view controller, otherwise it would crash. Console said that the crash was because some method of a deallocated object was called. So does this connection somehow cause the AdViewController to get allocated? I thought everything I put into Interface Builder gets allocated and inited, otherwise how can all the text labels etc. work at all. I still really don't understand how IB and my code interact.&lt;br /&gt;&lt;br /&gt;Discovered a nice debugging tip called &lt;a href="http://cocoa-nut.de/?p=16"&gt;NSZombieEnabled&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Seems I have misunderstood something about SVG. Even though apart from some scaling the coordinate system in my SVG files should be the same as in my iOS graphics context, things come out all wrong. All coordinates should be positive, but when I look at my JSON file, I have some negative ones there too. Are SVG path coordinates actually relative to something rather than absolute? Ah, seems to be relative to previous coordinate in the path. Yes!&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/5CpKN.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-7024980740115002380?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7024980740115002380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7024980740115002380'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-16.html' title='Your Japanese Name for iOS, part 16'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6404360883393833006</id><published>2010-12-07T15:53:00.006+09:00</published><updated>2010-12-08T03:35:51.914+09:00</updated><title type='text'>Your Japanese Name for iOS, part 15</title><content type='html'>Did all the required icons during last night. It seems that mapping icon sizes to correct filenames is something I'll end up doing often. When making the icons naturally I want to name them "512x512.png" for example, but then when I add them to the project they need different names. So here's a list of commands, assumes you're currently in the art directory and want to move things to ../icons&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;mkdir ../icons 2&gt;/dev/null&lt;br /&gt;cp 29x29.png ../icons/Icon-Small.png&lt;br /&gt;cp 50x50.png ../icons/Icon-Small-50.png&lt;br /&gt;cp 57x57.png ../icons/Icon.png&lt;br /&gt;cp 58x58.png ../icons/Icon-Small@2x.png&lt;br /&gt;cp 72x72.png ../icons/Icon-72.png&lt;br /&gt;cp 114x114.png ../icons/Icon@2x.png&lt;br /&gt;cp 512x512.png ../icons&lt;br /&gt;ls -l ../icons&lt;br /&gt;echo "Now add all these ../icons to the project, except upload 512x512.png later by hand to itunes connect."&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Next I should think about how to make the characters appear. Next to each characters should be explanation of it in latin alphabet. There may be several characters, possibly dozen or more. Each one should appear as described in the SVG file. Maybe they could all be as wide as the screen is, and the white central area could be a UIScrollView. While they are appearing, the current character could be automatically scrolled to view. Then in the end it could scroll to the top. So all I need is an UIView subclass that knows how to display one character and I'll be able to stack several of those inside the scroll view.&lt;br /&gt;&lt;br /&gt;Got more distracted and &lt;a href="https://chrome.google.com/extensions/detail/dcalkamhaamcnhepbgcljocfkaffogef?hl=en"&gt;made another Chrome extension&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6404360883393833006?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6404360883393833006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6404360883393833006'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-15.html' title='Your Japanese Name for iOS, part 15'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-8687805137272811615</id><published>2010-12-06T10:20:00.004+09:00</published><updated>2010-12-07T02:13:18.522+09:00</updated><title type='text'>Your Japanese Name for iOS, part 14</title><content type='html'>Decided to split this app into two different versions. 0.5 won't guide the user in drawing their name, it will just display the result. 1.0 will include the drawing part. This way I can get something released while I'm still working on it, which should help motivate me complete this faster.&lt;br /&gt;&lt;br /&gt;I think I'll make 0.5 free and try out AdMob to get some experience with mobile ads.&lt;br /&gt;&lt;br /&gt;What should the main app screen look like? Tried mocking up a bit but everything looks horrible.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/Ef5q8.png"/&gt;&lt;br /&gt;&lt;br /&gt;That list is supposed to show some popular names. Is showing the complete list of available names necessary? It's way easier to pick things from a list than try to come up with names to try without any hints. Most convenient would be if I could access their address book and show some names from there. In any case there should be a free input field in case the user wants to input something that's not in the list.&lt;br /&gt;&lt;br /&gt;I already have an idea for the next app. I think it's an original idea, uses the platform well, is easier to make than Your Japanese Name and has wider appeal.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; New mockup for 0.5.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/MXaJj.png"/&gt;&lt;br /&gt;&lt;br /&gt;Progress is slow. Got a bit distracted and made a site for &lt;a href="http://www.micmicmic.com/"&gt;posting to Twitter using Chrome speech recognition&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-8687805137272811615?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8687805137272811615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8687805137272811615'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-14.html' title='Your Japanese Name for iOS, part 14'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-2807378697113425578</id><published>2010-12-05T18:10:00.002+09:00</published><updated>2010-12-05T18:23:00.871+09:00</updated><title type='text'>Your Japanese Name for iOS, part 13</title><content type='html'>&lt;b&gt;Description&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You don't need to know any Japanese to use this app. Your Japanese Name turns your name into Japanese characters and even teaches you how to write it step by step. Surprise a friend by sending them their name over email or impress your friends by posting your result on your Facebook wall.&lt;br /&gt;&lt;br /&gt;FEATURES&lt;br /&gt;- Your name displayed in Japanese "katakana" characters.&lt;br /&gt;- Step-by-step name drawing guide, learn the strokes to make the characters in your name.&lt;br /&gt;- Real translation done by a Japanese person. Our hand-made dictionary has tons of popular names.&lt;br /&gt;- Algorithmic translation as fallback in case you have an uncommon name, so you always get a result.&lt;br /&gt;- Post to Facebook.&lt;br /&gt;- Post by email.&lt;br /&gt;&lt;br /&gt;DEMO MOVIE available at http://youtube.com/blahblahblah&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-2807378697113425578?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2807378697113425578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2807378697113425578'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-13.html' title='Your Japanese Name for iOS, part 13'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6122719455418338454</id><published>2010-12-04T18:10:00.007+09:00</published><updated>2010-12-05T00:43:06.889+09:00</updated><title type='text'>Your Japanese Name for iOS, part 12</title><content type='html'>&lt;img src="http://i.imgur.com/ZZ8hG.png"&gt;&lt;br /&gt;&lt;br /&gt;Gimpstorming what the icon could look like. It's easy enough to make something that looks not-totally-like-crap when a picture is big enough, but try to do it in 52 x 52 pixels and it turns into mush.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/acp2Y.png"/&gt;&lt;br /&gt;&lt;br /&gt;With an image this tiny it needs to contain some easy to recognize outline of an object with it and contrast has to be really sharp. I feel that a calligraphy brush isn't really something that people are familiar enough with that it would be recognizable as an icon.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Agonized over the icon whole saturday evening. Made some mockups, looked at tons of other icons for inspiration, but nothing really clicked. Maybe it's best just to go with the simple one I'm already using on the Facebook app, it'll make it more consistent too, not to mention less work.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://profile.ak.fbcdn.net/hprofile-ak-snc4/hs1340.snc4/161916_17649962160_486549_n.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;I'm so envious of the beautiful icon &lt;a href="http://itunes.apple.com/us/app/zen-brush/id382200873?mt=8"&gt;Zen Brush&lt;/a&gt; has. The atmosphere of the colors, the mysteriously shaded bristles of the brush, the wooden texture of the handle... just perfect.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://a1.phobos.apple.com/us/r1000/028/Purple/b5/02/9b/mzl.kstxzrkz.320x480-75.jpg"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6122719455418338454?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6122719455418338454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6122719455418338454'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-12.html' title='Your Japanese Name for iOS, part 12'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-467346621625412193</id><published>2010-12-03T17:39:00.000+09:00</published><updated>2010-12-03T17:40:18.131+09:00</updated><title type='text'>Your Japanese Name for iOS, part 11</title><content type='html'>All katakana done in SVG.&lt;br /&gt;&lt;br /&gt;So much work and I'm not even halfway yet with this app -_-&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-467346621625412193?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/467346621625412193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/467346621625412193'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-11.html' title='Your Japanese Name for iOS, part 11'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6813550318190899605</id><published>2010-12-02T12:47:00.005+09:00</published><updated>2010-12-02T22:31:55.194+09:00</updated><title type='text'>Your Japanese Name for iOS, part 10</title><content type='html'>Morning. Now I know how to read data in with JSON, so it's time to extract that data from the SVG files. For this I'm going to use &lt;a href="http://docs.python.org/library/xml.dom.minidom.html"&gt;minidom&lt;/a&gt;, which conveniently is already included with Python.  Input is going to be a directory of SVG files, and output will be the stroke, segment and waypoint JSON that iOS will then later read in. Minidom lets you deal with XML just like from Javascript. You can use things like getElementById and getElementsByTagName. In this case I wanted to get all the positions of the SVG &lt;rect&gt; elements:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;dom = xml.dom.minidom.parse("some_svg_file.svg")&lt;br /&gt;coords = []&lt;br /&gt;for rect in dom.documentElement.getElementsByTagName("rect"):&lt;br /&gt; attr = rect.getAttribute&lt;br /&gt; coords.append([attr("x"), attr("y")])&lt;br /&gt;print coords&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With similar fiddling I was able to make a script that turns the whole directory into a single JSON file with all the info required to show the strokes, segments and waypoints. Next I need to complete drawing the remaining characters and then start working on reading this structure on iOS and showing the waypoints as circles.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Drawing these characters is a lot of work. 90% complete, tomorrow I'll have all 80 of them done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6813550318190899605?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6813550318190899605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6813550318190899605'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-10.html' title='Your Japanese Name for iOS, part 10'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-1917772503424166734</id><published>2010-12-01T15:30:00.012+09:00</published><updated>2010-12-02T03:32:08.166+09:00</updated><title type='text'>Your Japanese Name for iOS, part 9</title><content type='html'>Today I should try to get the vector art done for a few characters at least.&lt;br /&gt;&lt;br /&gt;Workflow:&lt;br /&gt;- open &lt;a href="http://svg-edit.googlecode.com/svn/branches/2.4/editor/svg-editor.html"&gt;SVG editor&lt;/a&gt;&lt;br /&gt;- run google app engine launcher to serve frames&lt;br /&gt;- use this SVG as skeleton:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;svg width="1280" height="960" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"&gt;&lt;br /&gt; &amp;lt;g&gt;&lt;br /&gt;  &amp;lt;image xlink:href="http://localhost:8896/static/A.png" id="svg_1" height="960" width="1280" y="0" x="0"/&gt;&lt;br /&gt; &amp;lt;/g&gt;&lt;br /&gt;&amp;lt;/svg&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;- change image to be the current image (go in alphabetical order)&lt;br /&gt;- trace segments in order (look at video if in doubt)&lt;br /&gt;- draw rectangles for each waypoint in order, consequent segments can share same waypoint&lt;br /&gt;- change color of rectangle when stroke changes&lt;br /&gt;- save svg as A.svg for example&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/v0PhM.png"&gt;&lt;br /&gt;&lt;br /&gt;Drew half of the characters as SVG. Time consuming, but not impossibly so. A few minutes per character. Read about the SVG format. Paths are very simple to understand. How will I render these on the phone? I could either tessellate to triangles beforehand, or alternatively draw full paths with Quartz 2D. Yep, there's CGPathMoveToPoint and CGPathAddLineToPoint, so no need to do triangles. What next?&lt;br /&gt;&lt;br /&gt;Next, to make some progress I should come up with a way to represent the data so I can easily access it from Objective C. Then, I should make a simple version where the waypoints for each stroke are shown and touching them correctly moves the user along.&lt;br /&gt;&lt;br /&gt;Given JSON file "katakana.json" which as a test contains just&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;{"test" : "yeah"}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This prints out "yeah":&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;- (void) jsonTest {&lt;br /&gt; SBJsonParser *parser = [SBJsonParser new];&lt;br /&gt; NSString *fullPath = [[NSBundle mainBundle] pathForResource:@"katakana" ofType:@"json"];&lt;br /&gt; NSString *jsonString = [NSString stringWithContentsOfFile:fullPath encoding:NSUTF8StringEncoding error:nil];&lt;br /&gt; NSDictionary *dict = [parser objectWithString:jsonString];&lt;br /&gt; if (dict) {&lt;br /&gt;  NSString *out = [dict objectForKey:@"test"];&lt;br /&gt;  NSLog(out);&lt;br /&gt; } else {&lt;br /&gt;  NSLog(@"Could not parse JSON.");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-1917772503424166734?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1917772503424166734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1917772503424166734'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/your-japanese-name-for-ios-part-9.html' title='Your Japanese Name for iOS, part 9'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-1068012297204154429</id><published>2010-12-01T14:12:00.003+09:00</published><updated>2010-12-01T14:31:07.735+09:00</updated><title type='text'>Acey Deucey part 17</title><content type='html'>"The status for the following app has changed to In Review."&lt;br /&gt;&lt;br /&gt;And then almost right after:&lt;br /&gt;&lt;br /&gt;"The Application Name on iTunes Connect is In-Between, while the name displayed when the app is installed is Acey Deucey."&lt;br /&gt;&lt;br /&gt;Also they included specific steps on how to fix this problem. Awesome! I was expecting outright rejection with some vague reason. Instead I got a chance to fix this while it's still in review instead of starting over. ... Went into Itunes Connect and actually this IS a rejection. Application state is now "rejected". Oh well. Changed the name and reuploaded binary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-1068012297204154429?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1068012297204154429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/1068012297204154429'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/12/acey-deucey-part-17.html' title='Acey Deucey part 17'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-3681101707040608282</id><published>2010-11-30T20:44:00.010+09:00</published><updated>2010-12-01T03:26:45.449+09:00</updated><title type='text'>Your Japanese Name for iOS, part 8</title><content type='html'>I suppose as some sort of balance to yesterday's activity, today I feel burned out. Even slow progress is some progress, so I should attempt to get at least some small thing done. So I'll attempt to get all the last frames of the movie files out today. Seems the simplest solution is just to get ALL the frames and discard everything except the last one. Which would be the same as just outputting them one after another overwriting the same file... I/O error. Okay, so get all and discard all but last.&lt;br /&gt;&lt;br /&gt;Done. This gets last frame of each m4v file in the "m4v" directory and puts it in the "out" directory.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import os, shutil&lt;br /&gt;TMPDIR = "blahfuck"&lt;br /&gt;OUTDIR = "out"&lt;br /&gt;for fn in os.listdir("m4v"):&lt;br /&gt; for del_fn in os.listdir(TMPDIR): os.unlink("%s/%s" % (TMPDIR, del_fn))&lt;br /&gt; os.system(r"ffmpeg -i m4v/" + fn + r" " + TMPDIR + r"/%d.png")&lt;br /&gt; last = sorted(map(lambda x:int(x.replace(".png", "")), os.listdir(TMPDIR)))[-1]&lt;br /&gt; outpath = "%s/%s" % (OUTDIR, fn.replace("m4v", "png"))&lt;br /&gt; shutil.copyfile("%s/%s.png" % (TMPDIR, last), outpath)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Idea of getting the characters through SVG seems like a good one, but I can't start doing that now. So what to do instead? Maybe learn about &lt;a href="http://github.com/facebook/facebook-ios-sdk"&gt;how to post to Facebook&lt;/a&gt;. Nice, this SDK seems very easy to integrate. Comes with a simple demo app that posts to facebook stream. Adding this to my project also got me a neat JSON library. I will enjoy it.&lt;br /&gt;&lt;br /&gt;Facebook login almost works, but do I really need it to post to the stream? Can't I just invoke the stream post dialog without this login hassle, I remember seeing it in some other app. But time to sleep now ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-3681101707040608282?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3681101707040608282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3681101707040608282'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/your-japanese-name-for-ios-part-8.html' title='Your Japanese Name for iOS, part 8'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-7095255411602400779</id><published>2010-11-29T16:15:00.014+09:00</published><updated>2010-11-29T20:20:39.469+09:00</updated><title type='text'>Your Japanese Name for iOS, part 7</title><content type='html'>Next I'll need to come up with a dataset of all the segments and waypoints. For reusability, it would probably be best to have a vector representation of each segment. Seems likely that such a dataset doesn't exist yet, easiest way to get one would be to just draw one in some vector editor that lets me display a raster image in the background for reference.&lt;br /&gt;&lt;br /&gt;Another option is just to make each segment in Gimp at retina display native resolution. It would be easier, but then porting this to some other resolution like to the iPad would be harder. Of course even for older iPhone I would need a half-res version, although for that I could just scale without redoing anything.&lt;br /&gt;&lt;br /&gt;Hmm.. I'm already a bit familiar with Blender. I could make the characters there and get out a triangle list. This solution appeals to me, because I get to play with Blender :-) What would the output look like? I would have one file for each segment. A file that tells where the waypoints are in each segment. Then a file that describes how these segments relate to each character. The most natural way to describe this would be in JSON, and luckily there seems to exist an actively developed &lt;a href="http://code.google.com/p/json-framework/"&gt;JSON library for Objective-C&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;segments = {&lt;br /&gt;    0 : { // each segment has integer ID&lt;br /&gt;        "tris" : [&lt;br /&gt;            [0, 2], [1, 2], [1, 3], // coordinates for one triangle &lt;br /&gt;            [1, 2], [1, 2], [2, 3],&lt;br /&gt;            [0, 2], [4, 2], [1, 3], // each segment would consist of several triangles&lt;br /&gt;            ...&lt;br /&gt;        ],&lt;br /&gt;        "waypoints" : [&lt;br /&gt;            [1,2], // exactly two waypoints per segment&lt;br /&gt;            [3,4]&lt;br /&gt;        ]&lt;br /&gt;    }, &lt;br /&gt;    ... more segments&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;characters = {&lt;br /&gt;    "ka" : [ // each character would consist of several segments laid over each other, order here is significant for drawing&lt;br /&gt;        {&lt;br /&gt;            "segment" : 0, // identifier of segment&lt;br /&gt;            "offset" : [1,2], // XY coordinates where the segment should appear&lt;br /&gt;        },&lt;br /&gt;        {&lt;br /&gt;            "segment" : 1,&lt;br /&gt;            "offset" : [2,3],&lt;br /&gt;        },&lt;br /&gt;        ... // each character consists of multiple segments&lt;br /&gt;    ],&lt;br /&gt;    "ki" : [ ... ],&lt;br /&gt;    ...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It would be pretty straightforward to write a Python script that generates these. Probably less straightforward dealing with Objective-C types when reading them in. Alternatively could make that Python script just generate Objective-C so the types would already be correct and access easier.&lt;br /&gt;&lt;br /&gt;Stuff I need:&lt;br /&gt;- Install Blender and get it to work with my keyboard or buy a new keyboard that has numeric keypad&lt;br /&gt;- Exporting triangles from Blender&lt;br /&gt;- Figure out a way to comfortably choose waypoints (repetitive task)&lt;br /&gt;- Also need some tool for composing characters from multiple segments&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/1YapL.png" style="margin:10px;float:left;"/&gt;&lt;br /&gt;Uhh am I about to embark on creating some vector drawing program here? x_x Just as a fun thought, if these tools were really good, could I somehow get this task crowdsourced for all Japanese characters? There are thousands of them.&lt;br /&gt;&lt;br /&gt;Came up with another option. Use SVG. There's an &lt;a href="http://svg-edit.googlecode.com/svn/branches/2.4/editor/svg-editor.html"&gt;SVG editor in Javascript&lt;/a&gt; already available. It even knows how to overlay vectors on top of an image. Ooh, it has text support. So I don't even need images as I can draw on top of unicode text. For each character in katakana, go to SVG-editor and create a 1280 x 960 image with the desired character at position 400, 800 in size 900. Draw each segment (note: not stroke, a segment) on top of the character. Use as many segments as seems necessary to capture the desired path. Then, place rectangles on top of the complete character to get waypoints. Place them in the order the character should be drawn in. Use different color for each segment's rectangles so that they can be associated with each other. Save SVG (copy &amp; paste) into a file like "a.svg".&lt;br /&gt;&lt;br /&gt;This should have all the info in it necessary for revealing the character as it is swiped by finger on the phone.&lt;br /&gt;&lt;br /&gt;Have to be more careful in the transitions between segments. I can see a gap between first two segments of A here.&lt;br /&gt;&lt;br /&gt;Realized something. I should definitely make these based on our calligraphy videos instead of on an existing font, because then the videos and the vector art would match exactly, making it possible to do some cool transitions between them in the future (for what purpose I'm not sure). Also it would clarify the issue on copyright, as I wouldn't be basing the art on any existing font.&lt;br /&gt;&lt;br /&gt;So I need the last frame of each of these videos in order to do this. Sounds like a job for ffmpeg.&lt;br /&gt;&lt;pre&gt;ffmpeg -vframes 1 -i frametest.m4v -f image2 output.png&lt;/pre&gt;&lt;br /&gt;This gets the first frame. But how to get the last one?&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/yY0Bl.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-7095255411602400779?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7095255411602400779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7095255411602400779'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/your-japanese-name-for-ios-part-7.html' title='Your Japanese Name for iOS, part 7'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6102177237082618811</id><published>2010-11-29T09:50:00.003+09:00</published><updated>2010-11-29T10:44:41.326+09:00</updated><title type='text'>Mega Jump</title><content type='html'>One of my favorite iPhone games is "Mega Jump". It really is a game made with this platform in mind. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/LXh0F.png" style="margin:10px;border:solid 2px black;float:left;"/&gt;In the game you control a character by tilting the phone from left to right. The character jumps higher and higher the more stuff it collects. I love the simplicity of the controls. Many games attempt to be like PC games and have dual virtual joysticks, but that doesn't really work well. In Mega Jump there is no need to touch the screen at all during the game. I love the graphics too. As you can see it has that "cel shaded" feel to it, solid colors with thick black borders.&lt;br /&gt;&lt;br /&gt;And particles!&lt;br /&gt;&lt;br /&gt;The game would be just fine as it is and pretty successful too I think, but what really sets it apart is how it entices the player to come back. You play it a few times, and just when you're about to get tired it unlocks something for you. You see, every time you play you get kind of experience points, and these unlock new levels, bonuses and characters. So when you return to the game, it will have something new in it to try, even though the gameplay itself is as simple as ever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6102177237082618811?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6102177237082618811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6102177237082618811'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/mega-jump.html' title='Mega Jump'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-8510836793235799002</id><published>2010-11-29T08:00:00.015+09:00</published><updated>2010-11-29T13:51:25.586+09:00</updated><title type='text'>Your Japanese Name for iOS, part 6</title><content type='html'>Got some good suggestions for playing audio. Looked at Finch and OpenAL. One thing in common seems to be that background loops are played with AVAudioPlayer. Apple's "oalTouch" example seems to be easiest for background music playback. It didn't loop though, but docs say it should be possible to get it to loop, so I'm hopeful. Also a bit optimistically I'm hoping that I could instantiate multiple AVAudioPlayers for each sound. None of the examples seems to be doing that, so maybe there's a reason why it doesn't work, but docs say it should.&lt;br /&gt;&lt;br /&gt;Got background music to play. Bought sound from iStockphoto. Converted from WAV to M4A through iTunes and customized a snippet from oalTouch example:&lt;br /&gt;&lt;code&gt;&lt;br /&gt; bgURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"koto" ofType:@"m4a"]];&lt;br /&gt; bgPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:bgURL error:nil];&lt;br /&gt; bgPlayer.numberOfLoops = -1;&lt;br /&gt; [bgPlayer play];&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;It really does seem to be a perfectly seamless loop. Listened for a few minutes and got tired of it already :-)&lt;br /&gt;&lt;br /&gt;Next I should see what happens when headphones are plugged / unplugged. In Mega Jump the music just continues playing. Apple guidelines say the music should stop, but I don't think that's suitable for me because there would be no way for playback to continue, just like there isn't in Mega Jump. Well, I suppose I could show a big pause button, but it seems like overkill.&lt;br /&gt;&lt;br /&gt;Great, seems the sound continues by default, so don't need to handle it at all.&lt;br /&gt;&lt;br /&gt;Next, how to fade in and out the sound of chimes when finger is moved around. Cool, found &lt;a href="http://stackoverflow.com/questions/1216581/avaudioplayer-fade-volume-out/1667535#1667535"&gt;fade out example code&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Works as advertised. Found a new case again. User puts finger down, drags, lifts finger up, drags at another point. Sound abruptly ending and new starting sounds painful. Instead should let chimes from old movement fade out while the new sound starts. I was wrong to think I only need 3 channels. Luckily AVAudioPlayer handles this transparently, so I just need to instantiate a new player each time the user puts their finger down. May cause problems if user taps a hundred times within a second. That would allocate a hundred players with all the sounds mixed together, will have to test to see if it's a problem.&lt;br /&gt;&lt;br /&gt;Now chimes overlap and fade out as I originally planned. And yes, tapping too fast turns out to be a problem. This device is slow enough that by mixing too much this naively I can apparently max out the CPU. Well, I'll just have to cancel the oldest sound if some maximum mixing amount is reached.&lt;br /&gt;&lt;br /&gt;Done. Next should start planning how to separate Japanese characters into drawable blocks. The structure is such that each word consists of several characters, each character consists of several strokes and each stroke consists of several segments. Each segment has a start and end waypoint that need to be touched in order for the segment to be completed.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/WKCxt.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-8510836793235799002?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8510836793235799002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8510836793235799002'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/your-japanese-name-for-ios-part-6.html' title='Your Japanese Name for iOS, part 6'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-8014375202364237634</id><published>2010-11-28T17:08:00.005+09:00</published><updated>2010-11-28T18:09:09.740+09:00</updated><title type='text'>Your Japanese Name for iOS, part 5</title><content type='html'>"I'd rather use a few days to make a simple mixer" &amp;lt;-- famous last words?&lt;br /&gt;&lt;br /&gt;There's some stuff I didn't consider.&lt;br /&gt;&lt;br /&gt;- If I have a big sound, it needs to be streamed from disk because there might not be enough memory to load it all in. I could try to make this easier by having a shorter loop.&lt;br /&gt;- Sound needs to stop if user plugs their headphones in / out or attaches their iThing to an external sound system ("audio route change").&lt;br /&gt;- Also need to stop playing if the user receives call / sms on iPhone.&lt;br /&gt;- What if the user closes the app in the middle (applicationWillResignActive). How to resume playing at correct pos? (maybe just restart sounds)&lt;br /&gt;- What if the user is already playing music on their iThing when they start the app? (AVAudioSession setCategory)&lt;br /&gt;- A lot of this example code is in C. I do know C, but had forgotten how long-winded it can get. Spending a long time staring at code pieces and realizing that oh, this snippet of several lines just gets one value from some structure. Compared to Python there are no exceptions, have to deal with handling memory, numbers can overflow.&lt;br /&gt;&lt;br /&gt;Back in the day I did manage to play sounds in DOS by loading sound files myself and streaming them to my SoundBlaster over DMA, so I should be able to handle this. Just gotten a bit comfy with modern conveniences and suddenly being thrown back into the jungle.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/4296004/most-convenient-way-to-play-sound-in-ios-games"&gt;Asking the HiveMind for advice&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-8014375202364237634?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8014375202364237634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8014375202364237634'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/your-japanese-name-for-ios-part-5.html' title='Your Japanese Name for iOS, part 5'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-8234073773814068196</id><published>2010-11-27T13:36:00.007+09:00</published><updated>2010-11-27T23:21:49.816+09:00</updated><title type='text'>Your Japanese Name for iOS, part 4</title><content type='html'>Today I probably won't have much time to work on this, but let's see if I can suitable fail / success / complete sounds on iStockPhoto.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Finding sounds is a lot of work!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.istockphoto.com/stock-audio-9237104-buddha-bell-version02.php"&gt;Character drawn correctly -sound&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;As background, one of the "koto loop" melodies from iStockPhoto. &lt;b&gt;Update:&lt;/b&gt; &lt;a href="http://www.istockphoto.com/stock-audio-12547906-japanese-koto-ambient-loop-7-soothing-mysterious.php"&gt;this one&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Maybe &lt;a href="http://www.istockphoto.com/stock-audio-8143320-huge-gong-sound.php"&gt;this one&lt;/a&gt; mixed in after all the characters have been drawn correctly and the final result is displayed &lt;a href="http://gimpology.com/submission/view/gold_text_effect/"&gt;in gold&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But what about failure sound? Or "finger touched down" sound. Actually what I'd really want for that is for &lt;a href="http://www.istockphoto.com/stock-audio-11032545-sfx-chimes-short-02.php"&gt;wind chimes&lt;/a&gt; to be played while the finger is progressing on the character. But when the finger is lifted up, the sound shouldn't abruptly stop. Instead it should fade out, maybe even echo a bit. This seems to call for some sound library. What was that famous one? Oh yeah, fmod. They were porting like crazy, let's see if they have an iOS version... Seems &lt;a href="http://www.fmod.org/index.php/sales"&gt;they do&lt;/a&gt;. But it's $500 &lt;u&gt;per product&lt;/u&gt;, out of my budget. I'd rather use a few days to make a simple mixer, I think there was some source code in some Apple example. &lt;a href="http://developer.apple.com/library/ios/#samplecode/MixerHost/Introduction/Intro.html"&gt;Yes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Whoa, feel a bit overwhelmed. Let's see what I really want to do here.&lt;br /&gt;&lt;br /&gt;Channel 1: Looping soundtrack, always full volume.&lt;br /&gt;Channel 2: Wind chimes, starts full, doesn't loop, fades out at any point.&lt;br /&gt;Channel 3: Buddha bell / gong / wrong. Never overlap, full volume, no loop.&lt;br /&gt;&lt;br /&gt;If I had the API of my dreams, what would it look like? First it would start like&lt;br /&gt;SoundSystem *sounds = [SoundSystem soundSystemWithLoop:@"koto.mp3"]; // start with koto ambience on channel 0&lt;br /&gt;[sounds play:@"chimes.mp3" channel:1 looping:YES volume:0.0];&lt;br /&gt;&lt;br /&gt;Then when the user puts their finger down, I'd like to&lt;br /&gt;[sounds fadeTo:1.0 channel:1 delay:0.05];&lt;br /&gt;&lt;br /&gt;And when they release their finger&lt;br /&gt;[sounds fadeTo:0 channel:1 delay:0.3];&lt;br /&gt;&lt;br /&gt;For the other sounds I could&lt;br /&gt;[sounds play:@"buddha_bell.png" channel:2];&lt;br /&gt;&lt;br /&gt;Basically just play looping or not, caching known sounds and controlling the volume of each channel.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-8234073773814068196?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8234073773814068196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/8234073773814068196'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/your-japanese-name-for-ios-part-4.html' title='Your Japanese Name for iOS, part 4'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-510600150560857880</id><published>2010-11-26T14:21:00.018+09:00</published><updated>2010-11-26T21:43:18.099+09:00</updated><title type='text'>Your Japanese Name for iOS, part 3</title><content type='html'>Goal for today will be to:&lt;br /&gt;- Initialize offscreen buffer (CGBitmapContextCreate?)&lt;br /&gt;- Draw to offscreen buffer with some kind of brush&lt;br /&gt;- Flip offscreen buffer so that it's visible for debugging purposes&lt;br /&gt;&lt;br /&gt;I've seen a few examples of CGBitmapContextCreate, but my biggest question right now is how to know what kind of buffer to create. Depending on the device the resolution differs.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Managed to get something on the screen. Got the default context for the view with UIGraphicsGetCurrentContext and drew some stuff. Was surprised that every time all the previous contents disappeared. So actually this default context isn't a bitmap at all?&lt;br /&gt;&lt;br /&gt;Trying to make an offscreen buffer. self.frame.size seems to give same values both on old iPhone and iPhone 4, so it would seem to be the size of the display in points, not in pixels. Yes, it seems you can't depend on these values, other people on the internets are having problems with app not working as expected on retina display when doing this. So should take the scaling value into account I suppose.&lt;br /&gt;&lt;br /&gt;I see some example code calling CGBitmapContextCreate with NULL as first argument. The first arg is supposed to be the data used for the bitmap context. Seems like a big no-no to have it be NULL. Or maybe it's a magic arg that causes the function to allocate its own space somehow?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"In iOS 4.0 and later, and Mac OS X v10.6 and later, you can pass NULL if you want Quartz to allocate memory for the bitmap. This frees you from managing your own memory, which reduces memory leak issues."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;[UIScreen mainScreen].scale is 2 on retina display, 1 on older iPhone. So it seems the width of the offscreen buffer should be [UIScreen mainScreen].scale*self.frame.size.width pixels and similarly for height. Seems that many code snippets floating around on the net are missing this detail and then wonder why their bitmaps look pixelated.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;- (CGSize)offscreenBufferSizeInPixels {&lt;br /&gt; float scale = [UIScreen mainScreen].scale;&lt;br /&gt; CGSize sizeInPoints = self.frame.size;&lt;br /&gt; CGSize sizeInPixels = CGSizeMake(sizeInPoints.width * scale, sizeInPoints.height * scale);&lt;br /&gt; return sizeInPixels;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- (CGContextRef)createOffscreenContext {&lt;br /&gt; CGSize size = [self offscreenBufferSizeInPixels];&lt;br /&gt;    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();&lt;br /&gt;    CGContextRef context = CGBitmapContextCreate(NULL, size.width, size.height, 8, size.width*4, colorSpace, kCGImageAlphaPremultipliedLast);&lt;br /&gt;    CGColorSpaceRelease(colorSpace);&lt;br /&gt; &lt;br /&gt; // "Because you use a lower-left origin when drawing into a bitmap or PDF context, you must &lt;br /&gt; // compensate for that coordinate system when rendering the resulting content into a view."&lt;br /&gt;    CGContextTranslateCTM(context, 0, size.height);&lt;br /&gt;    CGContextScaleCTM(context, 1.0, -1.0);&lt;br /&gt; return context;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Now that I have a presumably empty offscreen context, how do I blit it to screen?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;code&gt;&lt;br /&gt; CGImageRef offscreenContextAsImage = CGBitmapContextCreateImage(offscreenContext);&lt;br /&gt; CGSize fsize = [self offscreenBufferSizeInPixels];&lt;br /&gt; CGContextDrawImage(context, CGRectMake(0, 0, fsize.width, fsize.height), offscreenContextAsImage);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Strangely, even though I didn't wrap with UIImage, I had to comment out CGContextTranslateCTM and CGContextScaleCTM to get it to display correctly. Hit a new problem now; if I draw shapes for a while I get a memory warning. Am I reallocating something repeatedly? Let's see if I can use Instruments to see what it is even before I try to guess.&lt;br /&gt;&lt;br /&gt;Ran Instruments by selecting Run &gt; Run with Performance Tool &gt; Allocations in Xcode. As I paint more things memory usage very gradually goes up. Starting at under 2MB it gradually goes to nearly 4MB as I draw more shapes, and then the application gets terminated. Tried another tool called "Leaks". It says the leaked object is a CGImage and that the responsible frame is CGTypeCreateInstanceWithAllocator. Hmm...&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Aha, apparently CGBitmapContextCreateImage can actually allocate memory (or lazily copy-on-write, anyway) and not just get a pointer to existing image data. So I should CGImageRelease(offscreenContextAsImage). Works without leaks after this change, but disappointed with how slow this is. Only getting maybe ~15fps.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Mission accomplished. Can draw with a brush now, but it's slower than I hoped.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-510600150560857880?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/510600150560857880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/510600150560857880'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/your-japanese-name-for-ios-part-3.html' title='Your Japanese Name for iOS, part 3'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-7094086691837472411</id><published>2010-11-25T18:03:00.010+09:00</published><updated>2010-11-26T14:19:09.578+09:00</updated><title type='text'>Your Japanese Name 2</title><content type='html'>Instead of just showing the result, maybe challenge user to draw it themselves.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/xRV4q.png"/&gt;&lt;br /&gt;&lt;br /&gt;Something like this. Except with less suck. Would it be better to reveal a readymade image as the user draws, or let them draw freeform? Unsure. If readymade, have to do some clipping / masking magic to reveal it in the direction the user is dragging their finger. If freeform, need to do other kind of magic to make it look like calligraphy.&lt;br /&gt;&lt;br /&gt;Stuff I need:&lt;br /&gt;- Initialize offscreen buffer (CGBitmapContextCreate?)&lt;br /&gt;- Draw to offscreen buffer with some kind of brush&lt;br /&gt;- Flip offscreen buffer so that it's visible for debugging purposes&lt;br /&gt;- Use said buffer as a mask (could just copy alpha values or use some compositing operation if such exists)&lt;br /&gt;- Every katakana character with pieces separated such that they can be revealed in order&lt;br /&gt;- Looping background music&lt;br /&gt;- Graphics for mascot / teacher character&lt;br /&gt;- Success sound&lt;br /&gt;- Fail sound&lt;br /&gt;- Completion sound&lt;br /&gt;- Design for title screen&lt;br /&gt;- Copy for character dialog&lt;br /&gt;- Graphics for dialog bubble&lt;br /&gt;- Background texture&lt;br /&gt;- Figure out how to play background loop and sound effects simultaneously (3rd party library needed?)&lt;br /&gt;- Post to Facebook feed&lt;br /&gt;- Post as email (might need own server)&lt;br /&gt;&lt;br /&gt;Standard stuff like before:&lt;br /&gt;- App store icons (6 different ones)&lt;br /&gt;- 512x512 art for iTunes?&lt;br /&gt;- App store description&lt;br /&gt;- App store screenshots&lt;br /&gt;- Feedback button&lt;br /&gt;- Default.png for app quick launch&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/eMTtZ.png"/&gt;&lt;br /&gt;&lt;br /&gt;Or maybe it should be upright after all? Samuel L. Jackson as the mascot, giving totally wrong advice. Also, could just show text. Who needs a mascot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-7094086691837472411?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7094086691837472411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/7094086691837472411'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/your-japanese-name-2.html' title='Your Japanese Name 2'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-4091297534035587934</id><published>2010-11-25T13:01:00.007+09:00</published><updated>2010-11-26T01:13:44.121+09:00</updated><title type='text'>Your Japanese Name for iOS, 1</title><content type='html'>Regardless that it doesn't have great long term potential, I've decided next to make a version of my Facebook app &lt;a href="http://apps.facebook.com/youarecute/"&gt;Your Japanese Name&lt;/a&gt; for iPhone / iPod Touch. The FB version has over half a million installs, although recently usage has gone to a mere 1600 monthly users. This was because I was unsuccessful at quickly converting it from a profile-based app to a feed-based one, although I did eventually do so.&lt;br /&gt;&lt;br /&gt;There are already some similar apps in the App Store, but I believe I can get some installs if I can leverage the FB userbase. If I still have the list of user IDs stored somewhere, I should be able to inform users of the iOS version through a notification and get some installs that way. Since the App Store likely shows more popular apps first, it should push my version to the top, where it would then remain as it would enjoy extra installs from being the first listed app.&lt;br /&gt;&lt;br /&gt;If this takes a week to make and starts doing $1 / day in profit, I wouldn't think it was a waste of time. Looking at this &lt;a href="http://techcrunch.com/2010/05/16/iphone-app-sales-exposed/"&gt;list of iphone app sales&lt;/a&gt; it seems possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-4091297534035587934?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4091297534035587934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/4091297534035587934'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/your-japanese-name-1.html' title='Your Japanese Name for iOS, 1'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-6295877540960660297</id><published>2010-11-24T02:41:00.011+09:00</published><updated>2010-11-25T08:19:43.036+09:00</updated><title type='text'>What to make next</title><content type='html'>Now that I have some idea how much effort it is to make something, I've begun to think about what I really want to do next for iOS. I haven't really decided yet, but I've realized I do have some constraints limiting my search space. First of all, the app can be something that takes years to make, but it has to be possible to release an initial version to get feedback on in 2-3 weeks. I'm not patient enough to quietly work on something for a long time with no outside input. Once I get some, it becomes much easier to continue. An episodic game for example would suit my work habits well.&lt;br /&gt;&lt;br /&gt;Secondly, it has to have the potential to make some money. I need to eat. It's difficult to code while dead (believe me I've tried). For this reason I've considered making some sort of utility app that could be expensive enough to even be marketed online, but haven't really come up with any ideas. I just don't know any industries / topics well enough. What do I know? I know something about Japanese and programming, but that's about it. Doesn't make me at all unique as a developer. I don't feel there are any tasks in my real life that I would need an app for. There's already plenty of Japanese study apps. I could port "Your Japanese Name" to the iOS though since it wouldn't be that long of a project and I would have an existing userbase on Facebook to advertise to and even some assets for the port.&lt;br /&gt;&lt;br /&gt;Third, while for a short period I can work on a subject that doesn't interest me all that much (like the Acey Deucey card game in my previous test), for a project that might extend to years I should pick something that I would enjoy working on. So topics that interest me? Well, I really like the survival genre. Robinson Crusoe, Cast Away, サバイバル, Alive, Lost in Blue etc. I really enjoyed all of them. Another genre I like are business simulations like Sid Meier's Railroads!, Aerobiz Supersonic, Lemon Tycoon, ゲーム発展国. Also life simulations like Jones on the Fast Lane and The Sims (although there was too much menial detail in The Sims) appealed to me. I like to imagine what the far future would be like, so scifi and space themes are good too. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/jfFdf.jpg" style="float:left;margin-right:8px;"/&gt;&lt;br /&gt;&lt;br /&gt;For sound I like soundscapes (sea waves, thunderstorm, busy city etc.), not music. However memorable title music is always good. Chiptunes are great. Ambient style slow paced music is acceptable though, if there has to be some. With graphics I like anime cel art style clean outlines with solid fills or 8bit graphics. Point of view can be from above, bird's eye, even isometric or platformer style, anything goes. Luckily it seems the masses agree with my retro taste, most people don't seem to prefer hyper realism. I think game art should communicate an idea simply and not try to render it in full detail.&lt;br /&gt;&lt;br /&gt;How to combine enough of my interests to make sure that if I find myself working on a project still 10 years from now, it would be something I like? Survival + business sim + oldskool. This really sounds like Lost in Blue. So is the answer just to make a Lost in Blue -type game? Survival business sim sounds almost like a contradiction, but I think Lost in Blue does have that. As you proceed you get better tools and with these you get even more resources to play with, that's the core appeal of a business sim.&lt;br /&gt;&lt;br /&gt;If I add +Japan and +scifi to include those interest too,.. A guy stuck on a Japanese spaceship with all of the crew dead, left to gather oxygen, food (frozen free-floating sushi?) and such supplies to survive. Wow, the directions this could take are pretty vast. Makes me want to play this. Trying to plan out a game before I've realized it's really really really hard to come up with game designs. So it should be something extremely simple or it will be impossible to pull off before getting more experience with making games.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;a href="http://www.lostgarden.com/2010/11/cutest-kindle-game-ever-panda-poet.html"&gt;"A design written on paper and a design in your head is always a fluffy success story.  A design created in code (or a paper prototype) is a working machine that must function according the unyielding rules of player psychology.  The first is fantasy."&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Oh yeah, I like cats too. Cat in space? Jonesy!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; Exploring a space ship with the crew dead is extremely cliche. Also, this hardly even qualifies as any sort of "idea", as it's just some vague description of a storyline and doesn't really say anything about the gameplay.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-6295877540960660297?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6295877540960660297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/6295877540960660297'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/what-to-make-next.html' title='What to make next'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-3806689355238845131</id><published>2010-11-19T14:11:00.002+09:00</published><updated>2010-11-19T14:15:13.622+09:00</updated><title type='text'>Acey Deucey part 16</title><content type='html'>Took about 3 hours to get all the certificate stuff to a passable state. I didn't quite understand what I was doing, but hopefully the zip file is now acceptably signed. If I understood correctly, I needed some kind of different certificate for releasing the app than I did for testing it.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/6ImJT.png"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/u2kKi.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-3806689355238845131?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3806689355238845131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3806689355238845131'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/acey-deucey-part-16.html' title='Acey Deucey part 16'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-942414926046794477</id><published>2010-11-19T12:33:00.002+09:00</published><updated>2010-11-19T12:44:08.547+09:00</updated><title type='text'>Acey Deucey part 15</title><content type='html'>&lt;pre&gt;&lt;br /&gt;In-Between is an easy-to-learn single player betting card game. Three cards&lt;br /&gt;are dealt, one of them face down. After the betting amount is decided&lt;br /&gt;the hidden card is revealed. The pot doubles if the value of the hidden &lt;br /&gt;card falls in between or is equal to the two other cards. Otherwise the&lt;br /&gt;pot is lost. Historically this type of card game has also been known as &lt;br /&gt;"Acey Deucey" or "Sheets".&lt;br /&gt; &lt;br /&gt;KEY FEATURES&lt;br /&gt; * Use this game to improve your ability to judge probabilities.&lt;br /&gt;&lt;br /&gt; * Great as a first introduction to card games. Card suits do not matter&lt;br /&gt;in this game, so it is enough to be familiar with the different card ranks&lt;br /&gt;Ace, number cards, Jack, Queen and King.&lt;br /&gt; &lt;br /&gt; * Unlike many card games, here the odds are in your favor. Once you learn&lt;br /&gt;how to play there is no limit how high you can reach. &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;The following is not recommended for use in this field: pot. Your app may be rejected if you use this term.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Heh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-942414926046794477?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/942414926046794477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/942414926046794477'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/acey-deucey-part-15.html' title='Acey Deucey part 15'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-546527951096798320</id><published>2010-11-19T07:48:00.005+09:00</published><updated>2010-11-19T10:21:30.732+09:00</updated><title type='text'>Acey Deucey part 14</title><content type='html'>iOS required icons:&lt;br /&gt;&lt;br /&gt;29x29 Icon-Small.png&lt;br /&gt;50x50 Icon-Small-50.png&lt;br /&gt;57x57 Icon.png&lt;br /&gt;58x58 Icon-Small@2x.png&lt;br /&gt;72x72 Icon-72.png&lt;br /&gt;114x114 Icon@2x.png&lt;br /&gt;&lt;br /&gt;We've come pretty far considering the whole screen size of the popular Nokia 3310 from ten years ago was just 84 x 48 pixels.&lt;br /&gt;&lt;br /&gt;Spent whole morning trying to get UISlider to work. Turns out you can't just set slider maximumValue and value to your desired amounts, because setting maximumValue won't work if current value is higher than it. This was causing the setting code to fail depending on game situation. Safe thing is to first set value to 0, then set maximumValue and then the value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-546527951096798320?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/546527951096798320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/546527951096798320'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/acey-deucey-part-14.html' title='Acey Deucey part 14'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-3771367930132803102</id><published>2010-11-18T15:10:00.013+09:00</published><updated>2010-11-19T12:34:46.084+09:00</updated><title type='text'>Acey Deucey part 13</title><content type='html'>Instead of buying a sound of audience going "awwww" (when lost game) from istockphoto, I thought I'd record one myself.. surprisingly difficult to say a disappointed "aww" without sounding sarcastic. Spent hours trying to find suitable sounds. Time to give up and make the game a bit more silent than I intended. Better to have silence than an unsuitable sound.&lt;br /&gt;&lt;br /&gt;Can't quite figure out how to save the app state when it goes into the background, so skipping that for now too.&lt;br /&gt;&lt;br /&gt;TODO:&lt;br /&gt;&lt;s&gt;- UISlider should update properly&lt;/s&gt; and have a reasonable default.&lt;/s&gt;&lt;br /&gt;&lt;s&gt;- Touching "send feedback" in rules screen should actually do something.&lt;/s&gt;&lt;br /&gt;- App store &lt;s&gt;icon&lt;/s&gt;, &lt;s&gt;description&lt;/s&gt;, screenshots etc.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/kmWsZ.png"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; Are you kidding me? I need to create six different sizes of icons?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-3771367930132803102?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3771367930132803102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/3771367930132803102'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/acey-deucey-part-13.html' title='Acey Deucey part 13'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-11134270.post-2252651431921613540</id><published>2010-11-16T14:52:00.005+09:00</published><updated>2010-11-18T12:07:34.578+09:00</updated><title type='text'>Acey Deucey part 12</title><content type='html'>Basic game works well enough now to be played.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/D5Cen.png"/&gt;&lt;br /&gt;&lt;br /&gt;TODO:&lt;br /&gt;&lt;s&gt;- Broke retina display support. Need to tweak card PNG to make it work again.&lt;/s&gt;&lt;br /&gt;&lt;s&gt;- Screen for going broke.&lt;/s&gt;&lt;br /&gt;- Win / lose sound (maybe "awww" and applause). "Cards being dealt" sound. Possibly "cards going away", "ran out of money" sounds.&lt;br /&gt;- App store icon, description, screenshots etc.&lt;br /&gt;&lt;s&gt;- Have to keep track of the "deck" at least so far as not to deal two identical cards.&lt;/s&gt;&lt;br /&gt;&lt;s&gt;- Default.png for quick launch.&lt;/s&gt;&lt;br /&gt;- Support recovering app state if user gets a call / exits and returns.&lt;br /&gt;- Rules screen.&lt;br /&gt;&lt;br /&gt;Noticed that at some point I went from Ace representing 14 to it meaning 1. Also changed my mind in that equality is now considered winning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11134270-2252651431921613540?l=bemmu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2252651431921613540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11134270/posts/default/2252651431921613540'/><link rel='alternate' type='text/html' href='http://bemmu.blogspot.com/2010/11/acey-deucey-part-12.html' title='Acey Deucey part 12'/><author><name>Bemmu Sepponen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='23' src='http://3.bp.blogspot.com/-qM5emQ5qaDM/Twx5a0MhlFI/AAAAAAAAAFY/Lb9xar5p450/s220/Screen%2BShot%2B0024-01-08%2Bat%2B12.47.39%2BAM.png'/></author></entry></feed>
