Domain move from to

Although I haven’t been blogging that much recently (been focused on real life), I found that I had so much content on my old blog that it was kinda silly to just leave it there.

Bit by bit, the few useless blog posts from long ago built up into something rather useful – if only to see my mental state back then

It also helps search engine traffic for this blog. Apparently many people found my blog by searching for Ellen Fein’s The Rules – I wrote two articles on why they sucked, although these days I’m sure I can explain why much better.

Explained: Rooting The LG G5 (H850 EU only)

The G5's Always On Display is great especially when you plug it in. Beautiful David Hamilton photo to accompany your dreams all night.
The G5’s Always On Display is magnificent. Beautiful David Hamilton photo to accompany your dreams all night.

Required background information

Android phones have 3 system levels:
Each level can modify the level above it. So in order to modify system, you need to first make recovery do your bidding. And to do that, you need to unlock the bootloader.

In Android phones, internal storage is split up into partitions:
/boot: contains the Linux kernel and ramdisk. SuperSU and no-dm-verity will patch the files here.
/system: Android.
/data: Apps and settings are installed here. A factory reset just wipes this partition.
/recovery: recovery system goes here. We will flash TWRP onto it.
/cache: amongst other uses, LG’s Software Update downloads OTAs here.

Android platform tools:
adb: works in recovery and Android (if Development Mode is enabled and USB mode is not Charging Only)
fastboot: works in bootloader
adb reboot (bootloader or recovery) – Totally great! Now you don’t have to fiddle with button combos to get into recovery.
adb push/pull – really easy way to get/put files on phone’s storage. Uses MTP
fastboot flash (image) – flashes a certain partition with whatever image file you have on the computer.

LG G5’s recovery button combo:
Hold Volume Down+Power.
When you see the LG logo, let go of Power and press it down again (keep it pressed).
Keep holding both buttons.
It will ask you if you want to factory reset. Say yes only if you want to lose your data.


You will lose all your data. Get it off the phone.


First you must unlock the bootloader. Follow LG’s instructions here.

After you do this, from now on whenever you boot your phone it will say “Your device software can’t be checked for corruption”.


Now that the bootloader will let you flash something onto it, you can change the recovery. The stock recovery only displays an Android with an open stomach – you can’t do anything on it. Download TWRP for the LG G5 here.

With your phone plugged into your computer and USB debugging enabled, type:
adb reboot bootloader
The phone will reboot into a black screen with some small text that includes “Welcome to Fastboot Mode”:
fastboot flash recovery twrp-3.0.2-0-h850.img
Upon reboot, the G5’s system will find that the recovery has been flashed, and will restore the old version. You don’t want that. So send TWRP to the phone again and tell the phone to boot directly into it:
fastboot boot twrp-3.0.2-0-h850.img
When booted, TWRP will automatically patch /system so that it won’t try to overwrite TWRP on the next boot.


Put a microSD into the LG G5, because /data (internal storage) is encrypted and TWRP can’t read/write to it. That’s why we’re going to wipe /data later and patch Android to not use encryption.

OK, now you’re in TWRP. It’ll ask you to swipe right if you really want to allow system modifications. After you swipe right, you need to flash or else you won’t be able to boot into Android again, only into the bootloader/recovery.

Backup your /boot and /system partitions. Tell TWRP to save the backup to the microSD card.

Download SuperSU and, and use adb to push these files from the computer onto the G5’s microSD over USB.
adb push /external_sd
adb push /external_sd

Install and using TWRP. These will modify the /system and /boot partitions, which is why we backed those up earlier.

Go to Wipe->Format Data. Don’t Swipe to Factory Reset – it’s not the same thing. It removes all the files in /data but it can only do that if it can read/write /data – which it can’t at the moment.

Congratulations. Just Reboot->System.

If you ever get stuck at a white screen that says “Encrypting”, boot back into TWRP and Wipe->Format Data. And make sure you flashed


This is what we’ve all been waiting for.

Hate Facebook/Instagram/Evernote? Want to get rid of those stock apps? They’re in /data/data.

Hate ads in free apps and websites? Install Adaway. Of course, you won’t find it on the Play Store 😉

Wifi passwords are stored in plaintext in /data/misc/wifi/wpa_supplicant.conf

Install TitaniumBackup. it’s so much more flexible than backing up /data, because you can transfer your apps+data into a totally different ROM, like Cyanogenmod.

How I got an LG G5 (I paid for it)

