I have always loved building things, and got hooked on development while I was at university and wanted to build a new site for the student radio station. I taught myself enough PHP/Drupal, HTML and CSS to hack away at that site, and loved it.

Since then, I've continued to learn new languages and technologies, and love being able to realize a variety of ideas. Today, a few of my favorite things as a developer include Python/Django, ES6/React (especially React's ability to be rendered server-side, or in advance as a static-site generator), Swift, and Amazon Web Services.

I love working on interesting projects, and enjoy helping designers code their ideas. I've built everything from simple landing pages to full web applications and native iOS applications, and a lot of basic websites in between.

Let me know if you have a project in need of development!

 

Corporate Intranet

November 2016

Background

My client had been using the same online system to manage their business processes for over 15 years, which meant the system was clunky and slow for users and expensive to maintain. I worked with the group's management and the system's users to develop and implement a new system with a clean, easy-to-use interface that addressed all of the challenges present in the old system.

Features

The application serves two main functions: tracking incoming RFPs, and fetching manufacturing quotes.

The RFP management portion allows sales people to submit new RFPs, which can be assigned to proposal writers in the marketing group. Users can easily filter RFPs by date, client, sales person, etc., and email notifications are sent to user-assignable groups when RFPs are submitted and assigned.

The manufacturing quotation portion lets users input specifications for different components to receive a detailed cost estimate for manufacturing and distribution, based upon data input and updated by the manufacturing group. This segment quickly became the most complicated portion to implement, as the system tracks dozens of components, each of which has its own cost structure.

Design & Development Work

I developed a frontend built entirely in React/Redux that consumes a custom API served by a Django backend. The frontend is clean and usable, which I designed using the Bootstrap 4 framework.

Nearby Supply

October 2015http://nearby.supply/

Background

Nearby Supply helps people find products by connecting them with local stores. At its simplest, a shopper submits a request for any product, Nearby Supply sends it to local stores that are likely to stock that product, and each store responds in real-time.

Development Work

I developed a complete backend and frontend to enable realtime communication between shoppers and shops.

Anticipating an eventual need for robust machine learning and natural language processing capabilities, Python seemed like a natural choice, so I chose Django to power the backend. The incredible Django REST framework made it easy to impelement a JSON API to be consumed by the JavaScript or iOS frontend.

The realtime component was implemented using a user's choice of Email, SMS (provided by Twilio), and iOS push notifications while the user is not using the app, or using Websockets (provided by PubNub) while the user is using the app. To keep the responses snappy, I pulled all of the notification processing out of the request/response cycle using Celery and RabbitMQ, which also provided a solid foundation for asynchronous processing of shopper queries.

For the frontend, I developed an app for the web using React and native apps for iOS, written in Swift 2. For iOS, I split the product into separate apps for shoppers and shops that share a considerable portion of their codebase, but make the user's experience more straightforward, and provide more options for distribution.

To speed up initial page loads, I used React "isomorphically" – using Django to pre-render my React application on the server, and return a fully rendered page to the user, from which the React app can start on the client.

Chargerville

May 2016https://chargerville.com/

Background

Chargerville is a platform for electric vehicle drivers to share reviews, tips, and comments about charger locations and nearby amenities.

Development Work

I built a simple Django backend that serves a JSON API consumed by a React application in the browser. To improve initial page load speeds, and to optimize the site for SEO, the Django application also renders the React application "isomorphically" on the server, allowing Chargerville to reap all of the benefits of an interactive client-side application, and fully-rendered server responses, using the same codebase on both the client and the server.

Gold Star Toy

April 2017http://www.scholastic.com/goldstar/

Technologies

Background

Scholastic runs an annual contest to recognize new, high-quality toys, and needed a simple, static site to promote the contest to toy manufacturers. The site's content needed to be easily editable so that it could be reused on an annual basis. I worked with Scholastic's designers to develop a fun site that compiles to static HTML files hosted by Scholastic.

Development Work

I used my go-to static site generator, React, to build this site. The source code is well-organized, and componentized, to make it as easy as possible to make updates to the site. CSS modules keep all the site's class names locally scoped, which not only makes development and maintenance of the site easier, but also keeps classes from conflicting with the Scholastic envelope in which this site is embedded.

Personal Site

October 2014http://walkerangell.com/

Technologies

Background

You're currently looking at this site! Initially, I just wanted a simple gallery to display some of my photography, but have since converted it into a portfolio of both photography, and development work.

Development Work

This site has always been a place for me to experiment with different technologies.

Initially, I created a gallery using a custom WordPress theme and custom NextGEN Gallery plugin. But, that was when I still loved WordPress.

Next, I thought it made more sense to convert this site into a static site, and also wanted to try using Middleman on a project, so successfully ported the WordPress site to static Middleman site. While this certainly made the site more performant, and allowed for more flexibility, I wasn't particularly happy with the Middleman workflow.

Most recently, being completely enamored with React, I thought there must be a way to use React to create a static site with Webpack. The solution was even simpler than I thought, thanks to the Static Site Generator plugin for Webpack. As an added bonus, I can use Webpack to convert Markdown, letting me write all of the copy for this site in Markdown.

For Instants

September 2010https://walkandalie.com/

Background

My wife and I love travelling, and we share our travels (and some other things occasionally) on this blog, called For Instants. My wife writes the posts, usually with photos shot mostly by me, and it provides both a place for us to keep a journal of our life and travels, while also sharing some of those "instants" with others. As such, we like to keep it simple: no crazy banner ads, or hyper marketing – just a post on a page.

Development Work

Originally this site was just a custom WordPress theme. Wanting to improve the frontend, I migrated to a React-based frontend that consumed content served by WordPress's REST API, using a Node rendering engine proxied through Apache's mod_proxy module to deliver fully-rendered pages. Most recently, I have moved the backend to a custom "headless" CMS on which I have been working.

I had been searching for a good Django-based CMS that would let me specify my data structures exactly as I wanted them, and lacked the complexity introduced by routing and templating (since I only wanted to use it as a REST API). I wanted a simple, customizable admin panel that focused almost exclusively on editing content. Not being able to find what I wanted, I decided to build my own. The result I am calling Horseman. While I hope to make it an application that can be plugged into any Django project, it currently only powers this blog, and is not quite ready for primetime.

However, Horseman is currently doing an admirable job as the CMS of For Instants, and boasts some nice features: the admin is automatically generated from your Django models and is built in React, the image management is robust, and it works with Amazon CloudFront to invalidate my frontend cache whenever content is changed. With the CloudFront feature, I have been able to improve the site's availability and performance by serving the main site directly from CloudFront's caches, significantly reducing the load on my server, while making the site more immune to traffic spikes.

The NBN Group

November 2015http://nothingbutnav.com/

Background

I worked with Elisign Design to develop a new site for a group of business software consultants. The NBN Group was looking for a platform that would just provide a simple informational site and blog at first, but that could easily handle additions of more complex features, like stores, as they grow. Additionally, the client wanted to be able to make many changes to the site themselves, requiring a clean CMS implementation making virtually all of the site easily editable and re-arrangeable.

Development Work

To make the site both performant, flexible, and easily editable, I recommended the implementation of Craft CMS. On the backend, I worked with Elisign Design, and the client, to model their data in the CMS's database optimally. On the frontend, I worked from Photoshop files provided by Elisign Design to develop custom templates for the site and its various pages.

In addition to the public site, I also worked with Elisign Design to develop custom documentation for using and editing the site using MkDocs.