Install Ubuntu on MacBook Pro 2011 with Broken Discrete GPU

For TL;DR people, here are the steps: Prepare a Ubuntu Desktop 18.04 LTS Live USB Start your machine with USB plugged in and select EFI boot Hit e to edit Try Ubuntu without installing entry and add nomodeset to the kernel command line Verify this version of Ubuntu works with your broken machine Install Ubuntu normally and reboot and select EFI boot again (don’t boot into the installed Ubuntu yet and you can’t) Hit c for the grub command-line Find the partition where Ubuntu is installed (assuming (hd2,gpt2), more details from Marco Miglierina ) grub> set root=(hd2,gpt2) grub> ls -l (hd2,gpt2) to find the partition UUID grub> linux /boot/vmlinuz-x.


Asynchronous I/O isn’t new in Python. Since Python 3.4, asyncio is part of the standard library. From A simple introduction to Python’s asyncio and I quote here: Asyncio is all about writing asynchronous programs in Python. Asyncio is a beautiful symphony between an Event loop, Tasks and Coroutines all coming together so perfectly. I agree and I love the pluggable event loop model. Asynchronous I/O isn’t unique to Python.

Disable MacBook Pro Discrete Graphics Card

After upgrading to Mac OSX High Sierra, I start to see split and blue screens on my MacBook Pro (early 2011). This normally indicates a failed graphics card on my old laptop. I send it to Apple store and the diagnostic results confirm it is indeed the discrete graphics card problem. Unfortunately, they don’t have any spare parts for my vintage model. Many people are having the same issues from a simple Google search, like stackexchange and macrumors posts.

W7500P Chatbot?

I am working on Serial to Ethernet (S2E), StablE contest from It uses WIZnet’s new serial to Ethernet module WIZ750SR based on W7500P Ethernet MCU. WIZ750SR Layout W7500P SoC is an one-chip solution which integrates an ARM Cortex-M0 core. This chip runs at 48 MHz maximum frequency with 16 KB SRAM and 128 KB flash. When I submit my idea to build a slack chatbot on it, I really doubt if this is going to work.

MicroPython on ESP8266

I got a cheap Espressif ESP8266 development board recently and reworked some of my previous Arduino projects. Comparing to Arduino Mega ATmega1280 that runs at 16 MHz + 8 KB of SRAM, ESP8266 is more powerful and feature rich. It integrates a 32-bit Tensilica MCU reaching a maximum clock speed of 160 MHz and a built-in Wi-Fi stack. The dev kit ships with an eLua based NodeMcu firmware so I have to refresh a MicroPython firmware.

Powered by Hugo

After 1.5+ year, I finally got some motivations to rebuild my personal website using Hugo and a cleaner hugo-future-imperfect theme. Hugo is fast and modern as it is advertised and is suitable for more than blogs. I am happier with it than Jekyll, which powers my previous blogger, partially because I don’t need to install an additional Ruby run-time. Amazon AWS is also improving. The new S3 console is easier to use with more features.