Blog Posts

Migrating to Mastodon

Like many people, I have decided to ditch Twitter and migrate to Mastodon. This post covers how the migration has worked out for me and some my initial observations on the platform.

I can’t believe it can sort - visualized

A visualization of the sorting algorithm presented by Stanley P. Y. Fung

Log4Shell and Solr

A post on how the Log4Shell vulnerability affects Solr and how to validate that you have fixed it.

Solr debugQuery

Using Solr's debugQuery parameter to troubleshoot query results

String encoding in Ruby and JSON.generate()

A post on how strings and encodings are related in Ruby, why it's possible (and desirable) to have strings with incorrect encodings, and a gotcha when using strings with invalid encodings with JSON.generate()

document body innerHTML woes

A short post on what happens when you assign a value to document.body.innerHTML and a warning about incomplete fragments.

Tiny Container

A post on how to create a (tiny) Linux container from scratch using Go.

My (strange) journey to becoming a Ruby developer

Five years ago I took my first job as Ruby developer, this blog post is a reflection on what that experience has been for me.

Linux mv and file patterns

A short post on a curiosity that I ran into when trying to rename files using two file patterns via the Linux mv program

MySQL UTF-8 issues

A quick post on how I set the character set to UTF-8 of MySQL database after the fact and converted existing data from Latin1 to UTF-8

Goodbye Gmail

The story of why and how I moved my email from being hosted at Gmail to using another webmail provider.

Installing Ruby with ruby-install and chruby

A sample list of steps to install Ruby on a Mac via ruby-install and configure support for multiple versions via chruby, along with a few oddities and gotchas.

Build your own software

An extended version of the notes that I used to give the talk "Build your own software, yes, build it" at Code4Lib 2017 in which I advocate for building our own software as opposed to adopting large open source solutions.

Migrating my site from Node.js to Go

It's that time of the year when I release a new version of my own website but written in a new programming language. This time I rewrote my site in Go and using a MySQL database to store the content. This blog post elaborates on my experience.

Bundle, grep, and Rails Applications

A clever way to find where something was defined in a Rails application by combining the output of bundle with grep.

Introduction to LDP

Linked Data Platform (LDP) is a W3C recommendation that defines a set of rules to provide an architecture for read-write Linked Data on the web. This blog post is an introduction to the concept of Linked Data and how to get started with the Linked Da...

Code4Lib 2015

A summary of my experience attending Code4Lib 2015 in Portland, Oregon.

Learning JavaScript Data Structures and Algorithms

A book review for Learning JavaScript Data Structures and Algorithms by Loiane Groner.

Practical Object-Oriented Design in Ruby

A review of the book Practical Object-Oriented Design in Ruby by Sandi Metz. I mostly focus on how much I enjoyed the the emphasis on message passing (rather than on class structure) that Sandi puts on the book as well as her pragmatic approach to de...

Hydra Connect 2

My notes and thoughts on the sessions at Hydra Connect 2 in Cleveland, OH.

Connection handling with Node.js and MongoDB

A brief description on how database access with Node.js and MongoDB is different than database access in other platforms. I discuss the issues of keeping the database connection open, handling re-connections, and a Node.js module to make this process...

Running a Node.js web site in production (part 2)

Last year I blogged about my first experiences hosting a Node.js website in production and the things that you need to consider like running on port 80, reboots, crashes, security, and so on. This blog post is an update to that post a year later.

Introduction to Node.js

This blog post is an introduction to Node.js for traditional website development. In this post we go from a basic "hello world" website with barebones Node.js to a simple website with Express.js.

Running a Node.js web site in production (a beginners guide)

In this blog post I describe my experiences taking my first Node.js web site to production, running on port 80, and hosting it outside of my local box so that it's available to the world wide web.

Using SSH without a password

A review on how I configured my OS X machine to SSH to Linux box without asking for my password every time. Boy that was more complicated than I thought it would be but I got it working.

Using layouts with EJS in Express 3.x

An example on how to emulate layouts with Express 3.x and EJS

A Decaf Introduction to CoffeeScript

Slides to the Decaf Introduction to CoffeeScript presentation that I gave at Penn State Web Conference, State College Ruby User's group, and Pittsburgh Tech Fest 2012

Compiling CoffeeScript from Sublime Text 2

A sample configuration file for Sublime Text 2 to compile CoffeeScript files

Drawing a Binary Tree in CoffeeScript

A small CoffeeScript program to draw binary search trees on a web page. The page is drawn using the HTML 5 Canvas element.

JavaScript Async Programming for Sync Heads

This blog post compares how a particular synchronous piece of server side JavaScript code in Node.js looks and feels against against its asynchronous counterpart.

Web Development on the Mac OS X (part II)

Last year I blogged about my first impressions using a Mac for web development from the point of view of somebody with a strong Windows/C# background. This blog post is a long overdue continuation to that post with my thoughts on the subject 18 month...

Functional Asynchronicity Explained

Understanding setTimeout in JavaScript and how CoffeeScript "do" keyword helps when making asynchronous calls inside a loop.

Sliding-in a Full Page Panel with CSS and jQuery

