Web Frameworks – Open Source or Roll Your Own?

A while back I wrote about my experience coding and maintaining an in-house web framework at a previous job. It was a full-stack web framework. We had libraries for front-end Javascript up to server-side database connections. And the entire stack was tightly coupled. But while the framework was serviceable, it was almost always behind modern trends in web development. I always felt like we were playing catch-up. And as a developer I wanted to widen my horizons and try out more things. So more than once I had discussions with higher management about using open source web frameworks in some projects.
 
Unfortunately, our in-house web framework already had a long history and most of the devs in our company were used to it. The company had tried using a different Java-based framework stack before. It was back in the days when things like Struts, Spring, Hibernate, etc were beginning to ramp up. It kind of ended in disaster – that project ended up taking a lot of effort, had a lot of technical problems, and so on. I believe this gave the company leadership the impression that investing in other frameworks are not worth the risk and effort. It’s a form of Not Invented Here syndrome.
 
I admit there are some advantages to having your own in-house web framework. After all, all the popular web frameworks today started out in-house in some company and later they decided to release as open source. And many companies do fine using in-house frameworks. Using an in-house framework means full control over the behavior. And you can tailor the functionality and coding style to your internal processes. In fact it can be a good value add to your company if your in-house framework did something better or unique compared to open source ones.
 
But there are also significant advantages to using open source frameworks. Maybe I should have used some of these during discussions when I was there:
 
  • With an open source framework, we wouldn’t have to maintain the core functionality of the framework ourselves. We wouldn’t have to maintain the full stack ourselves. We would only need to maintain any customisations and extensions we write for our own needs. For our in-house web framework, every so often we’d spend some effort to come out with a new version with incremental improvements. With an open source framework, we could instead redirect that effort to higher-value work.
  • There’s more learning material available online, and they don’t have to be maintained in-house.
  • There’s a wider base of experience to draw from. For our in-house framework if you encountered a problem requiring deep framework knowledge, there were only a handful of high-level experts in the company. For an open-source web framework, that expertise is widely available on the internet through sites such as Stack Overflow.
  • Having knowledge/experience in established frameworks means your company can get more contracts. You can take on projects that use those frameworks. You don’t have to spend proposal space trying to convince clients that your in-house framework is great. With open source frameworks you can reuse marketing copy by someone else!
  • Working on well-known, established frameworks is better for your developers career-wise. It gives them more knowledge that could be transferable to other jobs. While this isn’t a benefit to the company per se, it will make the company more attractive to developers. It even allows the flexibility of hiring developers experience with that framework.

There are some disadvantages too of course:

  • As mentioned above, there is time and effort involved in learning a new open source framework. This effort is mostly for the experienced developers – for new hires they will need to learn something regardless
  • Having an in-house team developing your own framework means you have a core set of developers experienced in the full stack. Reliance on open source frameworks means most of your developers won’t be familiar with the low level details.

In the end, there’s no guarantee that using an open source framework will be painless or be better than developing one in-house. So I can understand the decision to stick with what you know. But for me as a developer, I feel that it’s more rewarding to be exposed to different frameworks.

In fact I wrote this post because recently someone asked me what my “go-to web framework” was and I said I didn’t have one. I’d rather be flexible enough to learn and work with any existing framework. In our industry where change happens quickly and can catch you by surprise, I think that flexibility is a much more valuable asset to have.

A Bus Ride in Metro Manila

 
“Grabe naman kasi ang ginagawa nyo sa pasahero” (This is too much for the passengers), she said. She was a short, old lady trying to get to the front of the bus so that she could disembark. But like most city buses in Metro Manila during rush hour, the bus was filled to the brim with people, many of them standing tightly packed in the aisle, holding on to handrails on the bus ceiling or the nearby seats. Her young son, a short boy of maybe 14 years, weaved through the standing bodies packed in the bus’s aisle to retrieve a plastic bag they had brought on board.
 
It took them more than five minutes to disembark, even with the driver getting off to help them with their bags. City buses usually have a conductor to collect fares and assist passengers, but at this stop the conductor was way at the back collecting fares.
 
It was a Saturday early evening. A couple of hours earlier at around 4pm I had decided to take a bus from the Mall of Asia in Pasay. I was headed home to Tandang Sora in Quezon City, on the opposite side of the urban sprawl that is Metro Manila. I had the option of a short jeepney ride to the MRT station and taking the train, but I was rather sleepy so I decided to board a city bus even though it would probably be a longer ride. “It’s Saturday,” I said to myself. “Surely there won’t be much traffic.”
 
I got on board a Fairview-route bus waiting near the mall. Since this was the first stop for the bus, I was able to get a seat up front near the driver and the bus doors. I paid my fare (P40 apparently) and put my head down on my bag, hoping to catch some zzzs along the way. I assumed the ride would take around an hour and a half.
 
I managed to get a little sleep, but even when I woke up almost an hour later, the bus had just managed to make it past Buendia. That was only around a third of the trip. Looks like I was in for the long haul.
 
By this time, the bus was already full. No more seats were to be had and any passengers that boarded would have to stand in the aisle. “Diretso lang po tayo sa likod!” (“Let’s move to the back please”), the conductor would urge, to free up space for disembarking passengers near the front. But for some reason or another, Metro Manila commuters always prefer standing around near the bus doors, which means that area is always the most crowded. Pretty soon, new passengers are no longer able to move to the slightly more spacious far end of the bus. Many of the passengers are women, some senior citizens even. I think about getting up from my seat to let someone else sit, but like many times before I come to the conclusion that being a rather large person, it’s far more space-efficient for me to be in a seat than blocking the aisle.
 
