Technology:

PHP

PHP (Hypertext Pre-processor) is a server-side scripting language designed for web development. Widely used for creating dynamic web pages, PHP is embedded within HTML and excels in processing data, interacting with databases, and facilitating the development of robust and interactive web applications.

I have extensive experience with PHP and has been the language I have the most experience with along its own growth from version 4 to version 8 and beyond (the state of PHP is currently much much MUCH better than it used to be when I started with it).

PHP Projects

Development of Behat Testing Tools
-

While working at Eelzee Solutions, I assisted in building an automated testing application utilizing Behat and Node.js.

This involved building an interactive tool via Node.js to run via command line which can be used to discover and run specific tests based on specific criteria.

The testing utilized a custom framework that was built to help tightly integrate Drupal and easily create mock site data to assist in testing.

Finally a custom test reporting tool was built to help output desired metrics to CSV files.

Technology
Behat
PHP
Node.js
Javascript
Symfony
Camping Karaoke Website
-

A passion of mine which has been growing over the years is Karaoke, and not just Karaoke but the rather unique niche of Camping Karaoke.

This idea started out many years ago where it was a combination of a generator, a stereo, a laptop, and a stack of printed out pages with all of the available song titles. People would look through the pages and manually write out their song selections. I would then be in charge of manually creating a playlist song-by-song.

The next iteration involved putting fake mp3s of all of the song titles onto an iPod, passing the iPod around to have people add their songs to a playlist. This playlist would be imported, then a simple script would translate the playlist into a type of playlist the karaoke software would recognize.

The main issue with the previous approaches was that the entire list of chosen songs was completely randomized, which often cause an awkward situation. People who chose more songs than others often ended up performing multiple songs in a row, while those who picked fewer songs had to wait longer for their turn.

In 2015 I decided to go high-tech with this situation and utilize Drupal to create a website to organize the karaoke setup. Multiple users can scan QR codes to connect to the website which runs off of a Wifi hotspot. The site contains a list of all available songs so users can choose the songs they want to perform and whether they want to perform it earlier or later.

When it's showtime, the playlist is randomly generated in a way that ensures all performers are evenly spaced out and the songs are weighted by their earlier/later preference. Data is gathered on the chosen songs to create personalized pages for each user, which suggests new songs they might like, such as songs they haven't performed before by artists they have previously chosen.

This project has been very successful in simplifying the process of organizing the karaoke playlists, which allows me to enjoy the experience of Karaoke with minimal setup time. This has been an ongoing project and I have added features here and there over the years.

Client
Technology
PHP
Drupal
SQL
CSS
Development of Drupal Tools
-

While working at Eelzee Solutions, I assisted in building various Drupal tools that helped improve our workflow and efficiency.

These tools involved logic which consolidated common functionality across multiple sites as well as tools to help generate boilerplate code which helped increase development productivity.

Technology
Drupal
PHP
Symfony
SQL
Rainbow Concert Band Database
-

In order to help out someone I know in the Rainbow Concert Band, I volunteered to create an internal-facing administration site which assists the band's director in organizing the compositions the band works with. This site helps coordinate information on a vast amount of sheet music such as title, composer, genre, catalog numbers, as well as contextual information such as where the physical copies are stored and when the music was last performed.

The need for this administration site occurred from a previous iteration of the site which became inaccessible, and the only data which was able to be extracted was a CSV of the existing data. Using Drupal, a new admin site was created in order to import this data, organize existing textual names into relational entities, and provide a UI to easily add/update entries.

Technology
Drupal
PHP
Custom Business Software Development
-

While working at Eelzee Solutions, I assisted in development of custom business software for various clients in the automotive, construction, health & safety and service industries.

This involved research, planning, and development of additional custom features for the business workflow of existing sites as well as aiding in the development of new sites for new clients.

As well as developing functionality for the business software, I also was involved in developing automated testing for the new and existing features to help ensure the software runs smoothly and efficiently.

Technology
Drupal
PHP
Behat
Javascript
SQL
jQuery
CSS
Upgrading Drupal website from Drupal 7 to Drupal 8
-

While working at Eelzee Solutions, I assisted in helping upgrade and migrate a very large and intricate Drupal 7 site to Drupal 8.

For a standard Drupal 7 site this can be a trivial matter, but for one site in particular it was a very large undertaking due to the complexity of the site mechanics.

In order to accomplish this successfully, much of the existing logic was refactored ahead of time combined with the addition of robust automated testing which were compliant with both Drupal 7 and Drupal 8. This also involved complex migration logic to ensure the data was transferred over correctly and efficiently.

Technology
Drupal
PHP
Behat
SQL
dolnik.ca transition to Drupal
-

After many years with no changes, it was decided that a custom CMS wasn't cutting it anymore for this website. I decided to port the existing website, which the old version still remains at portfolio.dolnik.ca, to utilize Drupal instead.

This involved not only creating the data structures and importing the existing data, but also porting over the existing theme to work with Drupal's templating system.

Drupal not only helped improve the ease at which to add/edit new content, but also allowed for an increase in performance due to its powerful caching system.

Client
Technology
Drupal
Bootstrap
PHP
Playwright
Tags
Year-long Timelapse of Stadium Construction
-

In 2010 construction started on the new roof of BC place stadium in Vancouver and I decided to try at an ambitious project of capturing a timelapse animation of over a year and a half's worth of construction. Setting up a webcam at a friend's place across the street from the stadium, I created a simple program in Max/MSP to capture images at a varying intervals, and upload straight to my website.

I also added the ability to change the capture interval remotely, and set a different capture rate for daytime and night time. When the pictures were all taken (550,000 of them) I created a crude application in flash (which never left the prototype phase) that will load certain pictures and play them as a video with an adjustable date range or other features.

I also had ideas to filter out pictures with bad weather so I added code that reads a weather almanac website and adds that information over to the picture database, this information is also relayed over onto the timelapse player to give a sense of the weather at the time of each picture.

Client
Technology
Timelapse
Flash
PHP
SQL
MAX/MSP
dolnik.ca Home Page Update

When the public perception and presence of Adobe Flash was dwindling, the Flash-based home page of dolnik.ca needed an update. Utilizing recent web technology such as Html5, CSS3, and Greensock animation platform, I was able to recreate the animated time lapse mountain scenery of the Flash version, as well as update the look and feel of the clouds to add more realism. The scene shown is a videoscape of a mountain top setting based off of a picture of myself during a hike up one of the local mountains around Vancouver.

Client
Technology
GSAP
Timelapse
jQuery
CSS
PHP
Photoshop
dolnik.ca Website
-

After 5+ years of having a flash-only based website, dolnik.ca was due for an upgrade. After having a good look around at what the current web practices are, I decided to re-create dolnik.ca and go with a mobile-first based responsive design using Twitter's open source Bootstrap framework as a foundation.

In the name of reusability and for the ease of future updates, I ensured that most of the pages are highly templated, and pull their content from a simple custom CMS using a combination of PHP and MySQL. As for the general design I looked towards a flat and simple, yet textured layout, with a parallax background with a layer in front that resembles a scratched-up frosted glass.

Client
Technology
PHP
SQL
LESS
jQuery
CSS
Javascript
Bootstrap
HTML
Tags