Hired by Plurk.comHi everyone! I have great news – I just joined plurk.com – a Twitter competitor. It's actually been almost two months since I've been with Plurk. It's an interesting story about how I got hired and what I do there. I'll tell about it in more details in this post. Yet the pivotal detail is that my blog landed me the job!

Before I tell you all, let me briefly explain what Plurk is about. Plurk is a startup that focuses on online conversations. It's similar to Twitter, but done completely differently. You send a new message, come back after five hours and you can continue the conversation right there. Others can join the conversation at any time. No scrolling the timeline to find responses.

This is how Plurk looks:

How Plurk Looks
(Here I just answered to user shlomif's plurk about his new Perl module.)

I think this is a short and sweet explanation of what Plurk is. Visit www.plurk.com to try it, and add me as your friend to start having real fun on Plurk. My nickname on Plurk is ZombieKiller.

Now let's move on to the essence of the article.

How I Got Hired by Plurk.com

I first heard about Plurk in July. Kan, the founder of Plurk, had found my article on MySQL Tuning and decided to contact me. He had browsed my blog and he liked the good melange of different things that I posted about.

The way he approached me was completely different than of any other people interested in talking with me or hiring me. First thing that surprised me was that he found me via Skype and Google Talk at the same time. He probably did that to make sure he gets in touch with me. I had never given out my Skype username/gtalk email (but it's not hard to find), yet Kan took the time to find it. The second thing that surprised me was that he had also researched on me and found things like my polyphasic sleep experiment, which we discussed at length in one of our conversations.

With other people the discussions would usually take place over email, we'd send each other a few emails and then the discussion would die off, because I was always busy and I did not have much time to go into long discussions over email. The email conversations would usually end with "let's keep in touch".

With Kan it all took a different route. In our first conversation over Skype I explained that I had made a list of things to do on my own, and was not very interested in working for anyone. He said it was ok and that he just wanted to chit-chat and see what I was up to. Our first chat session lasted just one hour, but we managed to talk about a dozen of different things -- we talked about my current activities and my future plans on how I want to be a great hacker. Then we talked about Plurk's success, how it had become 5th fastest growing website on the net, and how it was praised to be the best communication service on the web. We also chatted about one of world's top hackers, Brainbench certificates (I had 52 of them), and discussed the people who work at Plurk and their accomplishments.

We'd continue chatting like this every few weeks, sometimes even day after day. Kan would always tell me something interesting. One time we'd talk about great generalist hackers like Max Levchin, Bob Ippolito and Gabriel Weinberg. The next time we'd talk how all the Plurk employees telecommute and how other companies do it. Then we'd talk about crazy Silicon Valley people who use startup drugs like Provigil. I could keep on going here forever.

I got more and more intrigued about Plurk but then, suddenly, one day Google sent me an email saying they were interesting in hiring me. I told Kan about it but he was not very disappointed. Instead, our discussions shifted towards Google. Well, long story short, I did not get hired by Google and Kan had hypnotized me with his wisdom so I agreed to work at Plurk. Plus he wrote this:

[2008.09.07 08:41:15] Kan says: anyway, in the unlikely event Google
turns you down, just name your price and you have it. (or take googles
offer and multiply by 1.5) Best of luck :)

As I'm 100% motivated by cash, I couldn't turn down this money printing opportunity. And so I got hired on January 15th – almost 6 months later.

The lesson that I learned from Kan's method of hiring is to keep interest in the person you want to hire and occasionally talk with him/her, ask what he's up to, and tell some interesting things that you are expert in. If I ever gonna create my own startup, I'll use Kan's method of hiring.

Job Interview

Before getting hired I had a job interview at Plurk. It was done in a group chat with Kan and the previous Plurk's sysadmin Dima. The interview was more sysadmin oriented and it took 2.5 hours total. I got asked all the typical questions that I knew answers to off the top of my head.

Here are the job interview questions:

  • What OS'es and distributions are you experienced with?
  • If you have access to a Linux server, how would you identify if it's a 32bit or a 64bit system?
  • What process in Linux has ID equal 1?
  • What can you tell about /proc in Linux?
  • What is forking?
  • What are zombie processes?
  • Do zombie processes use system resources?
  • How would look at what a particular process is doing right now?
  • If you have a process in D state, how would you kill it?
  • How do you install software in general?
  • How would you rebuilt a debian package?
  • What if you have a server with a long uptime, 1 year let's say, and it has lots of files on a huge partition, and you need to reboot it. How would you make sure it doesn't check the filesystem on reboot?
  • How does traceroute work?
  • What IP address can be the default gateway for host
  • What is the bridge interface?
  • What is the default password of MySQL?
  • How does the MySQL client connect when the target host is localhost?
  • How would you properly manage the deletion of old binary log files in MySQL?
  • How would you list current bin logs and delete only few of them properly?
  • How would you adjust the size and the interval after which old logs are purged?
  • What is the difference between 'set <var>' and 'set global <var>'?
  • Sometimes MySQL will throw an error showing only some numerical value, how to check what does the number mean?
  • How to effectively increase the maximum number of tables MySQL can have open at one time?
  • If someone set the password for a 'root' account in mysql and no one knows it, how would you recover it?
  • How would you backup MySQL?
  • If you have a mysqldump utility and you have to dump a database consisting of InnoDB tables, large like 20Gb, how would you do that?
  • How would you back up a running MySQL instance that is being used by application, if MySQL data files are on the LVM volume and you need to make sure application is functional during the backup process?
  • What if you have to copy the data from MySQL master server to slave first, what is important step there?
  • What functionality does LVM snapshot provide?
  • What kind of RAID do you know?
  • What is there any difference between hardware and software RAID?
  • Which utility is used to manage software RAID in Linux?
  • What hardware RAID controllers have you dealt with?
  • Have you ever heard of BBU?
  • How to safely upgrade kernel remotely if you are not 100% sure that new kernel will boot successfully?
  • Have you ever used IPMI cards?

At this point I was totally tired from these questions and we ended the interview here. I got all of them right as I had memorized all answers while getting my 52 Brainbench certificates. Just perhaps missed some precise answers to some MySQL questions, some LVM questions and some RAID questions. Kan told me that he enjoyed the interview a lot. I was happy. :)

