Image for post
Image for post
A standard iCloud Keychain server (Apple Park, ca 2019)


If UserDefaults is a microwave, Keychain is a barbecue. Going into my first time developing with Keychain I expected it to be a pretty basic key-value store, maybe like UserDefaults but with a mild attempt at security. And while that’s more or less the case, there are distinct differences which, if you don’t familiarize yourself with, are going to leave you angry, confused, and eating undercooked food.

On top of that, it’s not super easy to find practical help online. …

The unofficial documentation

Image for post
Image for post
a high-resolution image to capture people’s interest


As of the time of my writing this, August 2018, the documentation for LayoutAnimation is sparse — it could use some work. Which is unfortunate because LayoutAnimation is pretty useful and powerful.

I took a look inside the source code and am here to report my findings. This article is going to cover details about LayoutAnimation that I had trouble finding elsewhere, as well as a few examples.

I also made a demo project with some examples.


What is LayoutAnimation? From the official docs:

Automatically animates views to their new positions when the next layout happens.

That’s pretty much it…

China is a scary place with a scary language. Here is a small collection of useful words that are commonly used but may be hard to find. I hope you find it enlightening.

逻辑 (Luó jí): Logic

This word literally translates to “logic,” and much in the same way as English, it’s a pretty vague term that can be used to describe all sorts of things. The difference is, where in English we use all sorts of fancy jargon to differentiate between different types of logic — control flow, workflows, what have you — in Chinese, just 逻辑 is ok. Can you show me…

Understanding the Monero Blockchain


This article is a technical overview of how the Monero blockchain works. All things considered, Monero’s blockchain is pretty simple; this is because Monero’s complexity and novelty is in its privacy features, which are pretty much all application-level. If you’re familiar with Bitcoin, this should be a breeze.

This article incorporates the concepts I went over in Monero Part 1: Key Concepts.


Key & Address Generation

Accounts in Monero have 2 keys: a spend key and a view key. As their names suggest, the spend key is used to spend funds of a Monero account while the view key is used to view funds…

Key concepts for understanding Monero


This article is an overview on key concepts in Monero. It assumes basic knowledge of blockchain properties and some other nerd stuff. Here’s an article I wrote on Bitcoin that might help. Also, here is a part 2 which is all about how Monero works; you can read that and use this one as a reference if you’d like.

Elliptic Curve Cryptography (ECC) Primer

Privacy is Monero’s “thing,” and to understand Monero it’s very important to understand how it achieves this privacy. To that end, here’s a short primer on ECC so you can be ready for the other concepts to come.

In short, ECC…

gRPC, short for “gRPC Remote Procedure Call,” is Google’s lightweight, open source RPC framework. In this article I’ll basically be condensing information from the Google Developer site to serve as a primer/introduction for anyone thinking about using gRPC.

gRPC passes data through protocol buffers. They are defined by Google’s Developer Guide as:

… a flexible, efficient, automated mechanism for serializing structured data — think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from…

Making it Pretty


This is part 3 of my little tutorial on Cocos Creator. In part 1, we got our cannon set up. In part 2, we started spawning meteors and shooting at them to destroy them. In part 3, we’re going to touch up our project by:

  • Adding a cool background image
  • Adding a particle trail to our meteors
  • Adding an explosion animation when meteors are shot
  • Adding a sound effect when meteors are shot

Let’s get started!

Adding a Cool Background Image

Adding a cool background image is very important, but just about as simple as it gets. Just get yourself a cool image (I got…

Shooting Rocks


Welcome to part 2 of my tutorial on Cocos Creator! In part 1 I covered creating nodes, enabling physics, enabling collisions, and hooking user input. In this part I’m going to cover spawning meteors and having the cannon shoot bullets at them. Let’s get started!

Shooting Bullets

Creating the Prefab

Prefab is short for prefabrication; as the name suggests, it is a resource that is loaded prior to the game running. They are very handy and we’ll use them a lot in this tutorial.

The first thing we’re going to do is create a bullet prefab for our game. …

Making the Cannon


When I first began learning Cocos Creator, I was met with a jarring lack of help from the internet. It was my first foray into game development, and I was coming from a programming background where for years I had been coddled with an endless supply of Medium tutorials, Stack Overflow questions, and (more importantly) Stack Overflow answers. I was terrified. For the first time ever, I had to think. Dig through documentation. Fiddle around. It wasn’t that I had use the second page of Google — it was that there was no second page of Google. …

An in-depth-but-not-too-in-depth technical overview of the Ethereum platform


The intention of this article is to provide a technical overview of Ethereum: how it works, key concepts, and concerns over it. It is not an opinion piece and will not cover philosophical/social/legal issues surrounding the topic.

This article also assumes knowledge of basic blockchain principles and an idea of how Bitcoin works.

How it works

“What Ethereum intends to provide is a blockchain with a built-in fully fledged Turing-complete programming language that can be used to create “contracts” that can be used to encode arbitrary state transition functions, allowing users to create any of the systems described above, as well as many…

Philip Shen

Software Engineer in SF

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store