Andrew Rondeau

Software Developer, Audio Enthusiast

Software Development

Topics where I discuss software development

The web is full of various discussions on how to embed C# into JavaScript. Most of these approaches are flawed because they rely on the deprecated Microsoft.JScript APIs. Other approaches, like hosting JavaScript in a WebBrowser control, aren't portable. In my particular situation, I need an embedded JavaScript engine that will work on Windows, Mac, and Linux. It has to work equally well in the .NET and Mono runtimes, and ideally, shouldn't require recompiling for each Operating System. I ended up using the IKVM tool to convert Rhino, a JavaScript interpreter written in Java, into a CLR DLL.

Download: PDF Thumbnail Generator -

From Readme.txt

PDF Thumbnail Generator for OSX
(Developed and tested on Leopard)

Version 1.0
March 15, 2009

Andrew Rondeau

All contents of this zip file are freely copyable.  For more information,
please contact me at



The PDF Thumbnail Generator is designed to allow for easy creation of
thumbnails from PDF files.

There are two versions:

 - Create Thumbnails of the First Page of Many PDFs:
     Creates a thumbnail of the first page of every PDF that is selected
     when the workflow is run

 - Create Thumbnails of Every Page of a Single PDF:
     Creates a thumbnail of every page of a PDF, allows for interactive
     saving of desired pages.

To run, select the Workflow application with the robot icon.  The document
icon will open the source in Automator if you choose to edit the


Create Thumbnails of the First Page of Many PDFs:

When run, you will be able to select multiple PDF files.  You will then be
prompted for some options; such as image size and file type.  The thumbnails
will be saved in the same folder as the source PDF files, with the name
"Copy of xxx.jpeg"

The thumbnails will always be the first page of each PDF file.

This workflow might also work with other kinds of files, although it was
only tested with PDFs.  I will only support this script with PDF files.


Create Thumbnails of Every Page of a Single PDF

Sometimes, the thumbnails automatically generated from the first page of a
PDF file aren't what's needed.  In some instances, the best page for a
thumbnail isn't the first page.  Other times, the page needs rotation before
being saved as a thumbnail.

This workflow is designed for when more care must be taken with generating
a thumbnail.

When the workflow is run, you will be able to select a single PDF file.
You will then be prompted for many options, such as image type, size, and
compression quality.

Some steps might take a few seconds.  If you have a large PDF, you might
have to wait a minute or two.

Once resizing is complete, the PDF will open in four different Preview
windows.  Each window will have a different rotation of the PDF, either 0,
90, 180, or 270 degrees.  The pages will be out-of-order.  In Preview, you
will need to select the page(s) that you want to save, and then navigate
to File -> Save As.

I wanted to experiment with using .NET's TypeBuilder class to automatically generate classes at runtime. For my experiment, I decided to implement a function, that, given an interface, returns a fully functional object that implements the interface. The programmer does not have to create a class to implement the interface.

In this article, I will first describe how one uses the automatic interface implementer. Later, I will describe how I used reflection and .NET's TypeBuilder to, at runtime, dynamically create Types that implement interfaces.

The below letter was written in response to a statement from Howard Schmidt, former White House cybersecurity advisor. He argued that software developers are solely responsible for security issues. My response, states that the company developing software needs to be held liable for defects.

As a professional software engineer, I strongly disagree with the stance that “Software developers should be held personally accountable for the security of the code they write”. My opinion is based on an engineering disaster that I studied when I was in college.

In 1986, the spaceship Challenger exploded, killing the astronauts that it carried. Upon investigation, it was found that the engineers who designed the faulty parts discovered the problem and notified management. The real fault for the Challenger disaster was miscommunication and an unwillingness to miss a launch date.

Negligent Software Developers are not the only cause of security holes. Inadequate testing, complicated development tools, lack of “proofreading” source code, poor user interfaces, and bad management also need to share the blame. For example, it is common in the software industry for management to set unrealistic development timelines, resulting in software is written quickly and shoddily.

With automobiles and baby strollers, the entire company is held liable for defects, not the engineers. Likewise, it is appropriate to hold software companies, not software developers, liable for security holes.