old faithful HTC One S
Ye Olde Faithful., originally in blue-gray.

It happened again.

I had a new idea for a blog post and was typing it into Google Keep, when my HTC One S rebooted again.

It never did that before I flashed Cyanogenmod 11 on it. The One S was my old friend. I remember when I first got it in April 2012 – I had just gotten dumped by my first girlfriend, and I needed something to make life enjoyable again (and a phone more bearable to use than the insufferably slow LG Optimus One). I took pictures with it and posted them on Facebook, hoping to show my new ex-girlfriend what a nice life I was having without her. All those desperate messages to her wall of silence – written on that phone.

And when that didn’t work – it accompanied me to the gym, where I dropped it on the stone floor. It was in my pocket when I did my first clumsy cold approaches with girls on the bus – there is no winter colder than a teenage German girl on an overcast day. I remember the very first time I tried an opener on the waitress at Grand Cafe – I felt totally stupid, the exact opposite of James Bond. I would then read everything to do with picking up girls – especially the Book of Pook… on that phone.

HTC, being the shit company they were, only supported the phone for 9 months (later they would go on Reddit asking people to “give us another chance” with the One M7). So at some point, I flashed Cyanogenmod. I even bought a new body and battery and completely rebuilt the phone. But it wasn’t enough. Without Android from HTC, the camera was sluggish and took ugly pictures. And it would reboot itself spontaneously. Plus it got slower over time because the Cyanogenmod kernel doesn’t support TRIM. It was time for a change.

Continue reading How I got an LG G5 (I paid for it)

Lunch with the Millionaire Next Door

lunch grill

Every now and then, me and my friend take the bus to go to a company in the middle of nowhere to fix any PC problems they might have. And we’ve had many lately thanks to Microsoft and their forced Windows 7-10 updates.

Now the owner of this company is a self made multi-millionaire, but he doesn’t live it up. You wouldn’t notice anything particularly special about this guy, in fact just the other day he was dressed as a plumber, as he’d been installing the plumbing in his building that he had commissioned right next to his office. Which didn’t look like much either, you’d think it was just some backwater shrub. But…
Continue reading Lunch with the Millionaire Next Door

Der Selbstdarsteller

A Google Conference

Setting: at a Google conference
Me: loitering around waiting for the conference to start. There were just a handful of people, and I didn’t particularly feel like chatting anyone up. Besides, I was about to meet someone there anyway so I should probably save my energy up for that.

Oh well, there’s a guy in a suit. Looks like a cheap suit, but still, whatever. Let’s warm up my social muscles by talking to him first.

“So, what brings you to this event?”
Continue reading Der Selbstdarsteller

Knowing vs Believing

There is a difference between knowing and believing.
When you just know something, sometimes you remember it when you have to make a decision, sometimes you don’t (especially when you’re under pressure to perform), and in between, in the small every day decisions that you never notice, you make decisions based on your old mentality.

For example, the Malays have a saying:

Sikit sikit lama lama menjadi bukit
(a bit at a time eventually becomes a mountain)

If you told this to someone, they’d nod and agree. Logically everybody knows this to be true, yet most never actually act accordingly.

You see, if you truly believe in this saying, then applying sunscreen everyday to avoid wrinkles/exercising every day/whatever every day will never be just ‘something you have to do’, because it all adds up to something big in the future.

Being attractive is not just one thing (big breasts/handsome face). It’s a combination of many little things that add up to being truly attractive. A good face with a good body, a pleasant personality, correct posture, graceful movement, colours that complement the person’s complexion, well groomed hair, clothing, accessories, an attitude congruent with the message the clothes convey… these all add up to a Grace Kelly, or an Audrey Hepburn.

Similarly, being successful is not just one thing. It’s a combination of knowing the right people, good people skills (which is a whole subtopic in itself), being in the right place at the right time, actual skills, ability to execute…

To truly make a change, you have to change your beliefs. You have to reprogram the deeper part of your brain, the part that unconsciously influences every single decision you make. This is not easy, but it certainly is easier than building actual muscles. After all you can play with your thoughts whenever and wherever. It’s just a matter of doing it every day.

Freelancing vs. Working

Do I want to freelance, or do I want to work a job?

I’m not sure. But I strongly suspect that freelancing is where it’s at. Why? Increased responsibility, for your books, for your brand image, for your paycheck. Most people would shy away from responsibility. But whenever something had to be done on the computer, I always chose to do everything myself. The end result? I learned, and grew, and just became better.