What do I do at Plurk?

My official job title is hacker extraordinaire and I am allowed to do anything that interests me at Plurk. So far I have managed to work mostly on two things, but I have also helped with several smaller sysadmin things.

My first task at Plurk was to expand the collaborative translation platform that Plurk already had. Plurk has hundreds of thousands of users from all over the world and the collective intelligence they create can be used in many fascinating ways. One of the ways is to use their help to translate Plurk more dynamically. Instead of just asking users to translate new static strings, the system I created asks users to translate them on the fly. It can be used, for example, to translate system messages. Before a system message is sent to users, it's first sent to translators, and only after they translated it, it's sent off to all the users. If you are on Plurk and would like to help us with translations, visit "Plurk Collaborative Translation Project" to join.

While doing this project, I learned a bunch of tools that I didn't know like ExtJS, Mako templates and Werkzeug. As soon as this task was done, I quickly forgot about them as I don't use them day to day.

My current task is to implement a real-time search engine for Plurk. As a great coder who reuses software, I am using a combination of Tokyo Dystopia and Sphinx to implement it. I am allowed to blog about the things I do, so expect a few articles on real-time search from me soon.

I have also prepared an article on a tool that I wrote that splits mysqldump into tables and imports N tables in parallel (it's quicker on multiprocessor machine to import several tables in parallel in mysql).

The article about pipe viewer utility originated from me helping Plurk's sysadmin to backup a 500GB database.

People at Plurk

We are just six that run Plurk. We all work remotely and each one of us is in a different country.

  • Kan is the founder and overlord of Plurk and he lives in Canada.
  • Alvin is a co-founder of Plurk, and the UI and design guy. He currently resides in Taiwan.
  • Amir is also a co-founder of Plurk and he works as the lead developer of Plurk. He's originally from Bosnia but now lives in Denmark. He has the most elegant todo manager on the web todoist. Check it out!
  • Gleber is Erlang ninja. His home is Poland.
  • Ryan is our beloved sysadmin from USA.

We are all very friendly and help out each other a lot. When we have some serious issues we all come to a group chat on IRC to solve them together. Otherwise we communicate via private plurks and Skype.

Open Source at Plurk

All of the Plurk is built using open source software -- Linux, MySQL, Python, Nginx, Haproxy, Nagios, Cacti, Memcached, Memcachedb, Tokyo Tyrant, and these are just the big names that I can remember off my head.

As a result we also want to give back to open source community and we have set up Plurk dev labs:

Plurk Development Labs, Plurk Open Source

We have released our first project there called "LightCloud", that builds on top of Tokyo Tyrant to make it scale horizontally.

What Do People Think About Plurk? A Case Study.

After a few weeks at Plurk, I started inviting many of my FreeNode #perl friends to Plurk. Some of them were very skeptical and said things like "eww, another social website". Still, I somehow managed to get them on and suddenly their view changed. Here is what they said about Plurk after trying it for a couple of hours:

Shlomi Fish, a well known Israeli hacker:

[18:12:01] &lt;slayer69> how do you like plurk?
[18:12:46] &lt;rindolf> So far, it's great.
[18:12:51] &lt;rindolf> I think I'm addicted.

Click here for his plurk profile: shlomif.

Kent Fredric, a Perl hacker wannabee from New Zealand:

[17:29:29] &lt;slayer69> so plurk seems nice?
[17:29:54] &lt;kent\n> definitely, its probably the first
    web-based chat medium which makes any sense

Click here for his plurk profile: kentfredric.

f00li5h, a Perl overlord from Australia:

[18:24:16] &lt;slayer69> like plurks?
[18:24:44] &lt;f00li5h> better than twitters

Click here for his plurk profile: f00li5h.

Overall we are having tremendous fun at Plurk, all the Perl guys are schmoozing together, discussing everything about programming, cats and turtles. Come join us: Altreus, Caelum, iank, jawnsy, simcop2387, SubStack, whoppix and apeiron.

Here is a widget of my most recent Plurks:

Finally, if you are interested in working with me and other fine folks at Plurk, see the Jobs page and send your cv to jobs@plurk.com or kan@plurk.com.

See you next time!