I want to start a cycle of interviews with people who read Habr with us and have experience in doing mega-cool projects. They have a desire to tell about themselves, about who they are, and how they have achieved current results. In the comments, they will try to answer your questions. At the moment there are already 3 such people who want to help all of us to pump our brains.
After the first post, let's see if it’s worth publishing the other two.I put requirements on these people (you can add your requirements in the comments):
- They should be from Habr (even let it read only)
- Have the desire to answer everyone who writes questions in the comments
- Has experience launching projects in the US or Europe.
- Who started projects without a bag of money
Let's start with our first friend -
pkrumins , he has been on Habré since 2011,
we have been writing about its development.

')
Place: San Francisco, USA
Position: CEO at Browserling
Interview Source: fogcreekOur guest today is
Peteris Krumins , co-founder and CEO of
Browserling , a cross-browser online testing service. And also the author of the book
"Perl One-Liners" - GTD (getting things done) in relation to programming - how to quickly get results using the command line in Perl. New articles regularly appear
on his
blog .
How did you start developing programs?
I started playing with computers back in 6 years, when I got access to 386 and 486 PCs at my mother's work. When I first sat at the computer, I was completely fascinated. Since then, I have dreamed every day about my personal personal computer. And for a long time, until I received it, I used any means to get closer to IT. I made friends with many guys who were interested in computers and who had them. As a child, I even pretended to be a student at several universities to get access to the Internet.
My first computer was a laptop. My friend, nicknamed Zombies (he, by the way, was an awesome sys.admin) somehow turned out to be an unnecessary laptop, and he gave it to me just like that. I still keep this gift. IBM Butterfly Laptop (ThinkPad 701CS). In this miracle was 8MB RAM, 800MB hard drive and two installed OSes: Windows 95 and OpenBSD. Later I upgraded it to 40MB RAM. He also had a thinnet PCMCIA network adapter card that helped create my first 10Mbps home network. For those who have never heard of thinnet, I will explain: this is such an Ethernet through a coaxial cable (10Base2).

I got my own computer much later - by the age of 15. It was a killer machine: 400Mhz Celeron with 256Mb RAM, 8Gb hard drive, 3D Blaster Banshee 16Mb video card and 17 ”75Hz 1024 × 768 CRT monitor. There was a new Windows 98 on the computer (which was just published by that time).
I am 100% self-taught. I began to learn several languages ​​at once. When I received my Celeron, I already had a clear idea of ​​what I wanted from him. I wanted to create web pages, and so on the very first day I started writing in HTML, Javascript and CSS. At first, I didn’t fully understand how websites worked and didn’t know about server-level languages, and I had to tinker before I learned that you need a web server to run on a website. At first I kept my websites on Angelfire, but after that I set up my own Linux Slackware server with PHP and MySQL. And by itself, I wanted to be a hacker, - for this I learned C and Assembler. I spent a huge cloud of time in IRCNet, and at the same time I figured out how to write mIRC scripts and created my own IRC client using Visual Basic.
Tell us a little about who you became.
Now I am the CEO Browserling. I created Browserling in 2011 with my friend, this was happening in the Bay Area (San Francisco). My regular day consists of a lot of written lines of code, server management, working with customers and my employees. I like what I do and right now I can’t imagine myself behind anything other than managing a development company. I was an incredible fan of Paul Graham and his writings that inspired me to create a
startup .
At the moment I am 100% focused on business development. I do not undertake any projects on the side, and also stopped writing books, because it distracts me from the main goal - the company. The first rule of creating a successful company is 100% concentration on the product. Now I am engaged in increasing revenue and creating an international remote Browserling team. Only recently, I hired a great engineer from Ukraine - I am expanding the company also to non-English-speaking markets.
In addition, I solve many technical problems. For example, how to efficiently display to clients browsers running on virtual machines, or how to get hundreds of browser screenshots per second. I enjoy working with servers, and I plan to move the server stack from EC2 and Rackspace clouds to real servers. Cloud servers are good when you are just starting a business, but upon reaching a certain level, the transition to your own server equipment becomes an important step. This saves a lot of money and greatly increases productivity.
What is the most pleasant thing for you in programming?
I'm just happy when I'm in the flow or when all things are done. I can often enter the stream, and of course I want to share my secret with you. In fact, everything is simple: I do everything that is most important at night, and after that I sleep all day. Night time is ideal for work in the stream. Night eliminates everything that distracts you or tries to keep your attention on yourself. Another secret to being in the stream is ... closing Twitter, Facebook, Skype, Gtalk and G +. After all, when you're in a stream, you don't want to be disturbed by the random sound of an alert or message.

