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.

Google Code Jam and Competitive Programming

Back in 2004, I signed up for the Google Code Jam for the first time. Unfortunately I didn’t make it past the qualifying round.

I was a bit luckier in 2008 and 2010, making it to round 2 both times. In fact in 2008 as I recall I was one of only two participants from the Philippines who made it to round 2, which allowed me to jokingly brag about being the #2 programmer in the country.

I registered again a few times after that, and tried again last year (2016), where I only made it to round 1.

I’m no stranger to programming competitions, although the GCJ was the only one I’ve ever really participated in. Back in college, one of my friends usually joined such competitions, and I had a good time going over some of the problems with him.

Programming competitions don’t usually reflect the kind of programming done in most real-world jobs (although it might be interesting to use competitive programming problems in whiteboard interviews and see what happens). They focus on pushing the boundaries of the programmers talents in problem solving. You also need to be fairly familiar with algorithmic approaches to searching, sorting, and so on. Having a decent background in math also helps a lot.

The Google Code Jam in particular focuses on scaling up your code to handle very large amounts of data – well past the integer limit sometimes. Each question usually has a small and a large input. For the large inputs, you only have a short amount of time (I think it was 5 minutes?) to submit the output. Presumably you wrote and tested your code before starting the timer, so the short time is really only for your code’s execution. You can afford to be inefficient or maybe even brute force your way through the small input, but if you want to solve the large inputs on time you have to be able to optimize your approach.

When I first signed up, I dreamed of winning the entire thing (and of course being able to brag about being the best programmer in the world). But realistically, a lot of the people joining these competitions are “pros” more or less, so the chance of a “casual” like me winning are not that high. They are “pros” not in the sense that they do it for a living, but more of they do a lot of these competitions and regularly practice for them. Websites like TopCoder provide such competitions regularly for those who are interested. Also, I feel like I am very old and rusty, having worked too long in web development stuff where my focus is usually on a different kind of problem.

Still, I think it’s a good idea for programmers of all skill levels to give it a try, just to see where you are at. Who knows, you might even make it all the way! The next Google Code Jam starts soon – the qualification round is on Apr 7. I signed up, although I’m unsure if I will have the time this year even if I advance, due to scheduling problems. But a man can still dream, right? Who knows, maybe I’ll see some of you there too in the final round!

Scary Movies and Games

I’m not a fan of scary movies. I don’t appreciate the idea of paying money to get surprised by jump scares or whatever.

Back when I was a kid I remember my dad watching a Betamax copy of The Gate back home and me and my younger brother were watching with him and the movie seriously creeped me out. There was this one scene where a demonic eye manifested on the lead kid’s palm and that scene stuck with me for a while. (Maybe some latent form of trypophobia – don’t google it.)

Slasher movies I find a bit more acceptable – I watched a few of them in the 90s like Scream and I Know What You Did Last Summer. But the really creepy stuff like The Ring and similar films I’m not particularly interested in.

For scary video games, we played a few of them back on the PC when we were young. The most memorable would definitely be Waxworks, a kind of point-and-click with first-person grid-exploration horror game. I remember my brother and I would play it late at night while the folks were out. There was one time we had to stop because we had been surprised at the sudden appearance of some bad guy in the pyramid stage. We had to turn off the PC and run out to the sari-sari store so that we had some people to talk to. We eventually managed to finish this game, but I think after that part we refrained from playing too late in the night. LOL.

I also played the original jump scare game, Alone in the Dark although I never got into the succeeding series like Resident Evil. These days I don’t bother with scary games anymore. Sometimes I consider playing stuff like Amnesia, but I’m sure even if I’m a grown-up I’d still get creeped out by some of the stuff and that’s not really how I like to be entertained.

 

 

Fake Devs and Whiteboard Interviews

Recently, a developer needed to undergo a tech interview at US immigration:

This may surprise some people I’ve worked with, but I didn’t have formal computer science training in school. I’m not actually a computer science major. Yet I’ve worked as a software developer for more than a decade now. Literally zero times have I needed to write a sorting function or balance a BST.

