YEEFOM

Explore APIs with Postman

May 13, 2016

When it comes to working with APIs, a classic tool loved by many is the legendary cURL. cURL is cool, powerful, and in the meantime, maybe intimidating. The fact that it runs through the command line might scares many non-developers away. However many designers, researchers, and just anyone who works with data and the internet might have to deal with APIs at some point. Luckily, for those who prefer a GUI, there's an awesome app called Postman.

A Chrome app1, Postman, can pretty much run on any platform. The basic usage of Postman is as easy as filling in the API url, choosing a method, and clicking send. Postman will then connect to the API and display the message and/or data sent back from the server in a format that’s easy on the eyes. You can even log in a server by hitting the authentication API and perform calls that require an authenticated user.2 Postman can definitely cover the majority’s needs for exploring APIs.

I recommend anyone who works with APIs give Postman a try if you haven't already—even if you are comfortable with your current toolset, you might still find some hidden gem in Postman that will make your life a little easier.


  1. Now also features a standalone Mac app! 

  2. And of course there are many advanced features for power users. 

Back to OmniFocus

March 29, 2016

If this were a Friends episode, I'd like to title it the one where I geeked out and wrote the longest post on the blog.


I moved back to OmniFocus! I used a plaintext-based task management system for the past year and half. It worked quite okay during that time. However things could get quite out of control whenever I got busier. Inevitably, I had to revisit the never ending topic of task management.

Why I Ditched OmniFocus for Plaintext in the First Place

I made the move in the summer of 2014. When iOS 7 came out, OmniGroup released OmniFocus 2 for iPhone to adapt the dramatic changes iOS 7 brought to the platform. However, the new version was still buggy and feature incomplete after almost a year. The iPad app hadn't been updated at all. The Mac counterpart was updated to 2.0 before the summer, but I wasn't the biggest fan of how tasks were displayed in the new version. Personally, I was about to start grad school, so I thought it was a good time to reconsider my task management system.

The idea of using a plaintext-based system was long appealing to me. I store most of my notes in plaintext files and this would fulfill a plaintext nerd's dream of having everything in one place.

