Answering Anything & Everything

In the past year, I have been answering absolutely anything people have been curious about. This is the result. It’s a long but good read.

You can ask more questions here. Maybe you even want to create your own AMA. There are also many other AMAs you could read.

What’s your favorite t-shirt?

Selfie please!

Would you rather fight 100 duck-sized horses or 1 horse-sized duck?

One horse-sized duck:

I could never fight duck-sized horses. They would look too cute.

Fun fact

Horse-sized ducks, called Dromornithidae, lived in Australia 20,000 to 50,000 years ago:

What is your dev environment?

I use a MacBook Pro (15-inch, Late 2013) and Bose QC25 headphones.

My most used apps are iTerm2, Chrome, Sublime Text, Dash, Alfred, and Caprine. I also use the menu bar apps Bartender, Battery Indicator, Lungo, and Spectacle.

In Sublime Text, I use the Spacegray theme, the Oceanic Next color scheme, with the above font. I use n for Node.js version management.

Also see “What terminal do you use?”.

Can you share a screenshot of your desktop?

Dock: Finder, Chrome, Sublime Text, GitUp, Notes, Reminders, Caprine, Anatine, Gitter, iA Writer, Xcode

What does your iPhone homescreen look like?

More on Homescreen.is

How do you get so much done?

I think my assumed super-productivity is an illusion of producing many repos. You could rather say I’m an efficient repo and package.json maker. I do work hard however, but by taking something that could be 10 files in a lib/ folder or 10 functions in a util.js file and making them separate modules my productivity seems tenfold.

I think making small focused reusable modules has had the biggest impact on my productivity. Being able to reuse a lot of code easily means I can glue things together faster, hence producing more things. I’ve done a lot of Node.js so my proficiency is pretty high, which results in better efficiency.

Other than that it’s all about discipline. I’m highly passionate about making things on the computer and spend a lot of time doing so. I prioritize coding over other stuff like TV, surfing, reading, etc. Sometimes too much so…

How do you make a living if you don’t have a job and don’t take donations?

I don’t make a living, currently. I have some money saved up. I don’t really care much about money or material things, don’t use much money, and don’t have a lot of monthly expenses.

How do you get along with the elks in Norway?

I have a fun elk (moose) story:

I used to live in Lillehammer in Norway. It’s 2.5 hours up north from Oslo, the capital. I lived in the forest outside the city center. One day I was walking from work to the local grocery store. I had my headphones on with some loud dubstep music. Suddenly, this huge creature ran past me, almost running me over. It took me some moments to realize it was a moose. It was running like crazy and was headed right towards the store. Luckily someone came out of the store moments before the moose entered it, which scared the moose and made it change direction.

I managed to snap a picture of it right after it turned away from the store:

Where are you living now?

I’m homeless at the moment. I live in Bangkok as much as I can and travel home to my parents in Norway once in awhile.

Do you enjoy being homeless?

Definitely. It’s nice being free to travel anywhere at any time. I don’t really care much about material stuff either, so I have everything I need and care about in a small backpack.

What would be the next country for you to live in?

I don’t know. I really enjoy living in Thailand. Singapore is also nice, more modern, lots of delicious food, good tech community, but also stricter and housing is crazy expensive. There are also many potential countries I haven’t visited yet, so I’ll come back to you in a few years when I’ve tried out more.

How do you avoid burnout?

I don’t. I embrace it. Burnout is unavoidable when you’re active in open source. Knowing how to handle it is key. Once in a while, I get burned out by all the issues, negativity, demanding user, drama, workload, etc, and I take a couple of weeks break from GitHub. Being away for a little while helps me process it all and refill my batteries.

A day in life

Normal weekday:

  • Wake up around 9 to 11 AM and shower.
  • Walk to a coffee shop.
  • Sit in coffee shops and hack until around 5 PM. “Hack” being coding, emails, Twitter, GitHub issues, AMA answering, etc. I usually start by reading some emails, triaging GitHub issues. look through todo-list. After a while, my brain has woken up and I’m ready for some coding.
  • Meet up with my girlfriend for dinner somewhere. (Nobody cooks at home in Bangkok.)
  • Then some girlfriend activities; shopping, cinema, drinks, pancakes, movie at home, or etc.
  • 0 to 2 hours of hacking after girlfriend sleep.

In the weekend there’s usually not much hacking time as we’re usually busy with other activities.

How did you make the gif in log-update?

I resized the terminal to fill the screen and bumped up the font size. QuickTime Player → File → New Screen Recording, and recorded the terminal animation. Opened the resulting movie in Photoshop and used the Animation panel to remove all non-unique frames and then sat the frame delay manually for each frame. I did all that to optimize the size of the GIF. Then exported the GIF and ran it through ImageOptim.

Usually I don’t go through Photoshop though, but rather record with QuickTime Player and then edit and export with GIF Brewery.

What does the back of your laptop look like?

Get the AVA sticker.

One-line node modules

tl;dr You make small focused modules for reusability and to make it possible to build larger more advanced things that are easier to reason about. Read more.

What did you feel like when you received your first pull request?

I was this excited when I received my first pull request.

All the early PRs I received.

Why do you make logos for small modules?

Sometimes when I need a break from coding I like to design things. These projects strictly don’t need a logo, but it does make them look more enticing. Open source projects are not just about code. Presentation, documentation, support, and kindness are important too.

Some projects I’ve made logos for: AVA, XO, escape-goat, pageres, got, hasha, awesome, android-lint-summary, chalk, fkill, trash, brightness, build-time-tracker-plugin, imagemin, node-sass

How do you manage JavaScript snippets?

I don’t use snippets. If something is too hard to write out manually, I just make it a module. npm is my snippet database.

Do you think there is a strong correlation between programming and math?

Being average at math and not having a Computer Science degree haven’t really slowed me down. Whether you should improve your math knowledge really depends on what kind of programming you want/need to be doing. The kind of programming I do, Node.js and front-end JavaScript, require very little math knowledge, but if you, for example, want to do scientific programming or work on hard problems at e.g. Google, you obviously need to know your math. That being said, math knowledge never hurts, but there are many more important things to learn to be a great programmer, like how to create performant scalable maintainable systems, code reuse, readable code, usable APIs, debugging & profiling, writing good tests, resolving bugs, writing approachable docs, collaborating with other humans, etc.

