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?
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

Average 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
