{"@attributes":{"version":"2.0"},"channel":{"title":"A portfolio by AJ Pryor","description":"This website is a virtual proof that I'm awesome","link":"https:\/\/apryor6.github.io\/","item":[{"title":"Easy Deployment of Python Google Cloud Functions using setuptools","description":"\n          Bundling archives for programmatic deployment - \n          The takeaway from this post is that with one command, invoke deploy-gcs, you will be able to bundle a python package into and archive and deploy a GCF against that At Torqata, we work heavily within Google Cloud Platform, and we spend quite a bit of effort to the end...\n        ","pubDate":"Sat, 16 May 2020 00:00:00 -0400","link":"https:\/\/apryor6.github.io\/2020-05-16-gcf-deployment\/","guid":"https:\/\/apryor6.github.io\/2020-05-16-gcf-deployment\/"},{"title":"Forward-migratability over backwards compatibility - a proposal for update schematics in Python","description":"\n          Moving towards seamless updates across breaking APIs - \n          An incredibly useful feature of the Angular CLI is ng-update, which provides a modification schematic for rewriting broken APIs as you upgrade across version of a library. The mechanism by which it works is that third party libraries provide a schematic with a special name, and then the ng-update command...\n        ","pubDate":"Fri, 23 Aug 2019 00:00:00 -0400","link":"https:\/\/apryor6.github.io\/2019-08-23-flaskerize-update-proposal\/","guid":"https:\/\/apryor6.github.io\/2019-08-23-flaskerize-update-proposal\/"},{"title":"Flask best practices","description":"\n          Patterns for building testable, scalable, and maintainable APIs - \n          I love Flask. It is simple and unopinionated. A consequence of this is that as you look to scale your Flask applications, there are an infinite number of ways you could choose to structure your application. Although there will always be a subset of developers who want to tinker with...\n        ","pubDate":"Mon, 20 May 2019 00:00:00 -0400","link":"https:\/\/apryor6.github.io\/2019-05-20-flask-api-example\/","guid":"https:\/\/apryor6.github.io\/2019-05-20-flask-api-example\/"},{"title":"Demystifying Flattening Operators in RXJS without Code","description":"\n          What's the difference in switchMap, concatMap, mergeMap, and exhaustMap? - \n          Like it or not, rxjs is a critical component of modern Angular development. Although it is perfectly possible to use Angular 2+ without using observables, you lose out on an enormous amount of functionality. The reactive pattern is extremely powerful, and once you get over the, admittedly rather high, learning...\n        ","pubDate":"Wed, 15 May 2019 00:00:00 -0400","link":"https:\/\/apryor6.github.io\/2019-05-15-rxjs-flattening-operators\/","guid":"https:\/\/apryor6.github.io\/2019-05-15-rxjs-flattening-operators\/"},{"title":"Setting up a FANG monorepo (Flask + Angular + Nx)","description":"\n          Building full stack applications with nrwl\/nx - \n          Nx monorepos with the FANG stack Lately, I have been having a lot of fun building apps using Angular (7, currently) as the front-end with Flask as the backend. In addition, I have found enormous value in the nrwl\/nx project which provides fantastic tooling and support for managing a monorepo...\n        ","pubDate":"Sun, 31 Mar 2019 00:00:00 -0400","link":"https:\/\/apryor6.github.io\/2019-03-31-angular-flask-clarity\/","guid":"https:\/\/apryor6.github.io\/2019-03-31-angular-flask-clarity\/"},{"title":"(Work in progress...) Simplified Flask + SQLAlchemy Testing with Pytest Fixtures","description":"\n          Writing better tests with less code - \n          I love writing tests, mostly because I love refactoring, and testing makes me feel good about refactoring. However, testing web applications can be particularly hard because there is usually a lot more going on than in a math library where a test just means verifying that your add function correctly...\n        ","pubDate":"Sat, 23 Mar 2019 00:00:00 -0400","link":"https:\/\/apryor6.github.io\/2019-03-23-flask_testing\/","guid":"https:\/\/apryor6.github.io\/2019-03-23-flask_testing\/"},{"title":"10 Advanced Git Tips","description":"\n          Improve your developer workflow - \n          Git is an amazing piece of technology. It\u2019s a tool that we use every day, but many people just scratch the surface of what Git can do in their day-to-day routines. Here\u2019s a list of 10 useful tips and tricks that are more advanced. 1. You can see your stashed...\n        ","pubDate":"Sat, 09 Mar 2019 00:00:00 -0500","link":"https:\/\/apryor6.github.io\/2019-03-09-git_tips\/","guid":"https:\/\/apryor6.github.io\/2019-03-09-git_tips\/"},{"title":"Building an interactive, data-driven web-application using Amazon EC2 and Python","description":"\n          Python Bokeh + PostgreSQL through psycopg2 - \n          Modern data is generated massively and flows constantly. We want to understand that data, and often we want to understand that data right now. Being familiar with methods to produce infrastructure that is capable of processing data on the fly is a useful skill, and a great example of this...\n        ","pubDate":"Sun, 24 Sep 2017 00:00:00 -0400","link":"https:\/\/apryor6.github.io\/2017-09-24-stockstreamer\/","guid":"https:\/\/apryor6.github.io\/2017-09-24-stockstreamer\/"},{"title":"Building a pip-installable Python package that invokes custom CUDA code","description":"\n          Accessing CUDA code through Python [Python\/C++\/CUDA] - \n          The code for this post is located here. To run the code you will need a CUDA-enabled GPU and an installation of the CUDA toolkit Python is easy. GPUs are fast. Combining Python and CUDA is a fantastic way to leverage the performance benefits and parallelism inherent in GPUs with...\n        ","pubDate":"Wed, 12 Jul 2017 00:00:00 -0400","link":"https:\/\/apryor6.github.io\/2017-07-12-pipcudemo\/","guid":"https:\/\/apryor6.github.io\/2017-07-12-pipcudemo\/"},{"title":"The CPU\/GPU Switcheroo&#58; Flexible Extension of C++ Template Libraries with CUDA","description":"\n          Functional Programming Techniques and Template Specialization in CUDA [C++\/CUDA] - \n          Consider the following scenario. You are a developer for a large C++ template library that performs computationally intensive processing on custom, complex data types, and you want to accelerate some of the slower functions with GPUs through CUDA. However, you don\u2019t want to suddenly introduce the CUDA toolkit as a...\n        ","pubDate":"Sat, 11 Feb 2017 00:00:00 -0500","link":"https:\/\/apryor6.github.io\/2017-02-11-Flexible-CUDA\/","guid":"https:\/\/apryor6.github.io\/2017-02-11-Flexible-CUDA\/"},{"title":"Accelerating MATLAB with Multithreaded C++","description":"\n          Linking C++ to MATLAB with MEX [MATLAB\/C++] - \n          MATLAB is a useful tool for exploratory data analysis, rapid algorithm prototyping, and data visualization that is widely used in science and engineering communities. Some of MATLAB\u2019s functions, such as the FFT, are relatively fast. MATLAB uses FFTW under the hood which has separate, optimized routines for performing, for example,...\n        ","pubDate":"Mon, 06 Feb 2017 00:00:00 -0500","link":"https:\/\/apryor6.github.io\/2017-02-06-splinter\/","guid":"https:\/\/apryor6.github.io\/2017-02-06-splinter\/"},{"title":"Building a Powerful Workstation PC","description":"\n          Choosing and assembling computer components - \n          Recently I finished building an overclocked hexacore PC with 128 GB RAM for high performance computing (HPC) and machine learning applications. Here\u2019s a description of how I chose components and how it all fits together. But I don\u2019t know where to begin\u2026 Building your own computer sounds really hard, but...\n        ","pubDate":"Tue, 24 Jan 2017 00:00:00 -0500","link":"https:\/\/apryor6.github.io\/2017-01-24-PC-Build\/","guid":"https:\/\/apryor6.github.io\/2017-01-24-PC-Build\/"},{"title":"Santander Product Recommendation Competition Solution","description":"\n          Solution Details (Top 1.1%) [R] - \n          This is a detailed description of our solution to the Santander Product Recommendation competition hosted by Kaggle. The $60,000 challenge was to produce a recommendation system for Santander Banks, which is a global provider of a number of financial services. For this competition I teamed up with my good friend...\n        ","pubDate":"Mon, 19 Dec 2016 00:00:00 -0500","link":"https:\/\/apryor6.github.io\/2016-12-19-Kaggle-Competition-Santander-Solution\/","guid":"https:\/\/apryor6.github.io\/2016-12-19-Kaggle-Competition-Santander-Solution\/"},{"title":"Combating the Opioid Epidemic with Machine Learning","description":"\n          Can we save live with machine learning? [R] - \n          Over the past 15 years, deaths from prescription opiates have quadrupled, but so has the amount of opiates prescribed. This massive increase in prescription rates has occurred while the levels of pain experienced by Americans has remain largely unchanged. Intuitively it follows that unneccessary prescriptions potentially play a significant role...\n        ","pubDate":"Mon, 24 Oct 2016 00:00:00 -0400","link":"https:\/\/apryor6.github.io\/2016-10-24-opiate-prescription-prediction\/","guid":"https:\/\/apryor6.github.io\/2016-10-24-opiate-prescription-prediction\/"},{"title":"Making A Beautiful Scatter Plot using R","description":"\n          Step-by-step process for customizing a scatter plot in ggplot2 [R] - \n          This is a step-by-step breakdown of my thought process for building a nice looking scatter plot using ggplot2 in R. This analysis uses a dataset containing information on every play in the 2015-2016 NFL football season found here on Kaggle. This season culminated in Super Bowl L in which the...\n        ","pubDate":"Tue, 11 Oct 2016 00:00:00 -0400","link":"https:\/\/apryor6.github.io\/2016-10-11-2015-NFL\/","guid":"https:\/\/apryor6.github.io\/2016-10-11-2015-NFL\/"}]}}