Sunday, March 17, 2013

Code Review: Kevin Go


Kevin, like any other Chinese kid growing up with Asian dad Chinese parents, has been brought up to be intellectually competitive and a medal short of an overachiever.

Incredibly young (only 20 years old), he has shown street smarts and a healthy dose of competitive edge that shines through in his work. Kevin wants to not only do well, he also has a drive to turn things he touches into coding gold. His favorite mantra is "meliora" - a Latin word meaning "better." Because being Kevin Go (and being as Asian as they come), that's what he always aims for, to always do better, be better so that one day, he may become great.

Here's a kid worth looking out for as big things may come from him yet!

Read on for Kevin's kickbutt code review:

Hey Kevsies. What are you currently working on?
* Hi! I'm currently working on maps. Something like Google maps where users can search for places except that it's limited to the organization locations plotted on the map in the project. This map displays the locations of the organizations and is searchable. Also, users can save their search, filter their search and export it to a PDF file.


What issue/problem did you encounter while working on it? (or what task did you finish/accomplish?)
* I was not allowed to use Google maps for easier implementation in the front-end. So I looked for open-source stuff for the maps to come up with a solution for it.

* Another is that the client asked me to look for a way that a user can export the displayed map/have a screenshot of the map into an image attached to the PDF file. 


Wow, that must've been a challenge! So then, what cool solutions did you come up for it?
* It was. Got stuck on it for a couple of days. Then I found something floating around and that's what I used. It's called Leaflet.js. That's what I used for the front-end design to display the pins of the places and pop-ups. Also, I used Mapbox to cater the display of map tile layers to integrate with leaflet.js. Layers are also configurable via the Django admin and can be enabled/disabled with its use.

* For the map image export, knowing that the map is displayed by the Javascript and I can't use the HTML to PDF feature, I looked for a different solution and found HTML2Canvas.js plugin where it converts the displayed map into a canvas then converted to a .png image to be attached to the .pdf exported file.


Well, aren't you a resourceful one! I'm a non-technical loser. Could you expound on this maps thing a bit more?
* So basically, it's just a maps (same with other map stuff you see online) where you can search using filters, save your search, display information about the searched places then you can export your saved search into a PDF file. The project I'm currently working on needed it. That's what necessitated the research of new materials, hence the use of Leaflet, Mapbox, and HTML2Canvas. Imagine Mapquest or Google maps or something.

Cool beans. Were there any other cool ninja stuff you shared to the guys during your code review?
* Well I think I have discussed Leaflet.js well to the team and how it can be an alternative for Google maps. Also, I have discussed with them the process on having a screenshot of the html that is generated by the JS.


No mistakes on the code then?
* There were none, of course. Having one would be a travesty!! My parents would disown me. (Joke)

* Kidding aside, when I work, I always make sure that the code I write is clean and streamlined so that it's easy to read and debug and would be optimized to the best degree. I find that doing it right the first time is actually more productive that having to always re-do your work. Saves me a lot of time and effort. As an Asian, I'm OC with my code like duttt.


Feelings, reactions while doing the code review? 
* I was glad that I have shared something to my co-devs. I hope it would be useful to them too.


That's all, dear. Thank you.
* You're welcome. :)

Tuesday, March 12, 2013

Themed Fridays: Graduation


March is the most awaited month before summer break because in March, school will be out.

For many, it ushers in two months' worth of VACATION - no school, no homework, no teachers, no cares, no stress - just the easy life on the beach, lazing at home, or hanging out wherever.

For some though, March marks the end of a chapter in their lives. Because with March comes graduation, an ending and a beginning of sorts. We remember how fun it was to finish school and the thrill to finally get to wear that toga and cap and the excitement of being on the verge of something so big. It is, after all, a very important milestone in one's life. Naturally, we made it our theme for our most recent Themed Friday.

If the toga rent shop is missing a few, you know where to find it.

Enjoy the pix! :)

The Class of 2013, family, friends, photographers, out of school youths, and the PRINCIPAL







 






Congratulations to the Graduates of 2013!

Wednesday, March 6, 2013

Code Review: Gianina Juanga


Gia is like a whirlwind when she comes into the office. 

It's because she breezes in, all wind-blown and hectic, always in a hurry. A petite girl, she totes around a backpack that is twice as big as her torso, finds a niche all to her own and camps there the whole time without so much as a peep. A little bit later, you hear the rustle of a bag of chips or chocolate - a sure sign that Gia is in the groove of things, coding as if on fire.

Such is her commitment and passion for coding that she soldiers on throughout most nights, working. But on her code review on February 27, she came early and got right down to business, proving once and for all that this girl is one tough coding cookie!

We caught up with Gia after her code review and she gamely answered these questions:


1) What are you currently working on?

We have ipad apps that synchronize data with the server. I usually help out fixing any server side issues as reported by users or as results from testing new builds for the ipad apps.


2) Right, so what about this task in your project did you share on your code review? Please explain as you would to a non-technical loser like me. 

I talked about how the synchronization process works, and how I go about fixing issues. 

Basically the ipad sends data then the server will first authenticate the user. After the user has been authenticated, it will create a log file for the request which is useful for debugging, then validate data  and create or update objects as necessary.  There are also special charts on the ipad, which are sent as coordinates, so the server can recreate the chart image based on these coordinates. After the data has been sent up, the ipad then sends media files (images, videos, and voice memos), and the server will convert these files to the appropriate web formats and associate it with the corresponding objects. Finally, the server will send down data so it can be updated on the ipad.


3) That's awesome. Did anybody notice anything amiss on your code? 

There were none. I made sure that my code wasn't erroneous; obviously, it has passed quality control by the testers, as well as through debugging; so I'm sure there aren't any errors in it. Then I had it checked by Sir June before I presented it to everybody.

That's what's great about code reviews, it makes you mindful of your work. There were a few questions pertaining to my presentation, though, and I answered them as best I could. It was mostly clarifications about issue-fixing. I mean, how I do it, anyway. Everyone seemed to be on the same page as me, so I guess we do share a lot of similarities with how we handle stuff.


4) Were there any other cool ninja stuff you shared to the guys? Can you explain, please. 

I briefly discussed using Pycairo which you can use to programatically draw in Python. It allows you to work with the Cairo graphics library which has a lot of features for drawing 2D graphics. I used it to draw the chart images on the server. Also I showed them how you can use a REST client plugin on your browser, which you can use to replicate sending requests to the server which helps for debugging purposes.


5) Feelings, reactions while doing the code review?

Well, I learned a lot from my fellow devs and wish to learn more in the future. Also, I felt nice to be able to share my stuff to others. Hopefully they have learned something from me too.

Monday, March 4, 2013

Code Review: Earvin Gemenez


Dyed brown hair with the Asian-pop haircut, pink stuff, v-necked shirts, and Havaianas. That's how Earvin looks like on any given day. Those who don't know him would never in a million years think that his passion is coding, mainly because he looks so far removed from the "programming geek" image we have in our brains.

But that, he is -  a programming geek. He proves this time and time again by constantly turning in projects that make his clients happy.

Earvin is now currently working on a project where he is assigned to a task that will integrate the user account with their social networking site accounts like Facebook, LinkedIn, Pinterest, and Instagram. Aside from linking them, he is also making these possible: enable the users to edit and enhance their profile page; adding helpful user stuff like enabling the user to edit basic and general info, Micro-foundation's connection, user profile picture upload, and adding contact information.

In his code review last February 20, he shared how he integrated to Facebook.

He says, "I used Facebook API to get the user's data and generate his/her profile page link. I didn't use the Django-Facebook app even though the site I'm working on is built in Django. Instead, I used the Facebook Graph (using url links to get request data) because right now the site doesn't call for the use of most of the features in the Django-Facebook app."

According to Facebook, the Graph API is the primary way that data gets in or out on FB's social graph. The social graph is a low-level HTTP-based Application Programming Interface than can be used to query data, post new stories, create check-ins, among other tasks done by a social app. The Open Graph, on the other hand, allows you to define new objects and actions in a user's social graph that enables a user to create new instances of actions and objects through the Graph API.(Facebook.com, 2013)

Earvin also shared his basic coding principles and best practices in writing code to the team. A topic necessitated by his experience of having to rewrite a big portion of a project he handled because someone else turned in a sloppy job. He says to always be aware of the readability of one's code, as well as the proper order of things so that there would be lesser confusion and a more efficient flow.

Even when handling challenges like he encounters in his projects, he shared that "it feels good to share my work to others especially when they can relate to it and knowing I am always solo on my projects, I really felt great that people give good comment and notice my work positively."