Quine fan and software developer (Ruby)
Who are you, and what do you do?
My name is Yusuke Endoh. I'm one of the developers of the Ruby programming language. I'm involved in bug fixes, test maintenance and release engineering of Ruby.
I have another face. I'm a Quine programmer. A Quine is a program that prints the program itself. I also love esoteric programming languages, and playing with even normal languages in an esoteric way, especially, writing an esoteric Quine. Some of my creations are:
- Quine Relay, a Quine that goes through 11 different programming languages
- the Qlobe, a Quine with a rotating globe embedded, and
- Piet Quine, a Quine written in an esoteric language in which programs look like abstract paintings, called Piet.
You can see my other creations at my blog.
What hardware do you use?
I have just two laptop computers: the Thinkpad X60 and the X200. I used to use the X24. I've only ever bought from the Thinkpad X series. This is not because I love Thinkpad, but because I'm not interested in hardware.
There is no desktop PC currently at my home.
It is notable that unlike other interviewees, I have no Apple products. However, many Ruby users like OS X, and there are many reports for bugs that can only be reproduced in OS X. I'm in trouble because I cannot address such an issue. Anyone feel like giving me a Mac? :-P
And what software?
I believe that I'm using a typical Ruby/vim user's setup:
- Swiss Army knife: Ruby
- OS: Kubuntu + Debian (and infrequently Windows)
- Editor: vim (and kate)
- VCS: git
- Terminal Emulator: mlterm
- Shell: bash
- Browser: Google Chrome
- Web applications: Gmail and Github.
Ruby is a Swiss Army knife for me. I use it to do almost anything, such as:
- writing a Quine,
- playing with puzzles (such as Project Euler),
- processing text,
- generating/manipulating an image,
- web scraping,
- alarm clock,
- switching on/off a light in a room (via a USB IR transmitter),
- creating a web service (not too often), etc.
I use C when tweaking the implementation of Ruby, and I use Ocaml or Haskell for using a pattern match in order to handle a complex data structure. But I choose Ruby whenever possible. Recently I've become interested in Scala. It looks beautifully-crafted. If only it didn't require the Java VM...
I use vim to write any text - when writing programs, when developing Ruby, when writing Quines, and even when making ASCII art. Only when I'm writing Japanese documents do I use kate, a text editor by KDE. This is because it's not much fun to frequently switch between vim mode and Japanese input mode.
Maybe unlike many other programmers, I absolutely hate configuration. "It is possible with configuration" means "it is impossible" for me. So I don't use emacs. I'm using vim with very few configuration changes. My .vimrc has only about 30 lines now. I used to use Debian, but switched to Kubuntu because it requires less configuration of /etc. I like Windows as a user interface, but it requires too much configuration when we do programming.
What would be your dream setup?
A world where everyone enjoys programming.