Working at a company was fun. It was like school, except that people were anxious to perform otherwise they’d get expelled. On a slow day, there was always office politics to give you a chuckle. And it was the right kind of company. But after a while, my mind grew fat and complacent. There was no incentive for going above and beyond – and when I did, it went unused.

I remember when I first came to Berlin. I camped in the woods on the weekends to save on hostel fees. I had a map full of bookmarks. I attended many events to network and find job opportunities. I talked with everyone, everywhere. I even went dumpster diving with hippies (not doing that again though).

Now that I’ve started freelancing, it’s all coming back. The sweat in my palms, the pressure to get out and perform, the responsibilities that weigh upon me… I feel truly alive.

So far I’ve been doing work for contacts, but it certainly isn’t easy finding new ones. I just made an account on Upwork, but it seems that all the elite go to Toptal. Looking at their blog, you can see why. It’s one of the 2  companies that actually have a corporate blog with valuable content – the other one is Digital Ocean. Writing a blog post to get priority access is obviously a cover letter with integrated free promotion, but I have no qualms because it looks like the people there are seriously smart.

They say that Toptal only accepts 3% of applicants. Looking at the Github accounts of some of their freelancers, it doesn’t look like I have a good chance – then again, they’re all 30+. To maximize your chances of becoming an elite, you have to join the elite… so I’m keeping my fingers crossed.

From Windows 7 to Arch Linux

So you’ve gotten quite comfortable with your home which you’ve been living in for the past 5 years. But your life has changed so much that it doesn’t quite fit anymore, even if it does keep you warm just as well as it did before. So many files here and there from when you did this or that, and you don’t even remember what they contain anymore and you don’t have the time to go through every one of them. It’s time to rip everything out and start all over again.

So with some excitement, and maybe just a little wistfulness, you type ‘parted; mklabel gpt’ and wipe your partition table clean.

This wasn’t because Linux had gotten better – oh no. In fact it’s quite the same as it was years ago, when everybody was declaring every year to be the year of the Linux desktop – flaky drivers here and there, small niggling things that require quite a bit of research to get working right, and always the possibility that a package update might break something.

But what’s the alternative? Windows 10 has improvements but you have to flip half a dozen switches (ok, more) to get it to not talk to Microsoft,  and even then, it seems like it still does. I grew up on Windows, but it has gotten so complicated that I don’t know what’s what anymore, and actually I don’t think anyone at Microsoft knows either. How could they? The whole thing has gotten out of control, the Windows directory is at least 20GB with all the patches, you need a SSD to get it to run quickly, and putting a swanky new interface on it that isn’t even applied consistently everywhere just makes it a joke now that I’m using OS X daily.

Then there’s AVG Antivirus, which loves to remind me that I haven’t bought their product. But I don’t have a choice, because any antivirus that’s worth a shit is commercial. Wait, do I still need antivirus? What about spyware, rootkits?

Then there’s the little niggling problem that my workflow on OS X doesn’t translate well over to Windows, not without cygwin. See, I work a lot on the console. And cygwin on Windows is an ugly hack, Linux in a VM on Windows is better, but I still have to remember to fire it up, and then I have to check its IP to ssh into it. But then I can’t use Windows programs to edit files in the VM without setting up a lot of stuff.

Then there’s the fact that I’ve been keeping my pictures/music collection on a ZFS pool for the past two years to prevent bit rot, and I would like not to have to fire up a VM and wait for Samba to announce its NetBIOS hostname when I want to listen to my music anymore.

Gentoo was an obvious first choice. My first foray into Linux was with Gentoo because they had the best documentation. I was familiar with how things While waiting for stuff to compile, I wanted to listen to some music. worked, I wanted to keep track of USE flags to not pull in dependencies, and it was sure to teach me a thing or two today still. Plus compiling things would make great use of my Phenom II X6 (but apparently a Haswell Core i3 can approach its level these days).

I chose an EFI+GPT installation with OpenRC, but apparently the minimal install ISO doesn’t boot in EFI mode, and you can’t really install GRUB2 in EFI mode properly with being already in EFI mode, because you need efivarmgr to edit the EFI variables, which aren’t accessible in BIOS mode. For some reason the Gentoo Handbook, which normally mentions small things like this that make or break the user experience, omitted this little detail. Fortunately all I had to do was temporarily rename the GRUB2 executable to EFIbootShellx64.efi, which my M5A99X EVO always looks for, and I could boot into the system, whereupon I promptly installed GRUB2 properly.