I have a rudimentary understanding of some sorting algorithms (mostly just bubble sort and selection sort), and I have some idea of how to balance a BST. And if I needed to implement any of those I could probably whip something up after a few tries. (Something buggy and/or inefficient probably.) If I had to interview at a company that used one of these whiteboard interviews, there’s a good chance I wouldn’t pass.

For maybe 90% (or even as high as 99%) of modern-day programming work, it simply isn’t needed to know these things by heart. Those skills are more necessary if you’re doing low level things like writing an OS or a graphics driver or such. For everyday web development or Java or Rails or whatever, it’s an indulgence. And even for those instances that you need them, well, the internet is right there.

I’m not a fan of the idea that not knowing data structures and algorithms means you aren’t a real software developer. I have a couple of developer friends who jokingly refer to themselves as “fake devs”. It’s supposed to mean someone who doesn’t have any formal computer science background and has at best a passing familiarity with data structures, algorithms, and other computer science concepts. As one of them stated “I wouldn’t know how to make a map without using a map.” (I thought about writing a post about that, but it’s surprisingly easy – just look it up.). One of them even asked me to give them a quick crash course in data structures and algorithms because he was applying in a large and well-known software company.

For me, this term is silly. If you’re doing software development work, then you’re a software developer.

I’m not saying knowledge of these things isn’t useful. If you want to do more complicated work it is certainly useful to have these tools in your toolbox. Knowing them also makes you more flexible and expands your thinking. And certainly one should be the type of developer who is willing to seek out that knowledge if it turns out you need to use it.

But the problems with the whiteboard interviewing process isn’t that they require knowledge of these things; it’s that they require it under pressure, off the top of your head, without access to the internet. This doesn’t reflect how programming work happens in the real world, where you often have a team, an IDE, and even the entire internet to help you.

Unfortunately, it’s often far too costly for companies to evaluate you under real-world conditions, so many resort to this common interviewing process. After all, it is difficult to evaluate the performance of even developers you have been working with for months, what more someone who just whipped up a short function on a whiteboard in twenty minutes? We tried some variations on it at our last company, but for me it is a problem yet unsolved. Maybe someday…

 

Sony 4K HDR Bravia X8000D

4k XLocal tech blog YugaTech is doing a giveaway of a Sony X8000D Bravia 4K TV. To be honest I wasn’t sure about using this blog to participate in a promo, but I was already in the market for a new TV since our living room TV is already starting to have some problems.

I checked out the product features of the Sony X8000D Bravia on their website. Some of the features stood out for me specifically:

  • 4K HDR – this means you get to watch high definition 4k videos. Perfect for those who really enjoy high quality displays. The TV also comes with some technologies to enhance your viewing experience such as 4k X-Reality and Triluminos display. And if you have a gamer in the family, this means you can now maximize the Playstation 4 Pro since it supports gaming in 4K resolution!
  • Connectivity – Wifi is a big deal for me because our current TV is a bit old and only supports wired connection. Wifi makes it a lot easier! The TV also has 4 HDMI slots – let me see… that’s one each for the PS4 Pro, Nintendo Switch, and XBox One, plus one more to spare for those times when you want to connect your laptop to a big display (one can dream right?)
  • Android TV – this means all the apps on the Google Play store can be downloaded and run on the TV. That means built-in Youtube, Netflix, etc, without need for a separate device to stream from!
  • Google Cast – oh, I didn’t know this even existed until now! Apparently TV’s can now have Chromecast functionality built-in, without the need for the separate Chromecast device. Awesome! We can just send content from our mobile devices directly to the TV!
  • Netflix recommended – one of the things I’ve been looking for in a new TV is that I want my folks to be able to easily use my Netflix account. Currently the only way they can use it on the TV is through the PS4, which is a bit difficult if you don’t know your way around a controller. Having the TV itself support Netflix will make it a lot easier for my parents to take advantage of Netflix’s library of movies and TV shows!
  • X-Protection PRO – to protect against power surges, this seems like it would be really good especially here in Metro Manila where power supply is not always the most stable. Added protection for your investment!

The model has a lot of other features designed to enhance your enjoyment of audio and video content. With all of these features, the Sony Bravia X8000D could definitely be the perfect home entertainment companion for the modern family!