There seems to have been a lot of talk around me lately in relation to “dev boxes” and “testing on staging”. After unsuccessfully trying to convince folks of why I think this is a bad idea from both an engineering and business perspective I decided it was time to talk code. In this repository I[…]
Please enjoy my new post on the Grab Engineering blog
When I tell people, “No transactions!” their first reaction is either “he’s mad” or “for my use-case its necessary”.
I know this was my reaction when it was first said to me.
I happened to be working on a money based system at the time; something you would think that is the very definition of a system that “must” use transactions.
As engineers we are instinctively drawn to things that are “right”, “clean” or “correct” and we are therefore attracted to the warm fuzzy feeling we get from using ACID compliant transactions.
We happily use SQL transactions with the knowledge that our data will always be perfectly clean and neat.
However, should you ever need to build a system that truly scales, this same perfectionism will kill you.
In order to get the maximum possible performance out of your system, you might just have to do something uncomfortable and sacrifice “correct” on the altar of performance.
Last week I was privileged to give a talk to the Singapore Gophers meet up held at the GrabTaxi Singapore Tech Office. The talk was titled “Dependency Injecting (and Testing)” and was inspired by this great article by Karl Seguin. In it I discuss how you can use DI to test and a simple trick to replace[…]
I found a lot of my code (particularly the tests) had code that looked like this: Then I was reading yet another great post from Karl Seguin and I noticed there was a much better (sexier) way. Thanks again Karl!
All Golang programmer’s are aware of how great “go get” is but until today I had not given much thought to how exactly it did or didn’t do. Some background; today one of my builds (in Travis CI) suddenly broke in a way that made no sense. After some quick debugging it became obvious that one of[…]
Recently, a friend joined me on one of my projects. As it was the first time we were actually coding on the same project I wanted to tell him my coding philosophy to make sure that he felt empowered, engaged and connected to the code. Then I realised that despite the fact that a lot[…]
As some of you know I will be speaking at GDG DevFest (KL) tomorrow. I have to admit that I am both looking forward to it and quite a lot nervous. It has been a very long time since I done any public speaking and perhaps longer still since I have been on a[…]
We are happy to announce the initial launch of our Android View Utils.
This library is intended to be a collection of UI elements and supporting code that ease Android UI implementation.
This is only the initial launch of the library project and we expect this will grow in the future.
This library currently includes:
- Circular Progress Bar (Preview) – Just like a normal progress bar only in circle form. This is ideal for count down timers
- Custom Font Enabled View Elements (Preview) – The custom font loader is complete and there is small amount of supported view elements. (Others made as we need them or by request)
- Scrolling (Marquee) TextView (Preview) – A custom font enabled TextView that is preconfigured to scroll or marquee the content when the size of the content exceeds the space available.
In this post, I would like to share (what I believe to be) a simple and effective way that I use to deal with resources on my android projects.
First a disclaimer: I am not a researcher; I am not proposing this as the best or only solution to this particular problem; I am however hoping to start a discussion or at least alleviate some of the pain my fellow developers experience every day.
Second Disclaimer: I have written this post in the clearest fashion I can, so that it can be understood by more people, if you are the TL;DR type, just skip to the last section called “The Solution”