Skip to content

Instantly share code, notes, and snippets.

@jonlunsford
Created March 29, 2022 22:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonlunsford/78da98637858ed7e796b171c03bb6ec3 to your computer and use it in GitHub Desktop.
Save jonlunsford/78da98637858ed7e796b171c03bb6ec3 to your computer and use it in GitHub Desktop.
{
"awards": [],
"basics": {
"email": "",
"image": "https://www.gravatar.com/avatar/295bcb1e7e9279bf05ba41a28205d079?s=136&d=identicon&r=PG",
"label": "Engineer @convertkit",
"location": {
"address": "",
"city": "San Luis Obispo",
"country_code": "",
"postal_code": "",
"region": "CA"
},
"name": "Jon Lunsford",
"phone": "",
"profiles": [
{
"network": "Twitter",
"url": "https://twitter.com/jonlunsford1",
"username": "jonlunsford1"
},
{
"network": "GitHub",
"url": "https://github.com/jonlunsford",
"username": "jonlunsford"
}
],
"summary": "Hi there,\n\nI have been developing software for 10 years. I have extensive\nexperience with many stacks, primarily Ruby On Rails and Phoenix. Today\nI like to write Ruby, Elixir, Go and ES6/React. I enjoy pair\nprogramming, reviewing code and giving constructive feedback.\n\nI\\'ve worked with large corporations, fast paced agencies, and lean\nstartups producing production grade code for highly distributed, data\nintensive applications.\n",
"url": "http://www.capturethecastle.net"
},
"languages": [],
"projects": [
{
"description": "Myco Farm Co. is a small scale farm specializing in gourmet & medicinal\nmushrooms.\n\nUsing proprietary technology, called MycoBot, we grow Maitake, Lion\\'s\nMane, Chestnut, King Oyster, Golden Oyster, Blue Oyster, Turkey Tail and\nmore.\n",
"end_date": "2020-09-01",
"img": "https://i.stack.imgur.com/FFP1Y.jpg",
"keywords": [
"elixir",
"nerves-project",
"iot",
"influxdb"
],
"location": null,
"start_date": "2020-09-01",
"title": "Myco Farm Co.",
"type": "Feature or Apps",
"url": "https://mycofarm.co/"
},
{
"description": "Automate email arrivals to your inbox with powerful rules. Take control\nof your Syndication with anonymity and automation.\n",
"end_date": "2018-04-01",
"img": "https://i.stack.imgur.com/9LCAb.png",
"keywords": [
"elixir",
"phoenix",
"redis",
"digital-ocean",
"dokku",
"postgresql"
],
"location": null,
"start_date": "2018-04-01",
"title": "Syndicate App.",
"type": "Feature or Apps",
"url": "https://syndicateapp.site/"
}
],
"publications": [
{
"description": "In this episode of Elixir Mix, we talk with Jon Lunsford about Elixir's\nmany releases and deployment options, why/how to deploy Elixir with\nTerraform and we learn why Jon built an SMTP server in Elixir! Sponsors\nGroxio.io \\| Career Rocket Fuel For Curious Coders CacheFly Panel Alex\nKoutmos Steven Nuñez Lars Wikman Sophie DeBenedetto Guest\\...\n",
"end_date": "2020-08-01",
"img": null,
"keywords": [
"elixir",
"ansible",
"terraform",
"amazon-web-services",
"smtp"
],
"location": null,
"start_date": "2020-08-01",
"title": "EMx 104: Deploying Elixir with Mix, Terraform and Ansible with Jon Lunsford | Devchat.tv",
"type": "Blogs or videos",
"url": "https://devchat.tv/elixir-mix/emx-104-deploying-elixir-with-mix-terraform-and-ansible-with-jon-lunsford/"
},
{
"description": "Provision an EC2 instance with Ansible for elixir deployment. third in a\nseries of three posts on deploying Elixir.\n",
"end_date": "2020-06-01",
"img": null,
"keywords": [
"elixir",
"ansible",
"terraform",
"amazon-web-services"
],
"location": null,
"start_date": "2020-06-01",
"title": "Deploying Elixir (3 of 3): Provisioning EC2 With Ansible",
"type": "Blogs or videos",
"url": "https://dev.to/jonlunsford/deploying-elixir-3-of-3-provisioning-ec2-with-ansible-10o4"
},
{
"description": "Prepare an EC2 instance with Terraform for elixir deployment. Second in\na series of three posts on deploying Elixir.\n",
"end_date": "2020-06-01",
"img": null,
"keywords": [
"elixir",
"ansible",
"terraform",
"amazon-web-services"
],
"location": null,
"start_date": "2020-06-01",
"title": "Deploying Elixir (2 of 3): Terraforming an AWS EC2 Instance",
"type": "Blogs or videos",
"url": "https://dev.to/jonlunsford/deploying-elixir-2-of-3-terraforming-an-aws-ec2-instance-1nh5"
},
{
"description": "Build elixir releases locally with Docker & Mix. First in a series of 3\nposts on deploying Elixir.\n",
"end_date": "2020-06-01",
"img": null,
"keywords": [
"elixir",
"terraform",
"ansible"
],
"location": null,
"start_date": "2020-06-01",
"title": "Deploying Elixir (1 of 3): Building Releases With Mix",
"type": "Blogs or videos",
"url": "https://dev.to/jonlunsford/deploying-elixir-1-of-3-building-releases-with-mix-1o4a"
},
{
"description": "Let's see how easy it is to build a production ready endpoint with Plug,\nusing Erlang's Cowboy HTTP server\n",
"end_date": "2019-05-01",
"img": null,
"keywords": [
"elixir",
"plug",
"cowboy",
"poison"
],
"location": null,
"start_date": "2019-05-01",
"title": "Elixir: Building a Small JSON Endpoint With Plug, Cowboy and Poison",
"type": "Blogs or videos",
"url": "https://dev.to/jonlunsford/elixir-building-a-small-json-endpoint-with-plug-cowboy-and-poison-1826"
},
{
"description": "Introduce Null Object is a great refactoring tool when you find yourself\nchecking for nil too often. nil checks are often signs of much...\n",
"end_date": "2018-09-01",
"img": null,
"keywords": [
"ruby",
"refactoring"
],
"location": null,
"start_date": "2018-09-01",
"title": "Refactoring Ruby: Introduce Null Object",
"type": "Blogs or videos",
"url": "https://medium.com/@jonlunsford/refactoring-ruby-introduce-null-object-603c242f0d4e"
},
{
"description": "Extract Method can be used when you have several expressions, a code\nfragment, that can be grouped together. Even if there is one...\n",
"end_date": "2018-09-01",
"img": null,
"keywords": [
"ruby",
"refactoring"
],
"location": null,
"start_date": "2018-09-01",
"title": "Refactoring Ruby: Extract Method",
"type": "Blogs or videos",
"url": "https://medium.com/@jonlunsford/refactoring-ruby-extract-method-36ead060efb7"
},
{
"description": "Let's look at another simple yet powerful refactoring method, Replace\nTemp with Query. You can use this when you have a temporary variable...\n",
"end_date": "2018-08-01",
"img": null,
"keywords": [
"ruby",
"refactoring"
],
"location": null,
"start_date": "2018-08-01",
"title": "Refactoring Ruby: Replace Temp with Query",
"type": "Blogs or videos",
"url": "https://medium.com/@jonlunsford/refactoring-ruby-replace-temp-with-query-f96c6afc6678"
},
{
"description": "Let's take a look at a simple way to add clarity to your ruby methods.\nExtract Variable or Introduce Explaining Variable, it's probably one...\n",
"end_date": "2018-08-01",
"img": null,
"keywords": [
"ruby",
"refactoring"
],
"location": null,
"start_date": "2018-08-01",
"title": "Refactoring Ruby: Extract Variable",
"type": "Blogs or videos",
"url": "https://medium.com/@jonlunsford/refactoring-ruby-extract-variable-1d4bc9a2db22"
},
{
"description": "Let's see just how simple SMTP is with elixir/erlang. I began\nexperimenting with this mostly as a learning tool to get more familiar\nwith...\n",
"end_date": "2017-11-01",
"img": null,
"keywords": [
"elixir",
"smtp"
],
"location": null,
"start_date": "2017-11-01",
"title": "Receiving Emails Over SMTP With Elixir",
"type": "Blogs or videos",
"url": "https://medium.com/@jonlunsford/receiving-emails-over-smtp-with-elixir-8adb923a4f9a"
}
],
"skills": [
{
"description": "\n",
"end_date": "2021-12-01",
"img": "https://i.stack.imgur.com/FpJtT.png",
"keywords": [
"elixir"
],
"location": null,
"start_date": "2021-12-01",
"title": "Elixir - Score: 201/300",
"type": "Assessment",
"url": null
},
{
"description": "\n",
"end_date": "2021-07-01",
"img": "https://i.stack.imgur.com/DhhDh.png",
"keywords": [
"ruby"
],
"location": null,
"start_date": "2021-07-01",
"title": "Ruby Language Fundamentals - Score: 244/300",
"type": "Assessment",
"url": null
},
{
"description": "\n",
"end_date": "2021-07-01",
"img": "https://i.stack.imgur.com/i2rdS.png",
"keywords": [
"ruby-on-rails",
"web-applications"
],
"location": null,
"start_date": "2021-07-01",
"title": "Building Web Apps with Ruby On Rails - Score: 211/300",
"type": "Assessment",
"url": null
}
],
"work": [
{
"description": "Engineering highly concurrent and reliable systems ensuring millions of\ntransactions per day. Tech Lead of Compliance/Fraud prevention.\n",
"end_date": "",
"img": "https://crunchbase-production-res.cloudinary.com/image/upload/h_90/v1427187432/b4psrtucrimobg8y8z0i.png",
"keywords": [
"ruby",
"ruby-on-rails",
"elixir",
"redis",
"sidekiq",
"amazon-web-services",
"heroku",
"github",
"go",
"mysql",
"postgresql",
"cassandra",
"elasticsearch",
"backend"
],
"location": "ConvertKit",
"start_date": "2017-01-01",
"title": "Sr. Engineer",
"type": "Position",
"url": "https://stackoverflow.com/users/story/lists/111124/convertkit?storyType=1"
},
{
"description": "Capture The Castle was my personal freelancing business. Building\nsoftware for small and large businesses.\n",
"end_date": "2021-07-01",
"img": "https://i.stack.imgur.com/RfgAx.png",
"keywords": [
"ruby",
"elixir",
"phoenix",
"ruby-on-rails",
"rspec",
"backend"
],
"location": "Capture The Castle",
"start_date": "2009-08-01",
"title": "Owner / Engineer",
"type": "Position",
"url": "https://stackoverflow.com/users/story/lists/446780/capture-the-castle?storyType=1"
},
{
"description": "Working fully remote. Implementing features for a MOOC and LMS platform\nfocused on providing the best user experience for students from all over\nthe world to learn about art, code, and creative collaboration. My\nresponsibilities included gathering specifications and requirements from\ndesigners, marketers, customers, and building full stack solutions to\nsolve those problems. From implementing the backend API in Rails to the\nfront end UI and UX written in HAML, JS (A lot of Knockout), and SASS.\n",
"end_date": "2017-01-01",
"img": "https://crunchbase-production-res.cloudinary.com/image/upload/h_90/v1467288434/df0vvr9lsnsakfeyprir.png",
"keywords": [
"ruby",
"ruby-on-rails",
"knockout.js",
"javascript",
"sass",
"rspec",
"redis",
"sidekiq",
"haml",
"jst",
"jira",
"kanban",
"agile"
],
"location": "Kadenze",
"start_date": "2014-11-01",
"title": "Full Stack Developer (Ruby On Rails)",
"type": "Position",
"url": "https://stackoverflow.com/users/story/lists/177665/kadenze?storyType=1"
},
{
"description": "Front end engineer on a scrum team consisting of 7, in a department of\n16 scrum teams.\n",
"end_date": "2014-11-01",
"img": "https://crunchbase-production-res.cloudinary.com/image/upload/h_90/v1428040440/qpa2ipydbstumec8vhgo.png",
"keywords": [
"tfs",
"visual-studio",
"less",
"javascript",
"scrum",
"agile"
],
"location": "MINDBODY",
"start_date": "2012-08-01",
"title": "Front End Engineer",
"type": "Position",
"url": "https://stackoverflow.com/users/story/lists/49982/mindbody?storyType=1"
},
{
"description": "Working fully remote. Responsible for adding various, full stack,\nfeatures to an email archive web service.\n",
"end_date": "2014-09-01",
"img": "https://crunchbase-production-res.cloudinary.com/image/upload/h_90/v1397750244/e6f059676805062d4212e1647d6b3df5.jpg",
"keywords": [
"ruby",
"ruby-on-rails",
"vim",
"circleci",
"continuous-integration",
"rspec3",
"tmux"
],
"location": "AlphaSights",
"start_date": "2014-06-01",
"title": "Full Stack Developer (Ruby On Rails), contract.",
"type": "Position",
"url": "https://stackoverflow.com/users/story/lists/7960/alphasights?storyType=1"
},
{
"description": "Interactive web developer in a small fast paced agency working with\nseveral high profile clients and companies. I would work on the full\nstack of any website or application I was assigned, from back end to\nfront end. Work was produced on fairly tight deadlines at a very quick\nrate. I was able to produce some of the best work of my career, the 2012\nSasquatch Festival website won a gold W3 award.\n",
"end_date": "2012-08-01",
"img": "https://i.stack.imgur.com/33pII.png",
"keywords": [
"ruby",
"ruby-on-rails",
"capistrano",
"ssh",
"command-line",
"zsh",
"haml",
"javascript",
"css",
"html",
"amazon-elastic-beanstalk"
],
"location": null,
"start_date": "2011-11-01",
"title": "Full Stack Developer at WINTR",
"type": "Position",
"url": null
},
{
"description": "Taphanldes is a firm focused on the craft beer industry. I was part of a\ndesign team working on production design projects as well as developing\nall client websites. I was the sole developer at the time.\n\nAll websites that were produced at this time were built with wordpress,\nphp, and MySql. The WP interface would be customized completely for the\nclients needs.\n",
"end_date": "2011-10-01",
"img": "https://i.stack.imgur.com/CZOIw.png",
"keywords": [
"html",
"css",
"javascript",
"php",
"mysql",
"wordpress",
"photoshop",
"adobe-illustrator",
"adobe-indesign"
],
"location": "Taphandles LLC",
"start_date": "2010-10-01",
"title": "Web Developer",
"type": "Position",
"url": "https://stackoverflow.com/users/story/lists/446781/taphandles-llc?storyType=1"
},
{
"description": "I was in charge of all promotions media produced by the company, this\nranged from print ads, posters, festival merchandise and signage,\nfestival web sites, event web sites, and the company web site.\n\nAll web sites were built on Wordpress with highly customized interfaces\ndepending on the content that needed to be managed. The company would\nproduce very large music festivals which resulted in very high traffic\nto the websites, I would combat this with heavy caching and optimization\nwhere possible.\n",
"end_date": "2010-08-01",
"img": null,
"keywords": [
"html",
"css",
"javascript",
"php",
"mysql",
"wordpress",
"photoshop",
"adobe-illustrator",
"adobe-indesign"
],
"location": null,
"start_date": "2009-07-01",
"title": "Web Developer at Progressive inovations / The Canopy club",
"type": "Position",
"url": null
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment