Say hi to Kyle everyone:
If you look closely, you'll notice that he is
sporting a kirupa.com shirt from a contest we had on
this site a while ago! Below are Kyle's responses to
the questions posed to him.
|
What is currently your favorite
project/piece of work and why?
CFA2: a Context-Free Approach to Control-Flow Analysis,
by
Dimitris Vardoulakis.
Hey! Don't leave this
interview already! Despite a name that probably sounds
really obscure, this research project actually enables some
really cool stuff that most any programmer can appreciate.
In a nutshell, the part that is really neat for the
semi-regular web developer is that you can do type inference
on JavaScript programs using JavaScript itself. Type
inference is a way to automatically get information about
data types in a program without having to use explicit type
annotations like you see in ActionScript, C, or tons of
other languages.
CFA2 can express more complex types
than most annotated languages, so it can tell you that a
function returns a function which takes a string or number
and returns an array. Given the extremely dynamic nature of
JavaScript, it's pretty impressive that such a detailed
analysis can be done automatically in the same language as
the one that's being analyzed.
It's my favorite thing
these days because I can think of about a million places to
put it to use. A super promising use is to make function
name completion in an online JavaScript editor. The
Ajax.org Cloud9 Editor team is supposed to be doing that
as I speak.
What is your favorite video game
character and why?
Hoborg from
The Neverhood. The Neverhood is a super old PC
point-and-click adventure that was unique because every
second of movement was filmed on a clay set, and game
transitions you through the clay world with videos for each
possible path.
Hoborg is the creator of The
Neverhood, but his crown was stolen, so he's lying dormant
in a coma. The thing that makes him my favorite character is
that there is this huge back story of how he came to create
The Neverhood, but it's entirely possible to play through
the whole game without ever realizing that there is such a
tale. The whole thing is "hidden" in a comically long
hallway, The Hall of Records, which you have to click
through to get an item. The story is etched into the clay on
the walls of the hallway, and it's really easy to skip past
it.
What is your design or development
tool of choice, and what would be one thing you would
add/change to improve it?
IDEs, as a category. I won't pick a particular one,
because even the best or most popular have some blunders
that really bug me. On the whole, though, they provide so
much secondary notation and metadata that I'm always glad I
don't have to parse myself. If I could change one thing, I'd
hide rarely-used functionality that exists in really high
traffic locations. For example, the context menu in Eclipse
(of Flash Builder fame) has a comical amount of options.
Essentially everyone uses the right click menu at some
point, but does everyone need instant access to "WikiText >
Generate Eclipse Help"? I'm not even sure what that would DO
for an ActionScript project.
What new technologies are you using
and why?
-
RTMFP in Flash, because it's perhaps the only
feasible way to send really low latency live video over the
web to a general audience. In my case, some anonymously
recruited workers are given temporary and partial control
over someone else's computer, and they need a fairly tight
feedback loop to have a reasonable chance of success.
- OMeta, a language for pattern matching (and often
program parsing) designed by
Alessandro Warth. One of the two primary implementations
is in browser-compatible JavaScript, which means that anyone
can very quickly perform surprisingly complete analysis of
any language for which you can build a
parsing expression grammar. A trivial
example would be accurate syntax highlighting, but people
are even using it to prototype implementations of future
versions of JavaScript.
Do you believe a formal education is
beneficial for the type of work that you do?
Definitely! Many programmers and some computer scientists
that I've met understandably have a very strong preference
to try to learn everything by themselves, mostly using the
internet. In fact, I did the same thing for six years before
I had any formal education in CS.
Since the type of
work that I do is research, broadly, it's infeasible to
expect to get a job in the field without a formal education.
I see why, too. Being taught about the products of others'
labor without having to go through all of it yourself is
really efficient. I also think it's humbling to see how much
other people have already figured out. It bugs me when I see
people claiming to have done something novel when it has
been in the literature for years, or when I see someone
struggling to achieve something that already has a canonical
solution.
If you had to pick a weapon to defend
the world from space invaders, what would the weapon be?
I'd use the Subtle Knife from
His Dark Materials. It can cut anything! The only
side effect would be the soul-eating spectres that would be
created as a result of using the knife. But we'd be safe
from aliens.
If you were given the chance to meet
one person, past or present, who would it be and why?
I'd pick a person from the present. Specifically, Brad A.
Myers from CMU, who has been strongly recommended to me as a
master of human aspects of software development. The
conversation would likely include a part where I pitch my
own ideas at him and see what sticks, and where I could get
him to concede that maybe his entrenched view on some topic
could be swayed. Of course, all of that would only happen
after he immediately schools me on several ideas of mine
which turn out to be silly.
Coke or Pepsi?
European Fanta, lemon or any of the citrus flavors.
I hope you all enjoyed this series of questions and answers,
and thanks to krilnon for answering them.
To ask more follow-up questions, post them in the
Interview - Krilnon forum thread.
Just a final word before we wrap up. If you have a question and/or want to be part of a friendly, collaborative community of over 220k other developers like yourself, post on the forums for a quick response!
|