A Thank You Note

After 5 years with Grab, I have been laid off and I am looking for a job preferably in Singapore but I am open to any relocation offers. I am also open to consider remote-first opportunities.
This was one of the best moves in my career that I could have ever imagined. I am humbled to have been part of an amazing team. And I feel proud what we achieved together.
What follows is a description of my contributions to Grab, my skills, some of my passion projects, hobbies and other interests; all in the hopes of landing a better job.
For the last one year, I worked as a Lead Fullstack Developer for a Site Reliability Org within Grab where I mostly worked for an internal tool to help shape how incidents are managed in Grab. This meant understanding various high and low severity incidents often by the means of attending calls, postmortem analytics and research, recognising toil, interviewing folks managing incidents, etc. All in the hopes of creating something that could greatly have an impact on the lives of fellow Grabbers and basically help in anyway it can, when sh!t hits the fan.
Before that, I helped shape another internal tool to help reduce toil between a couple of Engineering departments and basically helped smoothen out the processes and made all things a little more efficient.
Lastly, the tool that I started my career with in Grab back in 2015 from Malaysia office, helped bridge gaps between Customer Service, Offline teams and Engineering together with the fact that I joined at a time when Grab was scaling rapidly and was getting ready to become what it is today. This tool helped Grab win many fights and is something I am really proud to have worked on.
From skills perspective, I adore working with ReactJS and have been working with it since its minor semver versions. On the backend, my language of choice has been Ruby on Rails over the years but I have worked with NodeJS extensively as well. And since Golang is all the rage these days, I have to mention that I have dabbled with it but not nearly comfortable with it. Software development skills in general are usually considered transferable and I am fairly certain, given time, that I should be able to pick this or any other language up just fine.
Software development these days of course also comprises of a number of other necessary skills, tools, services and frameworks. In my time with Grab, I have been exposed to working with various AWS offerings (S3, RDS, Cloudfront, EC2 etc), Log management and tracing solutions (Scalyr, Elasticsearch, Lightstep, ELK etc), Infrastructure management and automation tools (Terraform, Jenkins etc), Code repository management services, Atlassian offerings for bug reporting and documentations, among many others.
Other than the core technical expertise mentioned above, I bring in a lot more to the table which I consider to be equally, if not more, valuable. Things I would like to use more often on a daily basis at work. For example, I have a keen interest in automations (as it should be evident by the examples mentioned above). I like to think, that in a service industry, having the mindset of customer-first naturally means that you are thinking from your customer’s perspective, asking them questions, finding out the root problems and figuring out the best solutions. Its a game of trial and errors at first but when you land on something and when you have found that sweet spot that just works for whoever may be your customer; the feel, the sense of accomplishment that comes with it, is difficult to describe in words.
On that note, I do want to bring attention to some of my lowlights as well. I suck at algorithms. I barely understand searches and I really have no clue whatsoever about sorting algorithms. It has to be said though, I have very rarely needed to know them thus far but I can understand the need of knowing pure data structures and algorithms. This comes from a fact that I don’t hold a Computer Science degree and I have learned what I have learned over the years through work itself.
On another note, I would like to mention a set of tools I have been using. I spent a lot of time in spreadsheets and my favorite tool in this area has to be: Airtable. From its enhancements on top of what tools like Excel or Google Sheets already offer, its clean interface, to its blocks and most importantly, its easy-to-use API; had me at hello. I also use Notion and Coda for my personal life automation needs. I am a fan of No-Code tools in general such as Glide and I also adore services like Glitch and Vercel (ZEIT), which makes it all too easy to get up and running with web applications. I also like to dabble with Puppeteer and Playwright for some browser automation fun in my free time.
Besides this, I have a keen interest in using Mozilla’s pdf.js for parsing PDFs. Parse it, chart it, make decisions and automate it all. Though, this work is far from anything termed “professional” and still requires a lot of manual work. But this is one of the key aspect of my personal life automations needs.
Another aspect which started it all and hasn’t died since is: my love for animations. I maintain separate Codepen and jsFiddle profiles for this. Perhaps I will take some time off from this madness and let the creative juices flow, and let the art express itself.
I am also a bit of a performance zealot. Specially when it comes to Frontend performance but not limited to. I have had my fair share of Database query optimisations, API caching mechanisms, and of course front-end assets optimisations. All in order to serve the content to consumers as quickly and as efficiently as possible. UX > DX.
Other than this, I am a beast when it comes to Cricket. Or at least that is how I see it 😀 I also have kicked many a$$es in foosball but I make silly mistakes too so its all equal there 😛 and one of my recent interests is in Boardgames; I love Avalon but I really suck at it. I have in my previous lifetime, dabbled with Caligraphy but that has been limited to Arabic and Urdu languages. I still wave imaginary lines in thin air with fingers. My wife hates this because I zone out when I am doing this.
I am currently on Employment Pass and my wife and kid are on Dependent Passes tied to my EP, expiring altogether in about 2 months time. Beyond that, there is a 30-day standard STVP but I cannot count on it. I am giving myself up till mid of next month to find something suitable but if things don’t work out, then I will be folding and going back to my home country of Pakistan; take a break and start afresh. Lets see.
In the end, I just want to thank Grab leaders, my managers, my colleagues and my friends over the years for all they have done for me. Way too many favors and requests fulfilled to list. I am grateful for this amazing opportunity, I am thankful to Almighty for all the friendships made and I am humbled for the support I have received from my fellow comrades. Thanks all.
#GrabFriendsForever #GFF #Grab #OneGrab #GrabAlumni

