Google Doc(uments) please support SVG.

We all call it docs or gdoc or Google Docs, but the URL path actually says documents. Regardless, I must be in the minority, but I plead for vector graphics support anyway to whatever team within Google Workspaces is responsible for apps. Raster images Raster images are the jpegs, gifs, pngs, webps, tiffs, avifs, and many other formats of the world. They are of fixed resolution. I, and many people within the software development community before and after me, have created diagrams made of boxes, text, and lines connecting those boxes. We’ve used Visio (does anyone still use Visio?), Lucidchart, diagrams.net, and many other tools to create these images. ...

September 18, 2025 · Michael Hughes

Loops in NodeJS

I’ve written before about how it’s better to write straightforward code than trying to be clever and pre-optimize. Another example of where this rule is true is the cost of iteration between different styles of array loops in JavaScript when executed within NodeJS. ...

March 15, 2015 · MichaelHughes

Repository pattern overuse: The double repository with Microsoft Entity Framework and other ORMs

Martin Folwer’s blog and website is a common reference for modern design pattern so we will start with his glossary definition for the repository pattern. The linked article contains more detail, but in short a ‘repository’ acts as an data store layer on top of the storage system and provides (more) object oriented methods for accessing said system. Unfortunately, something I have also seen is the over application of this pattern in combination with RDBMS ORMs leading to contorted code with unnecessary interfaces and classes. This post covers what I have seen in some projects in order to provide some of the code smells to avoid. ...

January 4, 2015 · MichaelHughes

Interface mania: Considering when to add an interface for class.

Something introduced fairly early in programming courses is the concept of an interface. In practice interfaces help to define the boundaries between components of a system, define the behavior of underlying implementors of the interface, and make it easier to switch implementations of said behavior down the road. Today’s post offers a few thoughts on where interfaces should and should not be used. ...

September 26, 2014 · MichaelHughes

Java ArrayList resize costs

Today we will look at whether it’s worth developer time to pre-size ArrayList objects in Java application code. We will take a similar approach to the one taken in a prior post on how long it takes to handle an exception in Java. ...

September 11, 2014 · MichaelHughes