About Me

I’m a mildly workaholic programmer sometimes. Only sometimes! I’ve been a hobbyist programmer since I was about 14. I’ve been employed full-time in a web development capacity in the newspaper industry since September of 2007. That’s kind of a long time, so I’ve had a lot of projects I’ve worked on. I’ve decided to set up this page to showcase some of them.

Around the web: Stack Overflow
profile for EPB at Stack Overflow, Q&A for professional and enthusiast programmers
BitBucket

Ad Order Entry 2Ad Order Entry

One of the largest projects I’ve ever undertaken, an advertising order entry system that expanded into a full-on production management system for my current employer.  Most of it’s features center on print advertising, but it has insert tracking as well as online ad functionality.  At the time of writing AOE2 is being retired soon, but it’s among the projects I feel the most proud of as I was its principal author. Constructed with a mess of custom and 3rd-party modules atop Drupal 6.

A list of general functions it provides:

  • Integrated with billing system through the use of feed exports.
  • Automating repetitive ad production processes.
  • Facilitates workflow with automatic emails and notifications. Such as ad proof notifications and reminders when some action is needed. With the aide of a 3rd party solution, it can even call a customer when their proof is ready.
  • Provides production reporting, such as what ads are ready to be plated.
  • Integrated local scripts provide additional functionality.

 

Ad Tracking Screenshot

Ad tracking display, edited for confidentiality

Preprint Tracking

Preprint Tracking Screen, edited for confidentiality

Publishing Pages Display

Publishing pages display showing all ad positions currently ready.

PDF GeneratorsPDF Generators

I’ve written several PDF generator projects, using both TCPDF and an rsvg tool called svg2pdf.  I didn’t feel each one warranted it’s own project entry here though, so they’ll be aggregated here until such time I actually manage to get my academic worksheet generator to minimum viable product status.  In which case the worksheet generator will have it’s own project entry.

Advertising Contract Generator

This project collects contact information; additional terms and conditions; and advertising rate settings. It then produces a printable, multipage contract with rates and conditions included.  After it was developed, it was subsequently integrated with Ad Order Entry.  This uses the mentioned SVG to PDF conversion with PDFtk to join the individual pages.

The information collection form.

The information collection form.

Heading of a contact created by the generator.

Heading of a contact created by the generator.

Print Listings Generator

The listings generator creates multiple single-page PDFs that can be laid out in InDesign.  It actually has several different listing types, but they’re all pretty similar.  It uses a grid layout and allows for reserving spaces for standard ad placements.  Premium listings typically include a photo and some more prominent sizing and styling.  This project now uses TCPDF because TCPDF is capable of specifying colors in CMYK colorspace, so text uses only black ink and other colors can be limited to fewer plates.  This is important with an old offset printing press as RGB black becomes a mixture of all four ink colors in print, and can make fine text completely unreadable if the plates don’t match up perfectly.  The listings generator is written in PHP on CakePHP 1.3.

Pizzeria Fondi Listing

This advertising proof shows the difference between a standard listing and a premium listing created for dining.

 

SupercellSupercell

Supercell Screenshot

Ah Supercell, the first Ludum Dare jam I ever participated in. This little game was lovingly crafted in C with the help of the SDL libraries. Collaborating to write a game in C with source control was certainly a learning experience, but it was all kinds of fun.  I also worked to make the ports to other operating systems, though I’m pretty sure the Mac OSX version only runs on specific versions of Mac OSX.  This project once again reminded me that it’s important to initialize chunks of memory that get allocated.

Ludum Dare page: http://www.ludumdare.com/compo/ludum-dare-23/comment-page-2/?action=preview&uid=10844

Source: https://bitbucket.org/syncarn/ld23/src

CindersCinders

Cinders Screenshot

Cinders is a Ludum Dare jam collaboration written in Python using pygame.  I’m still quite proud of my fire spreading mechanic.  The level system was fun to make too.  “You are the villain” is honestly the best LD theme ever.  Hammered out in 72 hours with a small team, it’s my favorite Ludum Dare game I’ve had a hand in producing.

Link: http://www.ludumdare.com/compo/ludum-dare-25/?action=preview&uid=10844

Source:  https://bitbucket.org/syncarn/ld25

Timelapse posted by project lead:

ToastergeistToastergeist

 

 

Toastergiest Credits

Toastergeist is another Ludum Dare jam collaboration I participated in. My oft-used, but not precisely unique, screen-name is in the credit screenshot above.  The goal of the game was to cook toast (and bagels and poptarts) to a perfect golden brown and then launch them into the condiments flying through the air and land gracefully on the plate.  Where it was apparently immediately consumed by the Toastergeist as I don’t think we ever finished the stacking.  A one-minute score grab with no visible timer.  This was written in Python, with two other programmers.

Ludum Dare Game Page: http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&uid=10844

Source code: https://bitbucket.org/syncarn/ld26