A Thank You Note

So I Gave A Talk For The First Time

I was invited at Mohammad Ali Jinnah University for guest speaking for one of their courses involving Computer Graphics & Animation.

It is a privilege to begin with to be invited to speak at universities. Pakistan, although known for a lot of wrong reasons around the world, is an untapped territory as far as technology is concerned. There is a lot of talent here. Talent that needs guidance and experience. Knowledge that needs to be transferred. And this was me trying to do just that. (Nope, not trying to come across noble).

Intro
Who is this guy anyway?

Standing up and presenting is definitely not the easiest things on earth. I have always felt scared of it and I cannot tell you how many times I have successfully dodged this bullet. Convincing myself that I don’t ever need to face this terrifying situation, that I can code forever with my headphones on remaining oblivious to the rest of the world. No more.

This is something that has been in my mind for quite some time. That eventually I will have to do this, and express myself like this. That I will have to bite this bullet. Feels like natural progression to me anyway. So how did it go?

McDonald's 100 Moments
McDonald’s 100 Moments, developed by goodboydigital.com.
Origami
A colorful folding doodle created by Hakim El Hattab.

Nervous Start

Nervous Start
Not looking very confident there, T?

As one would expect. I cannot tell you how nervous I was. Shaking like a leaf. Do you guys ever get that tingly feeling on your spine, or as if your structure is shaking from the inside?

My body was begging me to just run away. Part of me was just hoping that someone would come and tell me this session is not happening today.

Time Flies

Get Inspired
Awards’ websites that I follow.

But as it turns out, it felt easy as the time went by. And I think the major reason behind it was that the stuff I was presenting was something that I enjoy myself, something I feel strongly about.

I love animations. The EaseIns and EaseOuts (and EaseInOuts). I can look at “movements” whole day. I think this is the key.

Felt Like I Could Go On

Find Passion
Passion is the key.

And in no time, 45 minutes just flew past. Yes, 45 minutes it was. But by the end of it, I felt like I could’ve easily spent another 15-20 minutes staying on the last ‘Find Passion‘ slide. This slide is the crux of my whole thing anyway.

Passion is something that cannot be ignited from the outside. It has to be natural. It has to come from within (inception anyone? ;)). But I also believe exploration & experimentations help. That was the message.

Need Feedback Though

Students
Curious eyes.

I can use some feedback. From students who attended. What mistakes I made and what are my areas of improvement? Was I too loud or too low? Did you get the whole thing? Overloaded or meh?

And I need feedback from industry experts too. How do you find my slides, bit too much to digest? too little? Did I miss anything important? Any tips?

I really need feedback.

Credits

I linked to a few examples from people I admire from around the world. Plus, to actually get students started, there are many options presented to them that I grew fond of over the years. I hope I didn’t offend anyone by linking to their work (or by not linking) as my sole intention is for the students to get inspired.

Slides can be found here. Hopefully more of those to come.

Tahir.

So I Gave A Talk For The First Time

On The Recent Flipboard.com Mobile Website Redesign

No, not another opinion. Enough already. I am just keeping a record of them for future references. Flipboard.com website went through a major update and it created a buzz. Here are the details:

1. 60 FPS On The Mobile Web: [Published: February 10, 2015]

The DOM is too slow.
It’s not just slow, it’s really slow. If you touch the DOM in any way during an animation you’ve already blown through your 16ms frame budget.

