Perl-y Shell


I started out my eternal noob web development ventures with Python, because that’s what most mapping projects are popularly known for.And I am absolutely in love with Python and R programming for data sciencey stuff.

My very first programming textbook purchase from a book sale was a reference book about old HTML and Perl in 4th year high school. I was young and I only fiddled with the HTML part and completely yawned at the Perl chapters. A decade and a half later, I gave away the book before my wedding thinking that it’s an obsolete piece of reference book, only to find out late last year that I’ll actually be handling a large Perl project.

If only that book can talk, it would have been so smug at my impulsiveness of giving it away so soon. I feel so stupid for giving it away. Fortunately, I was able to scramble for more online resources. I had so many resources that it led to analysis paralysis for a few weeks, but I managed to get through it thanks to some video tutorials at Udemy.

I took the challenge. I inherited a code base written entirely in Perl. Honestly, I wanted to cry during the first month (January) of getting the hang of things because it’s completely different from the ease of using Python. I encountered problems like missing a semicolon and having to debug for almost three days. It’s crazy. Can you imagine missing a symbol and working your ass out trying to find out what caused the bug? It’s like finding a needle in a haystack! And that’s basically the daily life of having typos in your Perl code.

But I am glad that I did not give up on it too easily; as it turns out, Perl is king when it comes to regular expressions. It’s wicked fast, a mean machine when it comes to text processing capability. I was amazed in spite of my Python and R biases.

I remember my old web dev guru (Sir Ranel) telling us once that it’s not good to get too attached to a single programming language or framework; at this phase of life, I was practically weaned away from my comfort zone in Python and was catapulted to learning from the deep end. It is good to be thrown in this situation. Keeps me on my web development toes. I am grateful.

Some people say that Perl is an ancient programming language. As such, the consensus is to succumb to modernization and make the Perl site into a Python or PHP-powered one. But the one caveat with my current project is that it will take ages to migrate the entire Perl code into Python or PHP. According to someone I work with (a very experienced dev from overseas with lots of magic coding skills), it will require an estimated 500 developer hours to do so.

I don’t have that much time given my revamp goals. So instead of forcing 500 developer hours into my limited time and capacity, I decided to take the road less traveled: adjust my skills instead and learn Perl, work my way backwards in this semi-hieroglyphic code, and (make serious attempts to) modernize the web app in its native coding language. I was in “thinking out of the box” introspection session when I decided to do this.

After weeks of self-loathing and directionless aiming at finishing the numerous tutorials online, I finally made some progress today so I am posting about it. I am also lucky enough to have my nerd friends around to cheer me up. It had my Python dev friends laughing at my project, but they continue to cheer me on after laughing about the hilarity of my circumstance (true friends!). I have every intention of going back to Python and R. But for now, it’s really Perl on the top of the list.

I am starting to warm up to Perl now, enough that I can openly write about it. There are very few people trying to learn Perl at this time and age (insert more outsider sniggers in the background), so I’d consider it a life milestone for the year if I add this to the languages that I have adeptly worked with. It’s in the ranks of “I cracked a relic!” and lived to tell the tale.

There are many other things going on. But this is probably one of the personal projects taking up the bigger chunk of my time. I am really excited about how this will turn out. <3 <3 <3





Go Manila App



Mapping applications have been gaining more and more popularity these days, what with the recent geotargeted data privacy policies set in motion by EU member countries in online advertising, influx of alarming intensities of natural disasters, and general space explorations. And in other more locally relevant applications like disaster management or traffic situation monitoring here in the country, we will never have too many apps to help us navigate well.

Personally, I continue to check out the developments in these applications particularly in the mobile aspect because that’s where most of us are now, digitally.

One of the notable initiatives I have seen this month is the Go Manila app, a project spearheaded by Vice Mayor Isko Moreno. I like it a lot because of the Emergency Location feature (which does not require you to install Maps or GPS), Emergency Hotline summary, and the Traffic Livestream view funneled straight from the high-definition CCTVs installed in various parts of the region. You at least no longer need to have cellular signal during a disaster just to get a hold of the important numbers.

Probably my only wish right now is for this app to extend its scope not just here in Manila but in other regions as well. But it’s a good start, really.

To keep you posted with more developments, you can click here for the Google Play store link and try the app for yourself. Or follow them in their social media channels below.

Go Manila
Facebook: gomanila
Twitter: gomanilaph

The Image Processing Script Vortex

Sooner or later, I am going to write about this in detail. So, I might as well start right now. Signals, sensors, and machine learning has really taken image processing to a whole new level. I am finding myself learning new things for a deliverable. These are things that they did not teach at the university when I was in college. Or probably they were already teaching some if it at the Physics, Mathematics, or EEE departments.

It’s really nice and amazing to learn these things now at my age, but it’s also brain-draining. I took advantage of so many open courseware for my continuing education. My current favorite is that of Duke University (I will share my resources later when I have found the right words and the courage to put it out here) and my implementation language of choice for the moment is Python. I might have to migrate the code to R language eventually since it involves a lot of matrix operations.

It’s a life-consuming thing, trying to keep one’s self abreast with cutting edge methods of image processing. I am not even talking about the front that everyone knows which is like the filters on Instagram that you apply immediately on any image. I am talking about image processing that involves conserving measurement metadata and using it to save time, to make a single ubiquitous computer do what people will take months or years to do even with a team doing it 24 hours at a time.

I really like it. I mean, I never imagined that I would gravitate towards these topics but here I am, anyway, embracing the fullness of nerdgasms at its finest.

A lot of people in hackathons are so awesome and confident in sharing their new scripts. I admire them. I am particularly averse in speaking to people, especially if it’s with a large audience. So I tend to write about my exploits instead and this is how this blog has lasted longer than many things in my life. I do know that once I complete this script I am composing, I will share the process because that is how open source continues to thrive– it thrives in an unwavering spirit of generosity, whether in spoken or written form.

The new exploits leave me so little room for talking with people or catching up with my friends. It’s that one sucker tradeoff that I had to embrace once I took on this intellectually demanding and consuming line of life work. I say life work this time because I no longer see life in terms of work-life balance.

These days, I see life as life, and everything else in the work of my hands as a means of CREATING and EXPRESSING and making things better in every way possible. If I get compensated for it and I get to do things with that compensation, then it’s a mere bonus because these material things just wither and die and get taken away. Now, my new paradigm on the matter may not necessarily sit well with other people’s standards but I just simplified what I have and what I can contribute in terms of life energy expended or positive change contributed. I still have bills to pay, but the less I need for these, the better. I pretty much did away with other wants that pretended to be needs.

I better get back to that script by this time. It won’t be of any good to anyone unless I actually finish it. I am seriously looking forward to posting about them soon. I just need more time to complete some concepts and there will be something about it in here, for sure.




World Bipolar Day
and Git Object Errors

For today, I have this mighty Stack Overflow savior for my morning Git error. I almost fainted in panic when I could not run a git status on my local machine. As it turns out, I may have encountered some bug on git when my laptop died midway during a commit last week. It was compounded by the fact that I did not properly configure the 2nd laptop that I was using while I was on a writing assignment. And it caused some objects to be bungled up at the back. After an hour of googling and switching between Mozilla Firefox and the Terminal, I eventually succumbed to the SOS function.

I talked to a very prolific Django mentor. I said that I almost fainted in panic, and then he said: “See! That’s the thrill of it!” AND I AGREE! HAHA. 😀

For Ubuntu today, I discovered a very, very simple way to use virtualenv and virtualenvwrapper for Python version 2 or Python version 3:

mkvirtualenv –python=/usr/bin/python3.4m environmentname

(Just leave out the –python thing if you want to use version 2. 😉 )

I screwed it up on my main laptop the first time so now at least they are happily lumped in a single folder on the second laptop. I am making good progress and my next step is to automate everything by way of Bash scripts to save me typing time when I open my PC.

There is no coherent theme in this post because honestly, control is an illusion and I do not have much time today to edit this piece. Laundry is still waiting to be fixed, I have a dinner date with a high school close friend, and there are blueberry tarts that need to be delivered to my mom and sister.

I just wanted to write something–anything– because it’s been a long while since I last wrote. I am keeping this blog to somehow document snippets of my life as it unfolds. So that I will not forget these days and how I had to climb my way with all the power that I can muster.

It’s been a whole month, more or less, since I practically own my hours and my life energy is at its peak. However, I completely underestimated the demands of real life! And the awesome daily plan continues to be adjusted.

Yesterday was an extra special day for me because it’s World Bipolar Day. It’s a personal advocacy because the stigma is strong here in this country. In some countries, people with this disorder are respected and provided enough care. Here, you get ridiculed branded or stigmatized in some way, with the exception of the more open-minded lot — in my case, a handful of individuals that I can only count with the fingers in my hand. And I do not mind that they are few.

Because in this culture where friendships are branded by the number of likes you generate on a social media post, nothing beats the amazing quality of real-time bonding over coffee or a two-hour shared meal that does not involve crazily checking your phone or digital accounts every few minutes.

Being able to be your friend’s Facebook support group for 24 hours is not necessarily the ultimate indicator of friendship. There are boundaries that need to be respected. And the foundation of true friendship (not the superficial type of Facebook friendship being mass produced to everyone) is real quality time offline, trust, respect, and genuine care for that person’s welfare. I have actually found these awesome relationships when I decided to go on a Facebook hermitage. 🙂

I am genuinely thankful this year because so many good things happened to me despite the challenges that I had to face. I drew strength from a lot of places and it helped so much to have a good perspective about life even when you have this nagging health problem.

I accepted my situation as gracefully as possible. And the moment that I did that, things started picking up. Opportunities started popping up LIKE DAISIES.There is a clarity that has not existed before. And I was able to travel and meet new people and create things that were unthinkable a year ago.

I do not post as much as I’d want here because I have this whole adult life being lived outside of the computer. And then I have other intellectual explorations from inside the internet that demand my undivided attention. I cannot really believe how lucky I am considering the unemployment rates and the stigma and the difficulties of even basic things like waking up on some days. I cannot say that it is easy but this life is beautiful and worth living and there are places to explore, people to help, things to do, and mountains to climb.

I just wanted to write this all down because 5, 10, 15 years from now, I will look back at this moment in time and tell my future children that, hey, this was that moment that I stepped out of the useless bullshit and drama of life and began to really consider building a better future for you. 🙂 And you were worth it.



One-Third of the Track


Prior to my decision to temporarily suspend all simultaneous and unrealistic activities for 2015, I got to reap a bit from my hard work through this certificate. It really means a lot to me that I managed to crawl through this course during January. It was super challenging to balance it with other things but somehow I knew that this is really something that I want to accomplish.

Tidying data is not exactly a glamorous course. It had this rigorous coursework that I had to spend hours and hours trying to make sense of. I already have some basic ideas on where to use what I learned from this course. Just the potential of the knowledge learned to mix with the other things I know from my other intellectual pursuits fills me with excitement beyond words. It is a lifetime of exploration. I may not necessarily leave my computer for a long time for this, but it’s worth it.

Somehow, the pursuits I have laid out for myself for the last two years are taking shape slowly but surely. I know that I started from a completely different industry professionally, but recent events have shown me that this actually might work for me and it’s worth giving a second look. Heck, I really gave it more than a second look! I am transitioning into whole new realms altogether, a joint output of circumstances and my personal preferences. A lot of people look down on my decisions for work. I met one of them before Christmas and I swore not to subject myself to that kind of company again. Since the year kicked in, I have relieved myself of the need to “CONFORM” to what people call as acceptable or normal work. I am carving out something new and if it doesn’t work, I can just wing it til I make it.

There are so many things I realized about life since last year and one of them is that time is a non-renewable resource. I keep writing about this because it can never be emphasized too much anywhere.

So with three subjects down in this signature track course of John Hopkins, there are six remaining demanding subjects that will claim for my attention in the latter part of the year. I am psyched! I am really looking forward to doing more of my adventures in Python and R this 2015. I cannot see myself thriving in any other way. 🙂




Python PEP Talks

I have been scripting Python things for a while now but I never got around to tinkering with standards until today. I got acquainted with the Python Enhancement Proposal (PEP) and the override powers of the Python founder, fondly called as the Benevolent Dictator for Life (BDFL) in the community. Everything from style guides to syntax to implementation is discussed in the PEPs of Python. There are so many of them; it will take me a lifetime to get a full hold of them. I am now reading probably the tip of the tip of the tip of the tip of the iceberg.

The astounding documentation and organization of ideas and best practices in Python inspires and amazes me. I am working on consultancy projects for a bunch of convoluted and primitive data sets that require this level of organization. To mimic even a subset of this good crowd-sourced documentation and organization will really make waves and change any organization or institution for the better and permanently.

There is a reason why free and open source software works, and I think that the main reason Python succeeds (and other open source programming things, for that matter) is because of this level of organization.

Vaguely, this reminds me of the father of Singapore transport, a legend by transport planning standards. He planned the 100-year transport plan of Singapore. The father of Singapore and the father of Python possessed this insane level of foresight to the future with what they did and designed it in a way that the whole thing can outlive them and other people are not shut out of the development. It’s really nice to find these things while I am in the middle of my own life hacking pursuits and thinking of how to organize the other pieces of work in the industries that I have the privilege to organize. 

There are also numerous phrases that comprise the jargon of the world of computers. Now I know about the big ball of mud, the Cathedral and the Bazaar, and many other things that I did not know before. (In the same light, I fear becoming a young museum, as Pope Francis said in his message to the youth two weeks ago here in Manila. So I try to find projects to offer all these pieces of information to and keep it all relevant and in check.) The synthesis of all the available knowledge is quite awesome. Combining everything to make a synergistic tool that people can use to improve their lives is the ultimate objective of it. Sometimes, it is so easy to get lost in the process and lose sight of the main objective of making the world or even a subset of the world a better place.


Virtualenv and Virtualenvwrapper

Four Terminal Windows with Virtualenv and Global Linux Env for Python

Four Terminal Windows with Virtualenv and Global Linux Env for Python

I really spend a great deal of my time optimizing processes and holing up in the computer because there are so many things to learn! One of my latest favorite tools in Linux is the virtualenv and virtualenvwrapper. It allows me to have multiple versions of Python running for different Python projects. Virtualenv or virtual environment, allows me to create a development environment that can autonomously set up its own requirements in Python version or additional dependencies. The virtualenvwrapper is the extension that makes the commands of virtualenv organic to the terminal bash.

It allows me to experiment freely on multiple versions. And with the help of the Terminator app on Ubuntu, I can already see all my working environments in a single view if I want to put them side by side. This, and add the nice semi-IDE feel of Sublime Text, and I have my good old working machine up and running to speed.

During my first year, I was really focused on setting up Drupal mapping projects. Drupal helped me get started with web development. These days, my learning has abstracted a bit and I started venturing in other territories, territories that I would not have imagined for myself two or three years ago. But here I am anyway, exploring frontiers in the backend side of things that are truly fascinating albeit sadly time-consuming. If I were to trace my GIS roots from college, I think that going for Python is one of the more logical paths to take: python-logo-masterI began working with Python in the scratching-at-the-surface kind of way when I learned how to script. These days I am starting to look at Python in the eyes of a much larger website project framework. I have frequently heard of the powers of Django as a framework. The official website’s tagline is that it is the framework for “perfectionists with deadlines”. With someone extremely OC about details as I am, I am up for the challenge and I want to learn Python and Django framework all the more.

Aside from Python, I also started getting myself acquainted with the supreme powers of R programming for statistical analysis. I am just mind blown at the number of available resources online; the main challenge these days is really to fight for the time to learn the new technologies and make something extremely useful out of it. In the same way that I started to make peace with the kitchen for whipping up ingredients to create a new recipe, I am also starting to see how all these different tools tie together and help me create something new that can be consumed or of use to me and other people online and offline.

Simultaneously learning two languages has its drawbacks. Occasionally, I find it hard to focus and the context switch sometimes makes a dent on my personal productivity. But I have perpetually multiple pursuits and this challenge is the price I have to pay for the many wonderful things being thrown my way, code-wise. The only logical thing to do is rise to the challenge and say no when the tank of my work load is full. My constant gripe about getting started in web development at age 28 is that I should have started sooner! But it’s never too late, and I can compensate for the time loss by my passion to learn.

And with this kind of setup, I really have my game face on! 🙂 <3