I quickly decided on the setup. Tasks would be in TaskPaper format, and I used FoldingText on Mac and Editorial on iOS to access those TaskPaper files. Dropbox kept everything in sync. I put together a few shortcuts using Keyboard Maestro to make the files even more accessible. On iOS, Drafts was the main tool for task capturing (and later on Workflow made a great add-on to the workflow thanks to iOS 8's action sheet).

The system was simple and efficient, but there was one huge drawback. I could always see all the tasks, and that was overwhelming. And even when there was not that many items on my list, seeing notes and other related information all the time was still a lot to take.

Now with work and side projects, the once elegant plaintext system no longer holds up. I tried to keep up with it for a few months, but I finally decided to go back to a more dedicated system.

I Took a Test Drive of Things

Instead of simply jumping back to OmniFocus, the nerd in me really wanted to try out something different. So obviously, I had to give Things a go. Slowly developed but solid, Things has being around since the very early days of iOS. Especially, I’ve heard great things about its cloud sync.

There were a few things I really liked about Things. First, what I heard was true—the syncing was phenomenal. If I made a change on Mac, the iOS apps would update immediately even in the background. The badge and today widget got updated too. If I added an item using the share extension, it would be synced instantly without the need of opening the app. Second, I loved the ability of rearrange today/starred items. So I could arrange things to the order I intend to accomplish them by.

But here comes the bad. First of all, with Things, I just didn't feel in control of my tasks. It was hard to tell why exactly. The lack of something similar to OmniFocus's Forecast view? But my plaintext system didn't have that either. The fact that the Next view doesn't show all available items? Maybe. For whatever reason, I just didn't feel secure with Things. Besides that, Things lacked some basic task manager features. For one, the ability of adding repeating tasks was horrible. I honestly couldn't understand why Cultured Code chose to store scheduled and repeating items all in a separate list. In other words, you can't schedule (defer) or repeat a task in a project. The app also felt old. Even with its iOS 7 overhaul, Things still felt like an app from 5 years ago. It took 3 taps to edit an item!

Not sure if the promised Things 3 was coming out any time soon, I knew Things was not the task manager for me at this time.

Back to OmniFocus

Let's take a step back and take another look at why I left OmniFocus in the first place. Besides the reasons I mentioned in the earlier section, there were a few more that pushed me to look for other options. First, the syncing was somewhat slow. Second, the lack of the ability to rearrange item in perspective. Third, the iOS version didn't fully support perspective.

Now at least two of the problems were (semi-)fixed. Syncing is much faster now with push—still not at the same level of Things' but much, much better. With the universal update, the iOS version supports perspective as its desktop counterpart does. Items in perspective are still not rearrangeable, but I suspect it's related to OmniFocus' database format. According to a blog post from OmniGroup, they are looking to change the file format. So here is hope that one day we will get manual sorting in perspectives. Another plus is that the Mac app's interface is now more customizable.

Before I left OmniFocus, I had a kind of context-based system where my contexts were mostly based on energy level. The most important view was called Today, which was a customized perspective consists of due items and flagged items. It was a good system yet I just didn't like the idea of picking up (flagging) today's tasks in the morning that much. I like to plan ahead. I need to at least plan for the next day (and even the next a few days sometimes). I can certainly use start date and display deferred items in the Forecast view but Forecast don't count them in the calendar so I won't know if I scheduled something for a certain day unless I click or tap on that day.

I needed a different approach.

A Forecast-based System

I got rid of context.1 My current system is almost based on the Forecast view exclusively. As a GTD guru, you probably already frowned as you know the general principle that we should only set due date for tasks that have a hard deadline. However I assure you this is not as crazy as it sounds—at least not in my use case. Let's take a closer took.

Here's a breakdown of my Forecast-based workflow.

  • All processed tasks should have a project. Projects are organized in folders based on area of responsibility. A task that can't be started at the moment should either have a start date or a context, Waiting, whose status is On Hold.
  • All tasks with a hard deadline has a due date set to the deadline. Besides that, I also write the deadline inside parentheses following the task name.
  • I have a customized perspective called Next that shows all available items across all projects including inbox. I might further break it into smaller perspectives such as Next Work and Next Personal depending on areas of responsibility.
  • Every evening, I go through my Next view and set tasks I want to accomplish the next as due tomorrow.2 It doesn't matter if a task already has a future due date. I have that written down with the task name.
  • During the day, if there's something new comes up and needs to be done on that day, I assign them as due today.
  • At the end of a day, I clean up everything that's due. If there are items left that are due today, I either reassign them to a future date or simply clear the due date if I decide it's no longer the best time to pursue them. Process inbox items.
  • Weekly review. Never forget to review.

With this system, I have 100% confidence that I won't forget or miss any recorded tasks since I don't need to remember them in the first place. Equally important, I have a clear view of what needs to be done today, tomorrow or even the following week. I feel in control.

To be honest, I miss Things' perfect syncing and capturing. I'm still curious to see what Things 3 has to offer. I'm still intrigued by 2Do and follow its development pretty closely despite. And I will for sure try out new tools from time to time. One thing I learned from all these years’ fiddling with task managers is that although I have so many different ways to organize my tasks, I have only one way to accomplish them and that's actually accomplishing them. I believe the most important thing is to have a system that I can trust and forget about so I can focus on actually accomplishing the tasks. At this moment I think I found that trust in OmniFocus once again.3


  1. I still have exactly two context. The first one is Waiting. I set its status to On Hold and use it to pause an action. The second one is Followup, so I can see everything I need to follow up with at a single place if I need to. 

  2. On Mac, I have a couple Keyboard Maestro Marcros to assign due date as today or tomorrow. On iOS, simply swipe left on an item and use the More button (or use 3D Touch if your device supports that). 

  3. I still use TaskPaper for some projects but that's another topic for another time. 

Make a Change

September 26, 2015

During those impossibly stressful high school days, I was trained to constantly feel nervous, anxious, and that I shouldn't be relaxed because there were important study tasks I should be dealing with. At that time, those feelings were, frankly, quite helpful. They helped me be very good with exams, and being good with exams was possibly the most important thing for any high school student in China. You see, the process of college application in China was very different from that in many western countries. In China, one's application was almost entirely depended on the score they got in the annual, nationwide College Entry Exam. Good score equals good school. (Also the "hotter" a major was, the higher a score it required.) Simply put, there was the exam that defined you, and you only got one chance.1 So I was, of course, very pleased with those feelings. But once I stepped into college, problems appeared. There was no more that one exam. But I needed it. I still felt the need of having a goal that I was all for. It was almost impossible for me to enjoy myself since no matter what I was doing I felt that I was wasting my time and even worse, I didn't know what I should spend my time for. So I started to set myself goals. Ace the finals. Ace those standardized tests for grad school. Get that kick-ass internship. Goals came and went, but none of them was as satisfied as the one I had in high school. But boy how obsessed I was with them.

I knew that wasn't right. The irony was I wasn't even the kind of person who wanted to be a huge star. I was the kind of person who would choose a balanced life over power and wealth any day. I was the kind of person who read so many books, watched so many movies, thought they knew the meaning of life, and kept telling people around to live in the moment. Yet I couldn't shake off the feeling that I should only be doing things for an ultimate goal.

I knew I got to change.

I got to stop being so obsessed with goals. I got to learn how to enjoy the moment. I got to understand that goal was merely an illusion and I just needed to make the most out of every day and that's it—not because making the most out of every day would help me achieve any goal. But change was hard as it always was and always would be. I spent four years in college trying to change only ended up falling into the same trap over and over again. Then I sort of just gave up and went on to grad school, hoping maybe grad school would magically fix me. Well, it didn't. Now that I finished grad school, I really don't see any more excuse to procrastinate the change because I know I still want to change.

The theory is sound. What I need to do is clear. I just need to you know, change. I hope it goes better this time.


  1. Or you could stay in hell for another year for a second chance—many people in China call high school hell, but to be fair, high school was the opposite to me. There I was extremely happy because things were simple: I studied my ass off and I got two-hour free time on the weekend for a movie, and just thinking of the movie time I was going to earn myself could make me the happiest person in the world. 

On Finding the Perfect Solution

August 11, 2015

I tend to get over-obsessed with finding the perfect solution. It's easy when the best option is obvious. Most of the time, however, each option has its own advantages and disadvantages (and that's usually the case). I would go through every option in my mind with all the possible scenarios that I can think of1. But this is usually what I get: option one looks good here but bad there, option two, on the contrary, looks bad here but good there, option three looks good both here and there but doesn't seem like a future-proof solution...

