Hoye Lam

An iOS Developer perspective on the MacBook Pro 15-inch 2018

Medium link

Before diving in on what I think of the MacBook Pro, I think that some background information is required about my personal laptop usage. So, I am primarily working as an iOS engineer, thus make intensive use of Xcode and developing mobile applications. I also do some lightweight Android, backend and machine learning development on the side. Outside of software development, I also do some Adobe photoshop related tasks although not frequently.

Also, my last laptop was the MacBook Pro 15-inch 2015. I upgraded to the MacBook Pro 15-inch 2018 last November and have thus been using the new one for 2 months now.

P.S. In this article, I won’t talk about the sound or speakers because I never use the onboard ones. I also won’t talk about the GPU performance since I don’t have tasks that are GPU intensive related.


Let’s start right off with the performance of the MBP. Compared to my last computer, it is blazingly fast. As a developer, I use two web browsers Safari and Google Chrome which both probably contains 14+ tabs. One for personal-related activities and one for work. Meanwhile, I also have many applications open for multiple purposes. These are for example Xcode, Station, SourceTree, VSCode, Things3, Spark, Slack, Spotify, Postman and Terminal(s). On my last computer (MBP-2015), I probably had to close a few in order to get the smoothest performance possible. However, on the MBP 2018, I haven’t had a period yet where I felt like I needed to close some apps or tabs. Memory management is simply amazing and the loading times are extremely fast for development, browsing and communication purposes.

To show an example of the performance of the MBP 2018, I ran some building time tests in iOS app development with the project Eidolon. This project is also used for sharing Xcode performances on various hardware setups.

Cleaning Project and then building the project:
Average time 27 seconds of 5 retries

Adding one line of code and then building the project without cleaning:
Average time 3 seconds of 5 retries

I can wholeheartedly say that these numbers are amazing compared to my last computer. The build times are pretty much halved which saves me a lot of wait time. 🤩

However, even though the performance is amazing in my opinion, the fans still blaze and make noise in heavy intensive tasks. For example, when you are rebuilding a project from scratch, you will hear the cooling system of the MBP, especially on big projects. Though it is A LOT shorter compared to my MBP-2015.

All in all, I would rate the performance a solid 


The display is much better to look at and is also a bit brighter which I like. Code and other text are very nice to look at which is important for coders. Also, True Tone-display is a really good addition. It makes the display much more natural since it adapts to the lighting of the room you are currently in. Which means it makes it easier for eyes to look at the screen.

However, I do think there hasn’t been a major upgrade in terms of the display compared to my last MBP-2015. It is pretty much the same except the True Tone-display. But, it is still an amazing display to look at for literally anybody. Just pointing out that if you have an MBP-2015 and want to upgrade to the 2018 version, you probably won’t see a big difference. 😎

All in all, I would rate the display a solid 


The keyboard is also very important for me since I use it every day and actually don’t like to use a secondary keyboard in my (current) setup. However, I do think the keyboard is a personal preference. Some people suggest that the new keyboard has gotten worse compared to the MBP-2015, but for me, I think I like it as much. I don’t think the current keyboard is better than the last one, but also not worse. I just think that it is a different keyboard. Do I enjoy it? Yes, I do and I personally think it types as good the MBP-2015. If you plan to buy an MBP 2018, I would suggest going your local electronic or Apple Store and test out the keyboard there for five minutes since the keyboard is a personal preference.

In terms of longevity, I am not quite sure about durability. From the IFIXIT teardown, Apple decreased the likelihood of debris entering into the keyboard. However, after two months of usage, debris did enter in one of my keys and made it very uncomfortable to use. Which never happened once on my previous MBP 2015. I fix it pretty easily by just using a vacuum cleaner to clear it out, but it still discomforts me about the durability of this keyboard.

It is by no means a bad keyboard to type on but I do worry about the durability of it. 😅

All in all, I would rate this keyboard 

IO Connectivity USB-C/Thunderbolt 3

