Theoretically, PHP-CGI processes on security level 1 sites should be faster now. I’ve put PHP in a tmpfs file system. It loads from RAM/Virtual Memory instead of from the hard drive, so page loads should come a couple milliseconds faster. I’ve also compressed the executables so they take up less of this tmpfs system.
Monthly Archives: December 2007
Ad Order Entry 2
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.
Cannisgroup Hosting: Of AWStats Installations and PHP Zombies
I have been hard at ‘work’ over the past 3 hours installing AWStats onto the server and realized a fatal flaw in my logging: All things get logged to a single monolithic log. Also Hypertext Preprocessor runs amok. Continue reading
PDF 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.
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.
Project: Image Color Dominator
Image Color Dominator picks a small three-color palette based on an input image. Similar to iTunes 11, except orders of magnitude slower.
For an example, let’s take this image of Mars.
At the time of writing, the current version of Image Color Dominator selects the following colors:
Background color: #010000
Foreground colors: #C26A44 and #D2C4C9
Full write-up: Image Color Dominator
Source on Bitbucket: https://bitbucket.org/epb9000/image-color-dominator
Supercell
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