Do you use any particular tool to resolve merge conflicts?

I manually fix simple conflicts in Sublime and Kaleidoscope for more difficult ones.

Do you have a blog?

You’re reading it.

How to be rich?

You don’t want to be rich — You want to be happy.

What do you think will be the top trends of 2016?

Feb 12, 2016

Native development with JavaScript and VR. React Native (mobile) and Electron (desktop) are growing like crazy and that will continue throughout 2016. Many large companies will announce and create their apps with these platforms. With the release of Oculus Rift, we’ll see an influx of VR, even on the web. Many VR related SDKs, modules, services and features will pop up all around us. YouTube and Facebook are already testing VR support. Expect having to endure a lot of churn while we figure out what will and won’t work regarding VR, but also lots of innovative experiments around interactivity.

The JavaScript community will hopefully stabilize a bit, especially when it comes to tooling and frameworks. React will continue its immense growth, but most of the innovation will happen in the ecosystem with Redux and other yet to be made packages and ideas. We’ll see more and more companies adopting symbiotic rendering (both server and client), which enables exciting things like ability to render the initial page on the server and subsequent pages on the client, or only render on the client during heavy server load.

In the tooling world, we’ll finally see a Gulp 4 release and long-long-awaited Grunt v1 release, but those tools only solve so much and we’ll still be stuck with a lot of boilerplate and wanting something better. The big thing this year will be ES2015 modules and tree-shaking (it only includes the bits of code your bundle actually needs to run) using rollup.js or Webpack 2.

And last, in a highly biased fashion, I think concurrent atomic testing will be huge → AVA.

What do you think about Bitcoin?

I was super-excited about Bitcoin when I first realized, pretty late, how awesome the tech is. Although, I’ve always been skeptical about its practical merits. My current feelings are pretty well reflected in the following article “The resolution of the Bitcoin experiment” and this tweet.

I’m more excited by Zcash, which manages total payment confidentiality using zero-knowledge proof, but I bet in the long run it will turn out to have some downsides too.

What is your MBTI personality type?

INTP

What do you think of the Alfred app?

It’s super handy. I use it all the time to launch apps and search different services. The real power, though, comes from the custom workflows. You can build so many useful things with them. I’ve built workflows for searching npm packages and finding emoji. I’ve also built a module to make it really easy to create workflows in JavaScript.

When do you mark modules as 1.0.0?

I make most modules 1.0.0 right away, as they’re usually small and focused, and I try hard to make them be done at publish time. The few times I don’t, are for larger modules (AVA, XO), or when I’m not entirely confident in the API (bitbar, execa) or implementation (boxen).

Do you hang out with programmer friends often?

Less than I’d like to, to be honest. Most of my programmer friends live in different countries. While I can easily be sociable when needed, I’m an introvert, so I don’t seek social interactions. Might also be that since I interact with so many programmers online all day, in real-life I find it nice being around non-tech people for a change.

What tool do you use to publish to npm?

I use np.

Dog food?

It’s not that bad. Tastes like hard crispbread with a hint of tuna. Canned cat food, however, is the most disgusting thing I’ve ever tried, and I’ve eaten things like fried scorpion and insects.

What kind of repo do you think will be more likely starred?

Look at trending repos to see what kind of things get popular. I’ve noticed most React-related projects, like plugins and boilerplates, gets popular fast. Non-code things like style guides, resources, books, CSS, awesome lists, etc, are also easily starred.

However, you shouldn’t do stuff because of stars. Popularity is rarely a good metric for quality. Yes, it’s cool to have a popular project, but the most fun projects I’ve done are not very popular, and I couldn’t care less. Do it for you, not the stars.

Visa and length of stay in Thailand

I’m staying less than 90 days at the time. The only way to stay longer is to get a different visa which comes with other requirements: investment visa (can stay as long as you have the investment, but requires a pretty large minimum investment), student visa (1 year, but you have to study thai), etc.

Thailand recently introduced a new kind of tourist visa that last for 6 months, but you can still only stay 90 days (60 days + 30 extension at the immigration office) at the time. 90 days is a pretty long time, though. There are lots of interesting places to travel to in South East Asia. So take it as an opportunity to do some traveling once in awhile.

One thing that is made harder with this arrangement is getting an apartment. The best apartments come with 1 year minimum lease. You either have to suck it up and pay rent for an apartment you can’t use the whole year or find something else.

How many times have you thought about quitting open source?

I actually did. Multiple times. But it’s like quitting smoking. It doesn’t last very long. Was usually a few weeks, then I was back again. I guess it’s more of a break, but I was sure I was quitting it for good. There’s a limit of how much abuse a person can take when doing something for free. This was some years back and I didn’t yet have the thick skin I have today. People were constantly being overly demanding, rude, intrusive, unreasonable, etc. One time some guy called me on my phone yelling about a business-critical bug ticket he posted half a day earlier. In the end it turned out it was his own bug.

Don’t get me wrong. I’m still to this day super excited about open source and would never have it any other way. I do wish open source had less demanding and toxic people, though.

You are a perfectionist?

“Are you a perfectionist?”, you mean. Ok, I think that answers it.

Pure alcohol or cocktails?

Depends on the purpose. Cocktails for enjoyment. Pure alcohol for getting drunk.

Are you a native English speaker?

No, my native language is Norwegian. I can speak English fine, but my accent is obvious.

Have you ever participated in a programming contest?

I have never participated in a programming contest. Not my thing. Programming is more of a passion than a sport for me.

How did you learn English?

I learned English in school, but not very well, as I had bad teachers. At least I learned the basic grammar. I learned to read and write English more proficiently through computers and the internet — by reading tech news, discussing online, etc. I also got a lot of my English comprehension from watching American TV-series and movies. One thing I quickly discovered when traveling outside of Norway was how subpar my English speaking skills were. You don’t really learn to speak a language without actually speaking it a lot, like every day, and you usually don’t do that if it’s not the native language where you live. So the best way to learn English for real is to live or travel around people that speak it natively, and not be afraid to try no matter the level you’re on.

Have you ever submitted a pull request absolutely hammered?

No, but I’ve committed a lot of code hammered and always regretted it. It’s so easy to miss things when you’re unfocused, even for simple routine stuff. Now I just write down what I want to do and do it the next day.

Were there bash commands that destroyed your life?

Once upon a time in the 90s, I managed to destroy my computer by issuing a del command, I think, on my Windows desktop. I had no idea what I was doing then. Also managed to corrupt the boot-sector the same year. And later corrupt the Window registry with some rouge regedit commands. Good times. Luckily only lost some game progress, .txt files with weird poems I had written, and some horrible Paint drawings. This was long before backups were mainstream.

It wasn’t a command, but I did lose some precious photos when I crashed our family PC. It was running Windows 95. For some reason I had fun creating nested directories. I did it every day. Deeper and deeper. Until of course Windows couldn’t handle it anymore and crashed on startup. It took my dad and my cousin’s dad a whole day to debug and try to fix it. In the end they ended up having to reformat it.

I’ve learned a lot since then and these days I have double backups, even triple sometimes. I have Backblaze backing up continuously in the background and I run Time Machine on an external hard drive once in a while. Most of my projects are also “backed up” on GitHub.

Do you think Firefly should be rebooted?

Yes! It’s in my opinion the best scifi TV-show ever made.

What is your favorite Thai food?

Kaeng Phet (Red curry with pork). Kaeng Khiao Wan (Green curry) and Som Tam (Green papya salad) are also delicious.

When was that one time when you totally lost your shit?

I don’t think that has ever happened. I’m a fairly tranquil person. I used to get mildly annoyed by dumb/rude people on the internet, but that was years ago.

Are you excited about driverless cars?

Yes, the tech is wonderfully interesting, and in part because I don’t have a driver’s license and hope autonomous cars will be ubiquitous by the time I’ll need one.

What is your absolute favorite cocktail?

Piña colada. I’m weak for coconutty drinks and food.

What languages do you speak?

JavaScript, English, Norwegian. In that order. At some point, I want to learn Spanish and Thai.

How do you feel when rejecting a pull request?

I feel really bad, but in the end, I’m the one having to maintain that code, so it’s the best outcome. I feel even worse when I have to reject a good pull request. Sometimes it just doesn’t fit into the scope of the project. That’s also why, as a contributor, you should open an issue discussing it beforehand if it’s non-trivial.

Do you like chicken?

Yes! My favorite chicken dishes are Gai Pad Med Ma Muang Him Ma Paan (Stir-Fried Chicken with Cashew Nuts) and Tom Kha Gai (Chicken Coconut Soup).

Do you write release notes by hand or use a tool?

For popular or larger projects, I write the release notes by hand, as there’s no replacement for the human touch. For the rest, I simply don’t. I keep a clean commit history, so it’s easy enough to just skim the few commits. The beauty of small focused modules is that most of them never change, and if they do, it’s one or two commits between releases.

What is your GitHub password?

Some years ago I used the same password tussidoflekira##3456 (which are the names of my pets) for all of those services. Not going to share my current passwords of course (wouldn’t help you anyway as I use 2FA), which are unique, 50 characters, and kept safely in 1Password.

What is your opinion on the AMP project?

I’m pretty amped up about it! Mostly towards reading on the web. The sad reality is that most news sites today are heavy, slow, badly coded, using intrusive ads, and generally just a frustrating experience. I always use the Safari Reader for those reasons. I just want clean, readable articles, immediately. I truly hope AMP succeeds in making a faster and better reading experience on the web.

How do you feel about the universe possibly being a computer simulation?

While I enjoy movies with that theme, like The Matrix, I’m gonna go with Occam’s razor when it comes to simulation hypothesis — The simplest explanation is usually the correct one. Numerous of these hypotheses see the universe as they wish it to be, rather than as it probably is — A random fathomless in which we’re just transient fortuitous participants.

Why promise instead of callback?

It makes code simpler and more readable, less argument shifting for optional options object (since there’s no cb argument anymore), easier to share code between sync and async APIs (because both return something, either value or promise), but most importantly because we finally have a native async primitive and it will just work with async function (async/await), which is amazing. This is a lot nicer than nested callbacks.

What are your thoughts on the left-pad npm case? Would you do the same?

Would I have unpublished all my modules? Never. While I disagree with the decision npm made, I think what Azer did, even though it was his right, was highly unprofessional and childish. Some part of me is glad it happened. It forced npm’s hand towards better safety and immutability, which we have been begging for for years.

I also fail to see how small focused modules have anything to do with the unpublishing of left-pad. It would have been just as bad if lodash were unpublished (Actually worse as lodash has 10x the downloads). Let’s not abandon good practices just because of one dumb crisis. It’s fine that not everyone believes in small focused modules. Diversity is good. And it probably wouldn’t work in many other ecosystems, like Python and Go, where dependencies are more painful.

It’s sad how aggressive people get just because we’re not doing things their way. We can do better.

How do you discover new interesting open source projects?

People I follow on Twitter, GitHub newsfeed and trending repos, Changelog Nightly, Node Weekly, npm addict, and browsing package.json dependencies of projects.

How do you organize repos/projects on your machine?

Everything goes flat into ~/dev and ~/dev/forks. I use ZSH auto-complete and globbing, so organizing into categories wouldn’t be of much use.

How was your weekend?

Oct 4, 2015

Excellent. Quiet weekend as my girlfriend was working. I finally had some me time, which I wisely spent in a front of a screen. Cleaned up my computer and notes. Answered a bunch of emails. Did a lot of coding. Planned some new projects. Got my browser tab count down quite a bit. Read some saved Instapaper articles. GitHub stuff. Walked around in the rain. Visited some coffee shops. Watched Tomorrowland and some episodes of Rick and Morty. Ordered in some Indian butter chicken and mango lassi.

Are you interested in stock markets?

Mildly. I have some stocks in Apple, but I’m more of a passive investor.

In hindsight, what advice do you wish someone had given you at age 20?

Be spontaneous. Be crazy. Do what other people say you can’t. Grow up, not dull. Question all the things. Prefer quality over quantity of friends. Prioritize family. Optimize for happiness. Use money to buy time and experiences, not stuff. Don’t be afraid of asking people. Travel. Experience. Get rid of useless material things. Simplify everything, including your life. Love.

What was your longest coding streak?

43 hours. Some years back I was working on my first iPhone app and had never touched Objective-C before (or even C). So I learned while doing, failing a lot. I remember it being super exciting though, and I just couldn’t close the lid on my laptop. It’s interesting how you lose the sense of sleepiness when listening to dubstep and concentrating intensely in front of a bright screen. I slept for more than 16 hours afterwards. Would not recommend. These days it’s usually a maximum of 4 consecutive hours.

Your best project?

AVA is the best and most ambitious project I’ve started. Creating a test runner is surprisingly hard. Not to mention an innovative and concurrent one. Very much an arduous journey. Luckily I have some awesome team members. When something suddenly grows really fast, it’s hard to manage issues/PRs, support, keep a clean codebase, prevent feature creep, ensure stability (extra important for a test runner), balancing readable code vs. performance, and not burn out in the process. Making the project welcoming to anyone has been a big priority. We’ve worked hard on making the docs good, translations (huge thanks to our incredible translators!), added a code of conduct, a comprehensive contribution guide, and “beginner friendly” labeled issues, and mentoring beginners. We’re also strict about being nice to anyone, regardless of how dumb a question might seem or how trollish a user might be (the utter niceness part actually annoys them, which is a bonus 😝).

Share an old screenshot of your GitHub profile

Here’s a screenshot from 2012–07–13. I had just started contributing to open source. Mainly TodoMVC and Yeoman.

Do you believe in extraterrestrial life?

Yes. The universe is singularly gargantuan, I’m certain there’s some kind of extraterrestrial life out there. However, it’s definitely not the Hollywood kind of aliens.

Extraterrestrial life might even be around us and we’re just too primitive to comprehend their existence:

There’s a worm in the street, you walk by it. Does the worm know that you think you’re smart? The worm has no concept of your smarts. Because you’re that much smarter than the worm. So the worm has no idea that something smart is walking by it. Which makes me wonder whether we have any concept — if a super species walked by us. Maybe they’re uninterested in us because we’re too stupid for them to even imagine having a conversation. You don’t walk by worms and go “Gee I wonder what the worm is thinking.” This is just not a thought that you have! So one of the best pieces of evidence for why we haven’t been visited by aliens is that they have actually observed us, and concluded there is no intelligent sign of life on earth. — Neil deGrasse Tyson

What’s your most enjoyable framework?

None. I don’t like frameworks. However, I’ve experimented with Ember, Angular, React, Deku, and personally prefer React and Deku. Haven’t tried Vue.js, but it looks interesting.

My advice is to experiment with many different frameworks, but use what you’re efficient in. Don’t just follow the hype. The product is what matters.

RSS reader recommendations?

I’m happy with Digg Reader. I’ve also heard good things about Feedbin.

What is your preferred editor?

I use Sublime. It’s fast, lightweight, and extendable, but more importantly, I’m extremely efficient with it, after having used it for years and set it up exactly how I want it. An editor is a big investment and not something I would change lightly.

Atom will probably be better than Sublime in a few years. Atom still struggles with performance, but the benefits of running in a browser should not be overlooked. So much potential there for innovating what an editor is. The merge-conflict plugin is a good example of that. The Sublime plugin API, in contrast, is rather limited. There’s also the unfortunate reality that Sublime is closed-source and the development is between sporadic and none. I’m not switching over to Atom in the short-term, but if nothing improves with Sublime, I’ll do it at some point.

I really liked Brackets when it was released. It had great potential, but it never got polished enough for me to switch. Now it seems the focus is too much towards designing websites and Atom is a much better fit for me.

What are your favorite Sublime Text plugins?

What software license do you prefer and why?

I prefer the MIT License as it’s simple to understand, the most common one, so most people know how it works, and it’s very permissive. I don’t really care about protecting my code. I want anyone to be able to use my code for whatever they want.

Do you practice meditation?

I don’t. My zen is hacking on something interesting while listening to chillstep.

Do you use all of the packages you create?

Yes, most of the packages I create exist because I need them for something. Some I’ve created just for fun though, like cat-names.

How often do you check your email?

Usually when I wake up and then once in awhile throughout the day when I have some dead time. Maybe 5–20 times a day. I try not to check it when working though, as I prefer to focus on one task at the time. That’s also why I don’t have any kind of email notification. When traveling it’s a lot more sporadic. It can be none or 10 times.

This is how I always read your username. How does this image make you feel?

Marvelous. There actually is a dinosaur called Chindesaurus.

I made this:

What is your system for reaching inbox zero?

I used to get overwhelmed by the mass amount of emails, but now I snooze them to times when I think I will be able to handle them. Especially useful since a lot of emails are implicit todo items. I use Google Inbox, which is superb. The bundles in Inbox are useful for managing which emails to focus on and the snooze feature is great.

As for the emails themselves, I try not to procrastinate too much. Emails that doesn’t require a lot of thinking/writing, I try to reply to right away. In the end, I spend a lot of time answering emails, as I strive to answer them all.

Why don’t you capitalize the readme filename in your repositories?

Aesthetics. It looks better lowercased. And there’s no longer any practical reason to uppercase it.

Was it really you who invented the term “ponyfill”?

Yes, I think I coined it when I made the object-assign ponyfill. See the definition.

Where would you live if you could live anywhere?

Some earth-like planet in the Andromeda Galaxy.

What is your favorite tool for remembering things?

My brain, but it fails me a lot… I used to use Pinboard, but it ended up as a personal link wasteland. Now I just use Chrome bookmarks for important stuff I want to keep, and the Google Inbox “Save to Inbox” feature for things I want to read/do later. I also use Notes on macOS and iOS for braindumps and planning.

Who’s face would you most rather throw cold spaghetti in?

Donald Trump, but he would narcissistically find a way to benefit from it, so maybe not.

When is the last time you experienced irony?

Watched an episode of Arrested Development (Pretty much every episode though).

Can also be found in every episode of Last Week Tonight with John Oliver and Rick and Morty.

What sort of games do you like to play?

I don’t really play games anymore… I like playing the board game Monopoly, but no one wants to play with me as it takes forever to finish. I used to really enjoy playing Age of Empires 2 and Counter-Strike.

What is your favorite quote?

The people who are crazy enough to think they can change the world are the ones who do.

— Apple’s “Think Different” commercial, 1997

It inspires me to work hard, be a rebel, and do what other people say I can’t.

Here’s to the crazy ones.

Will goats be more popular on the internet than cats at some point?

According to Google Trends it’s highly unlikely to happen in the near term, but I’m confident that at some point in the future humanity will realize goats are superior. In the meantime enjoy this sound simulation of a bad goats brain.

What is your favorite song?

I’m not usually into classical music, but I could listen to this one forever: Ludovico Einaudi — Divenire

What if you were not a web developer?

If I could start over, I would pick exactly what I’m doing. I can’t imagine doing anything else. But for sake of argument. If I had to pick something different, I think I would have liked to be a travel photographer. I both enjoy photography and travel. Exploring new places. Observing the culture. Hunting for the perfect picture. Learning from people. Documenting life.

Favorite testing framework and why?

None. Testing could be so much better! I’m a big fan of tape for its simple syntax and lack of implicit globals, but I really dread the default TAP output. It’s also a bit buggy and the code is very coupled to being a TAP stream, so it’s hard to reason about. My own test runner AVA is the closest something can get to being my favorite, but it still has a long way to go until I’m completely happy about it.

What is the most critical bug you want to see fixed in npm?

Only one? There are so many…

If I had to pick just one, it would be the permission issues. Does npm ERR! code EACCES sound familiar? 😝 I’ve probably closed 1000+ issues (not even over-exaggerating a bit…) like that in my repos in the past years.

You didn’t ask this, but needs saying, the most critical bug in the Node.js ecosystem is people not upgrading. It doesn’t help that npm and Node.js keep squashing bugs if people just stay on ancient versions. I have a similar amount of closed issues where I tell people to upgrade.

What are your photography preferences?

My favorite categories are landscape, animals and action photography, but I do a bit of everything really. My current goal is to get better at portraits, which I find hard to do properly. I really enjoy it when I’m able to bring out some emotion or atmosphere in my photos.

I have a Nikon D610 with Nikon 18–300mm and 85mm f/1.8 lenses. The 18–300mm is a great all-around lens for travelling, and the 85mm is a classic with superb quality for its relatively low price. I do sometimes miss the 70–200mm f/2.8 which I used at work. It’s the best lens I’ve ever used. I also have an iPhone 6 which has a surprisingly good camera. I’ve used it a lot lately instead of the Nikon as it’s easier to carry around.

Until recently, I used Aperture for all my organizing and editing, but I switched to Photos when it launched. It doesn’t have a lot of advanced editing features, but I realized I don’t do a lot of that these days anyways. I also have Lightroom for those occasions when I do need something more. I like my photos authentic so I try not edit them too much, except for the stuff I post on Instagram of course. Some things I’ve found can really make a portrait shine is to reduce shadow, turn up the definition a little bit and brighten/sharpen the eyes, and add a tiny bit of vignette.

I don’t really share a lot of photos. Most are just locked up in my computer.

You can find some of my photos on Instagram and 500px.

What programming language would you suggest?

JavaScript. Hate it or love it, doesn’t matter. It’s here to stay. If there’s one language I think I’ll still be using in 30 years, it’s JS. JS is best with Node.js though. Try making some node modules and you’ll quickly get hooked.

What does your RSS feed list look like?

See this list.

What Slack channels do you participate in and what channels would you suggest a dev be part of?

I really don’t get the Slack hype. I’ve used it for a while and it’s ok, but that’s it. I would probably use it internally with a team, but definitely not for public discussions.

Slack is emphatically not for societies

Because of the hype, lots of communities are trying to use it for something it wasn’t made for. We already have IRC, Gitter, and other services for this. It’s awkward how every Slack team needs a “separate account” (though they can be connected) and you can only be in one Slack team at once. That makes it really hard to participate in multiple communities at once, which is a common need.

How fast do you type?

73 WPM. I’m not a fast typist, but that doesn’t matter. What you type is what matters. You should want to type as little as possible. The more you type, the more bugs you introduce. I use most of my time thinking. The typing part is easy and don’t take very long.

How do you relax from coding?

When not coding, on the computer I like to do some designing, watch TV-series, other activities on GitHub like responding to issues, plan my next projects, write blog post drafts I know I’ll never finish, edit photos, chat with friends.

In real life, I exercise, it’s a great way to clear your head after coding. Read books on my Kindle. Hangout with friends and family. Photography. Walk the dog. And when traveling, explore new places and get lost.

How many lines is the longest function you’ve written

50 lines, I think. Usually, when a function gets above 20–25 lines I try to split it up.

Do you like living in Norway?

Not particularly. Luckily I don’t live there anymore. It’s cold almost all year. In Lillehammer, where I used to live, it got down to –38℃ in the winter. It’s one of the most expensive countries in the world. Very little innovation happens here other than in oil and energy, especially compared to Sweden. The traditional food is bland. Most Norwegians like it here, though, so I’m probably the outlier.

However, some places in Norway are beautiful in the summer.

What will happen to all your modules if you die?

First of all. Nothing will change. My modules will not suddenly disappear. Most of them are finished anyway and will never change. That’s the beauty of small focused modules. I also have some friends that have access to all my repos.

What IRC channels are you in?

None. I used to hang out in a bunch of IRC channels, but many of them got quiet in the past years and I lost interest.

These days I mostly just hang out in a few Gitter chats:

Opinions on legalizing gay marriage?

I don’t have strong political opinions, but I’m all for equal rights no matter who you are, including legalizing gay marriage.

What’s your take on JavaScript Standard style and friends?

I really wish we could have one style to rule them all. However, the JavaScript community is very diverse, so I don’t think we’ll ever agree on one style. Standard style is a really awesome idea, but it IMHO doomed itself by not adopting the most popular style (semicolons + other things). What it does get right is being opinionated and super easy to set up and use. No more useless code style discussions is the key here.

I made XO, which is a pragmatic alternative. I, however, have no goal of it being the style. It’s just what I personally consider the optimal style. Strict rules, tab indentation (just {space: true} for spaces instead) and semicolons. I believe in good defaults but configurable when needed.

If there was one thing you could make all GitHub users stop doing, what would it be?

I would make users stop mindlessly opening issues without any thought, investigation, or even a simple Google search. I would like less and higher quality issues. Just to put things into perspective. A big part of my time doing open source is spent on commenting and closing invalid issues. Probably ~95% of the issues I get are invalid.

Do you often meet open source people in person?

Rarely. I don’t really attend conferences, which is the best place for doing that.

What are your thoughts on front-end frameworks?

Frameworks bore me. Having run TodoMVC, I’ve seen it all. React is my favorite at the moment, but in the end, it doesn’t matter. It’s so easy to lose focus on what actually matters — the product.

What are your thoughts about CoffeeScript?

I remember thinking CoffeeScript was pretty cool when it was new, but its syntax has always been a bit too ambiguous for my taste and I knew all the JavaScript idiosyncrasies anyways. These days there’s really no reason to use CoffeeScript over ES2015. However, CoffeeScript should definitely get the credit for making “JavaScript as a transpile target” mainstream. I found Earl Gray to be quite interesting, but I doubt I’ll ever use it over ES2015.

How much money do you have?

Jul 4, 2015

I have $15K total in my debit & savings accounts, which can last me for another year if I want, living in Asia. I have no debt and few monthly expenses.

Do you use any boilerplate for your node modules?

I have my own boilerplate and Yeoman generator.

What are you looking at in your avatar?

In this photo:

The sky, I think. The photo was captured by my little sister, in my parents garden, one rainy summer day some years ago.

Original photo:

What do you think about not using semicolons in JavaScript?

It’s true that semicolons can be left out in many cases. The problem is that you have to be aware of when it can’t. This creates IMHO ambiguous code. I know tooling can help with this. I just prefer to keep my code strict and explicit, and optimize for readability, not typing. In the end, semicolons are like indentation, no actual correct answer, just strong opinions. Pick whatever you prefer and use the existing style when contributing.

Are you a math guy?

I’m not a math guy. Prior to learning programming, I thought you had to know a lot of advanced math to get by. The truth is I rarely need anything other than the most basic arithmetic. It depends on what kind of programming you do, but front-end development is rarely math heavy.

What do you think about Web Components?

tl;dr I love the concept and really want it to succeed, but it has a long way to go before it’s something I would use.

I think it’s a great idea in theory. I’ve always wanted to natively be able to do components (modules) on the front-end. Years ago when I used a lot of jQuery plugins, I remember dreading having to manually include the JS file, then the CSS file, then having to deal with any conflicts. I always imagined someday having the ability to create self-contained components that you just included with one line, without having to be aware of its inner semantics, like having to know that it used this CSS file and this JS file.

Unfortunately, from my limited experience with Web Components, I’m not yet sold on it. There are a lot of things that are not yet figured out. The packaging story is sub-par. The performance by default is really bad (HTTP 2.0 will improve this), so you end up having to use tools like Vulcanize to inline everything. The spec has changed a lot recently. Everything is pretty much in flux right now. I also found the native API somewhat convoluted, but I guess that’s what Polymer and similar libs are for.

Why do you star your own repos?

The star button is like this red button you just have to click. It kinda bothers me if it’s not “starred”. When I create a project I like to snooze them to another day in the future so I can review the code again with fresh eyes. This helps me keep the quality high. I guess it also has the benefit that it shows up in the GitHub news feed again.

What kind of an Internet connection do you have?

That really depends on where I am. I’m visiting my parents this summer and they have 100 Mbps, but when traveling it’s usually a lot worse. In Singapore, I had awesome speed. At this one place, I had 1 Gbps! I sit a lot in coffee shops coding when traveling, and I really wish there were an app like Foursquare just for wifi speed. It’s so hard to find coffee shops with even ok wifi speed. I always buy a local SIM-card when traveling, so many times it has been a lot faster to just use the 4G connection from my phone.

Where do you go if you have support questions?

I used to turn to Stack Overflow a lot. It was great, but its quality has really bottom-rocketed in the recent years. Gitter is also a good option. Lots of welcoming communities there. Having a network of mentors and friends is also very beneficial. Although I try very hard to figure it out myself before asking as I love a good challenge, and it’s a great feeling having solved something that initially felt impossible.

Did you ever try Emacs/Vim?

I’ve always been envious of people being efficient in either of those. I did try to use Vim for a couple of weeks once, but I never got over the initial learning bump, got frustrated, and went back to Sublime Text as I had a lot of work to do. Might try again in the future, but right now Sublime Text works for me, and I’d rather spend my time making things.

How can we donate to you?

You can’t. Donate to a good cause instead. I’m fine, and I don’t really care about money other than what I need to survive.

How did you get a job at Google?

I don’t work at Google and never have.

What emoji do you wish existed?

All I need is 🦄, but I guess these could be nice to have too:

  • Dinosaur
  • Magical pony
  • Twerking
  • Neil deGrasse Tyson face
  • Sudo sandwich
  • Selfie
  • Yarn bombing
  • Cheeze doodle fingers
  • YOLO
  • Don’t disturb, eating dinner
  • Unicorn emoji magical modifier (Like the skin tone modifier, but ability to add wings, change color and stuff of the unicorn)

How do you manage your life?

Whatever the antonym of manage is, that’s what I’m doing. I have a lot of passion and things I want to build, so my relationship with time and todo lists is “It’s complicated”.

I use the Notes app on my iPhone/Mac for my note needs; ideas, braindumps, and stuff. I use the Reminders app for more concrete actions I need or would like to do. In Reminders, I have the following lists: Hacking, Real life, Travel, Someday, Shopping list. I also have a lot of tabs open in Chrome with current projects and things I’m doing. I don’t think I’ve seen the favicons in months. I’m a single-threaded multi-tasker, meaning I tend to start working on a lot of things, but I can really only finish things if I focus on one thing at the time. I also have a lot of Sublime Text tabs open for similar reasons.

When it comes to managing real life, I probably spend way too much time on the computer. I try to force myself to be social, go outside, gym, etc, and it’s nice when I do it, but it’s hard to convince myself beforehand. Being an INTP doesn’t exactly help. Sometimes I wish I could just stop time for a decade, so I could get through my todo list, but in reality, it’s an infinite source of ideas and work. I’ll just have to prioritize. That’s how I manage.

How much do you sleep?

6–9 hours a night. I used to have a really bad sleeping rhythm, but I realized I lost a lot of productivity and generally felt more tired. Getting enough sleep is extremely important. I normally go to sleep around 00:00–01:30, but it depends on when I have to get up.

How do you pronounce your name?

I recorded it.

How did you meet Addy Osmani?

I was a late convert to GitHub and mostly just used it to star popular jQuery plugins and such. One cold November night in 2011 I accidentally stumbled upon a project called TodoMVC by Addy Osmani. TodoMVC is a project that offers the same todo app made with a myriad of different JavaScript frameworks. Back then, I mostly did jQuery, so I decided to submit a todo app made with jQuery. Addy merged my pull request, which was pretty exhilarating. I continued to fix other open issues, and after some time Addy invited me to join the project. I think we realized early on that we worked well together. Both of us bringing different strengths to the table and a strong passion for the web and fixing all the things. Later we worked on many projects together, like Yeoman, Web Starter Kit, and more. That’s the story of how Addy and I became good friends. I don’t think I would be doing open source today if it weren’t for Addy inviting me to TodoMVC and mentoring me. It sparked my passion for open source. I learned so much from managing that project. Thank you Addy.

What irritates you most of all in open source?

tl;dr Nothing really.

I used to get annoyed a lot by various things in open source; trolls, low-quality issues and pull requests, rude users, etc. But you won’t last long in open source if you let that stuff affect you. Communication on the internet is hard. You have different personalities, cultures, language proficiencies and coding competencies, all trying to communicate together with text. Lots of opportunities for miscommunication and assumptions. See Hanlon’s razor. I’ve found the best way to handle this is with absolute kindness, no matter what. Trolls will hate it, as they’re only seeking a reaction. Rude people will respect it. Nice people will appreciate it. And I feel better. Win win.

What JavaScript code style guide do you use?

I use XO, which is an ESLint wrapper with sensible defaults and lots of extra rules.

What you do like to eat?

Lasagne, Taco Pie, Pizza, Tom Yum Kung, Green curry.

Favorite television shows?

My current favorites are House of Cards and Strike Back. All time favorites are Firefly, Stargate Atlantis, Stargate SG1, Arrested Development, Friends.

How do you keep yourself updated on technology?

I have a lot of RSS feeds I keep up with daily. I also read Hacker News, though it has gone downhill the past years… Twitter is probably where I get the most useful updates, from the people I follow, which is a carefully selected list of people I’ve gathered over the years.

When it comes to keeping my skills up with the latest technologies, I try to set aside some time once in a while and experiment with those technologies by making something fun. Like with Web Components, I made a component, with React you could make a tiny web app.

How did you meet your open source friends?

I met them through open source projects, surprise surprise. Most of them through AVA, Yeoman, and TodoMVC. I’ve only met Addy Osmani and Pascal Hartig in real life, though.

How long have you been coding?

I’ve been coding since I was 20, but interested in computers and doing websites since I was 8. “Websites” might be an abuse of the word. It was a hot curry of animated 3D gifs, background MIDI music, and trailing cursor star animation, cooked together in Notepad.exe. Good times.

How old are you?

I’m 27 (89’ model).

What kind of music do you listen to?

My music taste is pretty varied. I like dubstep, techno, electro, chiptunes, rock, etc. I mostly listen to music on SoundCloud and some downloaded music on iTunes. You can follow my likes on SoundCloud.

How profitable is it to mainly work on open source projects instead of working for a company with fixed income?

If you mean profitable in the form of money, it’s not. I don’t earn anything from doing open source.

Open source has however been the most profitable thing I’ve ever done in terms of learning, both in regards to coding and people skills, making cool stuff, and bonding friendships. I would argue that’s a lot more valuable than money. It’s not an alternative to a full-time job for most though (including me), just an awesome addition!

Do you have a girlfriend?

Jul 1, 2015

Yes. Met her last year when traveling.

How do you balance your relationship with time spent on coding?

From experience, the quality of the time spent together is more valuable than the quantity. The important thing is to be there when you do spend time together. I have coding time, and then I turn that part off completely and spend time doing other things with her.

To be specific. She works and I don’t at the moment, so I’ve been spending that time in coffee shops coding and then spent time with her when she finishes work. Fitting in a lot of coding time with a relationship and busy life can be hard. You just have to make the best use of “dead time” as possible and IMHO try to always prioritize real-life.

What hobbies do you have besides programming?

The only sport I do is go to the gym and run. In the winter I do some skiing.

I love photography. I have a Nikon D610 and an iPhone 6, which captures surprisingly good photos. You can see some of my photos on Instagram and 500px.

What podcasts are you listening to and why?

I’ve tried a lot of podcasts, but these are the ones I usually listen too:

  • NodeUp — Interesting discussions about Node.js, npm, modules, etc.
  • The Changelog — Interesting guests and good discussions about a variety of different technologies.
  • JavaScript Jabber — Interesting guests and JS related discussions.

What makes you decide when you add somebody to a repo/org?

If someone does multiple good pull requests and seems interested in the project I usually add that person. I also have some people I trust that I add to all my repos.

Who are your heroes?

I don’t have any heroes. There are people I respect and admire, but in the end, we’re all just human. I admire Elon Musk for his infatuation to move the human race forward through his master plans of electricity and space travel. And I admire Steve Jobs for bringing us Apple and Pixar.

Star Trek or Star Wars?

Neither. Stargate for life!

Why don’t you have a website?

I’m too lazy. GitHub is my “website”, so I just redirect https://sindresorhus.com there.

Do you think it’s a good time to become a front-end developer?

There has never been a better time to be a front-end developer! Demands are huge. Don’t fall for the constant framework hype. Find your niche, e.g. layout/DOM/etc performance/memory tuning (which IMHO is an undervalued skill). Pick a framework, learn it inside-out, and build actual products with it.

My current favorite is React with Redux. Vue.js is also great.

How do you test REST APIs that use a database?

I try to mock as little as possible as it can obscure real issues. Instead, I fill the “test” database with some predefined fixture in the test setup function.

What is your current npm ls -g — depth=0?

Feb 13, 2016

❯ npm ls -g --depth=0
/usr/local/lib
├── ava@0.11.0
├── babel-cli@6.3.17
├── boxen-cli@0.2.0
├── chalk-cli@2.0.0
├── cpy-cli@1.0.0
├── dark-mode@2.0.0
├── david@7.0.1
├── del-cli@0.2.0
├── dev-time-cli@1.3.2
├── eslint@2.0.0
├── fkill-cli@3.3.0
├── generator-nm@2.4.0
├── gh-home@1.1.0
├── imagemin-cli@2.1.0
├── is-github-down@1.0.1
├── latest-version-cli@1.0.0
├── np@1.2.1
├── npm@3.7.3
├── npm-home@1.0.0
├── opn-cli@3.1.0
├── package-json-cli@1.0.0
├── pageres-cli@3.1.0
├── pretty-bytes-cli@0.0.0
├── pure-prompt@1.3.0
├── sparkly-cli@1.2.0
├── speed-test@1.7.0
├── svgo@0.6.1
├── trash-cli@1.2.0
├── xo@0.12.1
└── yo@1.6.0

Have you ever participated in a CTF contest?

Once. I did the Stripe CTF 2.0. It was fun and really well made.

Lots of good resources for doing a CTF contest here: https://github.com/apsdehal/awesome-ctf

The following write-ups are always a fun read: https://github.com/apsdehal/awesome-ctf#writeups-collections

Why did you start splitting out the CLIs from your modules?

Just wondering what your thought process was behind the sudden change in style. For example, opn and opn-cli.

I’ve mostly been doing all-in-one modules for convenience, but one day I realized they’re actually different concepts. Some users found it confusing that a module has different behavior when installed globally than when installed locally. Having CLI and API in one module also adds a lot of extra dependencies which bloats the package. And the readme get’s kinda messy with both API and CLI docs. The pageres readme before the CLI+API split was huge. Many users also never realized many packages of mine had a CLI, as it was included in the normal package. Having a package foo and one called foo-cli makes it clear that the latter is a CLI. And I make sure to cross-link them in a Related section in the readme.

What do you think about TypeScript and Flow?

I think they’re both interesting experiments. I strongly believe, now more than ever, that JavaScript needs some kind of optional type hints semantics. I welcome anything that wants to prototype that. I’ve only briefly experimented with TypeScript and Flow, but my preference tended more towards Flow. If you haven’t already, try them both out and make up your own mind ;)

Good reading: http://www.2ality.com/2014/10/typed-javascript.html

Do you have a day job?

Jul 1, 2015

I had a full-time job, 8 hours a day, 5 days a week, as a web developer for the Norwegian Armed Forces until August last year (2014) when I quit my job to go traveling. I’ll have to work again eventually when my savings run out. My open source stuff is done in my free time. The only time I’ve gotten paid for doing open source was a 3-month contract with Google working on Yeoman.

How many years did you work in military?

I worked for the military as a soldier (in uniform) for 5 years.

What were you doing in the military?

I worked there as web-developer & photographer. I mostly did front-end JS for the website/intranet, some internal apps with Django (Python), and some mobile apps. No Node.js though… I also went on various training missions as a photographer.

Can you share some GitHub repo stats screenshots?

What other languages do you code in?

I used to do a lot of PHP and Python some years ago, so pretty proficient in those, but the past few years I’ve mostly only done JavaScript. I’m not a PL nerd, so my desire to make things has been stronger than my desire to experiment with languages. Although I have done a good amount of Objective-C the past year. I’ve also done a tiny bit of vanilla C, but I’m awful at it.

My goal going forward is to get proficient in Swift and Rust. Those are the languages I find most exciting at the moment. My moonshot is to be proficient at Haskell one day.

Are you attending any (JavaScript) conferences?

Jul 1, 2015

Probably none this year. I’m in Norway now for the summer and will be busy traveling in Asia in the fall.

Contrary to most people in tech (it seems), I’m not really that into conferences. I much prefer to just meet up with some people, chat, and hack on cool ideas.

What’s your favorite spider leg based dish?

I’m scared of spiders, but fried insects and margarita is a great party snack.

By the way, fried scorpion might sound delicious, but it’s actually very dry and tasteless.

How many cats do you have?

I have two cats and one dog.

Dofle

Tussi

Kira

Bonus — Feeding time

How do you host your server-side Node.js apps?

I’m averse to doing too much DevOps, so Digital Ocean or AWS is not really something I would use unless I really had to. I’ve mostly been using Heroku for the past years, but not very happy with it lately. For future projects I will use now. Apex also looks awesome, but haven’t done any projects with it yet.

What are your favorite keyboard shortcuts?

  • Ctrl ` to toggle TotalTerminal.
  • Alt ` to toggle TotalFinder.
  • Alt Space to toggle Dash.
  • Cmd Space to toggle Alfred.
  • Cmd Tab to switch between apps.
  • Ctrl Tab to switch between Chrome/TotalFinder/Sublime tabs.

How often do you change your iPhone and MacBook?

History:

  • Macbook Pro 17", late 2007
  • Macbook Pro 15", late 2013 (current)
  • iPhone 3GS
  • iPhone 4S
  • iPhone 5S
  • iPhone 6 (current) (I swam with my iPhone 5S)

I plan on buying iPhone 7 when it comes out. There are rumors of a new MacBook Pro being launched in 2016, but I’ll probably wait until the second generation, as the first generation has a tendency of having issues and my current device works perfectly fine.

What’s up with the unicorns?

I don’t remember exactly. It’s one of those things that just became a thing. I like unicorns because programming and OSS is hard work and having something fun and silly is important for the morale. Gifs are used for the same reason.

What was your biggest childhood fear?

I didn’t really have one big fear. I had many minor ones. Mostly the normal stuff I think. Scared of growing up, ophidiophobia, darkness, heights, monsters in the closet and under the bed, being kidnapped, sharks in the swimming pool, trapped somewhere without being able to move.

Do you want to have kids?

At some point, yes, but not right now. 1 or 2 children. I would want to raise them outside the city, with lots of nature and animals.

Do you believe in God?

No, I’m agnostic. I think anyone should be free to believe in whatever they want.

Why is your Hacker News username “mofle”?

It means “muffler” in Spanish, but I don’t think that’s why.

It’s just a word I invented when I needed a unique username for my Hotmail in 1998. Back then no one used their real name. Initially it was mofle89. I didn’t realize it was a Spanish word until a few years ago. I don’t remember exactly why I chose to use it for Hacker News. Maybe for the freedom of being anonymous. I only use “sindresorhus” these days.

Bonus: My cat is named dofle 😝

--

--

--

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
Sindre Sorhus

Sindre Sorhus

Aspiring kitten. Fabulously quirky.

More from Medium

Why Serverless Computing………!!

Printing in Node.js with Electron (ElectronForge + node-printer + webpack)

From Apollo to Urql — Part 2

When Apollo Cache meets BroadcastChannel