I really like USB-C and think it is the future in terms of IO. There are more and more accessories being added in the tech market that support USB-C like monitors, HDD/SSD, and external GPUs. But let’s be honest, I am not going to upgrade all my tech just because I got a new MacBook Pro. And neither the companies I am working for. Thus, I bought an IO adapter specifically the Satechi aluminum type-c pro hub adapter. This has been very helpful in case I need to use an HDMI port, read from SD-cards and/or use USB-A connectors. However, I am planning to upgrade my home main monitor in the future to have a USB-C connector so I can use an external display while charging the MBP. All in one single cable! Also, the audio jack is still available which I extremely appreciate. Thus, I do think the IO of the MBP 2018 is good enough currently and will only get better because USB-C will be the standard. For now still gotta use dongles, hub or adapters. 🙂

All in all, I would rate the IO a solid


Apple is known for making the best touchpads in the laptop industry. This is still true in my opinion. The MBP-2018 touchpad is much bigger than my last MBP-2015 which I don’t mind. A benefit from the bigger touchpad that I got is that I use gestures more often. But I actually rarely use the touchpad since I always use a secondary mouse which is current the Logitech MX Master 2S. I only use the touchpad only when I forgot to charge my mouse or forgot it at home. 🤪

All in all, I would rate the touchpad a solid


I am actually an advocate for having a keyboard that is fully touchscreen based. It feels pretty natural since everybody is typing on a phone or tablet these days anyway. However, I do think that the is touch bar currently not needed. I don’t like the dynamic buttons because it makes me look down. Also, I rarely use them anyway except for changing volume, brightness or locking my MBP. But I always could have done those actions with physical keys combinations anyway. For me, it is just a gimmick currently. The only thing I like is that I can customize the buttons on my control strip.

My current settings are as follows: 
Touch Bar shows: F1, F2, etc. Keys
Press Fn key to: Show Control Strip

This way I can still utilize the Function keys and also the control strip. Similar to the MBP 2015…….😐

All in all, I would rate the Touchbar a 


Right of the Touchbar, there is Touch-ID added which I extremely like. It just feels so easy and secure to unlock your device without having to type a password every time. Don’t think I need to explain or give much of an opinion because it works the same as almost every smartphone in the market. 🥰

All in all, I would rate the Touch-ID a 


The battery is solid but for me, it is pretty much the same as my previous MBP. It could be because I have more applications open simultaneously because of the performance it has. However, I haven’t noticed a significant difference. It still can perform around 4–5 hours of software development time from 100%. Probably even more if you only need to browse web pages and use communication tools. I rarely am in a situation where I need to work without a power source, thus my MBP pretty much always stays above 60% battery.

At least for improvement, I noticed that the MBP 2018 charges much faster with the stock charger. Haven’t noted down precisely what the charging times or rates are but I can confidently say that it is faster.

I do actually miss MagSafe connector for charging but when I can charge my MBP with my external monitor, I probably won’t miss it anymore. 😬

All in all, I would rate the Battery a 


I think the MacBook Pro 15-inch 2018 is a great purchase for my situation. Every work-related task and more is getting loaded and executed very smoothly without hiccups. The display is still amazing and Touch-ID has been also great acquisition. The Touchbar is unneeded but it doesn’t kill you. The usage of dongles, hubs, and adapters is still required but the situation will get better over time.

All in all, I would rate the MacBook Pro 15-inch 2018 a solid 7.5/10.

P.S. my MacBook Pro 15-inch 2018 specs:
CPU: I7–8850H 2,6 GHz (6 cores)
Memory: 16GB 2400 MHz DDR 4
Storage: 512GB SSD
GPU: Radeon Pro 560X 4096 MB, Intel UHD Graphics 630 1536 MB

Your phone is not a curse

Medium link

There has been a lot talk about the downsides of phone usage. In particular, social media consumption. Somehow using your smartphone for long hour sessions is now considered a bad thing. It can increase the likelihood of depression and in worse case lead to suicide. While there have been unfortunate stories about phone usage that led to unwanted behavior, it doesn’t mean that using your phone is inherently bad.

