Saturday, December 13, 2008

Mirror's Edge postmortem article

I bumped into an article on Mirror's Edge postmortem interview from Reddit today. I think it's worth reading if only for an example of good replies for an interview. I'm sure a lot of details are omitted, but a little dose of honesty in the replies makes me respect Tom Farrer, the interviewee.

Of a special note is Mr Farrer's mentioning Singapore as one of the cities that influence Mirror's Edge cityscape design.

Thursday, December 11, 2008

Liking what you do

There are times when I feel as if whatever I am doing, it all does not matter to the world. Last few weeks have been such times. This week is perhaps the start of my healing process. It started off with me going out with my good, old friends and somehow everything looked much better after that.

Today, I found something that reminds me that it does not matter how difficult and painful the process is, it is my attitude while throughout the process that matters most in life. That thing is David Sirlin's (very long) article on the process to balance Street Fighter II HD Remix. If you are a Street Fighter fan, I recommend going through some parts of the articles.

What I would like to highlight is the overview and the feature list.

Let's start with the overview. Quoting the opening paragraph:
"Super Street Fighter 2 HD Remix was originally going to be a graphical update of Super Street Fighter 2 Turbo, but along the way some magic happened. HD Remix is now a completely new Street Fighter game—the 6th installment in the SF2 series."
I originally thought that HD Remix is nothing more than a masochistic project to update the sprites to Street Fighter II. Only after reading Sirlin's articles that I appreciate its magic. It is the product of hard work done by people who love what they do. (Also note the magic that a company actually allows such magic possible. It's much easier and less risky for them to do the masochist project.)
Balancing a game is very difficult. It is very easy for a player, who experience only a portion of the whole game to criticize, "Hey, this part is not balanced!" It's much, much more difficult to look at the whole game and balance every part (or at least most parts).

I guess the point it reminds me of is this. When I like doing something, I usually want to get better at it. And as I get better, the thought of doing the thing makes me mentally recall a long list of difficult things I need to go through to do well.
This is where I usually lose patience. This week I learnt that patience is not that difficult for the benefits it brings.

You might say that the introduction, like so many other introductions, is more interesting because it promises to give us things. Well, the summary of things the article gives is in the feature list. My highlights are:
  • #7 double-blind character selection online. A simple point perhaps, but it happens every single time we play, so the cumulative effect is great.
  • #13 hitbox display. It's obvious that the purpose for this feature is for players to refine their skills. If this does not show "love-what-I-do"-ness, I don't know what does.
  • #15 dipswitches. I thinks this is the most hardcore feature of all: enabling known bugs on purpose because they affect gameplay. I personally probably won't use this feature, but I can appreciate that there are people who (like the game so much that they) do.
You can watch one of David Sirlin's matches: EvoWest 2007 Super Street Fighter 2 Turbo Finals.

Tuesday, December 09, 2008

Three Panel Soul

From the misty realm of teh Interweb, I found Three Panel Soul webcomic. It has a style that I like and quite a number of strips are funny. But this is not the reason for this post.

The reason for this post is that I find this particular strip on companionship cute, heart-warming, and yet painful.

Now go on, browse through that archive :)

Thursday, December 04, 2008

Firefox Woes

I intended to write about this in April 2009 but I soon forgot about it. Well, today the problem showed up once more so let's get this one out of the way.

A plugin for web browser is a program that can communicate with a web browser and make the browser do additional things that a browser usually cannot do. For example, browsers cannot play videos on its own. That's why we need to install Flash plugin to play a Youtube video.

A scriptable plugin for a web browser is a special kind of plugin: we can write JavaScript codes to program how the plugin should behave. Internet Explorer browser and Firefox browser provides different mechanism for us to crate a scriptable plugin. In this post, I will consider only the Firefox mechanism because this post has the title "Firefox Woes".

Mozilla provides a number of ways to write scriptable plugins. One of them is the NPAPI. Ignoring that the documentation provided is confusing, there is one particular NPAPI bug that is annoying enough for me to want to write this post: the unsigned integer bug in NPAPI.

What could they have been thinking?

Friday, November 28, 2008

Star Fruit

While browsing the Piggy Farm forum, I impulsively clicked on Bryan B. Wong's Live Journal. I find this particular entry amusing. Apparently, random butter tried buying some star fruits because of Bryan's Start Fruit manga.

Well, Wikipedia says that star fruit is native ot India, Sri Lanka, and Indonesia (wow, I didn't know that!). My point is that I grew up with star fruit, so I never think of it as anything special (in the neither-good-nor-bad sense). It's quite interesting to see how other people find it :D

This is why I think I'll need to proceed with caution if I ever go to countries like Japan or China or Korea. They have way too many risky food stuff :)
---

More new knowledge about Indonesian stuff from the eyes of non Indonesians: bilimbi. Is this what we Javanese call "blimbing wuluh"? Wahaha, fascinating! I call star fruit "blimbing" in my native tongue (which is a mix of Indonesian language, Javanese language, and some Chinese dialect of which proper name I never know of). "Blimbing wuluh" is entirely different. I think it's much more acidic or something and thus is more suitable for cooking (as opposed to eating as a fruit). Again, I never really pay attention to it so I don't know much about it either.

---
I think this post somehow joins my otaku side and my nerd side. Childhood things tend to do that.

Tuesday, November 25, 2008

Figurine Fun

I went to Anime Festival Asia over the weekend. It was lots of fun.

Some photo highlights:
I bought myself the Kamen Rider Black/RX figurine. It has one main body to which I can attach Kamen Rider Black armor or Black RX armor. Check out my first bunch of shots on my Picasa album.

Out of the package, the figure has the Black RX armor on. I took them off and put on the Black armor. I found the Black armor more attractive; I love the grasshopper look of it. Black RX looks too neat and robot-y. What I soon found out while posing the figurine during the photo shot, though, is that the Black armor comes off far too easily. The small pieces just "hugs" the main body, in contrast to Black RX armor that can be secured comfortably. Still, I did have fun with it and to a certain extent re-discover my liking for photography.

That reminds me of Wei Man's remark about figurines. Before this, she didn't understand what's so good about figurines. Somehow, she bought her first figurines from AFA: a poseable Yuffie (of FF7, her favourite character) figurine and a bunch of Magna Carta figurines. While posing Yuffie, she saw how well-designed figurines work and she was wowed. It was fun to see her finding the charm of poseable figurine (and taking photos of them). One more otaku in our sketch group, mwahaha.

Wednesday, October 29, 2008

Life near the Frontier

The last few months I've been working on an API written in JavaScript (let's call it JSAPI) at work. Naturally I looked for a Doxygen-like tool to generate the documentation. It is very surprising that there are only a handful of such tools.

First, I tried out JSDoc. It's simple and easy to use; plus the output looks like something out of JavaDoc. The problem is, it does not handle string containing JavaScript code (the kind of string you'd feed to eval()) correctly.

Next, I tried JsDoc Toolkit. It is okay, but there does not seem to be a way to control the output. What I want to achieve is grouping functions in a big class by functionality. JsDoc Toolkit simply outputs all functions sorted alphabetically, so I end up with GetThings() functions at the top and SetThings() at the bottom. Lots of scrolling and eye straining needed to find functions I want.

Finally, I followed the recommendation from "The State of JavaScript Documentation Tools" article. I decided to switch to Natural Docs. After a painful day of converting my existing comments into Natural Docs format; I'm quite happy with the output. My only gripe is that there is only 1 file for all functions in our API. I'd prefer a way to output 1 output file for each class. I really like the layout of the output, though.

This whole process gives me the feeling that support for JavaScript documentation is rather minimum even though it is (very?) popular. After all, it's the only scripting language for a browser. Why is it so? Is it because no one has used it for a large API yet? What about Google Maps API? (Actually I wonder what Google uses to generate their documentation. If you know, please tell me by commenting.)

Then I realized that this is the problem with any JavaScript tool. For example, until now I haven't found a satisfactory IDE for JavaScript. Generic text editor is fine (I'm still using EditPlus myself), but navigating a big JSAPI file (thousands of lines) is a pain. I want something like Visual Studio's automatically-generated drop-down list of functions. For now, the best solution I found is Aptana Studio. But honestly, it feels slow and clunky to me. The only reason I'm using it is for its auto-generated function index.