“Grabe naman siksikan dito!” (“It’s too tight in here!”), one of the male passengers complains. But the conductor is not taking any of their complaints. “Ganyan po talaga pag rush hour! Kung ayaw nyo po ng siksikan magtaxi kayo!” (“That’s how it is during rush hour! If you don’t like it, you should take a taxi!”)
 
He’s not wrong. Almost always during rush hour, city buses passing through the middle parts of Metro Manila’s main thoroughfare EDSA are filled to overflowing with people. Many non-airconditioned buses will even have people standing in the open doorway, hanging on to the bus railings for their livesPick-up points near the middle of the route, such as Megamall in Mandaluyong, are often battlegrounds where commuters struggle and elbow each other to get into standing room positions on already crowded buses.
 
Most commuters have little to no alternative. While the MRT was supposed to supplement public transport along EDSA, most of the time it is crowded as well and these days prone to breakdowns. Most of the stations often do not have working escalators so many commuters, especially older people, are hesitant to use it. Most of the poorer city denizens can’t afford to take taxis, but even then they are in short supply. Even if you are lucky enough to find a taxi, many drivers are selective and will either ask for exhorbitant ‘tips’ or outright deny fares who want to go too far away or through too much traffic. Uber’s surge prices get insane during rush hour as well.
 
A lot of people, especially drivers of private cars, complain about city buses, and justifiably so. Drivers and conductors are paid on a “boundary” basis. To maximize their earnings, they need to get as many passengers as possible during their trips. This means many of them are overzealous and often cause small to large traffic jams in their pursuit of more passengers. They have no concern for overloading laws (which are rarely enforced anyway) and will pick up passengers even if there’s no bus stop. At least as long as there are no traffic enforcers around.
 
Every so often there are suggestions to reduce the number of buses on EDSA. Anyone who’s seen how full these buses get during rush hour should realize this is a ridiculous proposition. Despite being undisciplined drivers, EDSA buses are far more space-efficient in terms of the number of commuters they are able to ferry across the metropolis, as compared to the large volume of private cars on the road. What’s needed is more professional bus services. Drivers and conductors should be paid a fair salary so that they don’t chase after passengers so ruthlessly. But such proposals never gain headway – the bus franchisees often complain that they are barely making enough money as it is.
 
I’ve been a commuter for most of the past two decades, and I’ve steadily seen the congestion for city buses and EDSA traffic go from bad to worse to much, much worse. These days I try to avoid commuting too far (I’m lucky to have that option). But on days like these when I’m crisscrossing the entire metropolis, I’m reminded of how bad the situation is. The congestion on EDSA is representative of the congestion in Metro Manila itself.
 
It’s almost 6:30pm before I make my stop at the Quezon City Memorial Circle. The bus ride took nearly two and a half hours. The old woman who takes my seat is grateful for the reprieve. A few minutes before me, the man who had been arguing with the conductor disembarked, and they exchanged another set of bitter words.
 
“Gago, tatandaan kita! Di na ko nagpapasakay ulit ng ganyan!” (“Fool, I’ll remember you. I won’t let you board next time!”), the conductor shouts after him. He turns to the rest of the passengers and reiterates that they shouldn’t complain about the congestion, since that’s how it always is. I remarked, as I got ready to get off the bus, that perhaps that man and that old lady weren’t regular commuters, and some of the other passengers chuckled.
 
Sadly, this was the reality that Metro Manila commuters had to live with. It’s a reality that can perhaps only be addressed by a concerted effort to decongest the metropolis and to professionalize and modernize the public transport services. There are no quick fixes or solutions coming forth. So for the foreseeable future, this is what we live with.

Grand Prix Manila 2017

I don’t really play Magic regularly anymore; Last year I only played Standard because I was Q’ed for the WMCQs. But when there’s a local Grand Prix, oldies like me crawl out of the woodwork and try to believe we can still do well in a tournament with minimal prep. Grand Prix Manila 2017 was to be Standard format, held on June 2-4, 2017, at the SMX convention center.

At the start of the year I already knew I would be playing in this year’s GP Manila, but since I hadn’t played Standard for well over a year, I didn’t really know what I would be playing. But I started keeping track of what decks there were in the metagame. Sadly, the meta was not so good, with an oppressive combo deck dominating the field. Like many others, I assumed there would be a ban at some point, which means I couldn’t commit to a deck too early.

I only decided on a deck after the B&R announcement shortly before the release of Amonkhet. At that point, looking at the available cards we had, I settled on trying to put together the Temur Marvel deck. It took me a couple of weeks to put the deck together, then I ran it through an FNM and a couple of other smaller tournaments. I was satisfied enough to play it for the grinders on Friday, Day 0 of GP Manila.

If you’re playing Standard this year, you’re familiar with this guy

Day 0 – Friday, June 2

As I’m from Quezon City, the venue is quite far, and to be honest I was a bit stressed out at the idea of commuting to SMX three days in a row. But still I went. I started out determined to play as many Standard grinders as a I could on Day 0, both to up my chance of earning byes for the GP and to give me more familiarity with my deck. Unfortunately, things did not go so well. I ended up 2-6 for the day, not even earning any prize points. I played quite a few mirror matches, something I hadn’t been able to do in my previous tests. It gave me some insights so even though I came home late that night, I stayed up late tweaking the main deck and the sideboard based on what I learned during the day.

