Hello, I'm Has
I am a full-time software development consultant, a part-time researcher, a blogger, a cyclist, and a not-too-great entrepreneur.
Among other things, I love technology, and in particular, cloud, IoT, Big Data, and mobile. On this blog, I ramble about software and other stuff. You can follow me on twitter, Linkedin, or get in touch.
Here's a list of my recent posts. You might want to filter them by tags
- What? I am pledging 5% of my salary to charities for the rest of my life.
- Where does the money go? The money is donated to charities recommended by GiveWell. GiveWell is a non-profit organisataion dedicated to assessing charities and finding what’s the most effective way to spend donations and aid.
- Why am I doing it? The short answer is because I feel it’s the right thing to do. Slashing 5% of my salary would not make a major impact on my quality of life. It will certainly make an impact on how long it will take me to pay off my mortgage. But the impact I can make to the poorest people with this money is much much more to how it impacts me.
- So what? Why am I sharing this? Well I am hoping by sharing this I would get you to think about doing the same. You don’t have to donate 5% of your salary, you can start by donating 3%, 2% or even just 1%.
The longer version
If you are still reading, then you are interested in knowing the whole story, and I am glad you are :)
Iot Festival Melbourne - 2018
Thanks Affix for taking/producing this photo on the night :)
Last week, I was fortunate enough to speak at DDDPerth, which was a great conference and awesome and engaged audience. There were about ~ 350 people attending, with the amazing help of the organisers and volunteers. Here is the link to my slides, and I would love to hear your feedback:
I’m starting on a new project so I need to document the decisions that I am making in the design and processes. After evaluating a number of platforms or methods, I have concluded that using Confluence was a good fit, so here I summarise my reasons for this, I hope you find it useful:
Last night, I gave this talk about F# and Fake to help developers and devOps engineers create a better build process. Here, I share the slides and the source code to the demo code.
Last week, I gave a talk in Melbourne Mobile meetup about the story of building the Zen Thermostat IoT and Mobile apps. Here are the slides for the use of everyone who is interested 🙂
My client was reporting performance issues with an existing app that was developed internally, and I had to find the problems. So, here is my journey on finding the issues and resolving them. The resolution was a reduction of the memory usage to 1/4 of what it was and usage was stabilised to this level (1/4). I am hopeful that this blog post can help you too in refining your app and pro-actively resolving any performance issues.
What is Scheme URI?
In Windows Xaml world, a bad design decision was made to have the passwordBox and the TextBox different, meaning that the PasswordBox does not inherit common properties from the TextBox. As a consequence, you cannot do many of the things that you normally do with a textbox like customising the appearance of the password textbox (say you want to make the text centre-aligned, or you want to bind the number key pad instead of the alpha keyboard). I had this exact requirement 2 weeks ago and I had to solve it, so this blog talks about the approach I took to make this happen.
SQLite database have become the first choice for storing data on mobile devices. SQLite databases are just files that are stored on the file system. Other apps, or processes can read/write data to this database file. This is true for almost all platforms, you could root/jailbreak the device and get the database file to do with it whatever you like. That’s why it is very important that you start looking into securing your data as much as possible.
Azure ApplicationInsights (AI) is a great instrumentation tool that can help you learn about how your application is doing during run-time. It is currently in Preview mode, so bear that in mind when developing production ready apps. It gives you the ability to log lots of different kinds of information like tracing, page views, custom events, metrics and more.
Updated – 16-May-2015
Do you need to check for internet connection on your mobile app? Don’t we all do it often and on many platforms (and for almost all apps)?
I found myself implementing it on iOS and on Android and then pulling my implementation to almost all the mobile apps that I write. This is not efficient, and can be done better, right? 🙂
This blog post is the forth and final in the series that cover Azure Active Directory Single Sign-On (SSO) authentication in native mobile applications.
This blog post is the third in a series that cover Azure Active Directory Single Sign-On (SSO) authentication in native mobile applications.
This blog post is the second in a series that cover Azure Active Directory SSO Authentication in native mobile apps.
This blog post is the first in a series that cover Azure Active Directory SSO Authentication in native mobile apps.
This blog post shows you how to install a wordpress website in a sub-folder on your Azure website. Now somebody would ask why would I need to do that, and that is a good question, so let me start with the reasons:
Cross-Site Request Forgery (CSRF or Session Riding) is the invocation of unauthorised commands that are triggered by a trusted user. A malicious website could make use of the fact that a user is logged in to a vulnerable website to then ride that session and forge requests. CSRF is a very common type of attack and ASP.NET has had the AntiForgery library for a long time. What’s interesting is when you have a private/public API that your website is using and it is also used by other clients like Powershell, Mobile, etc. In this blog post, I will share my experience in a recent project where a client has engaged us to the address Cross-Site Request Forgery vulnerability.
Azure and I have been friends for quite some time now, and I love the power that Azure gives me. He enables me to spin up a whole enterprise-like infrastructure in seconds. However, when it comes to managing certificates, Azure disappoints me. In a recent project that I have worked on, I got frustrated with some of Azure gotchas when it comes to managing security keys. In this blog post, I will share my experience on these issues.
TDD in Mobile Development – Part 3
This post talks about my experience in reducing the execution time of the Worker Role from above 5 hours to under 1 hour. This Worker Role is set up to call some external APIs to get a list of items with their promotions and store them locally. A typical batch update process that you would see in many apps. Our client was only interested in quick fixes that would help them reduce the time it is taking the Worker Role to run. We were not allowed to change the architecture or make a big change as they had a release deadline in few weeks. So here is what I have done.
TDD in Mobile Development – Part 2
This post aims at exploring the best practices in terms of code quality and testability for mobile development.
It is part of a series that talks about Unit and Integration Testing in the Mobile space. In particular, I focus on Android and iOS.
This blog explains in a step-by-step how to install (fresh install or migrate) a Megento package into Azure websites
We use TestStack (White) UI Automation framework for our UI Automation tests, we have few tests that requires getting the error message from the tooltip to validate what is being displayed to the user. These tests were running fine but failing on the Build Server
Getting Started with Service Bus
This blog post aims at addressing the following:
In Android, When trying to load any Drawable, or Layout on Android, you need to previously know the ResourceID.
The Resource Ids are auto-generated during compile time when you build the app. This all works nicely when you are setting on Image drawable or one static layout.
However, the issue arise when you are trying to change a drawable or a layout file during run-time. Sometimes you do not know what the name of the file might, or it could be something that is configurable and could change.
When shifting from a Windows background to an iOS, you start appreciating how easy .NET had made it to add a list control or a drop down to your screen.
In iOS, there is no dropDownList, so you need to make your own implementation.
In the previous post, I demonstrated how to capture a signature on Android devices.
In this post, we will look at how to do the same thing on iOS devices (iPhones, iPads, etc).
In this post, I will demo how to capture signatures on Android devices to allow users to use their fingers or a stylus to enter a signature on the Screen.
After doing a little search around, I found that ZXing.Net.Mobile the best candidate.
I need to implement this feature on multiple platform and this scanning framework seems to address this issue well enough.
The library is very simple and quite well designed.
In previous post, I showed how to read the battery level and status on iOS in MonoTouch. In this post, I will demo a simple way of reading GPS Locations updates in MonoTouch.
In a previous post, I showed how to read the Battery level (and other attributes on Android). In this post, I will demo how to do the same thing on iOS.
In the previous post, I explained how we can read the battery status and read Android Battery level, Scale, and Status programmatically.
I was tasked to implement a new feature that involves reading the Battery level and other properties and update the Header for an Android App. The idea was to be able to give a regular indicator to the user (using some icons) about the state of different hardware components and how we are using them in the app. This involves things like (Battery, GPS, Network Connectivities, etc).
Recently I have been working on a project to port the code pool of a mobile Logistic product to Android and iOS from its current base (Windows 5.0, 6.0). We spent quite sometime looking for options around and what are the approaches available. Finally we decided to go with Xamarin MonoTouch and MonoDroid. I must say, I have been working with Xamarin products for almost 6 months now, and I find it quite reliable, except the times when it screws up and u need to trace lots of things to find it was a bug in Mono and u reported. But truth to be told, I find MonoDroid a lot better than Developing for Android on Eclipse using ADT. That was a real pain for me 🙁
Recently, I was working on a project where I needed to have a great deal of c# libraries ported to MonoDroid and MonoTouch (for Android and iOS), so that is what I have been spending my time on.
Lately, I have been preparing a good deal for interviews and searching for new positions. I have had a good experience in the whole process so I thought I might sum it up in blogging about it so that others could benefit from my experience.