I’ve recently started to see lots of designers use the phrase “designing ….. for humans” with a great pride.
Of course, you shouldn’t design for machines.
However, when you say human, you are bringing along a lot of stereo-types and assumptions. Especially if you are working with some of the most talented co-workers or studying with some of the brightest students, these assumptions will probably turn out to be wrong. This is especially important if you are targeting a large user-base.
I prefer the term used in cognitive science; alien. They don’t know anything about the thing you are designing, or they might not know anything about the platform you’re designing it on or real-world counter-part of your tool.
Small example; It might be someone’s first time using an iOS device, and may not be able to figure out the gesture patterns in your app. Not saying that you shouldn’t use any gestures, but you should provide the user with some alternatives.
I know that this is a big challenge most of the time, but I try to design for aliens.
Let me know what you think.
This is how you turn the page of a book:
Page turn on Apple
Page turn on Google Play Books
Not much to say.
(via my favorite co-worker chpwn)
I’ve tried to do my stuff as much responsive as possible before, but I’ve never focused on designing mobile devices until starting at Facebook. My conclusion is that, mobile design is much more about experience than it’s about the look or a layout on a 2D surface. There are few pin points that I’d like to explain below. Not saying that they’re the most important things, but by far they were the most obvious differences for me.
- Screen size
This goes without saying. You don’t need to worry about blank spaces, contrarily, you need to worry about the screen estate. Especially if you’re trying to deliver some content, you need to be as simple as possible. No place for fancy stuff, extra elements to distinguish between parts of the content. Background colors can be a good way to make different parts of the information flow distinguishable.
Like Facebook’s newsfeed on the mobile site is a really good example of this. Instead of lines - or any other element that would take up space, there is the blue background, and white areas that gets users direct attention.

And lastly, because of all the given reason you actually think less about the grid structure overall. Not saying that it’s unimportant, but it’s simpler then the grid on a wide web page. Needless to say, balance and symmetry are still thing you have to worry about.
- Gestures
Any kind of gesture on a website is evil. It’s super intuitive to drag the mouse from a point to an other, or swipe it to a direction. However when it comes to a hand-sized screen, it’s a designers best friend.
In fact, it’s easier than tapping on a point. Swiping to a direction mentally requires less effort than tapping on a specific zone.
Only downside that comes with this is invisibility. People can’t just see and realize there is a designed gesture there.
A gesture is kind of a magic; it’s hard to understand and pick up, but once learned it’s powerful, and users just love the feeling of using them :)
I’m working with very talented and experienced people at Facebook. I learned a lot from them in the past two months and I’m really thankful. These were just upon my experiences and stuff that I noticed as we design and discuss new things.
In my fast-forwarded journey to iOS land, I reserved my last weekend to go a little deeper into Core Data. Thought I’d share my opinions and maybe get some feedback. It’s definitely a handy way to “persist” your objects.
Simply, it’s an abstraction on top SQL.
And this abstraction is based on objects. While it probably provides a good organization in your code, I feel like it’s quite in scalable. First of all, there are some very database-y actions that Core Data over complicated.
A very simple example, let’s you have a bunch of e-mails that you want to select as read. In SQL it’s easy:
UPDATE emails SET status=read WHERE topic = "Ilter like obj-c";
However, in Core Data, you need to fetch every single object update it and save it back.It’s super inefficient compared to the SQL equivalent.
It’s handy if you don’t want to deal with SQL and you don’t have to worry much about scalability.(hey, it even has a GUI!) But, when you care about scalability, which we definitely do at Facebook, there should be a better way.
I found out FMDB on the netz so far. I’ll take a look into it’s code and maybe hack around my own framework upon that. Or maybe something completely from scratch. Maybe not. Will see.
Any kind of feedback or suggestion is welcome.
Mac OS is great and there are stuff that makes it even more great. Each new app or shortcut I learn makes me more efficient on Mac and save me a ton of time. So I wanted to share my experiences as I find out new things and maybe learn some more. Feel free to send me suggestions! I’ll start with my best friend, Alfred.
First and foremost: Alfred

I feel like this is the app that every should Mac should be shipped with. It’s free and it makes life better.
Instead of going up to the search panel, you can simple press alt + space and start typing whatever the hell you want to do on your computer.
It’s much more than a simple search, it learns which apps you use more frequently, which documents you accessed recently and it even let’s you define some customized searches for specific websites.
What do I mean by that? You can define a search as following:
http://dochub.io/#css/{query}
And whenever you type <css border>, it’ll go and search for that property. You can even define < ssh://{query} > One of my favorite shortcut: urban dictionary
Here you go: http://www.alfredapp.com/
ksikka asked: How do you do a DFS in javascript?
Since you’re asking for JS, let’s make it more specific. Say you are looking for an element with some arbitrary id. I’d do the following.
function talkTheDOM(node, id) {
if (node.id === id) return node;
node = node.firstChild;
while(node) {
talkTheDOM(node, func);
node = node.nextSibling;
}
}
I hope this does the trick, though, I didn’t check or even read over the code. Let me know if you see any problems.
Additionally, I’m pretty sure you can come up with better question ;)