Instagram as an example is considered to be a platform that can depress people. The platform has an unequal amount of content that displays the best parts of people their lives. This could be social gatherings, life achievements, body-shape progress, traveling to new places, meeting new people and many more.

However, people that consume long hours of Instagram content, compare their own lives to that of the content creator. They cloud their thinking and ask why their lives are not the same. Why am I not as successful? Why can’t I go to the gym more? Why am I not as beautiful? Why can’t I travel to these new places? Why can’t I have the same skill? All these negative thoughts can be generated through social media consumption. However, in these examples, there is no indication that it has to do with the content or platform itself. The only thing these thoughts have in common is that it’s about themselves.

The problem is not the content that is being presented by Instagram or the content creators. The problem lies in the mindset of the consumers because they are the ones comparing their lives with the content.

They compare the platform’s content to their own life. It gets even worse when they can compare it significantly more than once. They see the great moments and achievements that they have not experienced yet (and may never). This is the wrong mindset when consuming any type of content. They ignore the hardships of the content creators because it is not being presented. The hours put in to work out to reach a certain body shape. The sacrifice they made on their family and friends to go to new places. Yet, they compare their current situation to the best possible situation.

People that suggest consuming the happiness and achievements of somebody else is a bad thing is untrue. Are you telling me that if I read a biography of someone successful I should feel depressed because I won’t reach the same heights? Are you suggesting that when I watch an athlete, I should feel bad because I won’t be as good? Of course not. Most people read books to learn. Most people watch an athlete performing to get entertained or motivation. Using social media platforms should be the same. Instead, users compare themselves.

While there are indeed some content-creators that generate negative content, I believe that most of them just want to express their happiness. They want to share that they are happy. Share a that they reached a milestone through hard-work. Share the moments they have with the people they love. Share that they have a good life in a hard world. Since when is reading and seeing the happiness of someone else considered a bad thing?

Social media content displays the best moments people their lives and that should be motivation for others. Content about fitness progress should motivate you to follow the same workout routine. Content about new learnings should motivate you to also learn the same skill. If you truly want to experience the same moments, set it as a milestone or goal to reach towards too. Don’t compare your life.

Your phone is built to be a weapon for your own benefit, it is not a curse. Instead of reducing your time on Instagram, uninstalling social media applications and blaming the content itself, try to improve your mindset first.

I think that if you have the right and healthy mindset, using your phone can only be used the benefit of you.

P.S. These are just my thoughts on it. I am not an expert on depression nor social media.

Esports Calendar iOS: new design + auto notification system

Medium link

As a biased user of my own app, there were a lot of flaws in the Esports Calendar iOS app. The last UI and UX design had two downsides and also missed an important feature:

Old design of the Esports Calendar iOS app

1. Esports Calendar did not had ‘modern’ UI

In a period where a lot of applications is pushing for dark-mode (i.e. Apple MacOS Mojave apps), Esports Calendar did not have that ‘cool’ look. While building the first design, I did not put enough focus on the design. This was in the end a mistake since it ruined my own UX after long usage. The UI was too ugly for a modern esports fan and it needed to be improved.

2. Esports Calendarfavouriting or notify me feature usage was a big hassle

This was probably my biggest mistake. To use the ‘notify me’ feature for an esports match. The user had to go through four steps:

  1. Find the match
  2. Click/Tap on the match
  3. Wait one to two seconds for the unfolding animation to show the feature
  4. Click on the alarm clock button

People could suggest that this feature is the second most important feature. (Next to showing esports matches from various games.) For such an important feature, it took the user four steps to accomplish his/her goal. This was a big UX mistake.

Process to improve the UI and UX

To improve the UI and UX of the Esports Calendar app, I found, learned and used various tools to look for inspiration. While there are many platforms out there, the biggest one I used was Dribbble. Dribbble has a big community of talented designers that create beautiful things. This also meant app designs.

There were many designs that inspired me. In the end, I combined (most of) them within the Esports Calendar app and the result is as next.

New Esports Calendar design