Link: [http://engineering.flipboard.com/2015/02/mobile-web/].

And the reactions:

2. Flipboard comes to the web, and it’s beautiful: [Published: February 10, 2015]

On the bigger screen, Flipboard is big, beautiful, and responsive. In moving to the desktop, Flipboard hopes to open up a big new avenue of distribution. But can a mobile app like Flipboard win millions of new fans on the web, or is the company building for the past?

Link: [http://www.theverge.com/2015/2/10/8008905/flipboard-comes-to-the-web].

3. How Flipboard Chose Form Over Function For Their Web Version: [Published: February 11, 2015]

I am dismayed that Accessibility was treated not even as a mere afterthought, but as something worth sacrificing completely for the sake of flashiness.

Link: [http://farukat.es/journal/2015/02/708-how-flipboard-chose-form-over-function-their-web-version].

4. Flipboard – React Canvas Accessibility: [Published: February 11, 2015]

Testing the Flipboard site on a mobile device such as an iPhone, quickly reveals that the content is not available to screen reader users. This is because the content is painted onto a canvas element using React Canvas. The words, structure and UI are all visual, there is nothing but pixels.

Link: [http://www.paciellogroup.com/blog/2015/02/flipboard-react-canvas-accessibility/].

5. On Flipboard.com and Idealism vs. Pragmatism: [Published: February 13, 2015]

The obsession with 60fps has lead Flipboard to completely reimplement the DOM, but without any of the things that the DOM is good for, reintroducing many of the problems that we fought against for many years in the form of Flash.

Link: [http://www.broken-links.com/2015/02/13/flipboard-com-idealism-vs-pragmatism/].

6. Flipboard And The “Mobile Web” Dream…: [Published: February 15, 2015]

What this post told me most of all is that it isn’t solving an issue of the web.

Link: [http://christianheilmann.com/2015/02/15/flipboard-and-the-mobile-web-dream/].

7. Accessibility vs User Experience: 60 FPS, Flipboard, And The High Road To The GPU: [Published: February 15, 2015]

TLDR Has the pursuit of jank elimination has come at the cost of accessibility? Yes, for now, but in the end we will look back on these techniques as hacks to get around subpar browser rendering performance.

Link: [http://rachelnabors.com/2015/02/15/accessibility-vs-ux/].

8. 60 Frames Per Second And The Web: [Published: February 15, 2015]

60 frames per second is not “would be nice”. It’s “must have”. And the DOM doesn’t have it.

Link: [http://daringfireball.net/2015/02/60_frames_per_second_and_the_web].

9. Radical Statements about the Mobile Web: [Published: February 20, 2015]

There are land mines in browser JavaScript that kill performance: DOM APIs. All of them are synchronous. If you touch the DOM, the entire JS engine may block for a while.

Link: [http://jlongster.com/Radical-Statements-about-the-Mobile-Web].

10. React Is A Terrible Idea: [Published: March 11, 2015]

A good framework supports separation of concerns. Web components do not impose a way of representing views or attaching event handlers or rendering to the DOM. A bad framework couples those things together so that you can’t use one without the others. That’s what React does.

Link: [https://www.pandastrike.com/posts/20150311-react-bad-idea].

Ciao.

On The Recent Flipboard.com Mobile Website Redesign

Code Tip: parse variables response from backend into as3

Just a quick code bit I wanted to share, for those interested. Example below assumes that a response from backend is in this format:

id=someID&status=someStatus&message=someMessage

Here is how I parse it. If someone knows a better & faster way; please let me know.

function onResponseComplete(e:Event):void
{

var nameValuePairs:Array = unescape(e.target.data).split(‘&’);
var id:String;
var status:String;
var message:String;
var i:int = 0;
var length:int = nameValuePairs.length;
var nameValuePair:String;
var variable:String;
var value:String;

for (i = 0; i < length; ++i)
{

nameValuePair = nameValuePairs[i] as String;
variable = nameValuePair.substring(0, nameValuePair.indexOf(‘=’));
value = nameValuePair.substring(nameValuePair.indexOf(‘=’) + 1, nameValuePair.length);

if (variable == ‘id’) id = value;
if (variable == ‘status’) id = value;
if (variable == ‘message’) id = value;

}

}

Code Tip: parse variables response from backend into as3

Long time no post

Wow! I have been out of blogging scene for a while now.

Things have changed for me a little. I said good bye to Dubai, moved to Singapore but remained within the same network, i.e. OgilvyOne. It has been four months already here and so far I like it; both the workplace and the city. Lots of things learned but still lots more to go. Anyway, I will try to be regular now and keep posting about new stuff happening in my life. Ciao!

Long time no post

Busy days ..

Things have been pretty busy for me which is why I have been ignoring this blog. Worked on an interesting Twitter banner for a newspaper and currently working on a Facebook Flash game for a soft drink company. Both will be shared later.

More to come. Happy coding.

Success usually comes to those who are too busy to be looking for it. ~ Henry David Thoreau

Busy days ..

Offtopic: Game – Batman Arkham Asylum

Don’t want to do another commentary on this game as you can find plenty over the internet but I just have to say this, it is the best game I ever played. Check those videos out below and see if you can get excited too:

Trailers:
Official Launch Trailer
Joker Trailer
Villains Trailer
Freeflow Combat Trailer

Reviews:
IGN
GameSpot

Interviews:
Kevin Conroy (Batman’s voice)
Mark Hamill (Joker’s voice)

Now I am just waiting for Batman Arkham Asylum 2 i.e. Batman Arkham City (which is to be released sometime in 2011).

Offtopic: Game – Batman Arkham Asylum

Volvo S60 Pinball game – Things I learnt

As I mentioned earlier, this is my first game project. If you have not checked it out, please do. I had so much to learn from this project. Here is a breakdown of the new stuff I ended up using:

Box2DFlash

Box2DFlash is the best available physics engine for flash in my opinion. I had looked into APE (ActionScript Physics Engine) and Fisix Engine briefly before I finally decided to go ahead with Box2DFlash. It is basically an ActionScript3 version of an opensource physics engine Box2D developed by Erin Catto. The main reason which got me going with it was the richness, the details and the controls it offered me. If you are looking for a list of different physics engines available for ActionScript, Henry Jones has written a nice blog covering almost all of them. The examples right there on the homepage of Box2DFlash, show you the capabilities of this engine. But I have to say, setting up and then getting along is quite difficult with it. This is where QuickBox2D comes in.

QuickBox2D

QuickBox2D is basically a wrapper around Box2DFlash. Zevan Rosser, the guy who created QuickBox2D puts it rightly:

The main purpose of this library is to significantly simplify instantiation of rigid bodies and provide a simple way to skin rigid bodies with custom graphics.

If you are looking for a comparison of what a simple task with Box2DFlash would look like with that of QuickBox2D, Emanuele Feronato has written a blog tutorial using QuickBox2D and a tutorial done earlier using Box2DFlash alone. It clearly shows you how easy it is to setup Box2DFlash when used with QuickBox2D.

There is a very well-written tutorial on tutsplus which covers QuickBox2D from ground up. This series on tutsplus covers most of the basic stuff for this library but at the time of this writing, the third in the series is yet to come. Plus to understand skinning, Zevan Rosser has written this entry and for contacts (collision detections), this series of posts on his blog or just search the term “contacts” on his blog and you will see many results. For the different forces I had applied on this game on various spots, from handles, to spring, from tunnel to roads, this entry helped me understand better the available forces in Box2DFlash.

I highly recommend that if you decide to use Box2DFlash, QuickBox2D should be used alongside. The only thing is, I am really hoping QuickBox2D keepgs getting updated to be used with the latest version of Box2DFlash. I did not miss any features but it would be very nice if both the libraries update on a regular basis.

Robotlegs

I had been thinking of starting to get into frameworks and all. Tried and worked with PureMVC on a couple projects but in this project I (based on a lot of hubbub over internet) used Robotlegs. And it was a good decision I made.

This whole idea of wiring the objects together, the events channeling through the application, model being updated only by commands, seperate Service actor for all external communications and view living its life all alone (decoupled) is so good. I absolutely loved Robotlegs. To understand better this framework, somewhere in the middle of this slideshare by Joel Hooks, he explains the workings of this framework. Plus this hello world video tutorial by John Lindquist explains quite a bit about the framework. Then on InsideRIA, there is an introductory series by Joel Hooks starting off with the basic question, what is Robotlegs?. Then ofcourse, the robotlegs community is so quick in responses. Robotlegs just clicked.

SFXR

And just when I was in need of sound effects for my game, I saw this blog post by Keith Peters. SFXR lets you create sound effects and provides extensive control over the sound you want to generate. It then exports the sound in WAV format. There is an ActionScript3 port of the same (mentioned in Keith Peter’s blog’s comments).

Facebook ActionScript3 SDK

I used the new Facebook ActionScript3 SDK for the share with facebook functionality of the game. This api is updated by talented developers at gskinner.com so you expect quality and quality it is. I can finally say that the troubles of working for Facebook with ActionScript are over.

Overall, I had a nice experience building this game. I had been thinking of doing a game for quite some time but just was not getting any opportunity. But now that I did, I am happy with the results.

Phew! long post haan? Check out the game.

Volvo S60 Pinball game – Things I learnt

Volvo S60 Pinball game

We pushed live yesterday the launch website of Volvo S60 and the site revolves around a flash pinball game. The objective of the game is to score as much as you can for a chance to win a trip to some place in Botswana (kidding; check the website for details on prizes).

This is my first flash game development project and I have learned so much from it. I will be sharing the technical details about the game and the things I learned in a few days but for now, play the game and tell me if you liked it or not.

Volvo S60 Pinball game