If I think about it, it feels odd that there is no nice IDE for such a popular language. I'm curious what other JSAPI developers use. Surely they don't just use a generic text editor?

Tuesday, October 14, 2008

Iji

I came across an indie game called Iji a few weeks back. When I saw the trailer, I thought it looked decent but not great as a video. The game itself is very good (if not great). The story is decent (even though the story-telling might feel slow), the action is great, the music is awesome, and game design encourages replay.

Iji is the name of the main character. She was visiting a military complex when an alien race attacked earth from orbit. She woke up a few months later, after receiving cyborg treatment. She now has a personal nanofield (her armor) and a nanogun. When the game starts, Iji's nanogun is a mere shotgun that is effective on short range. As the game progresses, she picks up more powerful alien weapons.
In addition, there is leveling up involved. Iji can collect nano by killing enemies or collecting from crates. After collecting a certain amount of nano, she can level up. At each level up, we can pick which stat to improve. There are 7 stats to choose from.
Finally, opening certain doors and crates requires "cracking". Cracking is a mini-game that is not too fun on its own; but the main game still progresses as Iji is cracking, so it has a certain strategic factor. What is awesome is that if Iji's cracking stat is high enough, we can also crack an enemy's personal nanofield to create confusion.

For me, the highlights of the game are:
  • The boss fights. Later bosses definitely needs some thought the first time we fight them.
  • The soundtrack. It's awesome! Even more awesome, they just released a high quality soundtrack recently (10 Oct). My favourite tracks are 3 Cans Later (sector 2), Seven Four (sector 5), and Tor. The high quality soundtrack includes a bonus track, Organ Smash, that grows on me. A minor complain from me is that the soundtrack is in mono.
  • The story. Story-telling can be better; but as the game gets near the ending, the story grows on me. Maybe the in-game voice acting biased me a little :)
All in all, I think Iji is worth playing if you are into 2D platformers. You can download it from Daniel's base.

Saturday, September 20, 2008

VGA splitter

A few weeks back I bought a Cintiq Wacom tablet. It turns out to function as both a tablet and a monitor. (I kind of expected it to work as simply as Graphire, but on hindsight this is of course stupid.) Since my PC has only one VGA out, I got myself:
  • a VGA splitter 2/4 port VGA splitter. Model MT-2504-A. I jsut reaplized that the pack does not have a brand (unless "VGA Splitter" is a brand).
  • a Manhattan monitor cable HD15 Male/HD15 Male. The packaging points to http://www.manhattan-products.com/index.shtml; but strangely I cannot find the product on the website.
They are supposed to be of good quality (I asked the store attendant) so I had high hopes. Well, it is rather disappointing. My monitor is visibly blurry now. Especially for white Arial/Verdana fonts on a colored background (a common thing in websites). I guess it's acceptable for browsing, but it's definitely not good enough for digital inking (what I hoped to do with my Cintiq).

And so that's the disappointment of today (other than the fact that Games Convention Asia does not open on Sunday, which I think very stupid).

Saturday, September 13, 2008

Asking the Right Question

Let me begin with realizations:
  • I used to play games a lot. I played Sonic 3 to the point that I could collect all 7 Chaos Emeralds on the second level (Hydrocity Zone act 2). I played Contra so often that I could finish the game without dying even once (same thing with Lifeforce). I thought, "Hey, I'm invincible on these games!" Of course, many years later, the Internet proved me wrong (there are many people out there who've done crazier things). Even before I found out about these, I slowly realized with horror that I'm not a hardcore gamer at all. I'm just a casual one.
  • I used to like programming a lot. I started with GWBasic, moved on to QBasic, Pascal... Even in university, at which I started to realize that programming can be difficult and not fun, I still see programming as the thing I'll do in my life. As I started working, though, I slowly realized--again with horror--that I'm not so hardcore a programmer that I can do it for life. There are so many things around programming that I don't think I can do.
I see a pattern here. Right now I don't think I can do anything for life. I think variety is one thing that I need as I change over time. (People change. That's another realization.) The point I'm getting to, however, is about finding out what I'd like to do for life (at the moment anyway).

