Hello. My name is Kyle Butt. I have been a Software Engineer for 14 years, 7.5 years at Google. I enjoy functional programming and finding hard bugs. I excel at being able to modify new codebases including open source codebases. I have contributed fixes to the DragonFlyBSD, RestyGWT, and BNFC among others.
I really enjoy the programming language Haskell. Its support for abstractions combined with a powerful type system allows me to have powerful guard rails to go with the powerful abstractions.
I like understanding systems at all the relevant levels. As an example of how low-level I have gotten: I soldered together a micro-controller board. Then I read the data sheet and programmed the controller to do various things, including making the pwm controller on the board do a breathing effect with the LEDs attached to the board. I have written a Linux kernel driver for internal hardware while at Google.
I can also keep track of the other end of the spectrum. I wrote an elliptic curve signature system that uses a prime that vectorizes well. To get it to work from end to end I had to understand the high level math as well as the low level code that implemented the high level math.
The entire time that I was at Google I wrote 1 webservice using Jersey and Megastore (Internal Google storage backend). I spent 3.5 years on the systems team and 2 on the compilers team. I want to learn to build scalable webservices. This will make my other skills more applicable and make me a munch more well rounded software engineer. I have read a lot about building scalable web services, but it’s a hole in my professional development that I would like to fill.
I mostly subscribe to Joel Spolsky’s “Smart and Gets Things Done” philosophy of hiring with a few provisos granted to reality. I think for junior devs, there is very little room left to quibble with the philosophy. Someone that has been out of college for 5 years and has spent 3 of it writing C++ and 2 writing Java will have no trouble picking up C#. This breaks down a little for senior devs, and more with staff level engineers, but the principle generally works.