Took the test on Friday February 14th 2014 and passed it. I now hold all certification (again). Not that it means anything but i like taking those kind of tests to keep myself up-to date and see if i can pass them. This one was probably the hardest one i took between the others, Mainly due to the fact that the 5.5 new study guide has lots of errors in it. But i’m pleased overall of taking it an passing. Since i took 3 before it cost me $125 instead of the regular $195.


I’ve released the current state of the Yii eCommerce platform. The only thing that was worked on so far was the Admin section so there is no frontend to the application. for more information please visit Github:

Screen Shot 2014-02-05 at 4.57.40 PM

I’ve been working full time for a company in the real estate industry for nearly two years now. As the senior developer i’d had the opportunity to use and experience with various technologies, services and tools that i haven’t used before. I’ve developed the entire company software, tools they use and the iPhone App that is available for free on the Apple App Store.

When i started working back in July 2012 they hired me after they acquired a software they wanted to use that was poorly coded, used several different frameworks along with custom scripts and native PHP which made everything a big mess, not to mention the UI and design was horrible. since from a financial standpoint, timeframes and deadlines i couldn’t start from scratch so we had to use the software as is, just fix and rebuild as the staff was working on it while trying to write good clean separated code as we moved forward.

I’ll list some of the pages that were redesigned and rebuilt in order to make a better user experience and a better application workflow overall.

Some info about the technologies being used:

  • jQuery
  • Bootstrap
  • PhoneGap (HTML5, JS, CSS, Jquery Mobile)
  • PHP 5.4
  • Yii Framework (API)
  • MySQL
  • AWS (EC2, RDS, DynamoDB, SES, SQS, S3, ELB, IAM, ElastiCache, CloudFront)


  • 2 Large EC2 Instances
  • 1 RDS database 1 read replication (> 10 Million Records and > 11 GB)
  • 3 S3 Buckets (over 1TB of files)
  • ~50,000 Emails sent monthly
  • 35 Cron jobs
  • 1 developer
  • 8,666 Github Commits (Started May 29 2012)
  • 20 Months, 3,200 hours

Order Page

The original order page was built in 3-4 different pages, meaning the user was to fill the first page, click continue and the order id was created and the basic info was set, then they’ll move to the second page for some more info, third page is the payment info and forth is the order completion message.

The new redesign is a single page, that uses bootstrap, wizard and ajax save and validation on a single page. Each step the data is validated and saved if the page refreshes the user goes back where he last left of.







Order Management & view

The staff needed to manage and make sure each order is being updated and completed in time. each update involved a log entry, in some cases a phone call and an email. The design for the old application management screen was plain, not user friendly and usually things were not working as they should’ve.

The new look on the other hand is designed for readability, user experience and easier handling for the staff for each order (New style includes a lot more features that will be discussed shortly).




Screen Shot 2014-02-05 at 4.59.01 PMScreen Shot 2014-02-05 at 5.01.46 PM



Other Features:

Currently Viewing & Last Viewed

With more than one staff member usually taking care of the same order it often occurs that one staff member will be working on the same file at the same time, causing multiple emails and phone calls to the same client. We’ve added the last viewed section on the middle left and currently viewing underneath it to show who last viewed this file and when and who is currently viewing it. If someone enters the file a little Notification at the top right of the screen will appear notifying the user who just entered this order and is viewing it. This also applies to clients entering the order on their own dashboard.

Screen Shot 2014-02-05 at 5.01.15 PM


 Auto Assignment Dashboard

There was a need to create a system that will assign each staff member the order that he is supposed to work on right now and the next one in line. each order placed in line is based on certain parameters, if the order is currently viewed and worked on by another staff member it will not show up in the auto assignment (for example), each staff can see how many he has worked on today, how many are left, other staff members working on what orders and some stats on times that it took to work on a certain order and total time worked on orders today. At the bottom of the order screen they can set when this file should be revisited.

Screen Shot 2014-02-05 at 5.01.28 PMScreen Shot 2014-02-05 at 4.59.01 PM



Activity Log

The activity log is all log messages added to each order, staff members can add log entries, emails sent and received regarding this files are also logged and can be viewed by clicking the linkable title, if a client send a support ticket it will also log that. if someone creates an activity log while a staff member is viewing the order page the activity log will refresh and a little notification at the top page will show notifying the user of a new X activity logs. they can also filter them based on certain pre-made filters (show all, show only client, show only emails, show only yours etc…)

Screen Shot 2014-02-05 at 5.01.46 PM



Active Users & Active iPhone App Users

We need to know who was using the website at any given time, staff members and clients. we also wanted to log all the activity and usage on the mobile application, so we created the active users page to do just that.

Screen Shot 2014-02-05 at 5.04.52 PMScreen Shot 2014-02-05 at 5.05.12 PM



Calendar & Admin Dashboard Notifications

Each staff member can create their own individual private events in the calendar, they can also create public events and select who will see that even in their calendar. on the day of the event they receive a notification and the calendar tab is highlighted red.