One of my lecturers once said that it's much easier to find out what you didn't like to do than to find out what you liked to do. My personal experience persuade me to agree with him. Then, I asked, were I doomed to try things one by one, abandoning things I found not to my liking? (Computer Science students may relate that I didn't like this mainly because it felt like "exhaustive search".) I still think that that is the only way to find things out (and get things done); but the pattern I mentioned above provides me with an alternative heuristic.

Maybe we should ask not "what I want/like to do" but also "what I am willing to do in a hardcore manner". (You may quickly think "Define hardcore!". I'll leave it to each to define hardcore. After all, it's just a heuristic, not algorithm.)

I was really excited by this personal finding until I realized that the heuristic is equivalent to "finding your passion". I just replaced passion with hardcore :D

Monday, September 08, 2008

Search

Ever since I learned about it, I've always preferred to use Firefox than Internet Explorer (IE) even though I couldn't really tell why. Lately, I've been working a lot with both browsers (and in the process got awestruck by the sheer amount of work a browser does each time we view a web page) and got to know them a little bit. It was this experience that showed me how much more flexible (and developer-friendly, to a certain extent) Firefox is. Here are a few things I like about Firefox:
  • I can easily install mutiple versions of it in the same computer. Very useful to test your web application quickly. With IE, oops, it's closely tied with the Windows OS. I know that there is a way around this (by copying multiple DLL plus registry acrobatics IIRC), but it's very painful.
  • Add-ons are wonderful. My personal favourite is Foxmark that synchronizes bookmarks across different computers. Very useful if you use Firefox both at work and at home.
  • Firefox has Firebug, very helpful in debugging JavaScript. IE8 does promise a Firebug-inspired debugging tool; but basically debugging JavaScript in IE6 and IE7 (the 2 currently most popular browsers) is very painful.
Then, in the middle of development work, a unique incident put things to perspective. My parents visited me, so my Dad used my computer to browse the Internet. I see my Dad as a typical user, who does not care about development niceties, but care a lot about convenience. He is used to IE, of course. So I told him to use Firefox. As he used Firefox, he kept commenting how difficult it was to use. The biggest reason, I think, is different feel from IE. But here is the remark that got me thinking: IE allows him to save a web page in one file, whereas Firefox does not.

I could not understand that. Surely when I save blah.html, I always get a "blah_files" folder that stores non-text content. So I tried out IE. It does allow me to save everything in one file. Microsoft proprietary format, of course. (I'm guessing it's somekind of zip-based compression that IE can uncompress on the fly.) But my Dad doesn't care about that. All he cares about is that everything is in one file and there is no chance that he accidentally separates text content from non-text content.

The incident made me think, "Hmm... so what's so great about Firefox for a user like my Dad?" It's funny that I can't think of any. So many productive features and I just cannot see how my Dad will switch to Firefox just for them. Bookmark synchronization? Oh, he remembers all the URLs he needs (just a handful of them). Installing multiple versions of a browser? What for? JavaScript debugger? What JavaScript? Even Firefox 3's Awesome Bar?

What I learned was that Internet browsing is but one activity among many. What a sobering revelation.
---

But let's get back to Awesome Bar. At first I thought it's cool, but so what? It's only until I started to use it while doing research at work that I decided that I could no longer live without it. My job is to be efficient in learning things new to my company. And research is usually not smooth. I usually read a number of pages to find some consistent pattern or repetition of a concept, and then realize that a page I read sometime ago make more sense than the time I read it. So I need to get back to that page. There are a few tricks to get back to the page:
  • Never close any tabs. Obviously impractical. Which tab was which?
  • Bookmark all pages I've seen. I did practice this once. Still the same question: which bookmark was which?
  • Repeat the same search steps, something like re-tracing my earlier steps. It works if I remember exactly what steps I took. Even if I do remember, how many clicks do I need to get to that one page?
  • Awesome bar. Type the phrase I remember, scan the list of pages and usually I get back to the page I want.
Last week, Google launched their browser, Google Chrome. It has something similar that they call the Omnibar. Their new tab feature arguably pushes this idea one step forward; I personally don't use find their new tab concept that useful. I'm still in love with the Awesome Bar :)

What I love about Chrome is its task bar. Shift+Esc quickly becomes my favourite shortcut. In relation with the revelation I wrote above, Chrome definitely feels like a web developer's browser rather than a consumer's. (I think a lot of articles about Chrome misunderstood it. Chrome is not a "Firefox killer," a term that implies Chrome is intended for consumers. Sure, consumers can use it; but its features are nicest for developers.)

Wednesday, July 02, 2008

Hamthology Vol. 2 Launches!


We officially launches Hamthology vol. 2!
You can visit our online store at Lulu.com. It has a 10-page* preview (that takes quite a while to load), so please check it out :)

* Technically, it's only a 4-page preview because the first 6 pages are title page, table of contents, and various other things. That's why I'm typing this as a fine print, mwahaha!

So what is Hamthology, you ask? It is a comic anthology done by folks at the Piggy Farm forum (I contribute a not-so-short comic in the volume). We emphasize on the community aspect of the process. Your support is greatly appreciated :)

Thursday, June 19, 2008

Acknowledged

Today I manned G Element's booth at BroadcastAsia 2008 (I'm working at G Element). I honestly did not look forward to it because my experience on the first day of the event (Tuesday) was rather disappointing. We (2 of my bosses and I) presented to so many people who are too high up in management that they don't appreciate our exhibit. This is understandable; but it doesn't change the fact that it's very disappointing to present something I believe in to people who don't appreciate it.

Today, however, was surprisingly good. A lot of people who do technical things (who, I suppose, are relatively low in their respective management hierarchy). My first moment of relief was when I presented to a bunch of NUS (National University of Singapore) students. I don't know if they actually study Computer Science or programming, but it was great to hear "Wow, it's 3D application running on a browser!" It was as great an acknowledgment as I can possibly expect. Indeed, it is not trivial to run 3D application on a web browser (it's true that there are plugins like Unity and Google Earth, but the thing we are developing is our own 3D plugin).
After that, I felt like I was set free somehow. I can't help being excited when presenting for the rest of the day. I didn't even mind when some people obviously didn't fully understand (i.e. what happened in the first day).

Another great moment was when a visitor muttered, "Impressive..." Maybe it was an involuntary word from him, but to me it meant a lot. Someone else acknowledged what I believe in. That felt really good.

Saturday, April 26, 2008

Painting moments

I've just finished painting a pinup for Hamthology volume 2. It ties up Onward in vol. 1 to the story I'm working on with Kyr for vol. 2, titled "Sometimes the Red Queen Laughs" (STRQL). I wanted to write this post while working on STRQL.

I was overly eager to finish the comic becauseI've been working on it for so long and I started to feel that it was taking too much of my time. I wanted to move on to other things so badly. Without knowing it, I succumbed into "mechanical mode"; that is, I worked in order to finish quickly.

This affected the way I drew without me realizing it. It was when Ken, my drawing instructor, explicitly said that I needed to "play around more" that I started to reflect on my unconscious thoughts.
I had to force myself to slow down and feel whatever experience the process made me to go through. I tried strokes that I wouldn't want to consider previously and they gave me surprisingly fun result. I guess I started to understand the saying "enjoy what you are doing and you will produce good things".

Some things remained difficult, of course. I still couldn't produce satisfying hair highlights. But the process was very rewarding. I experience a few "Sharingan moments".
---

Let me sidetrack to explain what I mean by a Sharingan moment.

I met with Sharingan while reading Naruto. If you are willing to read overly long description for Sharingan, you can read its Wikipedia entry. For this post, you only need to know that in one scene in the manga, Sasuke (while using Sharingan) could see the next move his opponent was going to make. I think that doesn't mean he can predict the future, it's more likely that he can see the most likely steps his opponent going to make based on his current position/posture/move because of physical constraints (gravity and momentum).
---

Similarly, while working on STRQL, there were moments that I could see where I should put my next stroke. It sounds incredible perhaps, but I did experience it. I could see an image of the small part I was working on and so it was easy to decide the next stroke. A few moments after I first experienced this, I was overwhelmed by the triumphant feeling. Too bad it didn't always happen and I don't know what triggered it. (Is this why athletes are advised to visualize themselves winning?)
---

