Skip navigation

Category Archives: Announcements

While technically not part of my 2016 Resolution, I also got this:

66th percentile on HackerRank

You may be thinking, “66th percentile! Three stars! For an Asian, your standards aren’t much.”

Well, considering that I have a full-time job and that just around this time last year I was below 20th percentile, I’m calling this a win. 😉 😉

A full GitHub year

I technically hit the year mark on January 6 but I wanted a full perfect rectangle of green so I pushed for a week more and this is what I got.

I think it’s time to erm…cash out on the things I learned doing this thing. Or spend more time thinking and less of coding; but I think, the habit can be quite hard to break.

A few more words before I go, the year mostly revolved around two projects, interestingly both a throwback from when I was just fresh out of university.

alexandria is actually a Python “port” of my earliest project on GitHub. Scare quotes on the word “port” because, by now, it hardly is a port. I wonder if the old PHP code will still run if I try to set it up today. The Python port itself, however, was started in 2015.

PyGame-Objects is my earliest attempts at seriously Python-ing. I created Snake this year which is, yeah, not very impressive but it really made me happy to try to write it as cleanly as I could, modifying the framework (which I built too, which is what PyGame Objects is all about) when needed, and maintaining backwards-compatibility with the previous games. I think some time ago (in 2013? But that feels like a lifetime now) I tried to rename it to something cooler but I stuck with the humbler name for now, and for the foreseeable future.

I cannot contain my excitement when the debug mode for PyGame Objects finally worked. Oh what joy! It felt legit even if there is much work to be done.

Pardon my seeming lack of modesty but my great takeaway here is that I write code pretty clean. They say a good rule-of-the-thumb of code cleanliness and documentation is if you can understand code you last touched three months ago. Well I last touched most of PyGame-Objects four years ago!

But I think, I overshot my intended quota of words. Goodbye now. Gotta play The Witcher 3: Wild Hunt.

The end of February was remarkable for a couple of things. First was PyCon Philippines 2014. I’ve already mentioned here a bit of my involvement with Python Philippines. I’ve noted my presence in Python Philippines’ monthly meet-ups. It is no secret that we’ve been working towards another PyCon Philippines.

PyCon Philippines 2014

I must say, organizing a conference is really a taxing job. Kudos to the volunteer team who worked really hard behind the scenes. And while yours truly was listed everywhere as a volunteer, it would be terribly unfair to compare the effort I spent compared to the effort of some others.

For day two, I was a speaker in behalf of Chikka. Chikka sent in a delegation of 26 corporate attendees. However, I was not able to finish day two because I had a flight to America scheduled. You see, I was in for an interview with the Google.

Yes! It has always been my dream to work on the type of problems which Google is tackling. I never thought that, as early as now, I’d be able to score an interview with them, at the Mountain View campus, no less. I did not get in but I’m no less grateful that I’ve had this opportunity.

While this whole adventure deserves a whole post on its own, let me end with the update I had at my Facebook profile after the closing phone call came.

When Google came calling

TL;DR: Nope, not yet. Still, thanks to everyone who wished me luck. This experience was definitely fun. Maraming salamat! (–,)

It started one Saturday morning in October last year. I received an email from an “@google.com” email address. He claimed to be a recruiter from Google who got impressed with my GitHub resume.

Now, prior to this I’ve already received a number of recruiting calls due to my GitHub and my PythonPH involvement. But, hey, Google? The Google? Just. Wow.

So…okay, I just sent in a copy of my proper resume as the recruiter wanted. Weeks passed without hearing anything from the recruiter. Until December.

He had me scheduled for a 15-minute phone interview. I thought that Google will finally have developer operations in the Philippines. During this 15 minute interview, it became clear to me that I’m interviewing for a position at their Mountain View campus. The interview went fine which led to a 45-minute technical phone interview in January. Apparently, they got impressed with it as well because they eventually had me for an onsite interview.

After some bureaucratic fiascos with travel documents, I finally managed an onsite interview during the last week of February. Google had me for an all-expenses paid US trip. I was in California for around four days.

I’ve been to a number of interviews already and I must say, Google is really different. They call it a panel interview but I think a better term is “circuit interview”. And it was more like a mentorship session than anything. No pressure, just geek-to-geek chat.

I managed to answer all of the problems they gave me which is to say I performed better than I expected (haha!). I just got a call saying I did not make it but getting from that October email to that closing phone call is still quite a ride.

I’m 21, college-age in America’s educational system. I’ve less than two years industry experience, while most of Google’s job openings require at least three. I did not approach Google; Google approached me. I think I’ve earned the right to be very proud of this experience.

Yay! \(^_^)/

The longer Story, sometime soon!

Okay. First off, I’m aware that I’ve lagged behind my New Year’s Resolution. But I’ve only lagged behind the blogging part: I’m still exploring new stuff monthly. Guess I’ll talk about them in brief for now and, maybe, expound some other time. ^_^

Just to clear some smoke, last time, I told you that I may be in for a volunteer project. Well, so I’ve been and yes, I did use Django pretty extensively with it. The project is for the up-and-coming Python Philippines. I’m the one behind the website and it’s running on Django CMS. Go visit it. We don’t have content yet but, well, you can look at the pretty theme. Hehe.

And just last Saturday, I talked about Django CMS at Python Philippines’ monthly meet-up, to encourage contributors. I feel that my talk went well and I hope to put up a transcript of it in here, to make up for my lack of blogging. Soon!

 

I’ve also been trying to learn some things from the ground up in Python. I’ve done sockets last time and this time around, I tried doing threads. Straight from the box, Python does not really support threads. You’d need libraries like gevent to actually get some concurrency done in peace. But still, unlike PHP, if you just want to switch among jobs, Python has something for you.

I’ve experimented with Python’s threading library. It’s a curious thing, coming from Java’s threads. I got so curious with it I’m even trying to learn statistics to validate my experiments. Because, you know, I did all my samples in powers/multiples of ten.

 

Lastly, as a form of humbrag1, I got myself an Xperia Z, for around a month now2. I must say, it’s damn gorgeous! I never got people who complain that Samsung uses cheap plastic to house impressive hardware but with the Xperia Z’s all-glass build, I get it now. It’s all about the user experience, people. User. Experience.

The hardware is damn powerful; Iron Man 3 plays very smoothly, save for occasional lags. The camera isn’t shabby either; for quick shots, it can do in place of my bulky SLR. Being water proof, dust proof, and shock proof sealed the deal for me.

At last, at last, I can play Temple Run 2 even when it’s raining.

  1. Okay, really bragging mostly []
  2. Those who know the camera I am using can now scream “Fanboy!” []

There. I beat my deadline. The main site is live again! Yay!

But that is not to say that I got this without glitches. Let’s see…

After feeling good with the WordPress site I developed locally, I pushed it live by uploading all my local files (and changing password-related configs) to my server. However, I noticed that all my links start with “localhost”—they are pointing to the local version I developed. The only page I can view from my remote site was the home page.

The fix is easy enough. I just had to change all option values in the wp_options table of my WP site so that they don’t refer to localhost. To that end I ran the following query in my database:

UPDATE wp_options
SET option_value = REPLACE(option_value, 'localhost/', '');

Note: be careful when running queries like this. The pattern matching went fine for me but some future version might use the term ‘localhost’ for something else. Always back-up before running! Also, you could’ve set this option up in your WP Admin. Just go to Settings -> General and change the URL-related settings. I wasn’t able to do it in this case because even the WP Admin was getting redirected to localhost!

So, after running that, I got my links good. However, clicking on the links returned a status 500 error (Internal Server Error)!

Googling around, it seems that this has something to do with my .htaccess . The .htaccess is a config file for web servers famous for allowing URL rewriting. It’s the magic behind http://skytreader.net/journal/post-title instead of http://skytreader.net/journal/post-title.php. You can also do cool (or sick, depending on your tastes) things with it like having pages with a .exe extensions (or pointing unsuspecting users to a normal .html page but is actually a sketchy .exe download). Here’s one tutorial I’m quite fond of.

Anyway, my .htaccess looked like, this:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /skytreader.net/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /skytreader.net/index.php [L]
</IfModule>

Now, I had no idea what to do with my .htaccess to prevent the status 500 from happening. Thank goodness that kodeplay itself is WordPress-powered. So, I just patterned it from kodeplay’s .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Aaaaannnd voila! Main site up and running! (Though, I won’t be surprised if there are still bugs with my launch.)

It seems that WordPress has a tutorial for migrating WP set-ups. Guess I should’ve read that first no?

Now, a TODO: Write a new entry on my main blog. The most recent one is now more than a year old!