Screen Shot 2014-02-05 at 5.04.10 PMScreen Shot 2014-02-05 at 5.03.35 PM

Social Notifications

Recent addition was the social alert navigation bar, which basically shows any new alerts added for this staff member. when someone assigns a support ticket, creates a log entry with the staff member name linked it will create an alert to let the staff member know.

Screen Shot 2014-02-05 at 4.57.40 PM

Assignment Page

In order to provide the best results the assignment page was rebuilt and designed to make the assignment process easier. each order will show the closest X appraisers to the property with useful information for the engager to determine who to assign this to by calling or sending emails/invites to the appraisers.

Screen Shot 2014-02-05 at 5.04.26 PM



We’ve built an API so third party companies can integrate with our software and service. we also use the same API for the iPhone application we’ve built.

photofun-184061529 photofun-1881615018 photofun-1881615030 photofun-1840512626

Those changes and hundreds others make the daily task of managing and running the company an easier task. Some of the features included can be seen by just looking at the Admin Dashboard.


Screen Shot 2014-01-04 at 4.35.36 PM

A generic admin theme built with Bootstrap 3.x free for both personal and commercial use.

This is still a work in progress.


  • Login
  • Admin Dashboard (Tables, Statistics, Chart, Media Gallery)
  • Full Calendar (Viewing calendar, adding events, dragging events)
  • Statistics & Charts (Multiple examples of Pie, Bar, Line charts using Morris.js, knob.js, jquery flot, easypiechart)
  • Buttons & Icons
  • WYSIWYG & HTML 5 Editors
  • Forms & Wizard
  • Tables & Bootstrap dataTables
  • UI & Interface Elements (Modals, Popovers, Tooltips, Alerts, Notifications, Labels, Progress Bars)



Zend announced the release of the PHP 5.5 Certification exam. This brings the PHP 5.3 exam to an end of life by December 31st. I am planning on taking the exam in the next couple of months. I’ll spend these couple of months reading and studying all the new features and changes since 5.3 . Here is the list of topics listed in the Zend Certification Website:


Exam Information

PHP Basics Functions Data Format & Types
  • Syntax
  • Operators
  • Variables
  • Control Structures
  • Language Constructs and Functions
  • Namespaces *
  • Extensions
  • Config
  • Performance/bytecode caching *
  • Arguments
  • Variables
  • References
  • Returns
  • Variable Scope
  • Anonymous Functions, closures *
  • XML Basics
  • SimpleXML
  • XML Extension
  • Webservices Basics
  • SOAP
  • JSON *
  • DateTime *
  • DOMDocument
Web Features Object Oriented Programming Security
  • Sessions
  • Forms
  • GET and POST data
  • Cookies
  • HTTP Headers
  • HTTP Authentication
  • HTTP Status Codes *


  • Files
  • Reading
  • Writing
  • File System Functions
  • Streams
  • Contexts
  • Instantiation
  • Modifiers/Inheritance
  • Interfaces
  • Exceptions
  • Autoload
  • Reflection
  • Type Hinting
  • Class Constants
  • Late Static Binding
  • Magic (_*) Methods
  • Instance Methods & Properties
  • SPL
  • Traits *
  • Configuration
  • Session Security
  • Cross-Site Scripting
  • Cross-Site Request Forgeries
  • SQL Injection
  • Remote Code Injection
  • Email Injection
  • Filter Input
  • Escape Output
  • Encryption, Hashing algorithms
  • File uploads
  • PHP Configuration
  • Password hashing API *
Strings & Patterns Databases & SQL Arrays
  • Quoting
  • Matching
  • Extracting
  • Searching
  • Replacing
  • Formatting
  • PCRE
  • Encodings
  • SQL
  • Joins
  • Prepared Statements
  • Transactions
  • PDO
  • Associative Arrays
  • Array Iteration
  • Array Functions
  • SPL, Objects as arrays *
  • Casting


As before i’ll probably publish posts in my blog as i walk through those topics myself. It helps me learn the subjects faster.


Screen Shot 2013-06-17 at 1.23.10 PM

Follow @gabrielva

PHP Wrapper to post api calls to the first data payment processor.

Supports all transcation types.
Supports Transarmor Token for charging credit cards more than once without storing the actual card number.



Pre Auth


Purchase with TransArmor Token

Pre Auth Complete



Github Repository

© Vadim Vincent Gabriel Follow @gabrielva 2013

Screen Shot 2013-04-06 at 3.47.33 PM

I’ve started this project to get familiar with Backbone.js and so far it’s working. I’ve recently fixed the bug where the Issues button was not working after creating an issue and added a new feature: Issue Statuses. The installation process is very simple you just need to fork the project import the schema.sql file and update the db settings under protected/config/main.php.

A screenshot is attached to give you an idea on how this project looks. Next features planned:

  1. Version Management
  2. Manage Statuses (Add/Edit/Delete)
  3. Adding Milestones
  4. Progress bar for issues
  5. Projects
Screen Shot 2013-03-31 at 5.25.41 PM

Twitter Bootstrap Wizard supports jQuery Validation plugin by default, an example was added to demonstrate a simple case when a form needs to be validated in two different steps.

Example Code:

$(document).ready(function() {
  	var $validator = $("#commentForm").validate({
		  rules: {
		    emailfield: {
		      required: true,
		      email: true,
		      minlength: 3
		    namefield: {
		      required: true,
		      minlength: 3
		    urlfield: {
		      required: true,
		      minlength: 3,
		      url: true
	  		'tabClass': 'nav nav-pills',
	  		'onNext': function(tab, navigation, index) {
	  			var $valid = $("#commentForm").valid();
	  			if(!$valid) {
	  				return false;
Screen Shot 2013-03-31 at 4.35.12 PM

Latest Twitter bootstrap version adds five new methods. You can now do the following:


// Disable step
$('#disable-step').on('click', function() {
$('#rootwizard').bootstrapWizard('disable', $('#stepid').val());
// Enable step
$('#enable-step').on('click', function() {
$('#rootwizard').bootstrapWizard('enable', $('#stepid').val());
// Remove step
$('#remove-step').on('click', function() {
$('#rootwizard').bootstrapWizard('remove', $('#stepid').val(), true);
// Show step
$('#show-step').on('click', function() {
$('#rootwizard').bootstrapWizard('display', $('#stepid').val());
// Hide step
$('#hide-step').on('click', function() {
$('#rootwizard').bootstrapWizard('hide', $('#stepid').val());

Screen Shot 2013-03-27 at 8.48.08 AM

Bootstrap Admin Theme

A generic admin theme built with Bootstrap free for both personal and commercial use.

This is still a work in progress.


  • Login
  • Admin Dashboard (Tables, Statistics, Chart, Media Gallery)
  • Full Calendar
  • Statistics (Multiple examples of Pie, Bar, Line charts)
  • Buttons & Icons
  • UI & Interface Elements (Modals, Popovers, Tooltips, Alerts, Notifications, Labels, Progress Bars)




PHP Console Progress Bar

This class creates and maintains progress bars to be printed to the console. This file is a replica of the ezComponents console progress bar class (@link allows a developer to just use the console progress bar features without the rest of the classes saving all the extra files and classes.

Available Options

  • barChar: Processed progress bar char (Default ‘=’)
  • emptyChar: Empty progress bar char (Default ‘-’)
  • formatString: Progress bar formatted line that actually displays the processed number, step count, total count, percentage etc.. (Default ‘%act% / %max% [%bar%] %fraction%%’)
  • fractionFormat: Progress bar fraction format (Default ‘%01.2f’)
  • progressChar: Progress bar progress leading char (Default ‘>’)
  • redrawFrequency: Redraw/Update the progress bar every X step(s) (Default: 1)
  • step: Progress bar each advance call will advance X step(s) (Default: 1)
  • width: Progress bar width (Default 100)
  • actFormat: Progress bar current step format (Default ‘%.0f’)
  • maxFormat: Progress bar maximum step format (Default ‘%.0f’)
  • max: Progress bar maximum value (When it reaches 100%) (Default 100)


< ?php
// initiate the class with the maximum value being 100
$progress = new ConsoleProgressBar(100);
// Setting options are done using one of the following:
// $progress = new ConsoleProgressBar(100, array('step' => 5, 'barChar' => '+'));
// $progress->setOptions(array('step' => 5, 'barChar' => '+'));
// $progress->setOptions('step', 5);
// $progress->options = array('step' => 5);
// Start the progress bar before the actual actions are taken place
// This is just an example that's why a simple look is being used
// in real world this can be a db record set process or any other long operation that is being
// done via the cli
for ($i = 0; $i < = 100; $i++) {
// Do the actual processing here
// .....
// .....
// .....
// Advance one step by default
// you can pass a second argument $step which will advance that number of steps
// For this example we will just sleep for a second
// Call finish at the end to make sure the bar goes to 100% if it didn't

Fork On Github

Screen Shot 2013-03-17 at 4.07.51 PM

Backbone.js Issue Tracker

This is a bug/issue tracker written in Backbone.js, jQuery, Underscore.js, Bootstrap and Yii Framework as the backend.

Project is under development and any contribution is welcomed and appricated.

Installation Instructions

  • Fork Repository
  • Change the DB settings under application/protected/config/main.php
  • Import the schema.sql
  • Lunch the appliation through the browser navigating to the index.html file


Github Repository

Bootstrap admin theme was updated today and now includes the following pages:

  • Login
  • Admin Dashboard (Tables, Statistics, Chart, Media Gallery)
  • Full Calendar
  • Statistics (Multiple examples of Pie, Bar, Line charts)
  • Buttons & Icons
  • UI & Interface Elements (Modals, Popovers, Tooltips, Alerts, Notifications, Labels, Progress Bars)


Live demo:

A generic admin theme built with Bootstrap free for both personal and commercial use.

This is still a work in progress.


  • Login
  • Admin Dashboard


Screen Shot 2013-02-03 at 5.38.18 PM