Skip to content

Commit

Permalink
partial update
Browse files Browse the repository at this point in the history
  • Loading branch information
wraithan committed Jan 9, 2016
1 parent e474848 commit f7a3b5a
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 90 deletions.
53 changes: 24 additions & 29 deletions docs/about.rst
Expand Up @@ -2,37 +2,32 @@
About Me
========

I am a social hacker from Portland, OR, USA. A large number of my
evenings are spent hanging out with fellow programmers at cafes or
bars. Commonly discussing our latest and greatest projects over some
nachos.
I'm a software developer from Portland, OR. I spend most of my programming time
in Node.js and Rust. I spent a significant chunk of my past working in Python,
so much so I have a large tattoo of one on my left shoulder! I enjoy exploring
programming language and chatting about them.

#############
Why do I hack
#############
##########
Motivators
##########

Repetition is one of the banes of my existence. The first time I do
something it is new and interesting. The second time I get a feel for
what parts should, could, and probably will be automated. The third
time I am definitely looking for and/or writing tools to solve this
problem for me.
Making code as bullet proof as possible. I've found few things in software give
me the same sense of satisfaction as knowing it is extremely hard to crash my
code. Rigorously going through code and making sure all error cases are
accounted for in code and writing tests to validate it is how I can comfortably
sleep at night with my code running on critical servers.

There is a lot of great software out there, functionality wise if not
code beauty wise. I find over time instead of building my own unique
projects that provide something that stands on its own, I am gluing
services together in order to make the web a more coherent place.
Next is probably making code more performant. Whether this is alogrithm work,
caching, query tuning, or any other optimization work. Profiling something,
changing some code, and seeing it get faster always puts a smile on my face.

Finally there is the wonderful micro high that comes along with
solving a problem. It is even better if it was a hard problem or you
have an elegant solution. The best is a really hard problem, really
elegant solution, and being able to show it off to my friends because
it is open source.
Putting those together in some eloquent solution is what I always strive for in
my projects. I just enjoy cleaning up technical debt. Usually this means going
into a system that as evolved for a while and needs to be distilled into clean
concepts again. Taking a messy system and bringing it to order is delightful.

###########
Personality
###########

* Programming Polyglot
* IRC is one of the first things I reconnect to when I open my laptop.
* Long time Linux nerd (I used slackware when it was "cool")
* Cyclist, both commute and sport.
Finally I love teaching folks, whether it is a 1:1 situation or a meetup full of
people. When I still getting started in software, the folks who took the time to
teach me had a huge impact on where I ended up today. I am always trying to pay
it back to the community, whether I'm organizing meetups, mentoring friends or
helping folks out on IRC.
28 changes: 28 additions & 0 deletions docs/gigs.rst
Expand Up @@ -8,6 +8,34 @@ non-technical jobs and spending a lot of time on personal
:doc:`projects <\projects>` working to develop the skills needed to
work in the industry.

New Relic
#########
Node.js Agent Engineer (Apr '14 - Present)
********************************************

My first full time gig working in Node.js. So far this has been an amazing
experience. I've been able to connect with so much of the Node.js community via
my work for New Relic. The Node.js Agent is the library New Relic customers
install in their Node.js applications which monitors it and sends data back to
New Relic servers for analysis.

* Maintained a weekly release cadance for over 52 weeks in a row. Allowing the
agent to respond quickly to the needs of our users.
* Ran a series of support training session giving our support engineers much
deeper understanding of how Node and our agent works. Resulting is a large
reduction in support escalations.
* Learned about the deep internals of Node.js and v8 in order to make our agent
more accurate and performant.

Contracting
###########
Web Developer (Oct '13 - Apr '14)
*********************************

I took on a few small contracts in this time, mostly though I spent my time
learning to be a better Node.js engineer as I wanted to take my career toward
more asynchronous progrmaming.

Mozilla
#######
Web Developer (May '12 - Sept '13)
Expand Down
44 changes: 36 additions & 8 deletions docs/projects.rst
Expand Up @@ -6,6 +6,31 @@ The vast majority of my projects are open source and can be found on
GitHub_. This is a list of projects I've written or contributed to in
some way. I love discussing them, so feel free to ask me about them.

##########
cargo-bump
##########

`cargo-bump`_ is a command that increases the version number of the rust project
you are currently in. It is meant to be a Rust version of npm version.

* A fun exercise in gluing libraries together in Rust.
* An interesting opportunity to work with others in the community who are
writing Rust libraries.
* Started as a challenge to myself to build a Rust project from scratch in a
night.

################
WeeChat Notifier
################

`weechat-notifier`_ is a daemon written in Rust meant to connect to a running
WeeChat_ session on another machine and provide notifications on the local
machine. I am writing it mostly as an experiment in writing a parser, client
library, and a daemon in Rust.

* Learned a valuable lesson about how writing a parser in a static language like
you would in a dynamic language results in cumbersome code.
* Had a lot of fun experimenting with different testing styles.

#############
Read the Docs
Expand All @@ -20,11 +45,11 @@ push your docs are automatically rebuilt.

What I did for the project:

* Core developer/maintainer on the project.
* Core developer/maintainer on the project for a couple years.
* Wrote better integration with GitHub, including tests.
* Made it possible for multiple people be admins on a project.
* Took part in architecture discussions with the maintainer.
* Took over maintainship for 4 months while the previous maintainer was away.
* Took over maintainership for 4 months while the previous maintainer was away.

#########
ZenIRCBot
Expand All @@ -46,14 +71,14 @@ PDXNode
#######

This is less a software project and more a project that revolves around,
software. I'm co-organizer for the group, which means planning meetings,
getting speakers, running workshops, and more.
software. I was a co-organizer for the group for years, which meant planning
meetings, getting speakers, running workshops, and more.

* Once a month software hack night that I mentor at.
* Once a month hardware hack night which I am core mentor for.
* Once a month presentation night, some months I fill in if we can't find a
* Once a month software hack night that I mentored at.
* Once a month hardware hack night which I was a core mentor for.
* Once a month presentation night, some months I filled in if we couldn't find a
speaker.
* Periodic workshops, some I am the main organizer, others I'm just a mentor.
* Periodic workshops, some I was the main organizer, others I was just a mentor.

########
Hardware
Expand Down Expand Up @@ -83,6 +108,9 @@ well!


.. _GitHub: https://github.com/wraithan
.. _`cargo-bump`: https://github.com/wraithan/cargo-bump
.. _`weechat-notifier`: https://github.com/weechat-notifier
.. _WeeChat: https://weechat.org
.. _`Read the Docs`: http://readthedocs.org/
.. _sphinx: http://sphinx.pocoo.org/
.. _ZenIRCBot: https://github.com/zenirc/zenircbot
Expand Down
101 changes: 48 additions & 53 deletions docs/technical_skills.rst
Expand Up @@ -6,19 +6,50 @@ This is a list of my stronger technical skills. I've played with
writing things ranging from graphics engines, to decoding game save
file formats, to window managers, to IRC bots, to web sites.

For a concise list of languages and time spent in them:
Language Skills:

* Deep understanding of Node.js.
* Have worked with Python, SQL in the recent past.
* Have played with Rust quite a bit.
* Have some work experience in the further past in PHP, Perl, Java, C++
* Others I've played with in some capacity or another: Lua, Haskell, Common
Lisp, Clojure, and Go

#######
Node.js
#######

It sparked the fire in me to really start enjoying JavaScript. I have used it to
build out microservices, commandline utilities, libraries, and for work.

* Have a deep understanding of performance in Node.js and V8.
* Wrote instrumentation for a number of database drivers and frameworks,
requiring knowledge of the library internals.
* Wrote a benchmarking suite as a series of microservices that can run
benchmarking and load testing jobs for days or weeks.
* Participated in various contributor discussions affecting the direction of
Node.js for tracing and release cycle.
* Have played in lots of online AI games using JS.

* 6+ years experience with Python and SQL.
* 4+ years experiency with Javascript (3 of which were focused on Node)
* 2+ years experience with C++, Perl, PHP, Java, and Lua.
* 1+ years experience with Haskell, C, and C#.
* Have played with many others including Common Lisp, Ruby, Go, and Clojure
####
Rust
####

This programming language is easily my favorite at the moment. The ownership
system and the type system both feel like a great advancement over other modern
languages. It has really reawaked my desire to work at the native layer instead
of in VMs.

* Primary language I use on the weekends for learning and small projects.
* Spent time reimplementing past Node.js AI bots of mine in Rust and seeing the
differences in algorithms.
* Language of choice for code challenges like `Advent of Code <http://adventofcode.com/>`_

######
Python
######

I've spent the last 5 years programming in Python, 3 of that was
I've spent about 6 years programming in Python, 4 of that was
professional. Most of my experience with Python is centered around
writing Django applications.

Expand All @@ -29,9 +60,9 @@ Some things I've built outside of web applications:
* Feed aggregators
* Plugins and extensions for various tools that embed Python.

######
------
Django
######
------

If I am going to write a web app, I am probably going to start with
``django-admin.py startproject <project name>``. I've been using it for
Expand All @@ -45,9 +76,9 @@ Here are some highlights of from Django projects I've worked on.
* Upgrading between multiple Django versions.
* Numerous community and small business sites.

######
------
Celery
######
------

I use this when I need to offload tasks in Django based sites. Here
are a few things I have done with it:
Expand All @@ -58,9 +89,9 @@ are a few things I have done with it:
* Divided tasks into separated queues so the Celery daemon could be
shared to multiple servers.

######
------
Fabric
######
------

This tool has saved me hours, if not days of my life.

Expand Down Expand Up @@ -91,46 +122,6 @@ open source, and I've come to rely on it anytime I need a database.
* Used pgbouncer to do connection pooling to decrease latency.
* Have scaled to tables with millions of rows.

##########
JavaScript
##########

I've used it for many years now. Mostly doing front end work on the
web. But more recently I've also done things like building a Firefox
add-on, and many little micro-services.

######
jQuery
######

When I am doing JavaScript for the sake of front end development I
tend to lean on this library quite a bit for its selectors and other
niceties.

* Built many dynamic front ends using AJAX
* Built a Firefox Add-on that uses jQuery to build and modify most of
the DOM.

##################
Firefox Add-on SDK
##################
I've only built one but plan on building more.

* An add-on for listing GitHub repos and quick links for them (code,
issues, wiki, etc)


####
Node
####

It sparked the fire in me to really start enjoying JavaScript. I have been
using it to build out co-operative micro-services such as:

* An IRC bot.
* A layer for receiving web hooks.
* A GitHub post receive hook processor.
* Process management for all of these micro-services.

###
Git
Expand All @@ -149,3 +140,7 @@ In working with hardware I've had to relearn and get better at C++. It was my
first language, so coming back to it after spending years doing other
development is quite a bit of fun. Most of the development has been for arduino
compatible chips, communicating with the outside world using serial.

I also have had to read a lot of C++ while inspecting the internals of Node.js
and V8, developing my ability to read other people's C++ in complex
environments.

0 comments on commit f7a3b5a

Please sign in to comment.