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.
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.
Code examples for generating MD5 hashes in three additional programming languages. Shows both quick one-line hashing and incremental update method for large data processing. Continues series of MD5 implementations across different languages including previous Python, Ruby, and Groovy examples.
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.
A Ruby script for archiving Loggly logs into MongoDB using Heroku worker. Fetches archived log files from Loggly API using HTTParty, processes and stores them as documents in MongoDB with metadata about source and timestamp, demonstrating NoSQL storage for log data.
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.
An introduction to MongoDB installation and basic usage on MacOS. Covers downloading and extracting MongoDB binaries, creating symbolic links for version management, setting up /data/db directory, configuring environment variables, and testing with mongod server and mongo shell client.
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.
Introducing CoffeeScript as a cleaner pre-compiled JavaScript alternative inspired by functional programming talks at No Fluff Just Stuff. Shows how CoffeeScript's concise syntax transforms Project Euler 001 solution into elegant functional code with range comprehension and arrow functions, compiling to clean JavaScript output.
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.
Step-by-step installation guide for Scala, an object-oriented and functional programming language on the JVM. Covers downloading via curl or browser, verifying MD5 checksum, extracting with tar, moving to /usr/share, creating symbolic link for version management, updating .profile with SCALA_HOME and PATH, and verifying installation.
A guide for managing multiple SSH private keys on a single system, useful for accessing different servers or working with Amazon EC2. Shows how to configure the .ssh/config file to specify different identity files, hostnames, users, and ports for each server, enabling easy SSH access by hostname alone.
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 guide to setting up remote Git repositories on Linux servers via SSH or on USB flash drives. Covers creating a bare repository with git init --bare, using --shared flag for team projects, pushing to remote repositories, adding remote servers for easier access, and leveraging SSH keys for authentication.
Step-by-step guide for installing Groovy and Grails on Mac OS X with symbolic links for easy upgrades. Covers downloading binary releases, moving to /usr/share, creating symbolic links to simplify version changes, updating .profile with GROOVY_HOME and GRAILS_HOME environment variables and PATH settings, and verifying installation.
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.
Demonstrates how to parse poorly formatted HTML using Groovy with TagSoup library to handle errors. Example code pulls NFL passing statistics from nfl.com by parsing HTML tables and converting them to structured data, with plans to push to a NoSQL database.
A Groovy port of Java code for generating website screenshots. Uses JTidy to convert HTML to XHTML and the Flying Saucer renderer to output PNG images, demonstrating how to programmatically capture thumbnails of websites for archiving or preview purposes.
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 guide to protecting SSH servers on Linux from brute force attacks. Covers disabling root login, changing SSH ports, using iptables rate limiting rules to temporarily block aggressive IPs, and installing DenyHosts for permanent blocking with optional synchronization to a community blocklist.
Two Python scripts for managing ZFS snapshots. The first script creates timestamped snapshots of all filesystems in a zpool. The second script automatically removes snapshots older than 30 days by parsing the timestamp in snapshot names, useful for automated backup cleanup.
A Groovy function demonstrating how to replace high-level Unicode characters with their HTML entity equivalents. The entitize function iterates through a string, converting characters with code points above 127 to numeric character references like € for the Euro symbol, useful for HTML/XML output.
An exploration of ZFS send and receive commands for filesystem management and backup. Covers taking snapshots, outputting to files, combining with gzip compression and OpenSSL encryption for secure storage, using zfs receive to restore filesystems, and copying filesystems securely over SSH between systems.
A Groovy script demonstrating how to use the StopForumSpam API to check email addresses against a database of known spammers. The script reads emails from a text file, queries the API, and reports how many times each email has been reported, showcasing Groovy's concise syntax for API integration.
A comprehensive guide to using the PF firewall on FreeBSD to block SSH brute force attacks. Covers enabling PF, creating a brute force table with tracking rules, and using pfctl commands to manage blocked IPs, providing automated protection against password guessing attempts.
A Groovy script demonstrating how to pull and parse character data from the World of Warcraft Armory. Uses XMLSlurper to fetch guild information and extract level 80 characters grouped by class, showcasing Groovy's cleaner syntax compared to Ruby for XML processing.
A practical guide to encrypting and decrypting files using OpenSSL with AES-256-CBC encryption. Covers basic file encryption/decryption, piping data through OpenSSL for processing, and using the same algorithms for consistent encryption and decryption operations.
A guide for creating SFTP-only users on FreeBSD that can transfer files securely but cannot log in via SSH to run commands. Covers creating a dedicated group, configuring sshd_config with chroot and ForceCommand settings, and adding restricted users.
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.
An introduction to SSH tunneling techniques for secure data transmission. Covers dynamic port forwarding for web browsing and IM clients, local port forwarding for RDP/VNC access, and reverse tunneling for accessing systems behind firewalls. Includes examples and automation scripts, plus instructions for PuTTY users on Windows.
A comprehensive guide to creating and using SSH keys for secure passwordless authentication. Covers key generation, understanding public-key cryptography, key distribution using authorized_keys, and using PuTTY on Windows to enable secure login and automate file transfers without passwords.