I pored over each config in the kernel sources, compiling a kernel tailored just for my use case and nothing else, that included drivers just for my hardware. I added discard to my /etc/fstab, -march=barcelona to /etc/portage/make.conf, and those zfs packages to /etc/portage/package.accept_keywords. I edited the USE flags and kept them in alphabetical order.

Then I tried to emerge mate.

I had to add all these extra USE flags just to get it to start. It wasn’t my meticulously pruned system anymore, no, it was now a mess. I was forced to accept the reality that GUIs are extremely complex and I just am not willing to deal with the little details of it all. Basically, I had to accept that I wasn’t going to have any control over what went into my system anymore.

Once I had gotten over myself and added the USE flags to make.conf, the emerge failed halfway because libgnome-keyring wasn’t pulled in when it should have been. I found a one year old post about this exact issue on the Gentoo forums. One year old and it still hadn’t been fixed. Report a bug? Get real, I’m still trying to get my desktop up and running here.

Once everything was up and running, I fired up Firefox and went on Youtube to celebrate. But the audio was skipping every second or two. Ugh. I listen to music on my computer all the time, and not having audio work properly was another thorn in the side on top of all these problems I had already which are, admittedly, characteristically Linux. I Googled but nobody had anything concrete. The closest I came was some guy on a forum advocating passing ‘snoop=0’ to the snd_hda_intel module when loading it. I tried it, and it just made the sound not work.

Around this time I started getting issues with the USB ports not being able to assign an address to plugged in USB devices. This did not happen with the Asmedia XHCI controller, only the built in AMD EHCI controlled ports. Weird, but then the GUI wasn’t a priority yet.

Then on the Arch Linux wiki, which had a larger Troubleshooting section than Gentoo’s with slightly more relevant entries, linked to the kernel documentation. Hmm. I have a Realtek ALC892 codec, with a Intel HD Azalia compatible sound system, and an Asus motherboard, so I passed model=asus-mode1 to snd_hda_intel and it worked!

It worked! I was breathing fresh air again – obviously this sort of problem shouldn’t have occured in the first place but that’s what Linux does – it forces you to learn the nitty gritty. I chalked it up to Linux and listened to some Carpenters to soothe my growing annoyance.

At this point I had realized it was taking too long for me to get anywhere, and Gentoo, which was supposed to be lean and mean through CFLAGS and judiciously applied USE flags, was not lean and mean anymore because I had to pull in lots of dependencies for the GUI and I was probably going to pull in a lot more in the future each time I installed graphical software because after all, this is my main desktop, I’m not going to type at the tty on it all the time. Plus, Arch Linux had a much better wiki. I found myself on it all the time when I had a problem even though I was running Gentoo.

So I figured I’d wipe it and install Arch Linux. Having had my patience worn thin, I didn’t bother with the EFI+GPT option this time and went straight for the BIOS+MBR. Installed the base system, everything took less than 20 minutes because I didn’t have to compile anything. Then I booted into the new system without a hitch. Thank god, something finally working out of the box.

Within another hour I had my MATE desktop and Firefox back, a point which took me several hours to reach in Gentoo and a lot of messing with USE flags and wondering if I really wanted this in my system or not (now: who cares). But the USB problem still occurred intermittently, I couldn’t use my mouse, and the audio was skipping again. No problem, I passed ‘model=asus-mode1’ to the snd_hda_intel module. But it didn’t work.

This is Linux all over again, I sighed. What did I expect. Why didn’t I just install Windows 10. My entire weekend is gone, my eyesight probably slipping because I have to spend more time in front of the screen in addition to the time I already do at work… now that I’m older, I really don’t have patience for this shit anymore.

And on top of that, my Realtek 8111E Ethernet just decided not to send any packets, despite bringing the physical link up. And I knew it wasn’t my Linksys WRT54GL, because that thing is solid as a rock – I trust it so completely because it has earned it. So I was stuck without the internet on my main computer, unable to install new packages.

On my Macbook, I decided to read the other documentation pertaining to the HD Audio module. On this page, I found something interesting: position_fix. I had no idea what a LPIB register was, and I wasn’t about to spend time figuring it out. I put in ‘position_fix=1’ and YES! My sound works again!

The networking and USB detection problem, however, was more difficult because there was nothing I could change, no options to tweak. I kept rebooting (thankfully Arch Linux boots in less than 10 seconds) hoping each time that the network would at least work again. It never did. I read a blogpost claiming that the USB overcurrent protection might be causing it, and that I should just unplug the computer for some time and it’ll be right as day. That didn’t work either, and I left it for a good 5 hours.