This design improved the overall UI and UX compared to last version. By taking inspiration from other dark mode applications on Dribbble and existing ones (Twitter, Overcast and Netflix), the Esports Calendar app has now a more ‘modern’ look.

In this new design, the notify me feature UX has also been improved. Instead of ‘notify me’, it is now a ‘star’ feature. The folding and unfolding animations are removed, thus the star feature is immediately accessible without any extra taps or wait times.

New auto notifications feature

While updating the UI of the Esports Calendar app, the settings tab is also updated. To show more clarity in the settings tab, videogames icons are also added. But this was not the only update.

Since starring an esports match is an important feature, it was still a hassle. In a scenario where users want to star multiple matches at once, the user had to tap multiple times. There were also other scenarios like wanting to always retrieve notifications of a specific videogame. Thus, this feature is implemented within the settings tab. If the user want to auto star all the matches of a specific videogame, just tap the switch. Now you will receive all notifications from your favourite esports matches!


  1. Take inspiration from existing material from others online
  2. Make extensive use of the app to know what is good, but also what is wrong

iOS app store link

Creating a Circle CI app client: OnCircleCI

Medium link

The process of building a side project: OnCircleCI — A simple CI client.

OnCircleCI provides a simple iOS mobile application to keep track of your Circle CI build statuses. As most of you know, there are limited mobile applications available on the market when it comes to Circle CI. Thus, I created my own.


OnCircleCI works as follows. You authenticate yourself by providing OnCircleCI with an API token. The API token can be retrieved from your CircleCI account. After providing the token, OnCircleCI will verify the token against CircleCI. If it is verified, the token will be securely stored in your Keychain.

Using the stored API token, the app retrieves your profile, projects, recent builds and details from Circle CI. OnCircleCI displays that data in many locations of the app. In short, OnCircleCI is just a simple client to view your Circle CI builds. 😉


There are many reasons why you could use a Circle CI mobile client. For example, lets say your are at the end of your workday. You push your latest work to Circle CI, but can’t wait for the result of the Circle CI build. Why? Because you need to catch your train. You need to go to the gym. You need to know if you need to work on a fix the next day. You need to be at home around seven or else your loved one will be mad. You have to go to the toilet. Whatever it is, instead of staying at your workstation, you can now leave and look it up OnCircleCI.

For me, it was because I just wanted a mobile application of Circle CI to simply look at my build statuses. 😜

Technologies and tools used?

This is an iOS mobile application developed in Swift. Xcode is the IDE used for iOS development. I also used Cocoapods as a dependency manager. SDKs (or libraries) used are:

Architectural choices for the app is MVC with inspiration from Omar AlbeikMaking MVC great again.


Starting to develop an iOS mobile application isn’t the hardest part for me. I have been working as an iOS developer in the last two years. Thus, I do not need to learn iOS development from scratch. The hardest part for me is to find time to work on side-projects.

I am currently full-timed employed at a startup. Finding time to relax, but also work on side-projects is hard. So, how do I do it? In short, I created a system to work everyday at-least one hour on a side-project. Maintaining this system is the hard part.

In the beginning I noticed that it wasn’t working very well. After work (or the gym 💪), I sometimes just felt too tired. Who wouldn’t? You work eight to ten hours a day and after that you want to even work more? Yuugh! Some people are not trained for it. I am not trained for it.

In order to keep myself disciplined to maintain this system, I needed variety in the tasks of the side-project. As I said, sometimes after a workday solely focusing on programming, you don’t want to program even more. But this does not mean you can’t work on your side-project. A side-project does not consists of one specific task. It consist of many that differs from focus and effort.

For me, programming is one of those tasks that requires focus. Which means if I feel tired, I do not want to do it at the end of a workday. So. I did other tasks related to the side-project. This could be numerous things. Talking with your friends about the side-project, reading about other people’s side-projects, researching similar problems, designing the application, reading about code improvements, getting feedback, writing about it (like now) and probably more other things. All of these tasks makes progress, even if its just a little. They also do not require the same effort and focus. Even just thinking about the side-project is progress.