Day 1 – Saturday, June 3

I woke up early and took the train. Saturday was a bit lighter commute than Friday, but not by much.

This was the deck I ran:

I opted to play with Trackers in the main because I found my mirror match losses from Day 0 often came to a Tracker sticking on the opposing side. I also dropped down to 3 Ulamogs because it felt like I often got stupid hands with 2 or 3 of them.

Sadly, most of my tweaks didn’t matter much as I performed terribly. Here’s my day 1 record:

R01 1-2 LOSS vs UR Kefnet Both games he won, he had the turn 3 Kefnet which I had no answer for.
R02 1-2 LOSS vs RB Hazoret. This deck is great and fun, and the matches were really close, but eventually I ran out of Marvel spins
R03 1-2 LOSS vs UW Flash. I had a Marvel, but it ran into a Spell Queller. In desperation I tried to kill the Queller while he was tapped out, spun into a second Marvel, spun again into nothing.
R04 2-0 WIN vs Monoblack Zombies
R05 0-2 LOSS vs Temur Marvel. Made the mistake of spinning on my turn when he had 6 energy. My ulamog died to his ulamog
DROP

I feel like I didn’t make any particularly bad plays during the first 3 rounds. The Marvel spins just didn’t work out for me. I may have been already starting to feel the lack of sleep during round 5 so that’s a thing. (I immediately went home to sleep after dropping.)

Their decks did seem particularly tuned towards beating Marvel. That’s one of the big downsides of just netdecking the dominant deck – everyone’s gunning for you. The lack of prep time was really hard on me too. The last time I did well in a Grand Prix was GP Manila back in 2015, and that time I had been playing Jeskai for months before the GP. Unfortunately I had been caught between a rock and a hard place – if i had assembled a deck months before it likely would have been Saheeli combo (since I used to play Twin in Modern), which meant I would have been the victim of the bannings. Ah well, can’t dwell on the past too much. Have to note it for next time.

Will there be a next time? On the bus ride home I was so dejected at the poor performance I wondered if I was just done with Standard forever. But I suppose it depends largely on the metagame; Marvel was pretty bad whether you were playing it or against it. In any case, I’m also somehow qualified for Nationals this year, so at the very least I’m playing Standard again in September. (Mostly because I want the promo Inkmoth Nexus)

Day 2 – Sunday, June 4

I decided to come back to just play for some prizes in side events (and also because I had to return some cards I borrowed). Day two had one of my favorite side events: Chaos Sealed! I played this after scrubbing out of GP Singapore 2015, so this may become a day two tradition for me lol.

For Chaos Sealed, I got dealt the following boosters: EMA, MMA2017, BFZ, SOI, Dissension and Torment. I think I got a pretty good pool, value-wise:

(No, I didnt dare play or shuffle the FOW)

My pool was kinda light on removal, but I had like a Llanowar Elf and some basic land search and three signets, so I decided to just ramp into some Eldrazi! A number of people were shocked that I decided to run the Ulamog, and a friend even told me I’d never be able to cast it. I sent him a picture of that Ulamog ready to attack for lethal on the first game in the first round.

I went 3-2 with my pool. My losses were to a Deadeye Navigator (that guy is a nightmare to get rid of) and to a deck that was almost entirely removal (I died to a Control Magic’ed Benthic Infiltrator. More like InfilTRAITOR amirite?). Not bad. I won enough points to split a box with some guys, and the FOW/ Ulamog meant I came out ahead value-wise. The sad thing about these events is that they’re among the last to finish, so the prize wall is kinda cleared out by then and we weren’t able to get a Kaladesh box, had to settle for Amonkhet.

GP Manila Loot

Competitively the GP was a bust for me, but at least I came away with some swag and some packs. I’m also planning to attend GP Singapore in December this year, and that’s Sealed/Draft so hopefully I do better there. Until then, thanks for reading!

Tokyo, Redux

So last April my friends and I took a second trip to Japan. This time we mostly stayed around Tokyo, while taking a few days off in-between to visit Fuji, Hakone and Nikko.

I went to Fuji, but that’s not in Tokyo!

I like Tokyo, so I’ll talk about Tokyo for now. I’ve only been here twice, but I could imagine myself living here for an extended period of time. It solves my top three problems with Metro Manila: overly hot weather, poor transportation options, and poor internet.

Both visits I found the temperatures to be within the generally agreeable range of around 5-25 degrees celsius. The low end is slightly too cold, but manageable. Of course, I haven’t experienced actual Japanese winter, so it’s probably colder then.

Transportation is great and easy! There’s like twenty lines of trains or such (OK, I didn’t really count, but there’s a lot!) and a lot of buses too. The great thing is that the trains and buses run on very exact schedules. At trains stations or bus stops you’ll see a list of times to the minute telling you when the next train or bus will arrive. That kind of thing would be unheard of in Metro Manila.

One of the downsides is that the train lines can get a bit confusing. They’re not all interconnected either – there’s some lines that are part of the Tokyo Metro, while some are part of JR (Japan Rail), and so on. It can cause some confusion for example some places might have both a Metro station and a JR station, and they might not be connected. The staff are always very helpful in the train stations though, feel free to ask them how to get to a particular station. They will try their best to help even if their English isn’t the best. Most stations will also have helpful signage showing maps and routes and stuff, and the trains themselves will have announcers telling you what the next station is.

