Weston Ganger BCIS
Rails Software Architect / Web Developer
I am an expert in Ruby-on-Rails, jQuery, and Linux through extensive usage across many projects.
About Me
I am 31 and have a Bachelor of Computer Information Systems (BCIS) from the University of the Fraser Valley since 2014.
In 2014, I started a software development consultancy for myself called Solid Foundation Web Development.
From 2014 to 2021, I was a contractor for BC Hydro developing Ruby-on-Rails applications for internal-use that manage various complex technical processes and business workflows. This involved creating many new applications and maintenance of legacy/existing Rails applications.
From 2020 to 2021, I was a Senior Rails developer with Vericatch building out their suite of seafood reporting software.
Since 2022, I am a Senior Rails developer with Braintree/Paypal working with the 3DS portion of the payments system. The team that I work with engages in pair programming on a daily basis and I really enjoy pairing with other developers.
When I am not coding, I enjoy automobile building & driving, outdoors, camping, extreme sports, and socializing with friends and family.
If you want to know more about who I am, you are free to read my manifesto.
Profile Links
In an effort to optimize the use of my time and energy, I will no longer be maintaining boatloads of public and professional profiles. Listed here are the only public profiles I support.
Hobbies
I used to be very good at skateboarding. You can view a time arranged collection of my skate videos here.
My Articles
I try to document anything notable that I do or come across on my journeys. Here you will find a list of topics that I sometimes post on.
My Open Source Software Libraries
Here is a list of open source coding libraries that I have created and maintain. They aid in some part of the software development process. These libraries are publicly available for use within any software development project.
Ruby
Notable | Project | Description | Role | Popularity |
---|---|---|---|---|
active_record_simple_execute | Sanitize and Execute your raw SQL queries in ActiveRecord and Rails with a much more intuitive and shortened syntax. | Creator & Maintainer | ||
active_snapshot | Simplified snapshots and restoration for ActiveRecord models and associations with a transparent white-box implementation. | Creator & Maintainer | ||
active_sort_order | Dead simple, fully customizable sorting pattern for ActiveRecord | Creator & Maintainer | ||
axlsx_styler | Build clean and maintainable styles for your axlsx spreadsheets. Build your spreadsheeet with data and then apply styles later. I utilize this gem within my other software, Spreadsheet Architect. I also implemented functionality to the Ruby gem axlsx_styler to be able to add styles after the document has been generated. This is probably the most important missing features of the widely adopted axlsx spreadsheet library. I needed to ensure the projects future so I now handle all maintenance of this library as of 2018. | Project Maintainer since 2018 | ||
capistrano-precompile-chooser | Capistrano plugin to precompile your Rails assets locally, remotely, or not at all provided with a very convenient default terminal prompt | Creator & Maintainer | ||
minitest_change_assertions | Provides assertions for your Minitest suite to determine if an object has been changed | Creator & Maintainer | ||
paper_trail-association_tracking | Plugin for the PaperTrail gem to track and reify associations. I spearheaded the extraction of the code for association tracking and restoration of PaperTrail versions. This enables to developers to contribute to the association related code much more easily. | Extractor and Project Maintainer since 2018 | ||
paperclip_utils | A collection of processors and helper methods for easier dynamic processors and styles on your Paperclip uploads. The first gem I ever created. | Creator & Maintainer | ||
prawn-rails | Prawn Handler for Rails. I utilize this gem within my other software. I wanted to ensure the projects future so I now handle all maintenance of this library. | Project Maintainer since January 2017 | ||
protected_attributes_continued | Protected Attributes for Rails 5. I created this plugin to address a need in upgrading legacy Ruby-on-Rails applications. | Creator & Maintainer | ||
rails_custom_form_builder | A good example/starter pack for a custom form builder for use with Rails form_for | Creator & Maintainer | ||
rails_nested_layouts | Dead simple nested layouts for Rails | Creator & Maintainer | ||
rails_uuid_to_integer_primary_keys | A Rails Migration to convert your UUID primary keys back to integer / bigint primary keys. | Creator & Maintainer | ||
rearmed-rb | Rearmed-RB helpful methods and monkey patches for Objects, Strings, Enumerables, Arrays, Hash, Dates, etc. | Creator & Maintainer | ||
rearmed_rails | A collection of helpful methods and monkey patches for Rails | Creator & Maintainer | ||
RODF | RODF is a library for writing to ODF output from Ruby. It mainly focuses creating ODS spreadsheets. I utilize this gem within my other software, Spreadsheet Architect. I needed to ensure the projects future so I now handle all maintenance of this library. | Project Maintainer since July 2016 | ||
search_architect | Dead simple, powerful and fully customizable searching for your Rails or ActiveRecord models and associations. | Creator & Maintainer | ||
sexy_form.rb | SexyForm is a library for dead simple HTML form builder for Ruby with built-in support for many popular UI libraries such as Bootstrap. This libraries code was originally written for FormBuilder.cr. I decided to port the code over to Ruby because the FormBuilder.cr design pattern turned out so awesome. I believe I have added another great form builder option to the Ruby language. | Creator & Maintainer | ||
spreadsheet_architect | Spreadsheet Architect is a library that allows you to create XLSX, ODS, or CSV spreadsheets super easily from ActiveRecord relations, plain Ruby objects, or tabular data. I created this to address a need in the Ruby community to create spreadsheets easily. I think I have succeeded in creating the most easily usable plugin for spreadsheet creation in Ruby, by making one simple and unified API for creation of all spreadsheet types. My motivation to create this new Ruby gem was to streamline the spreadsheet creation process for my clients suite of Rails applications. | Creator & Maintainer |
Crystal
Notable | Project | Description | Role | Popularity |
---|---|---|---|---|
form_builder.cr | FormBuilder is a library for dead simple HTML form builder for Crystal with built-in support for many popular UI libraries such as Bootstrap. I created this to address a need in the Crystal community for an HTML form builder. This appears to be the only shard dedicated solely to form building for the Crystal language so far. | Creator & Maintainer |
Javascript
Notable | Project | Description | Role | Popularity |
---|---|---|---|---|
chosen-readonly | Chosen Readonly is a plugin that extends Chosen Selects to add support for the readonly attribute | Creator & Maintainer | ||
chosen-remote-source | Provides remote data source support for chosen-js selects. | Creator & Maintainer | ||
cordova-plugin-apprate | A plugin to provide rate this app functionality into your cordova application. I wanted to ensure the projects future so I now handle all maintenance of this library. | Project Maintainer since March 2016 | ||
cordova-plugin-camera-preview | Cordova plugin that allows camera interaction from HTML code. I wanted to ensure the projects future so I now handle all maintenance of this library. | Project Maintainer since April 2016 | ||
input-autogrow | Input Autogrow is a jQuery autogrow plugin for inputs | Creator & Maintainer | ||
input-case-enforcer | Input Case Enforcer is a jQuery plugin to enforce uppercase, lowercase, or capitalized inputs & textareas | Creator & Maintainer | ||
js-try | JS-Try is a Javascript implementation of the try method from Rails for safe navigation | Creator & Maintainer | ||
rearmed-js | A collection of helpful methods and monkey patches for Arrays, Objects, Numbers, and Strings in Javascript | Creator & Maintainer | ||
select-sync | Select Sync is a jQuery plugin to synchronize selects by selected or disabled options easily | Creator & Maintainer |
CSS
Notable | Project | Description | Role | Popularity |
---|---|---|---|---|
bootstrap-directional-buttons | Directional / Arrow buttons for Bootstrap | Creator & Maintainer | ||
chosen-bootstrap-theme | Bootstrap theme for Chosen Select that actually looks like Bootstrap | Creator & Maintainer | ||
chosen-material-theme | Material theme for Chosen Select | Creator & Maintainer | ||
rearmed-css | CSS Utility Classes for rapid development | Creator & Maintainer |
Rails Engines
Notable | Project | Description | Role | Popularity |
---|---|---|---|---|
pairer | Rails app/engine to Easily rotate and keep track of working pairs. Great for pair-programming teams. I built this as a clone of pairist, with the goal of removing user accounts as we were having trouble with emails not sending and outdated npm packages, etc. So I built this Rails engine/app with an alternative authentication strategy that keeps it simple. | Creator & Maintainer | ||
rails_i18n_manager | Web interface to manage i18n translations for your apps to facilitate the editors of your translations. Provides a low-tech and complete workflow for importing, translating, and exporting your I18n translation files. Design to allows you to keep the translation files inside your projects git repository where they should be. | Creator & Maintainer |
My Open Source Contributions to Other Libraries
Listed here is a summary of various libaries that I have contributed code to. Over my career, I have submitted hundreds of pull requests. On numerous occasions I have submitted 10+ pull requests to a single library.
Software Releases
I have successfully performed hundreds of public software releases. Here is a full list by year.
Project | Version | Technology | URL | Date |
---|---|---|---|---|
active_snapshot | v0.3.0 | Ruby | https://github.com/westonganger/active_snapshot/releases/tag/v0.3.0 | November 2022 |
spreadsheet_architect | v5.0.0 | Ruby | https://github.com/westonganger/spreadsheet_architect/releases/tag/v5.0.0 | October 2022 |
axlsx_styler | v1.2.0 | Ruby | https://github.com/axlsx-styler-gem/axlsx_styler/releases/tag/v1.2.0 | October 2022 |
paper_trail-association_tracking | v2.2.1 | Ruby | https://github.com/westonganger/paper_trail-association_tracking/releases/tag/v2.2.1 | March 2022 |
paper_trail-association_tracking | v2.2.0 | Ruby | https://github.com/westonganger/paper_trail-association_tracking/releases/tag/v2.2.0 | March 2022 |
active_snapshot | v0.2.4 | Ruby | https://github.com/westonganger/active_snapshot/releases/tag/v0.2.4 | March 2022 |
active_snapshot | v0.2.3 | Ruby | https://github.com/westonganger/active_snapshot/releases/tag/v0.2.3 | February 2022 |
Project | Version | Technology | URL | Date |
---|---|---|---|---|
Word Jumbler | v1.0 | Mobile App | https://westonganger.com/mobile_apps/word_jumbler | December 2015 |
Super Mirror HD | v1.0 | Mobile App | https://westonganger.com/mobile_apps/super_mirror_hd | November 2015 |
Super Millionaire Quiz | v1.0 | Mobile App | https://westonganger.com/mobile_apps/super_millionaire_quiz | November 2015 |
Official Beer Pong Rules | v1.0 | Mobile App | https://westonganger.com/mobile_apps/official_beer_pong_rules | October 2015 |
Super Farm Clicker | v1.0 | Mobile App | https://westonganger.com/mobile_apps/super_farm_clicker | October 2015 |
Super Word Twister | v1.0 | Mobile App | https://westonganger.com/mobile_apps/super_word_twister | September 2015 |
Public Projects
Listed here are some simple publicly available personal projects I have created. Note: Client applications are not public so they are not listed here.
Project | App Description | Dev Story | Live Release Date |
---|---|---|---|
Calculator Sidekick | Providing free online calculators for any purpose. | I wanted an easy way to create online js calculators and turn them into mobile apps. So I did exactly that and created this website. I created a mobile app called "Tip Sidekick" which grabs the calculator and embeds it within the application. It works very well, however unfortunately I abandoned the idea after making the first one. This is simply because I lost general interest in mobile apps and app stores as its a constant moving target. I now have decided to to only use the web if ever possible. | April 2017 |
Coders Log | A collection of community link-log about different code topics. If you have an article to share, created a library, or any other news, You can share it with the coding community. | This website was built as a clone of one of my favourite websites, RubyFlow. At the time I was looking for a place to post my Linux and Cordova articles to but could not find any appropriate places. So I created this website with most every relevant programming language. | March 2016 |
Craig-Getter | Craig-getter is a Craigslist scraper and aggregator. | I built this application for my own needs to scrape and aggregate Craigslist for multiple searches so that I can catch the best deals. It also helps filter out all the things I have already seen or are not relevant. So far it has proven to work extremely well for me, maybe too good even. | September 2016 |
My Mobile Apps
Here is a list of public mobile apps I have created over the years. I developed all of these for my own usage and to explore the development world of Cordova and Ionic (v1).
These used to be on the Apple App Store and Google Play Store. They are no longer available because I lost interest in updating and paying for app store based mobile apps as they are a constant moving target. That being said, I think that Cordova's function over fashion approach is good enough for most business use cases or to simply have a presence in the app stores.
Project | App Description | Dev Story | Live Release Date | Image |
---|---|---|---|---|
Chuck Norris Jokes & Facts | Get a random jokes or facts about the man himself, Chuck Norris. | Chuck Norris is rad and these jokes are funny. While creating Random Joke Generator I thought it might be a good idea to create a more specific version of the application. The Chuck Norris Joke dataset large and perfect for this. | March 2016 | ![]() |
Its Your Turn | Simply press a button and the app will tell the next person to take their turn | This application was developed during one evening when attempting to play a slightly boring game. We kept forgetting whos turn it was and who had the dice. I decided it might be interesting to create an app to manage the turns for the game. Once the turn is changed then a sound and/or text-to-speech voice will notify you. I created the application in both React Native and Ionic v2. I settled with Ionic 2.x for the final release. | April 2017 | ![]() |
Official Beer Pong Rules | The Definitive Beer Pong Rules app. Contains Word Series of Beer Pong rules, West Coast rules, East Coast rules, House Rules, and Fun Rules. | At every party with beer pong happening there are always people arguing about the rules. I created this app to solve this exact problem. To no surprise, even after introducing it, the arguing didnt stop. | October 2015 | ![]() |
Random Joke Generator | Get a random joke at the click of a button. Over 15000 jokes to get you laughing. | I wanted to make an fun joke application to pass the time when in line or bored. So I compiled a source database of jokes from around the web and created and Rails API to access it. I then created a mobile app to download one joke at a time randomly. I use this application all the time when I am bored looking for a quick laugh or joke. Its a hoot. | March 2016 | ![]() |
Snow Vision Camera | See the world in snow vision! Use your camera to see an augmented reality with falling snow. | After creating the application Super Mirror HD. I decided if I could actually do something useful or fun. This was the idea I came up with. Very simple and fun project that worked well using only jQuery effects. | January 2016 | ![]() |
Sudoku Ultra | Challenge your mind with this fun and addictive game of sudoku. | After the success of my word game, Super Word Twister, I decided people like mind games. I knew my Nana really liked Sudoku so I thought it would be useful to a few people if I created a mobile application with this game. | June 2017 | |
Super Dice Roller | The definitive dice rolling app. Swipe, Touch, or Shake to roll the dice. Visual and Voice responses. | I built this application to address a need. When playing a board game we kept forgetting who had the dice. This way we could leave the phone on the table and use a gesture to activate the digital dice roll. | March 2016 | ![]() |
Super Farm Clicker | Build your crew and expand your farm in this extensive incremental/clicker game. | The second most successful app I ever built. The reason for this apps success is that clicker games are highly addictive due to the RPG elements they play on. I have always been a fan of RPG video games so naturally this was a fun project for me. | October 2015 | ![]() |
Super Mega Quiz | A fun quiz and trivia game. Over 300 questions to answer. | A clone of my other application, Super Millionaire Quiz, with a new set of questions. | January 2016 | ![]() |
Super Millionaire Quiz | A fun quiz and trivia game based on the game show Who Wants to be a Millionaire. | I thought this was a good game idea that would fit well within the idea of an Ionic / Angular application. I found a few data sets to work with and whipped this game up. | November 2015 | ![]() |
Super Mirror HD | The definitive mirror to go app. Super Mirror HD allows you to check out your makeup, hair, or face. | One day my Mom and Aunt said to me, "oh my gosh, it would be such a good idea to create an app thats like a mirror." I laughed and replied saying that you could just open the camera app. I then thought it might be a interesting application to create and would be funny to see how many gullible people would download this, which is 5000+ as of August 2017. | November 2015 | |
Super Word Twister | A fun and addictive text twisting game. | The first mobile app I ever built, and the most successful. I recieved a free $500 Amazon App Store ads promotion which provided a bunch of initial traffic and downloads. I built this using Ionic / AngularJS 1.x. I created this application as a clone of a fun text twisting game I used to play a lot on my PSP. This project was really fun for me as I have always enjoyed word games. | September 2015 | ![]() |
Tip Sidekick | Simple and Easy Calculator for calculating tip amount and splitting the bill. | This is the first and only application I created to complement my website, calculator-sidekick.westonganger.com The idea was to create a calulator on a webpage and then be able to utilize these within a dead simple cordova mobile application and appear native at the same time. The idea worked perfectly however I lost interest in creating each and every mobile app so I stopped with this one. | April 2017 | ![]() |
Word Jumbler | A fun text twisting game. Hundreds of words to spell. Hi-Scores to brag to your friends. | A clone of my first game, Super Word Twister. | December 2015 | ![]() |