The process is not worth it. It consumes me. It requires a lot of energy and made me feel unsettled. The thing is, even after all the thinking and considering, the solution I choose is not likely to be perfect. Perfect solution simply doesn't exist. There is only contextual best solution. Finding one that is relatively good for now and stick to it. It can always be altered according to what happens along the way.

Back to the example, now it's clear that I should just go with option three. There is probably going to be a much better solution in the future, and I'll probably switch to it no matter what I choose today. Sounds like a decision has been made.


  1. which is an awful lot... 

From Scriptogram to FarBox

August 02, 2015

Scriptogram is coming to an end. I've been with Scriptogram for the past two years and always loved it. It's where I seriously1 started blogging. It's also where I learned a little about web design so that I actually made the site look the way I liked. While I'm sad Scriptogram is shutting done, I'm happy for the team—I've heard they joined Pinterest. Wish you guys all the best.

Saying goodbye wasn't so hard, but finding the right one to fill the vacancy that sat in my heart is a whole nother story. Luckily, after some research, I found FarBox. Farbox is a lot like Scriptogram—it also uses plain text files, also supports Markdown, and also syncs with Dropbox. So basically copying files from one Dropbox folder to another was the major part of the switch. Only this time I fiddled with the code a lot more. After some work, here sits the new site.

Now, to the pleasant beginning with FarBox and to many more years to come.


  1. Maybe not so seriously... 

I Can See the Stars from America

July 04, 2015

Recently I (shamelessly) read a young adult book, The Fault in Our Stars, and really enjoyed it—it has a beautiful story and it brought me back to the middle school/high school days, which I loved dearly.

Last night, I found Ed Sheeran, one of my new favorite singers, had a song for the movie adaptation. If you are like me, who get really happy about such small, random things in life, you could probably imagine how excited I was.

Clicked play. The chills. Oh how I love the chills. I knew exactly what needed to be done. I turned off the lights in my room and closed my eyes...

I saw the stars.

Now I really need to watch the movie. Hope it doesn’t suck.

All of the Stars

Why Learn English

January 17, 2015

So I’ve been quite quiet since my last post here almost a year ago. I’ve actually drafted quiet a few since, but none of them made it to the site for various reasons. Today I all of a sudden really, really want to put something here, so I picked one from those drafts, did some light editing, and here we go. :)


“How can you not get tired of learning English?”

A friend asked last night while we were having Macau Doulao. “Don’t you get frustrated that even though you study your ass off, your English can’t even be as good as that of a high school student from the US or another English-speaking country1?” he continued, “Don’t you get tired of spending thousands of hours on learning something that millions of people born knowing? And plus if you want to watch a TV series or read a book that’s in English, why not just simply wait for the translated version to come out.”

Exactly. Why not?

I couldn’t give my friend a satisfying answer immediately, but here is my reasoning after I thought about it a little bit more.

Well, the answer is simple: English happens to be the language spoken by people from different areas of the world. I remembered an story I learned in one Chinese class in middle school. It was La Dernière Classe (The Last Class) by Alphonse Daudet. The story was about the last French class in a small French town, as the Prussians would soon take the town and there would be no more French class allowed. In the story, M. Hamel, the teacher, told little Frantz, the student and the main character, to never forgot French because language was the key to a culture. This is exactly what English is now. On so many levels, English is the key to the culture of the world.

Millions of people speak English. When you know the language that is spoken by millions of people, you get the freedom of confirming information by yourself instead of doubting if the translator did a good job. You get the freedom of talking to anyone you want to as long as that person is also one of those millions. You get the freedom of voicing to the world without depending on someone else to translate for you. Admittedly, when speak English, I can’t construct my sentences with eight adjectives and six adverbs, but that doesn’t mean I can’t use it to tell the others and to tell the world what I think. I can’t choose verbs as a wordsmith does, but that doesn’t mean I can’t tell a beautiful and touching story about eat, pray, or love2. You get the chance of dating that cute girl from Czech Republic because you like each other and you both speak a little English. You get the chance to talk to that Indonesian guy who sat next to you on a flight about that grumpy cat picture from last night because you both speak a little English. You get the chance to discuss how big a part Matthew McConaughey’s thick accent plays in True Detective with people (well, or dog, if you have to) on the internet because you all speak a little English.

So no, I really don’t. I don’t get tired of learning English. I don’t get frustrated by the fact that my English might never be as good as a native speaker's no matter how hard I try.3 But learning English is not about mastering. It's also not about not valuing one's own language. Not even close. It’s about a great communication tool. It’s about a language that is spoken by people all over the world. That language happens to be English.


  1. To be fair, this might not be the case for people who speak a Romance language as their native language. 

  2. The name popped up in my head and seemed fit, so I shamelessly borrowed it, though I have to admit that I have no idea what the book is about. 

  3. Realizing that did hurt a little...