Finally in sheer frustration I reset the CMOS.

And the next time I booted, everything worked perfectly again! The network, the mouse was showing… oh yes! Now I recalled old Mac zealots recommending to ‘reset the NVRAM’ to prevent weird problems, and similar exhortations from the SGI and Sun SPARC communities. It made sense. The NVRAM in the PC world is called the CMOS, and problems never arise with Windows because everybody writes their BIOS to work with it.

Writing a BIOS is thankless work, so companies tend to test it against Windows and nothing else. I know Fujitsu in particular doesn’t give a fuck – the Primergy RX300 had broken ACPI tables. If a server vendor couldn’t be bothered to test its products rigorously, what about a consumer motherboard vendor that markets itself to gamers?

So now, finally, I have a wonderful setup. It automounts my ZFS pool, runs foobar2000 through WINE, can serve an rsync daemon, runs Dropbox, git, runs the Python and bash scripts that I write on OS X, doesn’t add hidden desktop.ini files to folders, doesn’t automatically put up a firewall on incoming connections, and more importantly, doesn’t talk back to Microsoft. I can ssh into it when I’m not home, and actually get stuff done in Linux, because you can’t get anything done in Windows with just the command line. Also,

And when I sniff the network and find that this computer is sending packets to the internet, I can pinpoint what it is, because I know that this OS isn’t doing anything behind my back. That it’s not doing anything behind my back is EXTREMELY important. For instance, Windows automatically has a firewall on the network interfaces. When I forward a port, and I don’t get a response, I always have to wonder: did I mess up when configuring the router, or is something wrong somewhere? I spent so much time getting so frustrated over this before realizing that Windows has a firewall up by default. I know what’s doing what and what’s set up in which way. In OS X I don’t know what’s doing This is extremely important, twhat most of the time, but I don’t have to because it always works perfectly and has sane, reasonable defaults. Not so with Microsoft.

The Windows era is over. Slowly but surely Microsoft is making it worse and more bloated with each passing incarnation, and only Office is keeping people on that platform. If people aren’t switching to OS X or Linux, they’re certainly doing more of their computing on Android or iOS.

Cute Women…

There’s a Japanese magazine called Ultimate Top Beauty. So of course I had to download it.

But it’s funny, when I look at those doe eyed chicks, something happened.

‘Eh, she looks sweet and innocent but… is she really that sweet?’

And I used to be a real sucker for cute girls! But now I find myself swinging more to the ‘hot’ side than the ‘cute’ side… probably because the ‘cute’ implies a personality that it might not deliver on, whereas ‘hot’ is just that: hot.

Or maybe, in the distant future, I will look at a picture of a hot girl and think:

‘Eh, she looks hot… but I bet her life isn’t all that interesting’

I’m not sure if that’ll make me jaded or experienced.

My Mindset is Slowly Slipping/I Am Not Special

For about a full year now, since… oh, January 2015, I’ve had had two girlfriends. And when something didn’t work out with the second, I found another girl that very same day, and since then she has been my second girlfriend.

It’s given me a quiet sense of confidence for a long time now, but ever since Julia said she doesn’t want to be a #3 I’ve found my confidence wavering a little bit.

Yes, I am lucky that two attractive women know about each other choose to stay with me and still let me approach other women (although not without some consternation!).

So why am I so lazy and choose NOT to approach other women nowadays? Every time I see a nice chick, my brain STILL thinks of excuses to not approach her.

I think to myself “oh, F and L wouldn’t like this, and I’m pushing things as it is with them.”

I think to myself “she’s not that hot really”

And if she is hot, I think to myself “her attitude probably sucks compared to L’s”

Having attained some measure of success, I find myself becoming, gradually more afraid of being rejected. Yes, that is what happened with Julia. And my mindset is already wavering, in a vague, fundamental way.

The truth is I have two girlfriends because I am lucky. It is not because of any incredible merit.  Subconsciously I know this, that I will still get rejected a lot. So I try not to try anymore with other girls to preserve, to hang on to what’s left of my illusion that I am someone so special, someone so attractive that two women choose to be with him.

I am not so special, or so attractive – my girlfriends are with me because they somehow chose to, and I was lucky to have met them. You can see this because many girls will still reject me.

And now, once again, I have nothing to lose.