Technical guide to optimizing Docker build time for BitBucket Pipelines by switching from Ruby base image to Alpine Linux. Covers Alpine's small size with package management, installing Ruby and NodeJS, Java installation challenges on Alpine, pre-installing Ruby gems with bundle install, and creating Dockerfile and pushing to Docker Hub.
An evaluation of BitBucket Pipelines, a continuous integration service reminiscent of Codeship. Discusses trying to replace Codeship with BitBucket Pipelines for publishing this blog, showing how to configure pipeline tasks and examining feature similarities, noting potential time savings from removing Docker image downloads in build process.
Explores Remote Procedure Call as pattern for microservices architecture, comparing to message queues. Demonstrates JSON-RPC for message formatting with Redis pub/sub system for message distribution, showing how client waits for RPC return results while message queues typically trigger jobs without reply requirements.
An introduction to Amazon Simple Workflow Service for coordinating distributed application components. Explains decider and worker roles, task-based workflow execution, reliability features like retries and timeouts, and provides Ruby code examples for registering workflow types and processing tasks.
An introduction to Mozilla's BrowserID authentication service which lets users sign in with email credentials managed by Mozilla, avoiding storing user passwords. Includes Sinatra example with HAML templates and JavaScript integration using navigator.id.get(), with full code available on GitHub.
Demonstrates combining Amazon SQS queues with SES email service for background email processing. Shows architecture where web applications queue email jobs, worker processes consume from SQS and send via SES, with code examples in Node.js and Ruby handling queue messages and email sending.
Code examples demonstrating Amazon SQS queue operations in both Node.js and Ruby. Shows how to create queues, send messages, and receive messages using AWS SDKs in both languages, comparing API patterns and highlighting event-driven use cases for decoupling application components.
A personal status update mentioning working on Heroku application, continued interest in Node.js projects, and ongoing Ruby work including MongoDB database activities. Notes that posts are coming after period of focusing on learning new technologies for job transition.
An example of adding WebSocket support to Sinatra applications using em-websocket gem. Shows how to start WebSocket server alongside Sinatra, handle connections and messages for real-time bidirectional communication, enabling features like live chat or real-time updates in Sinatra apps.
Demonstrates using Redis as an in-memory data store for sorting World of Warcraft auction house data retrieved from Battle.net API. Uses YAJL for fast JSON parsing, stores auction data in Redis sorted sets for quick lookup by item, and showcases Redis alongside MongoDB in NoSQL applications.
An introduction to MongoMapper as an Object-Document-Mapper for MongoDB. Shows how to create model classes and use them within Sinatra applications, providing Active Record-like familiarity for database operations without the complexity of full Rails framework for micro applications.
Exploring MongoDB with Ruby using mongo driver for database operations. Demonstrates basic CRUD operations with MongoDB shell, connecting with Ruby, performing queries and updates, and noting similarities and differences to SQL databases in document-oriented storage approach.
Review of Heroku as Platform as a Service solution for developers who want to focus on code rather than server management. Offers free web node for testing, easy scaling with commands, extensive add-ons for databases and monitoring, clean documentation, and Git workflow deployment. Personal site amscotti.com currently hosted successfully on Heroku.
Sinatra example using linkedin gem for OAuth authentication and LinkedIn API access. Shows helper methods for login checking, profile retrieval, and connections listing with access tokens stored in sessions, adapted from Rails example for Sinatra's micro-framework simplicity.
A Sinatra authentication example using sessions, BCrypt for password hashing with salts, and HAML templates. Demonstrates signup/login flow with in-memory user storage for prototyping, showcasing Sinatra's simplicity for building micro web apps suitable for hosting on platforms like Heroku.
Ruby example using Amazon Web Services SDK to publish messages to Simple Notification Service topics. Demonstrates getting SNS interface, finding topic by ARN, and publishing messages which can be delivered as SMS or emails, perfect for form-based notifications in Ruby applications.
Updated code for pulling World of Warcraft character data from Battle.net's new REST API returning JSON. Includes solutions in Ruby using HTTParty, Groovy with JSON slurper, and CoffeeScript running on Node.js, replacing older XML-based approaches that broke when Battle.net upgraded their armory.
Solving Project Euler problem 001 in multiple programming languages to maintain skills. The problem asks for sum of all multiples of 3 or 5 below 1000. Includes solutions in JavaScript (both original and ES6), Ruby, Groovy, and Python, with plans to add Clojure solutions for cross-language functional programming practice.
A Ruby script using Mechanize for web scraping to pull Comcast data usage information from user account. After previous scripts broke due to site updates, forked code from GitHub gist and adapted to work with current Comcast login system, demonstrating how web scrapers need ongoing maintenance as sites change.
Similar installation process to Groovy/Grails, guiding through setting up JRuby on Mac OS X. Covers downloading tar.gz release, moving to /usr/share, creating symbolic link for easy version management, updating .profile with JRUBY_HOME environment variable and PATH, and noting that JRuby's gem command overrides standard Ruby's gem requiring full paths.
A Ruby example demonstrating how to pull friend data from Twitter API and use Geokit gem to geocode their profile locations. Code retrieves friends list, checks for location data, queries Yahoo's Geocoding API for coordinates, noting API rate limits and that profile locations may not reflect actual posting locations.
Code examples for generating MD5 hashes in three programming languages. Shows both quick one-line hashing and the update method for hashing large data in chunks. Notes about using SHA-1 with salt instead of MD5 for password storage to prevent rainbow table attacks.
A Ruby example demonstrating how to interact with Lyris ListManager's SOAP API using HTTP POST instead of built-in SOAP libraries. Shows how to manually construct the SOAP envelope XML, set proper headers including authentication, and parse the response for adding members to mailing lists.
A Ruby script demonstrating how to pull character data from the World of Warcraft Armory website. The code fetches XML from the armory, parses guild information, and extracts level 80 characters with their names, levels, and classes into a sorted list.