While reflecting on these moments, I wondered what made me feel triumphant. Put in another way, why is it so rewarding to experience new things?
My train of thoughts brought forward what I read sometime ago, something like: "I feel that I spent my life searching for something I don't know."

Alright, I found the source after searching Reddit. Go here and go to image number 14. It's a photo gallery titled "It's Complicated: the American Teenager" by Robin Bowman. The exact line is different from what I remember (even in meaning, now that I re-read it); illustrating that mind does distort memory.

Could it be this search that makes us/me feel rewarded on discovering new things? Even if we know that countless other people probably have discovered the same thing over and over?
---

If you are interested in such lines of thoughts, you might be interested to read David Brin's Uplift novels, particularly "Startide Rising". Most characters there reflect on their own thoughts in a similar manner (or, more likely what actually happened, the way I think was influenced by the characters in "Startide Rising").

Saturday, March 29, 2008

Otherness

I'm currently reading Otherness (as you can see on my LibraryThing thingy on the right of this blog's main page). It's a collection of short s.f. stories by David Brin. The theme "otherness" seems to be in somewhat academic context: other people's opinions/points of view/sets of values that are different from yours are valuable to everyone. I interpret it as something in the line if "diversify to be safe".

I find a strange attraction in Brin's stories. I personally think he has a problem with his endings--abrupt endings to stories that to me seems to unfinished. What attracts me is perhaps his weird and diverse science topic he uses to drive his stories. Another attraction is perhaps I tend to agree with his views.

Anyway, the comic drawing I'm going to seems to be approaching story telling phase. Last week we got short story (300 words) writing homework. The theme was playing around with well-known fairy tales. Simple stuff to get warmed up with. The process was enjoyable, actually. Story writing is different from drawing, yet they share a number of similarities too. Everything starts with ideas in my head, followed by a process of translating those ideas into something concrete. The difference lies in this process of translation.

In this case, the important thing is the difference.

This reminds me of a quotation I read while reading about Windows Forms (WinForms): "what important is the difference". I found this quotation interesting because it is the flipside of abstraction--factoring out common characteristics of things--a staple in computer science.

Friday, February 22, 2008

What is a Man?

I can't think of an appropriate title, so I typed a random title. It does, however, show that I've been playing Castlevania: Symphony of the Night.

I've been scripting at work. PHP, Perl, JavaScript, HTML, SQL statements... All these culminate in a new local search at Earth@sg website. Please try it out. I welcome bug reports and feedback.

Today, I found Johnny Lee's Wii project website. Have a look at his videos. I'm especially impressed with his head tracking video. He scripted his explanation well; and his execution of the video is really good. The highlight, though, is the demo around 3/4 into the video. Wow! That's just awesome.

At home, I'm currently working on my entry for IFS's Pepper Project. I'm a little nervous on this piece as I'm working on it with my full capacity, yet it does not look that good compared to the entries submitted thus far.
I received some feedback from the good folks at IndoCG forum (it seems to be down at the moment; the URL is http://www.indocg.com/forum/). So, yeah, I'm still on it. Your feedback are welcome, too :)

Monday, January 28, 2008

Courage

I got this link today from Reddit: minus.

The final panel for some reason has a lot of impact on me. It has a strange mixture of ignorance/innocence, determination, and "can-do" spirit to it. Love it!

Saturday, January 26, 2008

Hamthology Vol. 2

Sometime last week I read that one good thing to do to get into a field (in the article gives programming in PHP as an example) is to start a blog about what you do in that field. Now, I want to get into manga drawing further; so probably I will convert this blog somewhat to be partially about drawing.

And speaking about drawing, right now I'm drawing for Hamthology volume 2. I drew a 7-page story for Hamthology vol 1. Doubling the page count is not that bad; the bigger obstacle I found is multiple characters and speech bubbles (the short story I drew was single-character without dialog). I keep forgetting how to draw characters. This means that when I draw, say, Edward Elric, my drawing looks different from him. Or make him look too young.
Another new thing I'm trying to get a hang of is speech bubbles. I was too used to planning a panel to be filled with a scene and ended up with panels that are so full that speech bubbles simply don't fit in.

In addition to Hamthology, I also want to submit an entry for Pepper Project. No clear idea about what I'll draw yet, but it should be something about posing (something I need to practice on).

Links: