Dylan Powers

About Me

I'm a software engineer and computer science student currently living in Pullman, Washington. When it comes to my professional work, coding is what I do best, and my primary interests are in Android and the web. I ♥ open source software and I primarily do my computing on Linux distro's. I take pride in the work I do and I'm carefully attentive to the quality of code that I write and the experience it creates for the user. To see what I've been working on lately, please feel free to check out my github.

I may still be in school completing my CS degree, but I'm definitely looking for employment opportunities and if you're interested in what I can do for you, please contact me! While I'm primarily interested in relocating to Seattle, I'd be open to other cities.

Development Environment

As inspired by usesthis.com

Hardware

Hardware wise, I keep it cheap. My primary on the go device is a 13" Toshiba Chromebook 2. I love Chromebooks. They're cheap machines, no frills, and run Linux like a boss. This one has a rather beautiful 1080p IPS display. It's a little underpowered, but that's why I have a desktop. The point is, I can get all day battery life from this little guy.

My custom built desktop for getting the tough work done features an Intel i5 Haswell CPU and a Nvidia 760 GPU with a 250GB SSD and spinning disks for extra space. The system physically looks non-descript, is completely silent, and does everything I need it to with plenty of power to spare. A nice thing about building my own desktop is that it's possible to build it in bits and pieces as I get funds. For awhile, it didn't even have the SSD or GPU. Connected to my desktop is a 27" 1080p monitor by Planar, an excellent pair of Sennheiser HD555 headphones which are great for around the house because they let in ambient noise, a Logitech Performance MX, and a Microsoft Sculpt. Oh yeah, I also prefer sitting near the ground in a bean bag chair. It's super comfy, which helps for long coding sessions.

The smallest device in the family is my Nexus 5X. I'm really happy that Google has finally shipped a couple of Nexus devices without a single Achilles' heel in the hardware department. I do wish the battery life could be better and jumping from my LG G2 to the 5X showed me that power efficiency in hardware hasn't improved much in the passed 2 years.

Software

On the software side, I prefer Linux. Everything from my little MIPS powered Netgear router, to my desktop runs Linux. Windows generates a flurry of curse words from my mouth, and macbooks are too expensive for me to have tried OS X for any length of time. I even have a cool script that can get a Linux system quickly configured to my liking -- it's not open sourced, sorry. -- Ubuntu is my distro of choice simply because it's very stable and, generally, everyone who makes a piece of software for Linux has a debian package somewhere. In terms of window managers, I prefer Gnome over Unity, but I use neither as tiling window managers offer greater productivity and the one I use is Awesome. I'm not sure if it's the "best" one, I've heard i3 is also pretty good, but I've got it set up perfectly how I like so I haven't switched away.

I'm also an IDE person. I get a lot of flack for it, but Vim sucks, Github's Atom sucks, and nothing beats a good IDE like Intellij's IDEA Ultimate. What I love about it is that I can be productive in any development stack with the installation of a few plugins. Plus, it's highly configurable so I can bend it to my will.

Chrome is my browser of choice, and for any sort of generic office productivity task, Google apps are where I go. As good as Microsoft Office is, it doesn't work on Linux, the web version is weak compared to the standard version, and it sucks for collaborating with a group of people. With Google, I have access anywhere a browser exists...which is literally everywhere.

Skills

Languages

Created with Highcharts 4.0.4Relative KnowledgeYearsDartCCSSC++BashJavaC#JSGoRubyPHP012345

Platforms/Frameworks

Created with Highcharts 4.0.4Relative KnowledgeYearsHTML5AndroidSDKAndroidNDKPolymer.dartRuby onRailsChromeApp/ExtOpenGLAngular.dart012345

Tools

Created with Highcharts 4.0.4Relative KnowledgeYearsGitLinuxUnitTestingDocker012345

Education

Washington State University; Pullman, WA

Expected graduation: Spring 2017

BS Computer Science; GPA: 3.01

Work Experience

Software Developer; Smart Environments Research Center (WSU); Pullman, WA

March 2015 - Aug 2015

Software Developer

This was a contract based job that consisted of working on two applications: one being a website written in PHP and the other an Android app. The website is a pre-existing application at serc.wsu.edu that I made improvements to. While my changes are still pending and aren't live at the moment you can see a preview of what I did at home.dylankpowers.com/apache/serc/public/index.html. My improvements most notably consisted of improving mobile friendliness, sprucing up the look, and adding a couple of sections with additional information. The Android app however you can see right now on Google Play and is called Wumpus World. It was previously implemented in Objective-C on iOS and I ported it to C++ so it can be platform agnostic and run on Android.

Community Advocate; Interplanetary Networks Inc

March 2015 - May 2015

Community Advocate

This was a part time job with very light duties where my primary goal was to help foster an open and inclusive community that encourages people to engage in the IPFS open source project. That primarily meant working to improve documentation and aid in project management.

Software Engineering Intern; Schweitzer Engineering Laboratories; Pullman, WA

Jan 2013 - Oct 2014

Software Engineering Intern

During my time at SEL, while I did create a couple of shipping features, most of my work was done on prototypal applications that were centered around SynchroWAVe Central and SynchroWAVe Event. This was my first software engineering internship and I got quite lucky working in a pretty innovative group within SEL. I ended up leaving because I wanted to try my luck getting a job in the city.

Notable creations:

  • Worked in a team to build data analytics software for large regional power grids.
  • Built two prototype mobile and HTML5 apps to investigate moving away from Silverlight. Our team got caught in the Silverlight end of life downfall, plus we wanted to explore supporting more platforms. These prototypes included weighing various languages against each other and the incumbent C#, and benchmarking the performance next to Silverlight.
  • Implemented two new charts in Silverlight for SynchroWAVe Event: An FFT plot and Mho circle plot. If you know what Mho circle and FFT plots are, then congrats! You'll have a better appreciation of the work I did. Otherwise know that I have the most beautiful and intuitive mho circle in the industry.
  • A desperately needed redesign of the web API that fully leverages REST principals to increase multiplatform interoperability. The original API was .NET autogenerated gunk that was undocumented and incompatible with other languages/frameworks. I happily fixed it up while gaining a very deep understanding of what it takes to architect a RESTful API. Rearchitected SynchroWAVe web api to be RESTful and use JSON rather than SOAP

Volunteering and Leadership

I feel that everyone has an obligation to give back to the communities they live in because it's those communities that are what help us as individuals prosper. For me, I do this through what I know best, my knowledge of programming. Besides my open source software contributions, and small bits of writing that can be found on Medium and my Google+ page, I also like to help others by teaching.

In the WSU spring 2013 semester I voluntarily instructed a lab section for an intro level computer science class that teaches C. During that time I learned a lot about how to think differently through seemingly simple problems and debug some absolutely horrendous code.

From there I continued an instructional type role by helping with ACM tutoring for 3 hours a week on Sundays. This tutoring session is for computer science students that need help with their coursework. I did this from fall of 2014 to spring of 2016.

WSU ACM Chapter

May 2015 - May 2016

Treasurer

This position carried a lot of responsibility. I was not only in charge of the finances of 3 different club accounts, but I was also in charge of collaborating closely with the WSU school of EECS, and organizing plus advertising various tech talks by guest engineers.

WSU Hackathon

Oct 2014 - Jan 2016

Organizer

The 2nd annual hackathon was my first hackathon. That took place in 2013. For the 3rd annual hackathon I wanted to help out. For that hackathon I provided assistance on the website and day-of operations. For the 4th annual WSU Hackathon, I took a greater leadership role. That meant being in charge of everything that goes into a hackathon: sponsors, participants, operations, etc.

Projects

Interesting Snippets

  • Android platform bug fix: https://android.googlesource.com/platform/frameworks/av/+/6e8f0bc59ad2409b294ad4eb803131500306bc8b

    This was a rather long bug hunt and a brutal 1 week crash course into Android system development. I really wanted to learn Android at the system level, so I killed two birds with one stone. This was also my first time navigating a large code base, and in this case an incredibly massive one.

  • Dart to Github user page build script: https://gist.github.com/dylanPowers/7969683

    This script is responsible for building this website. However the most up to date version is probably within this website's repo rather than at that gist.

  • OpenGL ES Android demo app implemented in C: https://github.com/dylanPowers/openGLSandbox

    Nothing significant, but I was doing a class on desktop OpenGL in C++ and really wanted to do something on my phone. It took some work figuring out how to get the Android Gradle build system to work with the NDK at the time because it was still in beta and not officially supported.

WSU Hackathon Website

The 2015 WSU Hackathon needed a website, and I contributed a lot of work to facilitate that. It is largely a joint effort between Alex Bahm and I, and as with any small team, I've touched pretty much every piece of it. With the amount of work we've put in, I'm just happy that it can be used as a foundation for many hackathons to come.

Source: https://github.com/WSU-ACM/hackathon-site.

This website

This site is an effort by me to sort of push the browser boundaries. It's implemented in Dart with the web components framework Polymer and deployed as a Github page. A lot of complexity could have been reduced by simplifying the header, but I really wanted to create something that showcases how I think website headers should work. My only disappointment is that it doesn't work as beautifully as it could on mobile due to the low frequency of scroll events mobile browsers send. The design is heavily influenced by Android and Google's Material Design.

Pro tip: Print this page for a resume sized version.

Source: https://github.com/dylanPowers/dylanPowers.github.io

Pandoroid

Pandoroid is an Android app that utilizes a reverse engineering of Pandora's JSON-RPC APIs to bring the same high quality audio found in their desktop app to mobile. It also has a few playback tricks under the hood like bandwidth analysis to bring the best audio available for the current network conditions and next song pre-caching for consistant playback under intermittent network conditions. I've left Pandora behind however for other services so work on this has been stale for a couple of years.

Source: https://github.com/dylanPowers/pandoroid

IPFS Chrome Extension

IPFS is a new P2P technology that has caught my interest. I'd describe it as a modernized and user friendly version of BitTorrent. Using it is as simple as visiting https://ipfs.io/ipns/QmSJ5B27yQe9bDLmwqF4FxJpBBcpxMnK9uJwX8qbQUyycN . This extension extends the user friendliness by enabling users of IPFS to use it in a distributed fashion, like it is meant to be used, while also providing backwards compatibility with the current web. In direct terms, this extension redirects requests to http://gateway.ipfs.io/ to a locally running IPFS daemon. For more details, check out the source.

Source: https://github.com/dylanPowers/ipfs-chrome-extension