And what development environment do you use?
I have two systems configured: Windows / Linux. I use Windows 7 on my main workstation and connect via SSH to my Linux servers. Most recently (last month) I assembled a new workstation based on the Intel i7 4790K processor, overclocked to 4.7Ghz.
I also have a lane firewall server, a linux file server and a linux development server. I bring up a Linux file server on Windows via Samba, and it runs a set of disks compiled in RAID6 that allow two disks to fail from a raid. All these Linux servers run on Slackware. I like the simplicity of Slackware. I use minimalistic installers and add only those packages that I need. For example, a firewall is enough Bash, Vim and Iptables; the file server needs only Bash, Vim, Cryptsetup and Samba. And on the development server, only what is directly required for development is installed.
I use Vim on Windows and Linux, as well as gVim and Visual Studio on Windows. I can not imagine the development process in Windows without IntelliSense. I use fully
migrated Vim and two dozen
plug-ins , such as:
- surround.vim (quickly editable surrounding text)
- repeat.vim (repeat recent commands)
- matchit.vim (% key matching extension)
- snipmate.vim (code snippets)
- nerd_tree.vim (for a vim file system overview)
- a.vim (additional C and H files)
- ragtag.vim (matches for editing HTML)
- tabular.vim (text alignment)
- bufexplorer.vim (work with buffer)
- python.vim (improved python support)
- exchange.vim (fast text replacement)
- abolish.vim (word substitution)
- speeddating.vim (increase dates)
- and many others.
On Windows, I could not live without:
- Visual Studio (nothing compares to IntelliSense)
- SQLyog (GIU manager for MySQL databases)
- SQLiteSpy (GUI for SQLite databases)
- pgAdmin (GUI for Postrgres databases)
- WinSCP and SecureFX (secure FTP clients)
- Putty and SecureCRT (SSH clients)
- KeePass (password manager)
- ClipX (clipboard manager)
- Launchy (to run programs)
- Locate32 (for indexing files)
- allSnap (window manager)
- AutoHotkeys (automation of tasks and programs)
- Virtual CloneDrive (for mounting disk images)
- IsoBuster (for extracting disk images)
- ImgBurn (for creating disk images)
- Enounce MySpeed ​​(speed up or slow down your videos)
- Hex Workshop (hex editor)
- VMWare Workstation (virtual machines)
- Cygwin (unix tools)
- UltraMon (support for working with multiple screens)
- Beyond Compare (file comparison program)
- Tclock2 (improved clock)
- Fineprint (printer proxy)
- SumatraPDF (improved PDF viewer)
- AviSynth (for video editing software)
- ffmpeg (for video conversion)
- VirtualDub (for video conversion and editing)
- WinDirStat (for visualization of disk space)
- clink (improved cmd.exe)
- IDA Pro (for debugging)
- Photoshop
- Sysinternals tools
On Linux, I could not live without:
- samba (mount linux on windows)
- tmux and screen (constant shell sessions)
- all the standard UNIX utilities (awk, sed, grep, head, tail, uniq, sort, etc.)
- perl (fast prototyping, quick hacks, one-line problem solving)
- iptables and nftables (online security)
- htop (advanced process monitor)
- mtr (improved traceroute)
- multitail (tracking multiple files in multiple windows)
- nc (netcat, swiss knife for TCP / IP)
- iftop (bandwidth tracking)
- ack (improved grep)
- ipcalc (network address calculator)
- pv (pipe viewer - UNIX pipe progress bar)
- rsync (backups)
- ncdu (visualization of disk space)
- curl (http client)
- nmap (network scanner)
- tcpdump and wireshark (for debugging network errors)
- sysdig (strace + lsof + tcpdump in one program)
- youtube-dl (download all online video)
I program while sitting. I never tried to program while standing or on the move (on a treadmill) —it seems strange to me. When I'm in the stream, I listen to the channel of Vocal Trance
di.fm. But this is only if I have already entered the stream state, otherwise the music is just too distracting. I could not program without my faithful Microsoft Natural keyboard, which I have been using for more than 10 years. It still works fine, but there are already visible scuffs on it.
I take a lot of notes when trying to resolve a question. As soon as I have a difficult problem, I try to break it into small subtasks that can be solved very simply. Then I create a ToDo list for tasks and begin to execute them, deleting them one by one. Generally speaking, I have several ToDo lists that combine long tasks (for the next 1-2 years), as well as medium tasks (for the next few months) and short tasks, which I will immediately begin to solve.
What are your favorite books / development resources?
I'm going crazy about computer books and just technical literature. Every few months I spend the whole day researching the latest literature and buying the most interesting publications. Here are five of my favorite books on programming, development, and computers.
- New Omnibus Turing - A book that must be read for anyone interested in computers. This amazing book consists of 66 short essays on the most important and interesting computer topics, such as compression, Turing machines, formal grammar, non-computable functions, and neural networks. The book is written in everyday simple language and contains almost no mathematics. This is my favorite book.
- Small Book on Semaformah - This book teaches how to think multithreaded and solve synchronization problems. I highly recommend it, especially if you are self-taught. She leads the reader step by step through a series of classic and not very synchronization problems. It is very interesting to solve these problems, and I recommend it to everyone since I first met her.
- Programming Pearls and More Programming Pearls . - A classic book on programming. John Bentley knows how to write clearly and enthusiastically about algorithms. These books are eternal, and they teach the reader how to understand problems, solve them in parts and effectively implement solutions. You can be interviewed by Google if you read these two books.
- Little combinator - A small combinator gives a little knowledge of LISP in the most amusing way. The book is a dialogue between you and the author about hundreds of small software combinations, which among other things teaches the reader to think recursively. This book will make You think and expand Your consciousness a little. This is one of the most interesting programming books ever written.
- Elements of Style and Elements of Programming Style - “Elements of Style” is not a book about development or programming, but rather about the ability to write. If you want to be a successful programmer, you need to communicate in such a way that other people understand, and therefore writing skills are simply necessary. The book has only 100 pages and can be read in one evening. “Elements of Programming Style” is a classic Kernigan book on programming, the form elements of Style have greatly influenced the form of this book. This is an old book, but for the most part everything that it teaches is applicable today. It consists of 70 rules of programming, such as “write clearly, do not try to seem too clever”; "Say what you want is simple and accurate"; “Choose a data presentation method that makes the program simple”; “Let the data shape the structure of the program.”
And this I just started. I could easily create the top 100 of my favorite books. Email me if you need advice on choosing a book or you would like to discuss with me one of those you read!

What technologies are you studying now?
I'm a big fan of Visual Studio, so just recently I downloaded the Visual Studio 2015 Preview and tasted it. And I installed Windows 10 Preview on a virtual machine. Since my work revolves around cross-browser testing, I’m actually wondering what Microsoft’s new Spartan browser can offer.
Google has recently opened the source code to
Kythe , this program should be a much better indexer and code browser than anything previously existing. I already heard about this last year from a friend, a real Google man, and I was looking forward to it. I'm going to test it on the Linux kernel source for the next free weekend.
If I had more time, I would combine the Oculus Rift with the movement platform to create virtual reality equipment.
What do you do when you don’t program?
I like to keep fit. I do athletics. I discovered that short sprints invigorate much better than a cup of strong coffee. On the days when I perform sprints 10 times 60 meters each, I energize for 10-12 hours and program like a beast all night long. I also like to compete in long distance tracks. The 400 meter sprint and the 800 meter race are my favorite distances.
What advice would you give yourself as a novice programmer?
I will only consider four rules that I could advise a young one:
- Solve problems quickly, efficiently and move forward.
- Do not do something that does not create value (and the main value in our time is money).
- Start your blog as soon as possible.
- Make releases early and often.