Ruby Expert, Rails Developer, and Rust Developer
Who am I, or more importantly, who am I as is relevant to you. I'm a dog with a bone when it comes to problem solving. My drive for problem solving is fierce and I thoroughly enjoy it. My ability to express ideas in such a way that helps the listener understand new concepts is well honed. I'm cordial in my communication and very much enjoy communicating with people. But more importantly I'm a good listener with keen perception toward intent on what's being said. I'm well practiced in writing, documenting, and providing educational material. And I have a keen focus on producing quality code by following what's idiomatic for each particular language, best practices in design patterns, thorough testing by both unit and integration tests. and a love for writing performant code verified with benchmarks. I'm a polyglot always learning new languages and technologies and am quick on the uptake.
My background; I was first introduced to programming as a child by my father. I later started programming in 2001 as a hobby of passion. In 2008 I delved into some remote freelance work and that went well. Then as of 2014 I transitioned to developing software full time and writing articles on personal development, teaching programming, website development, and operating system management and troubleshooting.
If I could have my dream team environment it would be one that is friendly, open, collaborative, peace-driven, and trusting as a community of highly motivated software development peers. With opportunities to mentor as equals and bond as those who share in a common goal. With a focus on quality rather than quantity for code practices to produce superior systems that can stand the test of time. Where good practices such as Red, Green, Refactor are the expected discipline to follow and peer review is handled with grace and timeliness. Where all individuals are treated with respect and the language we speak is carefully crafted to be politely diplomatic even when ideas or code is to be challenged. Where to be winsome is valued preeminently above any dismissiveness of ideas, code, or values. Where people come before code.
Highlighted Skill Experience
- With this projects firsts release I made my Rails site pages load more than 30% faster. I discovered which methods took up the majority of the time for a Rails web page to load and rewrote one specific method to accomplish this. Since then my project has 15 such methods rewritten from Ruby into Rust that all now run faster. This project is what I'm most known for.
Ruby — since 2012
- I am an expert in Ruby from design patterns, best practices, to the underlying behavior. I've also gained much experience in implementing Rust code to interface directly with Ruby's C code. I've worked with many APIs and created abstraction layers to simplify their use.
- I've been deeply involved in Rails work as the sole full-stack developer of a start up company for over 2 years. This isn't my exclusive experience with rails. From this I have gained expertise in many areas from which I've written many blog posts teaching front end techniques & technologies such as UJS, AJAX, WebSockets, and ActionCable, to backend best practices.
- I've built and deployed containerized websites with Docker and Heroku with various customizations.
Rust — since 2015
- I've over 2 years experience in Rust with a focus on writing performant and idiomatic code. This includes the project FasterPath with plenty of benchmarking and tracking data.
- I've good experience with multi-threading in Rust with my project Abrute which utilizes all CPU cores to test file encryption security via the brute force method. From a ground up character sequencer which implements many algorithms, to the frontend client experience featuring several command line statistical report systems, to a backend JSON endpoint for cluster data aggregation. Abrute is built with clustering in mind allowing splitting work loads across any number of systems.
- Foreign function interfacing; with my experience with FasterPath I've become somewhat accustomed to reading C source code to write Rust wrappers around and allow Rust and C to call each others code.
- I have experience designing and building many docker containers with three focuses:
- (1) Build Staging — compilation and code execution of many programming languages each in their own Docker container as a stage execution test suite.
- (2) Web Deployment — custom Docker containers designed to work the same both on Heroku and the local system.
- (3) Development Environment — with ruby-pair I've built my ideal pair-programming environment which allows remote pairing and development with several programming languages.
- Around 20 years experience working with Linux. Written many blogs on Linux system applications, building, configuration, management, and backup. Very capable in shell scripting & system administration.
- I've written an API client library for Travis CI called Trav3
- I've written an application which utilized the Twilio API
- I've written an application which utilized the Evernote API and specifically its OCR feature to gather data from images. I've also written a blog on how one may integrate their Rails app with it titled: Working with the Evernote API in Rails
- I've written application integration for Google Contacts
- Implemented OmniAuth with Evernote, Twitter, LinkedIn, Google, Facebook, Yahoo, and Meetup.com
- Web Automation with: Continuous Integration, Mechanize, Nokogiri, Selenium, and Watir
- Moderate experience in: ActionCable, Agile, AJAX, Assembly, Bash, Batch, CGI, CMS, Django, Encryption, FFI, FishShell, Metaprogramming, OpenSSL, PostgreSQL, Python (Since 2001), RSS, Satchmo, SEO, SOLID, XML, Security Practices, VueJS, Ruby C API
- Studying: Algorithms, CoffeeScript, Rust, Design Patterns, Ruby C API, VueJS, Haskell, FP
Additional Experience Highlights
Professional Ruby & Rails Blogger
- I’ve been writing educational blogs for many years at 6ftdan.com . One of the companies I freelance for is Codeship.com . I write about many technologies, programming languages, and personal development topics.
Ruby for Good
- 2016: Charity Rails development for Virginia Working Landscapes [link]. I joined a team of developers in providing free software development for helping catalog living things in nature. This information can then be used to help determine issues and be of help to protect any living species that may be endangered.
- 2017: Charity Rails development for Loudoun Codes [link]. I joined a team of about 10 developers in building a Rails project for high school programming competitions. The system is responsible for running students code submission, grading the results with time and penalty rankings, as well as an official scoreboard system. My primary role in this project involved implementing Docker client runner implementations for various programming languages includes Ruby, Python, C++, Rust, and Crystal. This was refactored into the primary implementation work done by Chris Hoffman.
An Undisclosed Start-up
The Minitest Cookbook — Technical Proof Reader
- Chris Kottom authored the book “The Minitest Cookbook” — with three weeks to go until it was due to be published I read through the book twice giving editing advice on each iteration. In 2017 I've also gave a final proof read for Christ Kottom's “Developing Rails API Applications” book.
- 2014: I joined this project with a team assembled of 3 strangers from Twitter. As part of a code competition I built an interface for scraping YouTube videos and wrote some helper methods to take advantage of creating embedded website videos. Also one of the core developers for Rails in the project.
- 2015: I started this project with, again, a team of strangers on assembled via Twitter. In 48 hours we built TrenderCast which is a podcast subscription and trends system. This product was my vision and I was the primary Rails developer on this project.
- 2016: This year I focussed on working solo and experimenting with new Rails technology ofWebSockets/ActionCable. The project was to build a game server for poker games. With the 48 hours I made it as far as implementing a chat room, game tables, seat assignment, and card dealing.
NetVersa ~ 2012
- Designed full website automation for popular sites using Watir and Watir-webdriver in the Ruby language.
Scholar Square - 2008
- Designed a script to pay all site members who’ve authored content; all appropriate fees for students memberships, and subscriptions, via the PayPal API using Python.
- This was a profitable self made startup for refurbishing and selling iPhone and surplus part sales. I designed and deployed a full eCommerce website built on top of the Satchmo/Django framework using Python.
- Designed a basketball tournament ranking application which ranked teams on many different criteria. Designed my own flat file database system to keep records in CSV. This was used to rank a multi-day interstate basketball tournament.
Open Source Contributions
- Charity Rails development in Ruby for Good for Virginia Working Landscapes [link] and Loudoun Codes [link].
- Minor contributions to several major Open Source projects including Ruby, Rails, Crystal, RubyGems, RVM, Bundler, and OmniContacts
- Authored PolyBelongsTo – An advanced Rails – ActiveRecord relationship library.
- Authored DynaSpan – A Rails Ajax helper gem for creating dynamically modifiable text on web pages.
- Authored and contributed to around 80 other Open Source libraries available on Github.
- Open Source game released in 2002 called Py Connect Four written in Python using the PyGame SDL library
Technical Blog Post Headlines
- Familiarize Yourself with Ruby String Encoding
- Measuring Performance Metrics in Rails
- Mathematics with MathJS
- Refactoring for the Tell Don’t Ask Pattern
- VueJS Components with CoffeeScript for Rails
- VueJS as a Frontend for Rails
- Micro Backups of Your Git Dev Work
- Understanding Rust Loops
- ProxMox; A VM Server For Your Home
- Rust Design Considerations with Borrowing
- Advanced Enumeration with Ruby
- Graphing Benchmark Results in Ruby
- Crystal from a Rubyist’s Perspective
- ActionCable: The Missing Guide
- Creating Powerful Command Line Tools in Ruby
- Working with the Evernote API in Rails
- Creating Advanced ActiveRecord DB Queries with Arel
- Get Started Quickly with Docker and Sidekiq
- Building a Well-Polished Ruby Gem
- Re: What is the splat operator doing here?
- Getting Started with Minitest
- Managing Private Dependencies with Bundler
- The Pros and Cons of Ruby Refinements
- How to Inspire Community in Programming
- Visualizing Algorithms Before Implementation
- Coming to Rust from Ruby
- A Deep Dive into Ruby Scopes
- How to Build the Ultimate Remote Pair Programming Environment
- Encrypted Linux Backup with Google Drive and Duplicity
- Use Ruby’s Refinements Anywhere With An Anonymous Class
- Rails: Has One Through Polymorphic Relation
- Ruby: Bindings Across Inheritance
- 101 Ruby Code Factoids
- Ruby: Arrays by Example
- Iterative Evaluation
- Implement a Lazy Hash in Ruby
- Rails Rumble – the Experience
- Introspection by Design in Ruby
- Install Ubuntu 15 Over the Network PXE/BootP/TFTP NetBoot
- Rails’ HashWithIndifferentAccess
- Switching From Unicorn to Puma on Heroku is Easy!
- Speed Up Your Rails Views By Deferring Changes
- Rails: Don’t “pluck” Unnecessarily
- Fake a SMTP Server with Python for Rails Testing
- HABTM; You Don’t Need It
- Chaining an Array into Arel ors
- Private Module Methods in Ruby
- Have problems testing methods that query ActiveRecord?
- Documenting Your Code
- ActiveRecord vs Me… Round 1 – FIGHT!
- Getting Started with MiniTest
- Rails 4’s Awesome enums
- Different Collection Types in Ruby
- More UJS fun with Accordion Content
- Substitution with Regex Groupings
- Ruby: Actionable Meta
- Configuration With a Singleton Instance
- Numeric Bases and Defining Your Own
- Ruby: The Case for Case
- Version Both Your Github Repo and Gem
- Value Assignment and Deferment with Lambdas/Procs
- Writing methods for both class and instance levels
- Minitest with Watir-webdriver
- Some Basic Ruby Tools for Sniffing out Errors
- A Glimpse at Tail Call Recursion
- Use the given project generators
- Setting up Remote SSH Access to your Ubuntu Box
- Rails Polymorphic Associations
- Do It All With Ruby
- Getting Into Rails Model Queries
- Using Ruby Object Type Classes to Safely Build Data
- Discovering UJS with AJAX
- Rails Helper Methods
- Learning Your First Programming Language
- Refinements over Monkey-patching
- The 500 Millisecond Rails Partial
- Email Composer/Editor Template for WebDevs
- Encryption in Ruby on Rails
- Dealing with Rails 4 forms and params
- When to use Ampersand and/or Colon with Proc, Map, and Inject
- “Assume Everything Will Break” Development
- Free Travis CI for your Open Source project
- Ruby & Ruby on Rails Methods for Discovery Part 1
- Create a Game Instance in Rails
- Manual Polymorphic Creation in Rails
- US English (Native)
- Spanish (studying)
- Japanese (studying)
- Clark Christian High School 2003
- 6ftdan (at) gmail (dot) com