Travel: Hangzhou, China

I’ve never been much of a traveller. Travelling has never been high on my agenda but it has been on my agenda for some time now.

29 March 2013, I got on a jetplane headed up north to China! As I’m already residing in an Asian country, my expectations weren’t high. I always keep anticipation to a low as a way to manage disappointment. I don’t take a negative perspective, I just try not to over-think any given scenario. Does it work? Not really.

Coming off an airplane at Hangzhou Xiaoshan International Airport for the first time I was greeted by a sudden dip in climate. So far, so good. We spent most of the first two days in Hangzhou guided by a tour guide, Grace. She was wonderful and spoke English well enough.

Hangzhou is a very popular tourism city in China, however, we only encountered less than 5 people who spoke  ANY English (Not even Yes/No, I’m not kidding) which I thought was a little odd but then again, 99.9% of all tourist were actually Chinese tourists from other provinces.

A few years ago, I took an introductory course in Mandarin here in Kuala Lumpur. I knew enough “transactional” sentences to get me by but I was naturally shy at first to try speaking to them but I quickly realized that speaking a little grammatically incorrect sentences was a country mile better than pointing and using hand gestures.

The only setback was that they didn’t get I only spoke very basic Mandarin and would go bullet train on my behind. I then would have to attentively listen for any keywords that I can pickup. I should have paid more attention in class.

It got us by. We got food, bargained for a few deals and even went as far as a joke which stemmed out of a mispronunciation. It was a true confidence booster.

The rest of the article is going to be accompanied by pictures. Forgive me for the quality of the photos. My iPhone 5 camera and my photography skills or lack of it, is probably the worst combination in any situation.

A dragon boat on the West Lake.

A dragon boat on the West Lake.

The biggest point of attraction in Hangzhou is the West Lake which is unbelievably breathtaking. I’ve always been drawn to water and the lake was a serene sight. The water was gentle and fairly calm.

The lake is remarkably maintained. The entire surroundings were clean. The flora found all around the lake was trimmed methodically. There were sufficient public amenities all around which were also well maintained.

 

 

 

A sea of beautiful Tulips

A sea of beautiful Tulips

 

Not too far away from the lake (depending on where you actually are), yet another attraction lies; Prince Bay Park.

The park is full of beautifully grown Tulips and a whole other range of flowers that I’m less accustomed to. I wish I could tell you the names of the flowers but then we’d both learn something new.

 

 

 

Picnic-ing in Prince Bay Park

Picnic-ing in Prince Bay Park

 

There are a lot of people out and about having little picnics all over the park.

 

 

 

 

Night view of the West Lake

Night view of the West Lake

 

The lake at night transforms into something else completely. Full of lights and other kinds of attractions.

 

An elaborate musical fountain

An elaborate musical fountain

 

 

 

 

 

 

 

 

The other side of the city

The other side of the city

 

 

 

 

 

 

 

 

Impression West Lake

One of the best attractions on the West. I truly wish this picture could do it more justice. The entire performance was on the lake itself! This house/boat was only used for a few scenes.

Part of the elaborate performance and light works.

Part of the elaborate performance and light works.

 

 

The photos that I took are hardly desirable and are a far cry from the actual scenery.

 

 

 

In the 3 nights that I was in Hangzhou, I learned more than I ever imagined I would. I wouldn’t change a single thing about the entire experience. Simply refreshing.

Working Remotely

Yahoo! recently had an internal memo leaked out where CEO Marissa Mayer bans staff from working remotely in order to boost communication and productivity. As is the order of the interwebs, this has raised endless arguments and flame wars on all sorts of sites and forums.

While banning it outright seems a little unfair to the staff with current remote arrangements but the rollout plan is unknown to anyone outside of Yahoo! So why speculate?

This post isn’t about Marissa’s decision but is instead about working remotely.

To brand the decision a bad one outright is a little unfair as motive behind the decision is clear and it makes perfect sense to me.

Many a times, my colleagues and I have had impromptu discussions which led to some of the biggest and best decisions we’ve made collectively as a team. If you have an idea, suggestion or even a question, you could simply walk over to a colleague’s desk and talk it over. Have someone else join in and throw ideas around.

Sure, you can send an IM or an email but has any real productive work come of writing messages back and forth? Probably but not as much, perhaps.

On the flip side of the pillow, I am totally opposed to the idea of long and winding meetings where nothing gets done and all decisions are “kept in view.” Pointless Powerpoint slides with likely inaccurate data that mean nothing from reports compiled three years ago.

I concede the argument that video conferencing has gotten a lot easier and 300% more reliable than what it used to be. Gone are the days where you spent the first 45 minutes of every Skype call with “can-you-hear-me’s” and eventually forgetting what you called about in the first place. Google Hangout is a fantastic browser based alternative which works just as well.

However, it still doesn’t feel as productive as face-to-face conversation but that’s no reason to completely banish working remotely. This does not mean it hasn’t worked for any team. I’m sure a whole bunch of teams would have had successful implementations of working remotely. It requires discipline and dedication.

I can’t speak for everybody out there and I am not. I guess if it works for you, it works for you.

Besides the obvious benefits of working remotely like skipping traffic and saving on office space, working in small doses of isolation could be totally beneficial.  I don’t know about you, but I sometimes prefer not to hear about Rachel’s problems with her boyfriend. Not only do I not care most of the time, it disrupts my thinking workflow.

However, Rachel’s problems could just as well be replaced with other home problems like you forgetting the milk. It might be a little more difficult for married people but at the same time they get to spend more time with their children. Who knows? Married people working remotely probably. I should really stop being sarcastic to myself.

I’ll be honest. When I started our writing this post, I was in total agreement with Marissa’s decision to ban it completely but now I’m not so sure anymore. Again, if it works for you, it works for you.

Working From Home

Working From Home

 

Writing Ugly Code

We’ve all done it. Weather we realize it or not, know it or not, we’ve written some bad code, somewhere in some project. So bad, you lose sleep over it. So bad, you sit in a corner for 3 days without moving, petrified that someone might take a peep at the code and commit suicide.

Okay, a little dramatic but you get what I mean.

So what do you do about it? Especially now that you don’t have the time and a new project is burying you in a pile of documentation and git reviews.

Bite your lip and pray nobody sees it? Well, this might work for a while but you know you’re better than that. It is not a matter of proving anything to anyone. It’s about delivering the best you can, at all times.

It doesn’t matter if you didn’t know as much at the time, but now that you do, go ahead and make time. Refactor and re-engineer. Shorten your code. Name your variables and functions better.

Where is this lecture coming from? My own guilty conscious, of course.

A little background about the situation: It was a new project with a system I’ve never used before that severely lacked documentation and I was under a lot of pressure to complete it on time which wasn’t much because the client wanted to see it quick and we needed to test it even quicker.

One thing lead to another and before long, I created a monster, on the inside. Nobody knew what happened at the back-end but it has been bugging (no pun intended, cause it’s not buggy :P ) me ever since.

Now that I know better, I’m going to fix it. This is a promise. I have to. I need to.

Sometimes obsessing over little things can work to your benefit, believe it or not. I’m not convinced but I’m trying to hold on to that.

 

It's bad and I should feel bad

It’s bad and I should feel bad

So You Have a Million Dollar Idea?

A lot of times when I talk to people about starting a company or launching an application, the general consensus is that the idea is the only thing missing from the equation. Everything else will fall into place. This couldn’t be further from the truth.

Everybody is an idea away from a billion dollars.. not.

For some strange reason, people have come to the conclusion that if they think something can work for them, they’re sure at least a million other people will kill and beg to sign up.

To turn a product into an idea you must first learn ‘a’ problem. A new Instagram-like app with on picture captions is going nowhere. Why? There is no problem with Instagram to begin with.

The only thing missing from Instagram is on-screen caption. – Nobody Ever

An idea is only a good idea if it solves a problem and a problem is only a problem if you can prove that you and your pet aligator are not the only ones to think so.

All Most developers are more interested in converting the ideas in their heads to on screen solutions. However, not all of them are interested in finding out how much is their idea really worth. How can it done better?

Most of the time they’ll be put off when they eventually find out the past 2 months of late night keyboard bashing and Stack Overflow surfing has lead to nothing.

Don’t imagine a market. Create it.

Before jumping onto the drawing board, pause for a second and figure out what is the problem that you’re solving. Just “simplifying” something isn’t enough. I would much rather click twice as much on a software that does twice as much instead of having 2 different applications with varying interfaces to jump back and forth from.

Keep in mind that people are not keen on change. Especially if it requires them changing the location of their money from their pockets to yours. Give them a reason to change.

Is it really a million dollar idea?

Is it really a million dollar idea?

Humblebrag

Just like everybody else, I have a Facebook account, a Twitter page, a LinkedIn profile, an about.me page and every other junk of an excuse for social media. In recent times though, I’ve stopped posting statuses (except for Twitter), uploading pictures, checking-in and what not.

It’s not because I don’t get on most these sites, my reasons are a bit more based on “principals” if I may use that term.

I find that people who are constantly posting are seeking little bits of attention. “Look at how much money I spent”, “look at what I’m eating”, “look at where I am”, “look at how smart I am”, “look at how profound I am” and the list goes on and on. Posts about absolutely nothing but the people themselves and new the ways of how they perceive themselves to be better than everybody else.

It comes off a little pretentious.

Sure, this might sound negative to some and I truly understand. I don’t mean to hate or to pass judgement so I’ve lightly withdrawn myself from most of these networks.

About a week ago, I came across this article on HN: The Rise of False Humility

If ever there was Deja Vu, this article was it. Every single word on that page, was borrowed from my thoughts. I could finally put a name to this phenomenon.

Really, why tell us?

Really, why tell us?

Ubuntu Mobile OS

I don’t know about everyone else, but I was really excited about Ubuntu’s most recent announcement, a full fledged Ubuntu OS with a brand new intuitive mobile interface.

At first glance, it is everything you want it to be; a phone and a desktop all bundled up into one portable, elegant solution. On the mobile front, it has one of the most beautiful designs that I’ve come across. On the desktop side of business, well, it’s a complete Ubuntu distro. What’s there to hate?

When the announcement was made, my first though was I’m getting a new phone next year. Reading on through the press release, my thoughts changed to, I’m getting a new OS on my existing phone (HTC One X). Reading through my favorite blogs, I concluded it’s not ready.

I’m not technology critique but there are more drawbacks to having your computer and phone being the same device. There are so many little scenarios that ran through my head as to times where I’d like to have my phone on me while my computer is doing something like downloading a file or even uploading some content.

For the past few years or so, I’ve been trying to find the perfect solution transporting my content across all my devices, phone, desktop and laptop (Android, Ubuntu and OSX). The best I’ve come up with is trying to live on the cloud. This was especially difficult when I was moving to my new house as I was completely disconnected from the Internet.

I keep my docs on Google, my notes on Evernote, my pictures on Dropbox and my code on Bitbucket (free private repositories) but I’m still missing so many fronts; my music for instance. I would love to have access to my music from anywhere or even my movies.

Another point that kept bugging me was the power of the device. On Ubuntu’s website, it’s specified that in order to have the desktop convergence feature, the phone needs to run at least a Quad-core A9 or Intel Atom processor. Sure, it’s decent, but can I write code, run a webserver, listen to music, keep my design document open and a few other tabs on my browser without having to “get used to it?”

Won’t it overheat? What about storage? How much data can a phone store?

Only then did it hit me. This phone is not meant for me or other developers – yet. It makes me really sad but unlimitedly excited that what I’ve been looking for is actually here.

I’ve never been one to carry a tablet around. Too much of a hassle but this will indeed change my mind. Once it can be churned out into a proper ecosystem, I’ll definitely be on board.

Don’t get me wrong, I’m switching as soon as I can but not depending on it as my choice of personal computer. I’ll stick with a proper desktop/laptop til there’s a bit more potential. Let’s see what the hardware manufactures would say about it.

Ubuntu OS for mobile

Ubuntu OS for mobile

 

 

 

2012: Year Review

2012 has been one of the most bittersweet years of my life. Sweet from the perspective of my personal growth as a developer but I feel I fell quite short in terms of my personal life.

For the most part of the year, I was focused on PHP and jQuery. I experimented with a lot of other libraries but I found that jQuery works. It’s well documented (this has always been a major plus for me) and widely used. It hasn’t failed to get the job done.

Working in a company that’s constantly pressed for time, development speed is always essential. It’s also necessary for anyone on the team to be able to look at a piece of code and quickly comprehend it. Time is truly of the essence.

The projects that we worked were implementations of the Docebo learning management system. It was a constant struggle with Docebo. When we first began working on the projects, it was still an open source project but the company has gone ahead and cloudified their system.

It’s hard to argue that it was a bad decision from their perspective but the decision ultimately pissed a lot of people off. One thing about Docebo is it’s painfully hard to develop because it’s so poorly documented. Not that I can complain much about it.

I would have liked to take some shortcuts along the way but my better judgement just wouldn’t let me. I am thankful for that. I owed it to the project and the especially to my team members. My future self thanks me tremendously.

Have you ever written code and looked at it a few months later and thought what was my past self thinking? I’ve made that mistake one time too many. I’ve been working on that. Slowly but surely.

Don’t fool yourself thinking you’re writing self documented code.

A big portion of my time was also spent learning the Yii framework. It is honestly a joy to develop with. The documentation is well planned and is not overwritten.

The learning curve was a bit steep but one day I woke up and it all clicked. That’s the beauty of writing code, it makes sense.

I’ve also experimented with a whole lot of other frameworks and I thought Laravel and Codeigniter were pretty good as well.

Once again, it boiled down to the use what you know best scenario. No regrets.

On to the business part of the Web development spectrum, I can’t even start to write about how much I’ve learned. I really wouldn’t know where to start.

I’ve taken a significant interest in entrepreneurship as I’ve come to learn that it is equally as rewarding as writing code. To have the tiniest impact of somebody else’s life is a thought I relish.

I’ll write about this in a more detailed post soon.

Overall, I’ve truly enjoyed 2012 from the point of learning and development. It’s been an exceptionally rewarding experience. Learning never stops, not ever.

I want to strive to learn something new everyday. There is so much to learn.

image

My Niece Learns to Program

A while ago, I wrote a little game in Javascript for my niece. It was a really really simple side scroller based on the Little Mermaid that kept on going on and on. The object of the game was to miss as many sharks as possible.

Not much fun I know, but it made her really happy. Today however, she was telling me about a game idea that she wanted us to work on. It surprised me a little, given that my niece has never shown any interest in programming.

She’s 8 for the record. Not the youngest to start out I’m sure but it was still difficult. In the beginning anyways.

I thought I ought to teach her a little Python as it was a recommended language for new programmers starting out and I happened to have a copy of Snake Wrangling for Kids handy.(Garage sale, don’t ask.)

There were a few challenges out of the box. One of them was how do you explain a variable to child who has never heard of the term? Each answer was met with 3 more questions. She seemed to struggle with the concept at first, but she seemed really determined which encouraged me a lot.

I tried my best to explain programming in cartoony terms and characters which made it a lot simpler for her. (Much more difficult for me) Before long, she was asking the right questions.

We worked for about 3 hours covering simple strings, variables and believe it or not, very simple list concepts. Though not a miracle, but I’m really proud of her.

Inspiration comes in different shapes and sizes. Never underestimate.

Tori and Keira.

Tori and Keira.

 

 

 

Ruby on Rails

One of my goals for the first quarter 2013 (which I will elaborate in another post soon) is to learn Ruby on Rails. Really, really learn. I know enough Ruby to get started. I know very little Rails which is what I’m trying to change but I constantly struggle with the configuration and development environment.

As of now, I’ve never had a “clean” installation. Some gem somewhere is acting out, the database is pointing elsewhere or something of that nature. It is very frustrating. However, I’m determined.

Ruby on Rails is a little bit outside of my comfort zone, which is the Yii framework for PHP. Yii is simple, fast and easily deployed. I am using it for several of my side projects and even for one at work. I like it. I know it. I’m used to it. But what’s a developer if not an explorer?

Cheesy, I know. Sounds like something Frasier Crane would say.

I do indeed.

I do indeed.

Hello world!

Being a web developer isn’t as easy as usually preceived. True, the available resources are all over the place are pleanty but that’s just it; the available resources are all over the place are pleanty.

How do you determine which Js library to use out the seemingly infitiy “extremly recommended ones?” Which application framework? Language? Db? Template engine? Code control system? Code editor? OS? This is just the tip of the iceberg.

I like memes.

I like memes.

Once you’ve made up your mind, which could be one of the most tedious process of the actual project. Opnions are endless and tempares flare up really quickly on this part of the websphere.

Before we I go on and on about that, I’m going to quickly outline out what this blog is about and what it is not;

This blog is about

  1. web development
  2. learning web development
  3. exploring new technologies
  4. quest for best practices and methods
  5. mostly, it’s a reference for myself and hopefully anybody that comes across it.
  6. finding Zen

This blog is not about

  1. determining the “best” web technology (I don’t believe there’s such a thing)
  2. the chronicles of a web dev fanboy (Maybe, a little)
  3. finding Zen

These are the few things off the top of my head. I’ll hopefuly add on a lot more along the way.