desi
software developer
Hello, I'm Desi!
I reside in Los Angeles where I create apps for users of all ages and levels of website familiarity, with consumer UI/UX usability experience as priority.
I have experience working in both corporate structures, and agile startup environments -- quickly adapting to new technologies while producing responsive, maintainable code across both desktop and mobile platforms.
Email me: desaraegabrielle@me.com Github - Instagram
I reside in Los Angeles where I create apps for users of all ages and levels of website familiarity, with consumer UI/UX usability experience as priority.
I have experience working in both corporate structures, and agile startup environments -- quickly adapting to new technologies while producing responsive, maintainable code across both desktop and mobile platforms.
Email me: desaraegabrielle@me.com Github - Instagram
Duke University
Programming Fundamentals
Credential ID: GUMP7MPGSM2M
University of Michigan
Introduction to HTML5
Credential ID: 45ZGQ5798TET
Introduction to CSS3
Credential ID: AAW46EPRF77P
Interactivity with JavaScript
Credential ID: VY8DMWNY6CR6
Advanced Styling with Responsive Design
Credential ID: L3GRK2B8DCSW
Introduction to Structured Query Language (SQL)
Credential ID: R4XS7YKYD2JP
Building Database Applications in PHP
Credential ID: LHTDFP49ATUZ
Programming Fundamentals
Credential ID: GUMP7MPGSM2M
University of Michigan
Introduction to HTML5
Credential ID: 45ZGQ5798TET
Introduction to CSS3
Credential ID: AAW46EPRF77P
Interactivity with JavaScript
Credential ID: VY8DMWNY6CR6
Advanced Styling with Responsive Design
Credential ID: L3GRK2B8DCSW
Introduction to Structured Query Language (SQL)
Credential ID: R4XS7YKYD2JP
Building Database Applications in PHP
Credential ID: LHTDFP49ATUZ
Founded a female centric ad-free music magazine in 2015, Inspirer, which landed a distribution contract with Curtis Circulation and was available in stores like Barnes and Noble, Books a Million worldwide in 2017 - 2018.
Organized and was the keynote speaker of a Women in Tech and Music event in August 2019 attended by over 300 women. BMI, Women in Music and Girls in Tech were all sponsors of the event.
High social media marketing skills (what the current generation likes to call 'an influencer' in the tech space.)
Bilingual (Spanish)
Organized and was the keynote speaker of a Women in Tech and Music event in August 2019 attended by over 300 women. BMI, Women in Music and Girls in Tech were all sponsors of the event.
High social media marketing skills (what the current generation likes to call 'an influencer' in the tech space.)
Bilingual (Spanish)
Software Engineer, ToneDen - June 2019 - Present
Launched several new product features including Viral Presale Contesting, Weekly and Monthly Insights Reports for users, Campaign Breakdown Dashboards, Proactive Campaign Drafting and more. Enhanced existing features such as enabling multiple Spotify and Mailchimp audience exclusions, Eventbrite audience features, Unlock widget embeds, Facebook pages functionality, and more. Utilized several API's - Facebook, Spotify, Mailchimp, Eventbrite, Intercom, Amplitude. Duties included code reviewing other team members work and deploying to beta and production.
Technologies used: ReactJS, Node.js, Postgres/Postico SQL, API, Flux, Async, Sass
Senior Front End Engineer, ResortPass- May 2018 - May 2019
Currently leading the mobile first effort to refactor and refine codebase to be responsive. Actively creating and launching new features for users: highlights include "Waitlist," "Gift Cards" and more. Light backend work when needed.
Duties include managing overseas developers while also conducting meaningful and insightful code reviews for onshore team members. Led the decision to start implementing react-on-rails, working with companies like Shakacode to assure our team was fully prepared to transition to a new framework.
Technologies used: Ruby on Rails, SaSS, jQuery, Knockout.js, React, Bootstrap, ES5 while currently transitioning the codebase to ES6
Senior Web Developer, Vejo - August 2017 - May 2018
Created beautiful, responsive landing pages and features throughout the Vejo app - formerly known as Jooster. Created the first waitlist feature for the company, and was part of a 4 week fire drill to design and code the Vejo Care doctor/patient portal while using React - a programming language the team had to learn in 2 weeks to begin building the feature.
Full cycle engineering development including design concept, coding and testing. Worked with other departments within Vejo, such as marketing and business development, to collaborate on design, features and deliverable timelines.
...see more?
Launched several new product features including Viral Presale Contesting, Weekly and Monthly Insights Reports for users, Campaign Breakdown Dashboards, Proactive Campaign Drafting and more. Enhanced existing features such as enabling multiple Spotify and Mailchimp audience exclusions, Eventbrite audience features, Unlock widget embeds, Facebook pages functionality, and more. Utilized several API's - Facebook, Spotify, Mailchimp, Eventbrite, Intercom, Amplitude. Duties included code reviewing other team members work and deploying to beta and production.
Technologies used: ReactJS, Node.js, Postgres/Postico SQL, API, Flux, Async, Sass
Senior Front End Engineer, ResortPass- May 2018 - May 2019
Currently leading the mobile first effort to refactor and refine codebase to be responsive. Actively creating and launching new features for users: highlights include "Waitlist," "Gift Cards" and more. Light backend work when needed.
Duties include managing overseas developers while also conducting meaningful and insightful code reviews for onshore team members. Led the decision to start implementing react-on-rails, working with companies like Shakacode to assure our team was fully prepared to transition to a new framework.
Technologies used: Ruby on Rails, SaSS, jQuery, Knockout.js, React, Bootstrap, ES5 while currently transitioning the codebase to ES6
Senior Web Developer, Vejo - August 2017 - May 2018
Created beautiful, responsive landing pages and features throughout the Vejo app - formerly known as Jooster. Created the first waitlist feature for the company, and was part of a 4 week fire drill to design and code the Vejo Care doctor/patient portal while using React - a programming language the team had to learn in 2 weeks to begin building the feature.
Full cycle engineering development including design concept, coding and testing. Worked with other departments within Vejo, such as marketing and business development, to collaborate on design, features and deliverable timelines.
...see more?
Technologies used: Node,js, Shopify eCommerce, SaSS, jQuery, Bootstrap, Lottie,
React, ES5 and ES6
Full Stack Web Developer, US MasterTech / Digital - July 2015 - August 2017
Developed many features and helped launch the oFlo app and created an entire, fully functional, CMS on the codeigniter framework with 2 other team members. Features I created included push notifications for users using the video aggregator,functions that allowed featured celebrities to upload their content on the CMS desktop version of oFlo.
I also built functions that allowed users to change their profile photos and information, downloadable CSV's with dynamic user content, designed and implemented landing pages throughout the app for content listings, wrote various sql query calls and subsequent Ajax callbacks and more.
Technologies used: PHP, Codeigniter, jQuery, Bootstrap, MySql, API Ajax, ES5
Front End Developer, Stratosphere - 2013- 2015
Designed, built, and maintained the ecommerce app for the company, using PHP and jQuery on CMS platforms Drupal, Wordpress and Magento. Evaluated code to ensure that it was valid, properly structured, met industry standards and was compatibleacross all browsers, devices, or operating systems. Registered web sites with search engines to increase web site traffic and tracked traffic analytics.
Technologies used: PHP, jQuery, Bootstrap, Vanilla Javascript
Web Developer, Echo Lake Web Design - 2011 - 2017
Developed and designed websites using PHP and Javascript frameworks for bloggers,ecommerce platforms and more.
Web Developer, Four Two Five Films - 2006 - 2010
Created full cycle websites with functional CMS for celebrity and film clientele which included full cycle website management and social media marketing. Successfully launched official websites for celebrity clientele of the film company as well as monitored their official social media platforms.
Technologies used: PHP, jQuery, Bootstrap, Vanilla Javascript
...see less!
Full Stack Web Developer, US MasterTech / Digital - July 2015 - August 2017
Developed many features and helped launch the oFlo app and created an entire, fully functional, CMS on the codeigniter framework with 2 other team members. Features I created included push notifications for users using the video aggregator,functions that allowed featured celebrities to upload their content on the CMS desktop version of oFlo.
I also built functions that allowed users to change their profile photos and information, downloadable CSV's with dynamic user content, designed and implemented landing pages throughout the app for content listings, wrote various sql query calls and subsequent Ajax callbacks and more.
Technologies used: PHP, Codeigniter, jQuery, Bootstrap, MySql, API Ajax, ES5
Front End Developer, Stratosphere - 2013- 2015
Designed, built, and maintained the ecommerce app for the company, using PHP and jQuery on CMS platforms Drupal, Wordpress and Magento. Evaluated code to ensure that it was valid, properly structured, met industry standards and was compatibleacross all browsers, devices, or operating systems. Registered web sites with search engines to increase web site traffic and tracked traffic analytics.
Technologies used: PHP, jQuery, Bootstrap, Vanilla Javascript
Web Developer, Echo Lake Web Design - 2011 - 2017
Developed and designed websites using PHP and Javascript frameworks for bloggers,ecommerce platforms and more.
Web Developer, Four Two Five Films - 2006 - 2010
Created full cycle websites with functional CMS for celebrity and film clientele which included full cycle website management and social media marketing. Successfully launched official websites for celebrity clientele of the film company as well as monitored their official social media platforms.
Technologies used: PHP, jQuery, Bootstrap, Vanilla Javascript
resortpass
Checkout Confirmation w/ coupons and taxes
Technologies Used: KnockoutJS + Ruby on Railsjavascript
self.calculateGrandTotal = function(credits, discountAmount, couponType, taxes_coupon) {
var result = self.bookingTotal();
var discount = self.discountPrice();
result = result - discount;
// 100% resort pass coupon function
if(discountAmount == 100 && couponType == 'resort_pass') {
var taxes = Math.min.apply(Math, [ result, self.taxTotal() ]);
taxes = Number(self.taxTotal()).toFixed(2);
// if the user has credits + apply them to taxes
if(credits > 0){
var credit_applied_to_taxes = Math.min(credits, taxes).toFixed(2);
self.userCredit(credit_applied_to_taxes);
var unpaid_taxes = taxes - credit_applied_to_taxes;
return self.grandTotal(unpaid_taxes.toFixed(2));
}
return self.grandTotal(taxes);
}
// 100% hotel coupon function
else if (discountAmount == 100 && couponType == 'hotel') {
return self.taxTotal(0) && self.grandTotal(0) && self.userCredit(0);
}
// hotel coupon that is not 100% & also a user has credits to apply sometimes
else if(couponType =='hotel' && discountAmount != 100 && (typeof taxes_coupon !== 'undefined')){
var taxes = Math.min.apply(Math, [ result , taxes_coupon]);
result = result + (taxes);
var applied_credits = Math.min.apply(Math, [ result, self.userCredit() ]);
result = result - (applied_credits);
self.userCredit(applied_credits.toFixed(2));
self.taxTotal(taxes_coupon);
return self.grandTotal(result.toFixed(2));
}
// if the user has credits available to apply to a booking that has no total but isnt using a 100% coupon
else if(applied_credits > 0 && result == 0){
var taxes = Math.min.apply(Math, [ result, self.taxTotal() ]);
result = result + (taxes);
var applied_credits = Math.min.apply(Math, [ result, self.userCredit() ]);
result = result - (applied_credits);
var credit_applied_to_taxes = Math.min(applied_credits, taxes).toFixed(2);
var credits_fixed = applied_credits.toFixed(2);
self.userCredit(credits_fixed);
var unpaid_taxes = taxes - credit_applied_to_taxes;
return self.grandTotal(unpaid_taxes.toFixed(2));
} else {
// all other bookings + resortpass coupons that arent 100%
var taxes = Math.min.apply(Math, [ result, self.taxTotal() ]);
result = result + (taxes);
var applied_credits = Math.min.apply(Math, [ result, self.userCredit() ]);
result = result - (applied_credits);
self.userCredit(applied_credits.toFixed(2));
self.grandTotal(result.toFixed(2));
}
}
view
|
<%= show_usd(@hotel) %> |
Tax
|
<%= show_usd(@hotel, {class: 'grandTotalCurrency'}) %> |
Credit Applied
|
$10<%= show_usd(@hotel, {class: 'userCreditCurrency'}) %> |
Grand Total
|
<%= show_usd(@hotel, {class: 'grandTotalCurrency'}) %> |
result
*use case: must add a product, then use coupon code SOCIAL19Average Star Reviews
Technologies Used: KnockoutJS + Ruby on Railsjavascript (for search page)
self.averageRating = function(avg_rating) {
return parseInt(avg_rating);
}
self.averageRatingHalfStar = function(avg_rating) {
avg_rating = parseFloat(avg_rating) - parseInt(avg_rating);
return avg_rating;
}
self.averageRatingBlankStar = function(avg_rating) {
avg_rating = parseFloat(avg_rating);
avg_rating = Math.ceil(avg_rating);
avg_rating = 5 - avg_rating;
return avg_rating;
}
view (on hotel details page)
result
*status: waiting for deploy to production ...see more?Gift Cards
Technologies Used: jQuery + Ruby on Railsresult
*use case: must register to go through gift card purchase flowWaitlist
Technologies Used: KnockoutJS + Ruby on Railsjavascript
self.getAvailabilityText = function(adultQuantity, childQuantity, allowAdult, allowChild) {
// Return Unavailable if both allowChild and allowAdult is disabled
if (allowChild != null && allowAdult != null) {
if (!(allowChild || allowAdult)) {
return "Unavailable";
}
}
if (self.selectedDate()) {
// Date is selected
if (adultQuantity != null || childQuantity != null) {
// Both adult and child have no stock
if (self.checkUnavailableCondition(adultQuantity, childQuantity, allowAdult, allowChild)) {
return "Unavailable";
// Adult is out of stock but child is in stock
} else if (adultQuantity <= 0 && childQuantity > 0) {
return '';
// Adult is close to getting out of stock
} else if (adultQuantity < 5 && allowAdult) {
return ('only ' + adultQuantity + ' left');
}
}
} else {
// Date is not selected
if (adultQuantity <= 0 && childQuantity <= 0) {
return "Unavailable";
}
}
}
self.getAvailabilityClass = function(adultQuantity, childQuantity, allowAdult, allowChild) {
if (adultQuantity != null || childQuantity != null) {
// Both adult and child have no stock
if (self.checkUnavailableCondition(adultQuantity, childQuantity, allowAdult, allowChild)) {
return "Unavailable";
// Adult is out of stock but child is in stock
} else if (adultQuantity <= 0 && childQuantity > 0) {
return '';
// Adult is close to getting out of stock
} else if (adultQuantity < 5 && allowAdult) {
return ('only-left');
}
}
}
self.getWaitListText = function(adultQuantity, childQuantity, allowAdult, allowChild) {
// Return Join the Waitlist if both allowChild and allowAdult is disabled
if (allowChild != null && allowAdult != null) {
if (!(allowChild || allowAdult)) {
return "Get on the Waitlist";
}
}
if (self.selectedDate()) {
// Date is selected
if (adultQuantity != null || childQuantity != null) {
// Both adult and child have no stock
if (self.checkUnavailableCondition(adultQuantity, childQuantity, allowAdult, allowChild)) {
return "Get on the Waitlist";
// Adult is out of stock but child is in stock
} else if (adultQuantity <= 0 && childQuantity > 0) {
return '';
}
}
} else {
// Date is not selected
if (adultQuantity <= 0 && childQuantity <= 0) {
return "Unavailable";
}
}
}
self.getWaitListClass = function(adultQuantity, childQuantity, allowAdult, allowChild) {
if (adultQuantity != null || childQuantity != null) {
// Both adult and child have no stock
if (self.checkUnavailableCondition(adultQuantity, childQuantity, allowAdult, allowChild)) {
return "waitlist-button";
// Adult is out of stock but child is in stock
} else if (adultQuantity <= 0 && childQuantity > 0) {
return ''; }
}
}
view
result
*use case: product must be sold out or unavailable to see waitlistvejo (formerly Jooster)
check back in....a couple hours :)