About my Coding Skills

HTML, CSS and JavaScript coding

HTML & CSS skills

I have been coding HTML (and CSS) for almost 20 years (since 1998). I worked for a year and a half doing HTML and CSS for Design Firms in Manhattan using the new table-less layout techniques. The quality of my code was excellent, especially due to my understanding of how Website back end coding is done. I am now loving the power and cross-platform functionality of SASS and LESS. I am also enjoying HTML5 and CSS3 features that have enhanced and simplified Web Development.

Code sample and Demo

Please note that this website is coded to be responsive using just a little CSS code. Please check it out. Feedback is welcome, as I always endeavor to improve my work.

JavaScript

I have been also coding Javascript for about 20 years (since 1998). I originally used pure JavaScript to manipulate the DOM in Internet Explorer and Netscape. I later used the Prototype and Scriptaculous libraries to have better cross browser code. I got on the AJAX bandwagon when it first came out. I have been using jQuery lately for my cross browser Javascript Library.

I have come to love the beauty and power of JavaScript (sorry if this offends you). Recently, there have been major enhancements to Javascript, including server-side Javascript with Node, functional orientation with Underscore.js and the beauty of CoffeeScript. I believe that JavaScript has come of age, and will be used in browsers for quite a long time.

Ruby on Rails projects

PARLO Tracker

Since I started working at The 21st Partnership for STEM Education, I have been maintaining and enhancing the Tracker website written in Ruby on Rails. This software is a Learning Outcome Management System, so that learning outcome based education can keep track of them (to keep track of what the student learns, not what grade they get in a course). We enhanced tracker so that it had a better user interface and good looking responsive layout. Much of my time recently has been developing procedures so staff could do all data loading procedures and the new year rollover procedures, as well as provided enhanced dashboards for the various user types.

Demo

Because this software is not open sourced, I cannot demonstrate any code that I have developed for it. You can see the site working on a demo system with student login: eth_student9/password, teacher login: bteacher1/password. Note: the testing student Aaron Ortiz in in the teacher's Biology - Section 0

OAuth 2 prototype coding

I have some prototype code that I developed that can provide some insight as to the quality of my coding skills. There is the possibliity that 21pstem will need to be able to interface with a variety of Document Management Systems (DMS) in the Tracker software. Since I have been working part time, I have spent some time developing a prototype for this on my own time. It is based upon using the standard Devise gem for user authentication to the system, and allows the user to get access to files in more than one document system using OAuth2. Note: I am not using OAuth2 to authenticate against against another system like facebook (like so many do), but as an authorization system to resources such as a DMS. I use the omniauth gem, and the omniauth-google-oauth2 gems to authorize to google, and google-api-client for accessing the files on google drive. The intention would be to add other providers to give access to document systems such as Microsoft 365, etc.

Code sample

Since this is a prototype involving document security, I do not have it running on the internet. If you are interested in seeing the code or trying to run it locally on your computer please go to OmniAccess repository on github. The readme should have sufficient instructions to install it locally (if you have issues, please let me know).

Davis Bacon Act - Retirement Fund accounting.

In 2006, I created a Ruby on Rails site to manage monthly deposits to a Retirement Fund. This was needed, because the client does federal work, and wanted to place the required pay difference into the employee's retirement fund. It was coded so that if the accounting period changes, all future accounting period activity is ignored and adjustments may be made, to ensure it ties out with the accounting system. The client has continued to using this, to this day. During a recent upgrade to their Microsoft Servers, I moved the system to a new server, and at the same time, upgraded the software from Rails 2 to Rails 4 (This software is stable, and I have only needed to touch this software during system updates). Note: this is the project that got me to love Ruby on Rails, because I could create a website with automated testing built in, in one third the time it would take to create one in Java.

Code sample

If you think that you might have the need for this specialized accounting software, please let me know, as I can customize the code if needed, and my client can help train you on the use of it. I used to have a demo site running on heroku, but I have not kept that site up and running, but will get going again if there is interest. If you review the Davis Bacon 401k Repository Code on Github, please keep in mind that it was developed with the coding standards of 10 years ago. If you are interested in trying to run the code locally on your computer please let me know, and I will be sure to update the Read Me (note it is the default from Rails 1) to at least include installation instructions.

Estimation System

I developed this table driven quote/estimation system so my client could generate quotes for their business. In all fairness, I told the client that I had seen two other estimation systems fail, due to the wide differences between the approaches of the salespeople. They chose to continue to have it developed. The hopes was that the system was table driven would be flexible enough. The driving force behind this was so that by being able to match the details of a quote to the actual costs, the estimates could become more accurate and help the company with tight margins.

Code sample

The estimates are table driven, and involves a fairly complex structure of tables to be able to generate them. I used to have a demo site running on heroku, but I have not kept that site up and running, but will get going again if there is interest. If you review the tws_estimation Repository Code on Github, please keep in mind that if this ever becomes used, I will spend the time to refactor the extremely complex view of the estimation entry page. If you are interested in trying to run the code locally on your computer please let me know, and I will be sure to add installation instructions to the read me.

Other Skills

Database design and SQL coding.

I have been designing and Developing SQL and relational databases for over 20 years. I have used a wide variety of databases (MySQL, PostgreSQL, MS SQL Server, Oracle, and others), and have written a lot of SQL (Structured Query Language), designed databases with a good balance between normalizing and denormalizing the tables, and have converted databases to new structures, ensuring the data is properly prepared for the conversion (scrubbing data).

Gathering requirements from users.

Though I am not a Business Analyst, I have have a good general understanding of business needs (I have an MBA), and I have a lot of experience working with clients to ensure the website is excellent and meets their needs.

Usability eXperience (UX)

Though I am not a UX Designer, I have have worked with them in the past, and consider UX a part of requirements gathering. I was asked to present a topic to Rails Girl Philly a few years ago, and chose UX, because it is an important aspect of web development. Please see the outline of my presentation on my Planning and Implementing Websites Process

Developing automated tests

After starting to use tests in 2006 for a Ruby on Rails project, I have come to value the importance of coding in parallel with the tests. When all coding is done in relation to tests, the tests are improved, and there is assurances that the code meets the requirements of the tests. The better the tests, and the more the code is 'covered' by tests, the safer it is to make changes to software without unforseen problems.