🕐 Time invested to date is around 50 hours within 4–5 weeks.

Alternatives to your app 😥?

As displayed OnCircleCI is just a simple application. If you are seeking for something more powerful (or just don’t like the app), an alternative is CI2Go, which is an amazing app that provides even more features!

The future 🚀?

The current plan is to make the UI better. For example, adding the commit message of a build to the detail screen. Also support for more ANSI colors in the TextView in the action/step output is a feature that could be improved on. One action of interaction to be added is the ability to rebuild a failed build. Of-course this all depends on numbers of usage of the application. As I would like to develop it even further it all depends on the returns and user satisfaction.

Thanks for reading!

Hoye Lam

Esports Calendar iOS  - Added CS:GO support

Medium link

Last week, I released the esports calendar application in the app store. A calendar showing upcoming esports matches from various videogames. These videogames were League of Legends, Dota 2 and Overwatch.

I suggested in my last post that CS:GO support could take a while. But, I managed to find some time this week to completely finish it. This involved software development within the backend and also the iOS app itself.

Today, I released version 1.2 of the esports calendar app with support for CS:GO. With this update, users can also now follow upcoming CS:GO matches. These matches are for example ECS and ESL Pro League. I hope the users will like the update and continue to use the esports calendar app.

(P.S. CS:GO is my favorite esports video game 😋)

Esports Calendar iOS release  –  A free time project

Medium link

It has been some time, I wrote a post on Medium. A lot has happened since then. I graduated, went on a little holiday and found a full-time software engineering job. Meanwhile, I also worked on a little hobby project called the esports calendar.

I love esports.

Every week, I watch some of my favorite videogames, teams and players display their skill at the highest level. Thus, I wanted to create something with this hobby. This brings the release of the esports calendar.

Esports calendar will show you the upcoming esports matches of some of the biggest videogames. Currently, the supported esports games are Dota2, League of Legends and Overwatch. If some videogames are not within your interest, you can disable them within the settings tab. Click on one of the matches you are interested. Further details about the match will be shown. Also, if you want to be notified about the match, just click on the alarm-icon. A simple application for following some of your favorite esports.

The technologies I used are of course iOS Apple, Xcode and Swift. In terms of getting the matches data, I am crawling them from several websites. After that, I store them within a Google Firestore database (currently in beta). With the iOS SDK provided Google the application can receive the esports matches from the Google Firestore database.

Since this is a side-project next to my full-time job, updates can be slow. However, support for CS:GO matches is currently in development and I am also planning on adding a recent results page. An Android version could also be developed in the future, but I can’t make promises on this one 😢.

If you are reading this, I hope that you try the application out. If not, still happy watching esports!

Esports Calendar on the App Store!

Still no clue

Medium link.

These are the last stages of my student life. I will be graduating this year and I still don’t have a clue what I want.

The major I chose is computer science. I have been studying and working in this field for the last four years. Yet, I still have no clue. Is this the career and path I want to pursue or was it a mistake? I don’t know.

Since I started this major, programming has always been a tool for me to create new things. A skill to let my creativity out. However, I was never the student or person that wanted to hone my programming skills further. In my free time, I always did things that was not related to computer science. I never craved for in-depth knowledge about programming. I only learned the necessary programming skills in order to perform in my studies and work.

Programming is for me just a skill to build interesting things.

Now I’m on the brink from graduating and am asking myself if this is what I want. I am exposed to a lot of stories that work should feel like a hobby. That the job you do should not feel like work. I am pretty sure that if I continue down this road that this will be 100% work.

I am however confident that I will always be able to perform this job at a high level. If I miss any required knowledge for certain task, I will learn it. I can be the full-time software engineer that I was trained to be. But if I reflect on my life after 10 years, is this the career I wanted? I don’t know.

The feelings I have are not depression or sadness, it’s pressure and confusion. I still eat, sleep and socialise normally, but I know for certain that in the upcoming months the decisions I make will influence and shape the future of my life.

And I don’t have a clue what to do yet.