Wearing dice on my head since 2008 Programmer, engineer, scientist, critic, gamer, dreamer, and kid-at-heart. Randomly amazed.


last update:

I Hate Trading

| Categories: Magic the Gathering | Tags:

For the record: I hate trading. I realize it’s necessary to the way Magic’s business model works, and I realize it’s part of what makes opening booster packs fun, but make no mistakes about it: I hate trading. Don’t get me wrong, I love Magic. More precisely, I love playing Magic. I want to play spells, to match wits with my opponents, to recover from mana screw, to win from one life, to make bad plays then learn from them.

It’s 8:30 pm on Friday. I step out of Maxim’s, a fastfood place near the office in Hong Kong. I flew in to HK the morning of the day before, and had given a presentation over a conference call on Thursday night. This was the only free time I had during the entire trip since I had to fly back the next morning. I decided to take a walk for maybe an hour or 30 minutes, to savor the cool night’s weather before going back to hot and humid Manila the next day.


| Categories: Pop Culture | Tags: Movies Review

I had actually read the much-acclaimed graphic novel only last year. And while I found the story decent enough, I wasn’t sure whether to like it or hate it. Undoubtedly it was an important point in the history of “superhero” comics, but I was never entirely sure about it’s point. So of course I saw the movie, and it had remained roughly 85-90% loyal to the source material, which made it a bit boring for me since I generally knew what was going to happen most of the time (except for you know, that thing about the bad guy’s master plan… ).

For the record, I purchased an original R1 copy of Street Fighter IV for the PS3 last Tuesday, and we’ve been pretty much playing it whenever we had free time at home. The one time I came in late to work during the month of February was because of Street Fighter IV. Street Fighter IV came in with ridiculously high reviews for both the XBox 360 and PS3 versions, the PS3 version garnering a 94 (universal acclaim) on Metacritic It can’t be denied that it’s an awesome game, although not everyone agrees.

I reinstalled MTGO3 last week because I figured I could get some casual play out of it at least. After installation I found out that Conflux release events were this weekend so I might as well play, since I was not able to play IRL at this time. I was hoping MTGO3 had improved by now, and that they had sufficient server loading, etc. to handle the number of players without the servers being crashy and laggy and whatnot.

I had time to kill before going to see my brother’s art exhibit at megamall, so I went and watched Street Fighter: The Legend of Chun-Li. It was so bad. I could’ve been able to forgive the fact that they roughly 80% of the story shied away from Street Fighter canon, had the movie’s storyline actually been good. As it is, you can expect short, unsatisfying fight scenes, ridiculous background stories, disjointed plot/scenes (reminds me of Smallville and/or Heroes writing =/), terrible wigs and the ridiculous sight of Michael Clark Duncan getting beaned by a pineapple.

You may have noticed the new color scheme and new “Theme Switcher” widget in the sidebar. I had done some CSS work during the past month in the office and it made me want to tweak the stylesheets on this site a bit. I figured I might as well make it easy to switch stylesheets, so I wrote a small Theme Switcher django app. (Well, it’s more of a stylesheet switcher I guess)

Street Fighter IV: My Fist Ur Face

| Categories: Gaming | Tags:

Fun little widget from Capcom allows you to put yourself into an SFIV battle video. Here’s me as Ryu! Street Fighter IV is out next week, hopefully we’ll be slinging fireballs by next weekend!

Zed Shaw -- the ACL is Dead

| Categories: Software Development | Tags:

Excellent talk given at the Canadian University Software Engineering Conference (CUSEC) last year (2008). The presenter is Zed Shaw who’s a famous Ruby guy or something. The video is around 70 minutes long. The first part of the talk is mostly about a Document Management System he worked on, kinda interesting, but the second part is better where he talks about people who program cool things as a hobby and how to avoid becoming just another corporate code.

Star Ocean: Second Evolution

| Categories: Gaming | Tags:

Amazingly, despite my work schedule I still managed to finish a rather old-school RPG. I finished Star ocean: Second Evolution for the PSP today, clocking in 30 hours of playtime. I have to say I quite enjoy playing RPGs on handhelds. RPGs are usually rather long games so it’s nice being able to handle them in bite-sized chunks while commuting, et cetera. Star Ocean: The Second Story was probably one of the best Japanese RPGs to come out of the Playstation era, despite the lackluster translations of that time (hey, it was pre-year 2000, all translations were pretty bad then!

Magic the Puzzling: Nicol Bolas

| Categories: Magic the Gathering | Tags:

At the Conflux release event, we were given posters of the four planeswalkers fighting againt big, bad Nicol Bolas. It got a friend and I talking: could Nicol Bolas actually win against the four planeswalkers? The situation is: Player A controls [Nicol Bolas, Planeswalker][1], at starting loyalty. Player B controls [Ajani Vengeant][2], [Tezzeret the Seeker][3], [Elspeth, Knight-Errant][4] and [Sarkhan Vol][5], all at starting loyalty. Assuming each player has no other permanents and they cannot play any other spells.

Conflux Release Event

| Categories: Magic the Gathering | Tags:

I decided to attend the Conflux release event last Saturday, Feb 7 at Neutral Grounds Galleria. As usual, I still had to go to work first so I didn’t make it in time for the first 32-man flight and had to wait for NG to restock on product for the second flight. Unfortunately, they were short on SoA boosters, so we would be playing sealed with 6 boosters of Conflux. Yes, six.

Code Quality

| Categories: Software Development | Tags:

I was doing code reviews on an interface file-processing framework to be used in one of our projects. The code was workable and already being used by several programs, and I didn’t see any major functional flaws. But design-wise I felt that it could stand for some improvements/refactoring to be “better object-oriented code” or “easier to maintain”. The current design required a lot of inheritance – the usual way of doing things in older Java code at work.

Conflux Prerelease

| Categories: Magic the Gathering | Tags:

It’s my first Magic outing after more than a month of hibernation. Hopefully Conflux shakes up standard and makes Magic more fun again. Let’s go! Usually I have to register an awesome pool and then get passed a mediocre one. I knew it was different this time around when the guy two seats to my right announced he was able to form a good Naya deck from the Shards of Alara packs alone!

Valkyria Chronicles

| Categories: Gaming | Tags:

Finally finished Valkyria Chronicles last Saturday, clocking in at around 25 hours. Quick Review: Beautiful, beautiful game, even on my SD TV; it’s like watching a flowing watercolor painting When you start the game, all the dialogue/cutscenes seems a bit draggy but eventually you get used to the pacing and then you don’t mind because the battles are really engaging. Speaking of battles; I’m not sure if it would be good for beginners to tactical games.

Using Django Pingback

| Categories: Software Development | Tags: royondjango

I actually had some trouble using django-pingback on my custom blog engine; the django-pingback documentation is mostly fine, but there were some caveats that I had to discover myself through a bit of debugging: The URL specified for the XML-RPC endpoint in the HTML head needs to be a full absolute url including domain, i.e. http://roytang.net/xmlrpc/, which gave me trouble when I was trying to test using localhost pinging to an online server.

For the past few months, I’ve been encountering the COM Surrogate Has Stopped Working Error in Windows Vista, as described here. Unfortunately, most of the recommended fixes on this page didn’t work for me. (I had neither DivX nor Nero installed, etc.) Eventually, I had to download InstalledCodec and use trial and error disabling of all the codecs in my system to trace the problem. I narrowed it down to the Xvid Codec and ended up having to disable it.

Gaming in 2009

| Categories: Gaming | Tags:

I wanted to make a calendar of game release dates in 2009 (so I won’t forget), but apparently details are sparse. The only games that I’m remotely interested in that already have release dates are: 20 Jan 2009: Mana Khemia: Student Alliance (PSP) Star Ocean: Second Evolution (PSP) 17 Feb 2009: Dragon Quest V: Hand of the Heavenly Bride (NDS) Street Fighter IV (PS3) 17 Mar 2009:

Speed Reading

| Categories: Links Meta | Tags:

I came across a website that provided an online Speed Reading Test. Most people I know generally know me to be a fast reader so I decided to take the test. My results: 472 words per minute screen reading, at 82% comprehension, which the website says classifies me as a “good reader”. Apparently the best readers can read at 700wpm at 85% comprehension, sounds tough =/ Try the quiz and post your results here.

Syntax Highlighting using Pygments

| Categories: Software Development | Tags:

My current blog app supports syntax highlighting in the blog posts, something I cribbed off Djangosnippet #119 One problem I encountered was that there was no quick visual reference for the styles available with pygments, so I wrote a short demo page here so that I could easily see the appearance of each syntax highlighting class. Of course, I haven’t had a chance to use it in a post yet…

PTQ Kyoto 2

| Categories: Magic the Gathering | Tags:

The last limited tournament of the season, it was last week, December 20 at Robinson’s Galleria. The format was Shards of Alara sealed deck. For once, I opened a pretty good pool. Unfortunately, I failed to make the follow through. Decklist and (short) tournament report follows. Creatures 1 Sigiled Paladin 1 Welkin Guide 1 Viscera Dragger 1 Exuberant Firestoker 1 Predator Dragon 1 Ridge Rannet 1 Rockslide Elemental 1 Cylian Elf 1 Mosstodon 1 Mycoloth 1 Wild Nacatl 1 Bull Cerodon 1 Rip-Clan Crasher 1 Steward of Valeron Spells 2 Oblivion Ring 1 Resounding Silence 1 Dragon Fodder 1 Magma Spray 1 Resounding Thunder 1 Skeletonize 1 Soul's Fire Lands 1 Obelisk of Naya 1 Arcane Sanctum 2 Bant Panorama 3 Plains 6 Mountain 5 Forest Sideboard 2 Angelic Benediction 1 Angelsong 1 Dispeller's Capsule 1 Gustrider Exuberant 1 Sanctum Gargoyle 1 Cloudheath Drake 1 Coma Veil 1 Courier's Capsule 1 Covenant of Minds 1 Dawnray Archer 1 Etherium Sculptor 1 Jhessian Lookout 1 Outrider of Jhess 1 Spell Snip 1 Vectis Silencers 1 Bone Splinters 1 Corpse Connoisseur 1 Dreg Reaver 1 Immortal Coil 1 Infest 2 Shore Snapper 2 Undead Leotau 1 Dragon's Herald 1 Goblin Mountaineer 1 Lightning Talons 1 Viashino Skeleton 1 Ooze Garden 1 Resounding Roar 2 Savage Hunger 1 Soul's Might 1 Carrion Thrash 1 Deft Duelist 1 Fire-Field Ogre 2 Goblin Deathraiders 1 Hindering Light 1 Jhessian Infiltrator 1 Kederekt Creeper 1 Sprouting Thrinax 1 Obelisk of Esper 1 Obelisk of Grixis 1 Esper Panorama (The decklist above only lists 39 cards… not sure what the missing 40th card was )

Colophon 2008

| Categories: Software Development | Tags: royondjango

Frontend: All page templates are valid (X)HTML. However, I choose not to claim valid XHTML (and no doc type declaration) since I can’t guarantee that blog posts I write are compliant! The site uses standard CSS and uses the Blueprint CSS Framework for the grid layout of the page. The site design is entirely original (if not simple and bland – I’m not very good with website design yet!). The site has minor usage of JQuery Javascript library in some parts.

roytang.net site update

| Categories: Meta | Tags:

Previously I hosted two separate WordPress blogs on roytang.net, the old one I’ve had since forever, and a separate one that discussed only magic related articles. It was a bit bothersome to have two WordPress installs though. Now that I’ve migrated to a Django backend, I decided to merge the blogs back into one. The blog now has the following sections/categories: Magic the Gathering – for posts related to MTG Software Development – for posts related to Software Development (hopefully I can write more about this topic) Gaming – originally I didn’t have this category, but looking at previous contents of the blog and my delicious links, this is one of the things I write about the most, so I made it a separate category Weblog – everything else I can think of Each category has a separate RSS feed you can subscribe to – so that if you’re only interested in MTG posts you can subscribe to the MTG category feed, etc.

Transition to 2009

| Categories: Meta | Tags:

Well, it’s a bit early. But if you’re reading this then I’ve successfully migrated the roytang.net website to a new host. See you after the jump! Merry Christmas! Comments Comment by mikong on 2008-12-26 17:27:44 +0000 Congrats! powered by django, nice 🙂 Comment by roy on 2008-12-27 00:20:18 +0000 More details later. I think the timezone on the server is wrong, using this comment to test.


| Categories: Gaming | Tags:

I purchased a PS3 last week! As is typically with me making large purchases, a was wishy-washy about it for a whole two weeks (although Alvin had been egging me to buy one for months). To show how indecisive we are, here’s the conversation we had at the store: _ Saleslady: Sir, anong kulay ang gusto nyo? Black, silver or white? Me: Alvin, ano gusto mo? Alvin: Kahit ano, silver na lang siguro.

FNM 19-Dec 2008

| Categories: Magic the Gathering | Tags:

I’m on vacation, so it means I actually have time to hit FNM. I sleeved up the Kithkin deck (no more Blightning for me!) and headed over to Robinson’s Galleria (Getting robbed along the way fyi). Nothing surprising, I managed to make 3-1, good enough for fourth place and four packs with crap rares inside. My loss was to the mirror match, most probably due to my lower card quality, as I had only 1 planeswalker in my deck.

My Phone Was Stolen

| Categories: Just Another Day | Tags:

I wish there was more to the story, but the true story is rather short: I had a moment of carelessness as I hurriedly tried to disemabark from the crowded MRT, and by the time I was getting on an FX at Megamall I noticed that the front pocket of my bag was open and my phone was missing. The PSP which was in the same pocket was still there so I guess the thief was in a hurry.

I actually initially thought that there would be a PTQ this weekend. When I found out there would just be a normal Standard tournament the night before, I assembled a deck quickly. I went with Blightning Beatdown:

Unfortunately, things did not go well for our hero. Tournament report follows.

links for 2008-12-01

| Categories: Links | Tags:

HOWTO: Be more productive (Aaron Swartz's Raw Thought) (tags: lifehacks productivity) Comments Comment by Tim Reynolds on 2008-12-08 08:07:20 +0000 Nice post. Thank you for the info. Keep it up.

Fixing up the comments

| Categories: Software Development | Tags: royondjango

I played around with the built-in comments app today, trying to clean it up. Some findings: Some of the moderation views, such as flagging a post or deleting a post, accept a next parameter that determines where the view will redirect to after the operation. However, the way the url’s are set up, there’s no easy way to pass this parameter normally, even through query strings. THis lovely bug is documented in http://code.

I’ve been busy at work so fell a bit behind with Django. Last night I worked on a WordPress importer, so that I could migrate posts from my current blog(s) into the Django-powered blog that I’m coding. I’m using BeautifulSoup to parse the WordPress export file and insert them as Django objects. Since I was running the script repeatedly, I had to figure out how to easily run it from the command line, without having to run it from inside manage.

PTQ Kyoto I

| Categories: Magic the Gathering | Tags:

The PTQ was last Sunday, November 17 at Robinson’s Galleria. As per usual, I opened and registered a pretty good pool with 2 [Battlegrace Angel][1] and [Tezzeret the Seeker][2] . The pool I got passed to me and the deck I built below: Lands 1 Grixis Panorama 1 Naya Panorama 1 Plains 3 Swamp 5 Mountain 4 Forest Creatures 1 Skeletal Kathari 1 Viscera Dragger 1 Hell's Thunder 2 Hissing Iguanar 1 Jund Battlemage 1 Algae Gharial 1 Cavern Thoctar 1 Jungle Weaver 1 Manaplasm 1 Rhox Charger 1 Blood Cultist 1 Carrion Thrash 2 Goblin Deathraiders 1 Kresh the Bloodbraided 1 Rip-Clan Crasher Spells 1 Oblivion Ring 1 Resounding Silence 1 Skeletonize 1 Soul's Fire 1 Branching Bolt 1 Jund Charm 1 Obelisk of Grixis 1 Arcane Sanctum Sideboard 1 Angel's Herald 1 Ethersworn Canonist 1 Excommunicate 2 Knight of the Skyward Eye 1 Marble Chalice 1 Soul's Grace 1 Welkin Guide 1 Call to Heel 2 Cancel 1 Cloudheath Drake 2 Coma Veil 1 Jhessian Lookout 1 Outrider of Jhess 1 Resounding Wave 1 Sphinx's Herald 1 Vectis Silencers 1 Banewasp Affliction 2 Deathgreeter 1 Immortal Coil 1 Resounding Scream 1 Scavenger Drake 1 Shadowfeed 1 Shore Snapper 1 Bloodthorn Taunter 1 Exuberant Firestoker 1 Goblin Mountaineer 1 Incurable Ogre 1 Viashino Skeleton 1 Volcanic Submersion 1 Lush Growth 1 Resounding Roar 1 Soul's Might 1 Topan Ascetic 1 Carrion Thrash 1 Fire-Field Ogre 1 Kederekt Creeper 1 Kiss of the Amesha 1 Qasali Ambusher 1 Rakeclaw Gargantuan 1 Sigil Blessing 1 Waveskimmer Aven 1 Obelisk of Bant The pool had decent removal, but no big game-winning bombs.

Just kidding. I don’t have a draft cap or anything. I went drafting with our would-be GP Taipei contingent last November 12 (Wednesday). I actually almost never play sanctioned matches outside of the weekend tournaments, but I was a bit tired from work and wanted to blow off steam, so I went ahead to Robinson’s Galleria and waited a couple of hours for the 8-man draft to fill up. I opened with Cruel Ultimatum as my first pick, then got a couple of white weenies (Akrasan Squire and Sigiled Paladin) before getting a 4th-pick Agony Warp.

Free Flex Shirt from Adobe

| Categories: Software Development | Tags:

21112008130.jpg Originally uploaded by zroytang A while back I got an email telling me that Adobe was sending out free Flex T-Shirts to people who had contributed to Flex 3. I had reported a few bugs on Flex JIRA, apparently that was enough for me to get a free shirt! The picture here shows the back of the shirt, the front just has a small Adobe logo.

links for 2008-11-12

| Categories: Links | Tags:

Simple Search -- Gatherer -- Magic: The Gathering Beta version of the new Gatherer (tags: magicthegathering) BrowserPlus™ (tags: programming javascript web framework) Snackr: an RSS ticker for Windows/Mac/Linux built using Adobe AIR and Flex. (tags: flash software cool)

GPT Taipei IV

| Categories: Magic the Gathering | Tags:

Tournament was last November 2 at Robinson’s Galleria. The format is Shards of Alara sealed. Because the store lacked tourney packs, the tournament was split into two halves; one half would get 1 tourney pack + 2 boosters, the other half would get 5 boosters. I played in the tourney pack half. My pool and decklist to follow. Basically, I played Naya again, splashing blue for (this is ridiculous) 2 Kederekt Leviathans!


| Categories: Magic the Gathering | Tags:

“Clearly Chris Woltereck was one of the best players in the room, and probably could have won the tournament with a ham sandwich.” – Gerry Thompson on Cruel Control winning the 25-Oct SCG 5k Standard Tournament


| Categories: Software Development | Tags: royondjango

I wanted to add some basic tagging to my blog app so I tried out django-tagging. Unfortunately, the featured downloads on the Google Code site are quite out-of-date and would not work with Django 1.0, so I did a subversion checkout instead. If you’re getting an error like “ImportError: cannot import name parse_lookup”, then you need to get the source code from SVN. Adding the tagging to the blog was pretty easy:

GPT Taipei II

| Categories: Magic the Gathering | Tags:

2nd Trial for Taipei was last Sunday, October 17 at Robinson’s Galleria. I open to register a very mediocre pool while the rest of the guys at my table open awesome pools with lots of bombs. “Gee, I hope we don’t keep this pool.” The judge comes over, rolls the dice and we keep our pools. Awkward. Lands 2 Crumbling Necropolis 9 Plains 1 Mountain 5 Forest Creatures 2 Akrasan Squire 1 Ranger of Eos 1 Rockcaster Platoon 1 Sighted-Caste Sorcerer 1 Sigiled Paladin 1 Yoked Plowbeast 1 Jund Battlemage 1 Ridge Rannet 1 Vithian Stinger 1 Cavern Thoctar 1 Court Archers 1 Drumhunter 1 Jungle Weaver 1 Wild Nacatl 1 Steward of Valeron 1 Woolly Thoctar Spells 1 Oblivion Ring 1 Magma Spray 1 Resounding Thunder 1 Sigil Blessing 1 Obelisk of Jund 1 Quietus Spike Sideboard 1 Angel's Herald 1 Angelsong 2 Dispeller's Capsule 1 Sunseed Nurturer 1 Call to Heel 2 Cathartic Adept 1 Coma Veil 1 Courier's Capsule 2 Jhessian Lookout 1 Kathari Screecher 1 Mindlock Orb 1 Outrider of Jhess 1 Spell Snip 1 Tortoise Formation 2 Blister Beetle 1 Bone Splinters 1 Dreg Reaver 1 Dregscape Zombie 1 Executioner's Capsule 1 Skeletal Kathari 1 Undead Leotau 1 Goblin Mountaineer 2 Lightning Talons 1 Thorn-Thrash Viashino 1 Thunder-Thrash Elder 1 Volcanic Submersion 2 Behemoth's Herald 1 Godtoucher 1 Sacellum Godspeaker 1 Savage Hunger 1 Soul's Might 1 Agony Warp 1 Blightning 1 Fire-Field Ogre 1 Hindering Light 1 Kederekt Creeper 1 Necrogenesis 1 Punish Ignorance 1 Sprouting Thrinax 1 Tidehollow Strix 1 Obelisk of Esper I guess I pretty much misbuilt the deck.

Deployment Problems

| Categories: Software Development | Tags: royondjango

So I got a basic blog app up and running. Posting, paged archives, etc. Comments implemented using the django.contrib.comments. No problems here, the only caveat being most of the current documentation found by Google searches refer to the pre-1.0 version. Need to peruse the official docs for 1.0 stuff. RSS feeds implemented using django.contrib.syndication, this one seems fine. I tested it and it’s running fine on localhost. I also have a free django hosting account at http://bells-n-whistles.

Philippine Airlines

| Categories: Software Development | Tags:

My dad asked me to help book a flight from Manila to Boracay for my uncle who would be a balikbayan this weekend. The rates at PAL were better, so we decided to book using their website. I did the search for the flights, booked the seats, input my uncle’s details, etc. When we got to the screen to input the credit card info, my dad went to call my uncle to confirm and to get his credit card.


| Categories: Tech Life | Tags:

My brother pointed me to a new (to me at least) online music service called imeem. The website caught my interest for two reasons. It uses Adobe Flex, a technology which I’ve been using for the past year or so. Any Flex developer knows it’s Flex just by looking at the widgets. (Click to enlarge the screenshot!) The service allowed me to find an mp3 which I’ve never found before and have used as a benchmark for how good an mp3 search service is.

“when redirecting, how can I make the redirect URL decoupled from the urls.py of the parent app?” -> It turns out that HttpResponseRedirect supports relative paths, so this was fine. return HttpResponseRedirect(“../” + str(post.id) + “/”) I got the basic posting structure up. /post/new/ -> To make new posts /post// -> To view a single post /post/all/ -> To view all posts I should probably start thinking of a better url scheme.

Starting out

| Categories: Software Development | Tags: royondjango

The quintessential app to learn from is of course a blog. Started using a simple Post model. Added the new post form and view. Can now successfully insert posts into the DB. Next: – create the detail page that will show the post after saving Figure out: – when redirecting, how can I make the redirect URL decoupled from the urls.py of the parent app? i.e. if the parent app has the following mapping:

Every Wednesday is Hotdog Day!

| Categories: Meta | Tags:

Actually, I’m writing this post to test comments on the blog, which someone has reported to be currently borken. See ya in the comments. Comments Comment by Roy on 2008-10-15 21:08:39 +0000 Test comment. Comment by Roy on 2008-10-15 21:08:59 +0000 Nakapacomment naman. Comment by Roy on 2008-10-15 21:15:32 +0000 Test using IE Comment by Roy on 2008-10-15 21:16:53 +0000 Baka malas lang. Comment by Roy on 2008-10-16 21:07:41 +0000 Testing IE6