My name is Dennis McWherter. I currently work as a Software Engineer at Oath (formerly Yahoo!). I work on the Flurry team creating scalable (on the order millions of requests per minute or more) backend systems. More specifically, I work at blending the gap between big data systems (hbase, hadoop, druid, etc.) and web API's. Doing this effectively helps our team provide reliable analytics for our customers in real- or near real-time.
As a byproduct of this work, I am a co-founder and active maintainer of Elide; a project that enables rapid development of secure web services. It generates the API's for these services with little more than a JPA-annotated data model. We currently support RESTful interchange via JSONAPI and we are actively developing a GraphQL layer.
In a past life I worked on embedded systems, FPGA's, and computer security. Though my level in the stack has changed in my day-to-day, many of the techniques are similar. Relating all levels of the stack (from physical hardware on up) is a passing hobby of mine. Occassionally, I write opinionated technical musings on a blog.
This section contains a brief overview of my professional history. Click an item to learn more!
I started a free and low-cost web hosting company known as Microsonic Hosting. I ran this company for several years and finally broke even in the end. I performed all the web development for the main site, maintained the servers (i.e. linux sysadmin work), managed remote VPN services, and ran several other less notable projects at the time. Related to the hosting company was our official IRC network of which I also managed a single server in the network.
After years of tinkering away on personal projects, I decided to start contracting for extra money. I started a freelance company under the name from my former hosting company: Microsonic Development. I had good success in my online freelance work doing everything from full site clones to coding custom wordpress themes and plugins. This was an interesting opportunity as I learned how to work with a variety of people, interpret technical requirements, and also find help for tasks I could not complete myself. Namely, actually designing an attractive layout has been a bit of a challenge for me. For contract work I would subcontract this work out and simply code the layout myself.
I entered the University of Illinois at Urbana-Champaign as a music major. After a few short weeks in the program, I realized I needed to change my major to Computer Science. I then worked diligently for the next year taking engineering courses to transfer into the engineering department's Computer Science program.
I began work on the Reservoir Visualization Analysis research project at UIUC. The goal was to visualize geophysical processes from pre-existing data sources. This would become a multi-year effort for me. To do this, we wrote a fairly large plugin to the ParaView project in C++ and leveraged other simulator tools such as UTCHEM. While there was a significant amount of "glue" code required to interface the leveraged technologies, we had an interesting set of problems to solve in stream- and faultline visualization in a realistic and comprehensible way. Similarly, there were additional challenges in clustering and time series visualization.
Related to RVA I began working on an undergraduate thesis known as CloudRunner. In short, this was to parallelize our work in correlating a variety of features in the simulated UTCHEM datasets.
I joined MIT Lincoln Laboratory as Assistant Technical Staff. I worked in the cybersecurity division which allowed me to investigate full systems: hardware and software. I had the pleasure of working on some really interesting research projects and worked frequently with FPGA's and other embedded systems.
One of the greatest opportunity I had at the lab was preparing and presenting technical presentations. With my interest in low-level programming and design, I was able to present the basics of building an operating system to my higher-level colleagues. Through showing the code example and writing the demo in an obvious way (rather than in a clever way like the Linux kernel), I was able to describe and demonstrate how the software can interact with the hardware. Similarly, from there, it was a natural jump to describe to software engineers how an abstraction layer could be built.
While my time at the lab was immeasurably valuable and entertaining, I wanted to get a hand in the software industry since all of my previous experience had been research-oriented. I started working for Yahoo! (Oath as of June 2017) only a year later. During my tenure at Yahoo! I've had the opportunity to work on a variety of technologies. While I started working directly on big-data services, much of my present work is making big-data easily accessible to end-users quickly on the Flurry Mobile team.
During my time here I've been able to get involved and start many other projects as well. Namely, I am a co-founder and active maintainer of the Elide project. Similarly, I've done some research on investigating resource-aware scheduling in Spark which required that I build some otherwise odd tools for evaluating.
As of today, I am happy where I am. My primary objective is to continue building technically interesting things to solve interesting real-world problems. That said, I am always open to hearing of new opportunities to have a sense of what everyone is working on. I am an avid learner and enjoy being challenged with new ideas and problems which I do not currently understand.
While I have many hobbies and interests, I've listed the main 3 I enjoy that consume most of my time when I'm not learning something new or working. Feel free to click on any one to find out more information!
I played many sports growing up, but ice hockey was one I always wanted to play but never had the chance to as a kid. As a result, in my early-20's I laced up some skates and took to the ice. Though I'm certainly not the best guy out there (skating, stick handling, or otherwise) I can confidently say I can hold my own now on the ice.
I usually take the summers off to pursue other hobbies (see motocross), but in the fall, winter, and spring you can usually find me playing local pick up games in Central, IL. I most often play games and leagues in Champaign, IL, Bloomington, IL, and Danville, IL.
I love Motocross. Living in Central Illinois means I can only ride maybe half of the year, but this hobby is great and ends up consuming a lot of my time even in the off season. While I do not currently race, I often train hard to maintain good fitness to control the bike on the tracks. Similarly, in the winter months I spend a lot of time tearing down the bikes and rebuilding them. Not only is the sport physically demanding and mentally strenuous (i.e. track is potentially changing each lap), when you perform your own bike maintenance you learn a lot about these mechanical devices. Moreover, because your own work is directly related to your safety while on the bike, it is a good lesson in patience and doing it right the first time.
I tend to ride mostly in Casey, IL at Lincoln Trail Motosports, but I do not fear a drive for a nice track. I am certainly at most of the tracks in Central, IL and Central, IN over the year but it wouldn't be surprising to find me down in the St. Louis, MO area or Chicagoland.
I am pretty sure of all my hobbies, this is the one my wife likes the most! I really enjoy building things out of basic materials (particularly lumber). The construction process is very well-formed: you create or find a design that fits your purpose, you measure twice, cut once, assemble. This may be a bit of a reductionist view on the process (i.e. you often need to make your own jigs and tools, etc.), but it's quite formulaic and precise. However, the finishing stages where the detail is added is largely an art. These two elements make this hobby both relaxing and rewarding by combining a well-structured process with one that allows the worker to take considerable liberties.
While I enjoy building pretty much everything, I mostly build tables and cabinets at this point. I plan to grow in building some more decorative works and eventually™ I have an ultimate goal of constructing a guitar.