Even though most signs aren’t in English, they should be fairly easy to understand

For paying your transportation fares, there’s a few options, but for me the best one is to use an IC card – these are reloadable cards that you can use on any train or bus in Tokyo. (I have no idea what IC means.) You can get one at the airport when you arrive – there’s two providers, it’s either Suica or Pasmo and you can reload them at any train station. There’s also an option to get a 2-day or 3-day unlimited metro pass, which is a great idea if you plan to travel around Tokyo many times within a short period, but it only works with Metro lines which can be a bit restrictive.

Internet in Tokyo is obviously very good of course. If you’re staying at an Airbnb, try to get one that provides you with a mobile wifi unit you can use while wandering about. Being a tourist these days is a lot easier with internet, given google maps and similar apps. If you don’t have a mobile wifi unit, you can also leech free wifi from any 7-11 or train station!

The city is also very friendly to people who like to walk – during this last trip I managed to walk from Asakusa to Akihabara at one point. While wandering around if you get hungry there are always shops nearby and lots of vending machines to get a quick drink from.

There are vending machines on practically every corner, some of them even sponsored by American celebrities!
I’m not much of a foodie so I won’t comment on the food, though I will admit to eating a lot more Japanese curry when I’m here.

What to do in Tokyo though? If you’re a gamer or an otaku, there’s obviously Akihabara – on each trip I went there more than once just to browse the numerous shops selling comics, toys, figurines, games, and so on. I would spend even more time there if I could read Japanese of course! (Working on it!)

Aside from that, there’s a few tourist spots you can visit in the city proper. Some of the places I’ve been to include:

  • Senso-ji temple in Asakusa. This is a good place to visit mainly because Asakusa is a good area to stay in, as many of the places to visit are easily accessible from Asakusa station
  • Tokyo Skytree in Asakusa. I only climbed the Skytree during the second trip, it offers a great view of the city.
  • Tokyo Tower. It’s smaller than the Skytree, but I’m sure fans of Rayearth will want to visit it haha. I visited it on this last trip to see One Piece and Final Fantasy exhibits.
  • Shibuya crossing. It’s a famous crosswalk for some reason, and there’s also a statue here of that dog Hachiko. There’s also a lot of shopping places nearby if you like that kind of thing.
There’s a lot of temples in Tokyo (and the rest of Japan) where you can send prayers like this one here
This is a picture of the Tokyo Skytree

Even if you don’t have much you want to visit in Tokyo proper, it’s a great base of operations that you can use to visit nearby areas. That’s what we did during this trip. You can leave most of your luggage in storage – there are coin lockers in the major stations – and just take an overnight bag to visit nearby tourist spots like Fuji or Edo wonderland in Nikko.

I’m not sure when I’ll visit Japan again (I don’t think going there for the Olympics is a good idea), but I wouldn’t mind staying in Tokyo again, that’s for sure.

 

Review: Persona 5 (You Never Saw It Coming)

My first Persona game was Persona 4 Golden on the Vita – a fantastic game. After that I dived into Persona 3 Portable and eventually the spin-off games Persona 4 Arena (and Ultimax) and Persona Q on 3DS. So it was no surprise that one of the game releases I was most looking forward to this year would be the next numbered game in the series: Persona 5 on the Playstation 4.

Like P4G before it, the focus is on the school life of a young man forced into a new environment, interspersed with some good old JRPG dungeon crawling. You meet a ragtag group of misfits and somehow band together to save all of Japanese society from itself. Or something to that extent. This is just an excuse to dump some screens of P5, so let’s get that out of the way.

That’s totally his canon name in the lore.
This game is educational, I didn’t actually know this before.
Your teammates have the utmost respect for you as team leader.
Some of them are… stranger than the others
When dungeon crawling, you can summon mighty persona in battle! They’re like Pokemon, only way more phallic.

The JRPG side streamlines a lot of the problems from P4G: the main story dungeons are hand-built JRPG style dungeons and there are save points in between to make dying not so much of a pain. Even on normal difficulty, I still managed to die a few times – notably to those Angel enemies that tend to suicide when low on life. And they brought back Persona negotiation! I didn’t appreciate this too much in Shin Megami Tensei IV as it felt a bit obtuse there, but here the Persona’s “personality” is shown which makes it easier to figure out the “correct” answers.

Since you’re supposed to be leading a team of thieves there’s also a bit of a “stealth system” while dungeon crawling. It’s not a very deep stealth system, basically just hide behind corners and ambush enemies to gain battle advantage. The only problem is that the camera and the controls don’t always agree with your stealth plans, and sometimes the wrong button press can lead you to disaster.

The Phantom Thieves story is okay, although most of the plot is telegraphed ahead of time. I kind of liked P4G’s big murder mystery where you had to figure out who among your confidants was a big ‘ol bad guy. Here in P5, it’s painfully obvious who sold you out, even if you hadn’t noticed his “mistake” early on. That being said, there is a surprise twist near the end that caught me by surprise.

Compared to P4G, Persona 5 comes out at the height of social media, so while I like the P4G’s battle theme a bit better, P5’s battle music has managed to become a meme of its own:

I must’ve seen this video at least 50 times now due to some of my friends (you know who you are).