In this blog post I show how to use CSS and jQuery to slide-in a panel full page on top of another and then slide back in the original content.

Future Directions for C# and Visual Basic

These are my notes from Anders Hejlsberg session on Future Directions for C# and Visual Basic at Build Windows 2011

8 Traits of Great Metro Style Apps

These are my notes from Jensen Harris session at Build Windows conference on Tuesday September 13th, 2011. Jensen is the Director of Program Management for the Microsoft Windows User Experience Team.

Simple Branching Strategies for Team Foundation Server

In this blog post I describe some branching strategies that I've found useful when using traditional source control systems like Team Foundation Server (TFS).

Running Visual Studio inside Mac OS X

A quick explanation on how I got Microsoft Visual Studio Web Developer Express on my MacAir by using a Virtual Machine with VirtualBox

Finder Error -36 on a NAS

A work around for the annoying Finder Error -36 when working with a NAS

Drawing a Binary Tree in Ruby

A small Ruby program to draw binary search trees on a web page. This program uses Sinatra to host the web page and HTML 5 Canvas element to do the drawing.

Git Basics

A beginners' guide (written by a git beginner) on how to perform basic version control operations with git including initializing a repository, adding files to it, and using branches.

Ruby Development on the Mac OS X

My experiences getting started with web development on a Mac from somebody with a strong Windows background.

Returning HTTP 404 in ASP.NET MVC

How to properly handle page not found errors in ASP.NET MVC project by returning the proper HTTP status code.

Log4net Thread-Safe but not Process-Safe

How I troubleshooted an issue where log4net was logging some entries but not others in a ASP.NET MVC application.

Encrypt and Decrypt a string in C#

This blog posts presents an easy to use C# class to encrypt and decrypt strings in .NET.

AJAX calls with jQuery in ASP.NET MVC

In this blog post I show how to execute AJAX calls with jQuery from an ASP.NET MVC application. The first example shows how to do it with an HTTP GET call and the second one uses an HTTP POST call. Both examples use JSON in the return type.

Password Recovery in an ASP.NET MVC Project

This post describes how to add the option to reset your password for an ASP.NET MVC 2 project.

Yield Return

A quick explanation on how the Yield Return statement works in C#

The Design of Design

A review on Frederick Brook's The Design of Design book

Flow: Second Generation Lean Product Development

A review of the book The Principles of Product Development Flow by Donald Reinertsen

Team Dynamics

A review of the different stages that teams go through (form, storm, norm, perform) what that means for both the team members and the management group.

TransactionScope.Complete Maybe

I've always thought that when you issue a call to the TransactionScope.Complete() the transaction is either committed or you get an exception if the transaction cannot be committed. In my mind once the call to Complete() returned it was a sure bet th...

The Model View Controller is dead, long live the Model View Controller

A review of some common misunderstandings when people talk about the Model View Controller and what are some other related patterns that might be more appropriated for the technology options that we have on this day and age.

Rubber Band Reports with Pivot Tables (reprint)

How to use Excel Pivot tables to provider flexible reports to your users.

Expose your data as an RSS Feed with .NET 3.5

How to expose your data as an RSS Feed with .NET 3.5

Multiple Endpoints for a WCF Service

An example on how to expose a WCF service through multiple end points, for example through HTTP and through TCP

Flickr Library in C#

A light-weight C# class library that provides the ability to retrieve the list of photosets in your Flickr account and retrieve information about the photos in a photoset.

DevConnections 2008

Summary of sessions that I attended at DevConnections 2008

Managing and Leading (The One Thing)

A short review on the book Managing and Leading (The One Thing) by Marcus Buckingham

Introduction to Scrum

Plug for my article Introduction to Scrum in CoDe magazine

Skeletons, Mona Lisa, and Problem Solving

Thoughts on the value of always having a running version of your application (even if incomplete) and the difference between iterative and incremental development.

Static constructors and ASP.NET applications

A tip on how static constructors in ASP.NET applications don't necessarily fire up when you might thing they do.

Computer Museum (Paris)

Pictures from the Computer Museum in Paris.

DotWiki 2.0

DotWiki 2.0 released

Upgrading Your Software Development Tools

A few thoughts on the considerations that software development teams need to keep in mind when upgrading development tools (or when deciding not to upgrade)

Estimates on Software Projects

Software Estimates is one of the most controversial topics on software development, including the process to calculate them and the value that they add to the software development process. In this post I give a few guidelines on how to go about them.

The Scrum Daily Meeting

An idea on how to do Scrum daily meeting with remote team members.

Windows Presentation Foundation

My initial thoughts on Windows Presentation Foundation

Software Developers and Process Improvement

Software Development Process Improvements should be tackled by more than just developers and QA, make sure to include project managers, product managers, and business owners in the process.

The Mythical Man-Month

A review on Frederick's Brook Mythical Man-Month book

Thoughts on Unit Testing

A few thoughts and my take on frequently asked questions about unit testing

Binary Tree in C#

A C# program to draw a binary tree. This program implements a binary tree class using C# Generics and also a Windows Form application to draw it on the screen.

Book review: Lean Software Development

A review of the book Lean Software Development by Mary and Tom Poppendieck.