One thing I dislike about the Persona series is that because of the time management aspect of the game, a lot of things are missable. Since I tend to play RPGs without any guides or walkthroughs the first time around, it’s problematic for me. This means that on my first run through I missed completing the Confidants/Social Links, even though when I started the run I told myself I’d prioritize them over other activities. Definitely need a second run for the platinum. (Of course, I have yet to platinum P4G either due to a mistake I made during the second run~)

In conclusion: Despite (or maybe because of?) it’s ridiculousness, Persona 5 is a great game. Story is tight, and the dungeon crawling has been streamlined a lot. That being said, it’s definitely not a game for everyone, mostly because of the style. If you dislike Japanese stuff or anime or anything turn-based, it’s definitely not for you. Go play Call of Duty or something. For everyone else, enjoy one of the year’s best JRPGs (sorry FF15!)

 

Blogging and Social Media

I haven’t been blogging too much recently. I got busy for a while and had to skip a few weeks, and then general laziness prevented me from resuming a regular posting schedule. (Hopefully that ends now.) Most of the time my ranting was on social media, which got me thinking: Is writing on your own blog still useful in this day and age of social media?

I’ve been blogging for a long time – my archives say 2002 – waaay before Facebook or even Twitter came around. If for some reason you felt like digging through my older posts you’d find that I kind of used the blog like Twitter or FB: I’d have some short posts, updates about what’s going on, share some links, and so on. These days we have social media for that, so why blog at all?

Well, social media is a perfectly valid channel to post your thoughts obviously. But I feel like blogging serves a different purpose. And when I say blogging, I mean on a platform dedicated to blogging, preferably on your own server.

Here are the obvious differences/advantages of blogging:

  1. Blogs are publicly accessible commentary. Contrast this with Facebook, which I use mostly for interacting only with family and friends. I sometimes make some FB posts public, but mostly on request because people want to share it. It would make more sense for me to have such content on the blog so that people can share it directly without me having to fiddle with post privacy settings on FB.
  2. Blogs are long-form. Contrast this with Twitter’s post-length limitation and even Facebook where I also tend to spout out one-liners or short paragraphs. I like a blog post for longer, more detailed content. Twitter users use workarounds like the “1/N” format to post longer text content, but I’m not really a big fan of that.
  3. A blog should contain your own content. Contrast this with almost all social media where your own content is interspersed with retweets, shares, reblogs, and so on.
  4. Blogs are searchable, either using your internal search form (I have one on the sidebar!) or via Google search. It’s a bit annoying sometimes trying to scroll through your FB or Twitter timeline trying to find something.
  5. The above point means social media posts feel a lot more… ephemeral, maybe? I consider blog posts a lot more “permanent”, while social media are more of “at this point in time.”
  6. Blogs are under your control. You’re not subject to someone else’s moderation. Of course that also means you’re on your own if you get DDOS’ed or such hehe. Well, there’s pros and cons of course.
  7. You can still push your blog content to your other social media channels. I have systems set up to push my blog posts to Twitter, Facebook and Tumblr.

That being said, the various social media channels have their pros too, so I still use them for various purposes. (I thought about splitting this blog post into two, but I literally just wrote about long-form content, so let’s try to justify that a bit!)

  1. Facebook – I use this mainly to interact with friends and family and for sharing family pictures. There was a thread on reddit a while back about how a lot of people recommend quitting FB (or even social media altogether) since it’s not good for your self-esteem to be always checking how other people are doing. I find that this is really only an issue for people who already have low self-esteem and feel a need to compare themselves to other people (I guess teenagers mostly?). I don’t have any such issues. I like seeing how my friends are doing even if they’re people I don’t see often anymore and it gives you good convo material when you randomly run into them. I also tend to share on FB things I know will interest my friends and family, or at least some subgroup of them: family pictures, tech stuff, hobby stuff (gaming/MTG/comics), cat pictures, puns, memes, etc. I try not to dive into public groups too much, since FB has a low barrier of entry, the content/discussion is not that good IMO. My public Facebook profile is here.
  2. Twitter – my twitter stream is public. I use it for interacting with strangers. (Sophie Turner never replied to me that one time!). Twitter has a higher barrier of entry compared to FB, so the discussion is a bit higher quality. When posting to Twitter, it’s typically a stream of consciousness thing for me – I just randomly decide to post things. On FB I tend to filter myself a bit as I don’t want to be too spammy, but on Twitter, I spam away about what I’m doing. If I’m playing in a big Magic tournament I’ll probably be tweeting every round about my horrible misplays. I will oft tweet about games I’m playing, books I’m reading, and so on. Same philosophy applies to sharing/retweeting: it’s a lot more impulsive, I’ll just share anything that looks interesting. My twitter feed is basically my FB feed except with less pics of people I know and more random thoughts throughout the day. If that sounds like your kind of thing, my twitter profile is here.
  3. Instagram – quick story about how I got an instagram account. I tried to create one but found out that someone had already registered an account using my email. Of course I went ahead and used password recovery to take control of the account. It wasn’t very active so he probably didn’t mind, although I think some of his followers still follow me lol. I mostly post pics of food, board games, sketches, or random things I buy. You can view my instagram here.
  4. Reddit – I use reddit more for content consumption. It can be shallow sometimes, but you can also find some good/witty/insightful convos. If I want to find some discussion about recent events or tv shows or movies, reddit is always a good place to look. The barrier to entry here is very high, so discussion tends to be higher quality than either FB or Twitter. (Still lots of shitposting though, that’s the internet for you.) I don’t publicly acknowledge my reddit profile, but it’s very easy to find haha.
  5. Tumblr – just random odds and ends. It’s not very important, but I do have it. I used to use it only to reshare tumblr content I found amusing, but these days I also push sketches and blog posts to my tumblr.
  6. LinkedIn – terrible! I’m not a fan of LinkedIn, as it seems to be mainly a way to get harassed by recruiters who didn’t even bother reading my profile. Still, it occasionally has a use so I keep it around and update my profile sometimes.
  7. Quora – I’ve been reading Quora for a while now but recently also started answering questions every so often as a bit of writing practice.

Takeaways: Blogging is great, even if you’re already using social media. Try it out! Social media has its place too, but don’t let it control your life!

Review: Guardians of the Galaxy Vol 2

First, the spoiler-free summary (spoilers after this part):

  • overall a very entertaining movie to sit down and watch popcorn and to enjoy the jokes and the space battles and the different colored lights and the tiny adorable tree creature
  • GOTG’s humor was one of its strong points and for the 2nd movie, they push the comedy up a notch, perhaps a little too much in some places. Lots of funny gags and one-liners
  • I felt like some of the character/background development stuff was pushed a bit too hard as well
  • the movie’s plot also felt a bit thin and straightforward. I mean, you could see some of the major plot points coming a mile away. Maybe from the trailers even
  • Star Lord was ok. Gamora/Nebula felt poorly written. Rocket was a bit annoying. Drax and Mantis were ok, although the space they have for Mantis’ character overlaps with Drax a bit. I’m still not super happy with how Drax and Gamora are characterized in the MCU.
  • I’m less happy with this movie’s soundtrack compared to the first one
  • Magugustuhan ba ni Mama: Certainly not. In fact, she chose to derp around the mall instead of coming with me and my cousin to watch.
  • IMAX or not: Some visuals used the 3d effect, but nothing too exaggerated or critical. I’d say IMAX optional, but it definitely adds something to some scenes.
  • There are five extra scenes near the credits (one of them is right before the credits roll, so I can’t really say “post-credit” screens). Most of them are just setting the tone for the inevitable GOTG3
  • Additionally, just pay attention to the background of the credits roll as well, it’s great
  • While I felt the movie was ok, it’s kind of just more of the same of what we got with the first movie, which felt a lot stronger overall

Spoilers follow:

  • It would have been silly to expect Ego the Living Planet to have his Marvel comics appearance of a planet with a face, but guess what, we actually got it!
  • Stallone as Starhawk and Yondu being officially a member of the “original Guardians” team was great. Oh and apparently Michael Rosenbaum was Martinex!
  • The Stan Lee cameo here was really meant to push the “Stan Lee has been playing the same character in all his cameos” narrative
  • Giving Peter a Zune was a cruel joke on Microsoft’s expense, but sets us up for more music (maybe from later decades even!) for the 3rd movie
  • Lots of random other Marvel fan-service cameo appearances too: Watchers, Cosmo, Howard the Duck, and I’m sure I missed/forgot quite a lot more

 

MarkLogic NoSQL

I recently attended a few training sessions for MarkLogic held at an office in a nearby business center. Now, I’ll forgive you for not knowing what MarkLogic is, as even I hadn’t heard of it before six months ago. MarkLogic is (apparently) the leading Enterprise NoSQL provider.
 
NoSQL is big and sexy right now because of the supposed advantages in handling big data, and large web companies like Google and Facebook use a lot of NoSQL in the backend. Most of the popular/well-known NoSQL solutions are open-source/free ones: MongoDB, Cassandra, CouchDB, and so on. But these aren’t actually very popular on the enterprise side, hence “Enterprise NoSQL” isn’t a very common phrase.
 
One of the reasons NoSQL isn’t currently very popular for enterprise projects is that the popular open-source solutions such as MongoDB don’t guarantee ACID transactions. In fact, MongoDB has the concept of “eventual consistency” for their distributed servers, which implies that they don’t have real-time consistency.
 
MarkLogic does guarantee ACID transactions, along with government-grade security. Both of these are things that enterprise clients love. So that’s the market they’re in. Their highest-profile project to-date was the backend datastore for Healthcare.gov (also known as Obamacare/ACA). That project involved consolidating data with different structures from multiple sources and needed to scale up to a ridiculously high capacity, so it seemed tailor-fit for a big data level NoSQL solution.
 
During the second-to-last day of the training, Jason Hunter, CTO of Marklogic for Asia-Pacific, dropped in to answer some questions. He talked a bit about how MarkLogic started and how they got him on board, and a bit about their competition (some disparagement towards MongoDB and Oracle) and about Healthcare.gov.
 
He also had a really good sales pitch about why NoSQL is just a better approach compared to RDBMS. (Although it would have been more fun if he had given this talk with like an Oracle salesperson there to debate with him.)
 
One of his points was that RDBMS restrictions such as limits on column size are outdated. They were sensible in the old days when disk space was at a premium, but these days you don’t need to limit how many characters you store in a last name field. MarkLogic stores all records as documents with no file size limit (AFAIK) to avoid such an issue. From experience developing web forms, there’s the occasional client or system user who doesn’t understand why we need to have character limits on fields. We also had this system where they wanted to be able to type unlimited-length rich text content (we stored it as HTML in the backend) in memoboxes. These were fields where they had to write stuff like notes and assessments and most of their data was pages of text. I feel like that sort of thing would have been a great use for NoSQL.
 
Another point he raised was that RDBMS systems were very bad at allowing the user to search like three columns at random. You needed to know in advance which three columns to index. For document stores like MarkLogic, typically the entire document is indexed so that problem is avoided. Of course, that means that functions like “sorting by last name” need a bit more setup. You need to build a range index in MarkLogic to sort by a specific field. So it’s kind of a trade-off either way.
 
Now to be fair, Oracle does support indexed full-text search over any number of columns via Oracle Text. But it’s not the default behavior and definitely not straightforward. I used to work with Oracle Text a lot in some of my older projects, and the amount of time it took to index any nontrivial amount of data often gave us a headache.
 
I should do a test sometime to determine how well MarkLogic’s indexing performs. The story goes that MarkLogic started out as a document search application before they changed gears to become a database. They even approached VC’s with the intent of competing with Google. They’ve had a lot of time to get good at this, so I have high expectations.
 
The MarkLogic server itself is an interesting piece of engineering. It’s basically a document store, a search engine and an application server all rolled into one package. Upon installation you get some administrative web applications for configuration purposes. The admin interface seems robust and thorough. Contrast that with Oracle where you often find yourself needing to tinker around with configuration files and such
 
You can run web applications on the MarkLogic server itself. The supported languages are XQuery and server-side JavaScript. Odd choices I know. I suspect due to historical reasons they started out with XQuery, but the SJS side has the same capabilities (or so we’re told). If you’re not a fan of either option, you can also expose the server’s functionality via a REST interface. They also provide existing Java and Node.JS APIs on top of that REST interface. All of this means you can deploy any kind of webapp in front of MarkLogic server.
 
The world is moving towards bigger data stores, so it’s not unreasonable to think that NoSQL is on the way up and will be big players in the future. So I think the training was worth it (even if I did have to stay in Ortigas for a while). It’s early still. MarkLogic might still turn out to be as painful to work with as Oracle was. But at the very least it’s interesting to try a different approach to enterprise data storage. Looking forward to see what kind of applications we can build with this tech.

Paella

A couple of years ago, two friends and I were being tourists in Barcelona. With its wide, spacious streets and strangely uniform city blocks, we walked around a lot. During one of our tourist days, we decided to eat some paella on the way back to our AirBNB. Who comes to Barcelona and doesn’t eat paella right?

We ended up walking for quite a while. Every time we came upon a new restaurant that served paella we would consider the price and the restaurant and would think, hey maybe we can find somewhere better or cheaper further along the way. At one point a Pinoy working in a nearby restaurant even overheard us talking about it in Tagalog and he called after us as we walked away. “Dito, mura lang!”, but we paid him no heed.

How could we know which restaurant was the best one until we walked all the way and saw all the options? But walking all the way back to the AirBNB to see all the options meant we would go for a longer time tired and hungry, so that was obviously no good. Even worse, we may find at the end of the walk that the best choice was too far back and we end up with a suboptimal paella. At some point, we would have to decide that “Okay, the paella here looks good enough, let’s eat here.”

I thought it was kind of a metaphor for life and choices and such. You can’t know ahead of time whether the options presented to you now are the best you’ll ever get. But at some point you have to stop browsing and overthinking and decide to settle for something that is “good enough”. Sometimes it turns out great, sometimes it ends poorly, but it’s almost always a gamble. Life decisions are only hard if we make them hard. But as long as you made the best decision with your limited information, I think you can always choose to live without regret.

We ended up eating at this small diner near our AirBNB. It was run by an Asian dude and his family, though it seemed they spoke better Spanish than they did Chinese or whatever. I had the Valencian paella which had meat instead of seafood or whatever (no surprise for anyone who knows my dietary habits.) I don’t know whether it was the best or the cheapest paella we could have eaten that day, but I could tell you it was pretty damn good anyway.

Review: Final Fantasy XV

With The FFXIII trilogy not being particularly well-received and FFXIV being an MMO, Final Fantasy XV has been a long awaited as the next mainline single-player game in the much-acclaimed series. This review will have minor spoilers.

Story

FFXV follows the story of Noctis, prince of Lucis and his band of brothers (okay they’re not really brothers, but they might as well be). They’re supposed to be on a road trip to get Noctis married, but things happen along the way and eventually they have to figure out how to liberate their homeland from The Evil Empire. That’s the backstory.

The story as presented in the game has a few problems. There’s a lot of significant back story and goings-on that happen off-camera:

  • There’s both a feature-length movie (Kingsglaive) and a six-episode anime (Brotherhood) that expounds on the four main characters’ backgrounds and how the current political situation got to where it is
  • There’s supposedly a whole effort by minor characters like Cor to organize a resistance against the Empire, but we’re never really exposed to it
  • Then there’s Lunafreya, Noctis’ betrothed, who goes off and does her own stuff to try to undermine the Empire and supposedly help Noctis, but for most of the game it’s never really explained what exactly she’s doing or how it’s relevant
  • One of your friends, Gladio, goes off on a short sidequest of his own and vanishes for a while, and it’s never explained WTH that was about. Presumably it will be covered in a future DLC.

Another problem is that Noctis and the gang spend most of the game sort of lollygagging around enjoying their road trip without much sense of urgency. Understandably they wanted to present an open world this time (since much of the criticism of FFXIII was for its linearity), but the problem is that the open world is filled with a lot of frivolous things that don’t seem particularly urgent given the fate of the world being at stake. I mean, the party spends a lot of time camping out, cooking food, fishing, taking pictures, driving around looking for auto parts, and so on. The sense of urgency is not apparent.

I suppose the lack of urgency is an acceptable trade-off for the open world, but even for the supposed main story quests in the earlier chapters, it’s not immediately clear how they serve to help you overcome the Empire. I feel like there should have been more story quests related to helping establish a resistance and so on.

The later chapters narrow down the open world significantly, and the second half of the game takes place outside the main continent where there is significantly less freedom to explore. It feels a bit like they spent a lot of their design budget on the open world half and so just restricted the second half to the meaty story parts. Reminds me a bit of Xenogears disc 2!

One of the chapters near the end was also executed very poorly. To establish a sense of tension, most of the systems you had been relying on throughout the game are taken away from you. While this would have been okay for a short segment, the chapter goes on a bit too long and ends up being far too tedious.

I did find myself surprised by events leading up to the final chapter, although I felt like it was another wasted opportunity. The final chapter gives us a glimpse at a different version of the open world but never really let us see most of it.

The ending itself was bittersweet (and easily trolled haha), but I found it an acceptable ending.

Characters

While I found the main cast of Noctis, Ignis, Gladio and Prompto to have engaging personalities, they don’t really have much backstory in-game (most of the character backstories are in Brotherhood). In fact, later on, a startling revelation is made about one of them and none of them really bat an eye at all. It was in the sense of “hey, we don’t care about that, we’re your friends,” but it still felt like something that should have been explored further.

The interaction among the group is great though. They regularly banter and tease each other even during combat. It really felt like they were a group of long-time friends.

Combat 

I’m an old-school FF fan, so I’ll be the first to admit I miss ye olde active time battle. FFXV’s battles take place entirely in real-time, with the player controlling Noctis and the other characters controlled by AI. The AI control goes about as well as you could expect, they do fine against weak enemies but against tougher battles you find yourself constantly having to help them with potions or other items. You can command them to do special attacks when available, and they will participate in combo attacks when possible, but for the most part it’s just Noctis warping and striking.

Combat is fluid and there’s a lot of movement and jumping around and looking for opportunities to strike from behind. Early on you are discouraged from wandering around at night as the enemies might be too high level, but the combat system is set up such that most tough battles can be overcome simply by having enough recovery items around. I only got a game over once, early in the game when didn’t know what I was doing and I tried wandering at night and promptly got squashed by an iron giant.

The Open World

The open world gives the party a lot to do. There’s “hunts” dished out by people in diners (basically quests to go kill a specific bunch of monsters) and other side quests given out by various characters. There’s a fishing minigame, because apparently it’s a hobby of Noctis. The fishing minigame is okay, except I didn’t have the patience to try to get the most difficult fish.

Then there’s the photos and the food porn. A lot of pandering to the modern-day youths here, I’m surprised instagram hasn’t been invented in their world. Cooking is Ignis’ specialty, and the game renders each dish really well, sometimes enough to make you hungry.

And the photos are the specialty of Prompto. It’s one of those things that feels really frivolous in the game. Every time you camp you can browse pictures that Prompto has taken so you can save them for later viewing. A later patch provided a photo mode that you can control directly. There’s an entire reddit thread about how players have snapped more pics for this game than for their own vacations!

Anyway, I’m no exception. Exporting a lot of photos is a pain though, as there is no batch export option in-game. Here are a sampling of the photos I got (a bunch of them are from achievements):

View post on imgur.com

Achievements

Speaking of achievements, I was a touch disappointed with FFXV’s achievement set. I got the Platinum trophy, but I felt like it was a bit too easy, as there was still a lot of things to do in the game outside of the achievements. I don’t want annoying grindy achievements, but I don’t want them to be too easy and “no challenge” either.

Other stuff

They had this weird Chocobo carnival DLC that somehow takes place in another timeline or something LOL. IDK how it works.

Despite the fact that the more action-oriented combat system is indicative of where SE plans to take the series moving forward, there’s still a significant amount of nostalgia in the game for old-schoolers to appreciate. Callouts range from Prompto humming the classic victory fanfare after the battle to 2d sprites in the store menus jumping up in down to indicate which characters can equip each item. Classic FF beasties like the Malboro still make an appearance (and are still a pain to fight!)

The weirdest thing overall has to be the Cup Noodles thing! They had some sort of tie-up with Nissin and Cup Noodles is one of the meals your party can have in the game and Gladio is obsessed with them. Later on you even get a quest to try to find a way to improve on Cup Noodles and it ends with the characters saying there’s really no beating the original since it has a perfect mix of ingredients already. I feel like the VA’s really enjoyed doing those lines haha.

Overall

Okay, I had a bunch of complaints and nitpicks but to be honest, I enjoyed the game. There was a lot of gameplay, some seriously though battles and some annoying dungeons that took forever, but I finished most of it and got the platinum in under a month. Nowadays for an RPG that’s very quick for me, an indication of how much I liked the game. There’s a bunch more content planned for it, including DLC story packs for each of the other main characters, and high-end boss fights and what not. Not sure if I’d still play those since there’s a lot more RPGs on the horizon (2017 is a good year for RPG gamers.) But if Final Fantasy XV is the next step for the series moving forward, I find it acceptable.