Explore Gorgeous Hawai‘i Homes in Peter Vincent Architects’ New Book
Design inspiration abounds in “Island Homes: Casual Elegance in Design.”

Photo: Andy Landgraf
Releasing this month, Island Homes: Casual Elegance in Design explores 21 residential and commercial projects by acclaimed Honolulu architecture and interior design firm Peter Vincent Architects. The glossy 248-page hardcover also tracks the design journey of founder-managing partner Peter N. Vincent, who shares behind-the-scenes tidbits from the builds.
SEE ALSO: New Book Dedicated to Screen Blocks in Hawai‘i
-
1/3
Photo: Matthew Millman
-
2/3
Photo: Matthew Millman
-
");
$spagination = flexSlider.find(".spagination");
SPagination.Init($spagination.get( 0 ), {
size: slide_obj.count, // pages size
page: 1, // selected page
step: 3, // pages before and after current
cb: function(p){
flexSlider.flexAnimate(p-1, true);
}
});
}
}
}
function gtx_gallery_slide_before(slide_obj){
var slide=slide_obj.animatingTo;
$active_slide=$all_slides.eq(slide) ;
slideshow_ad_loaded = false;
var current_html = $active_slide.children(".gtx-ad-container").html();
if (current_html) {$active_slide.children(".gtx-ad-container").html(current_html.trim())}
gtx_track_slide( slide_obj );
changeURL(parseInt($active_slide.attr("data-attachment_id")));
//THUMBS SYNC - PAGINATED THUMBNAIL NAVIGATION
if($thumbs!=="" && navigation == "paginated_thumbs"){
var right_item=$slider.find(".slides li[data-i="+(slide +1 )+"]").attr("data-i-only-pics")
if( right_item!= ""){
$thumbs.find("li.gtx-thumb-img").removeClass("flex-active-slide");
$thumbs.find("li.gtx-thumb-img[data-i="+(slide +1 )+"]").addClass("flex-active-slide");
$page=$thumbs.find(".slides>li").has("li[data-i="+(slide +1 )+"]");
$thumbs.flexAnimate($page.index(), true);
}
}
}
function gtx_gallery_slide_after(slide_obj){
var slide=slide_obj.animatingTo;
$active_slide=$all_slides.eq(slide) ;
if($active_slide.hasClass("gtx-ad-slide")==1){
if ($active_slide.find('iframe').length === 1) {
$active_slide.find('iframe')[0].remove();
}
$slider.delay(100).queue(function(){
$(this).addClass("gtx-gallery-loading").dequeue();
});
$ad_container=$active_slide.children(".gtx-ad-container").first();
if ($($ad_container).html().length < 1) {
addAdInto($ad_container,{slide:slide_obj.animatingTo +1});
}
//Force arrows to be shown when on mobile and when the slide is an ad
if(mobile_mode){
$slider.find(".flex-direction-nav").show(2000)
}
} else {
//Force arrows to hide when on mobile and when the slide is not an ad
if(mobile_mode){
$slider.find(".flex-direction-nav").hide("fast")
}
}
//THUMBS SYNC
if($thumbs!=="" && navigation == "thumbnails"){
var right_item=$slider.find(".slides>li[data-i="+(slide +1 )+"]").attr("data-i-only-pics")
if( right_item!= ""){
$thumbs.find("li.gtx-thumb-img").removeClass("flex-active-slide");
$thumbs.find("li.gtx-thumb-img").eq(right_item -1 ).addClass("flex-active-slide");
$thumbs.flexAnimate(right_item-1, true);
}
}
if(typeof(googletag) != "undefined" && googletag !== null && googletag.pubads){
// Refresh ads within view
var tmp_now=new Date().getTime();
var last_refresh_diff= tmp_now - last_ad_refresh;
if(last_refresh_diff > 1000){
reset_ads_and_refresh();
last_ad_refresh=tmp_now;
}
}
//LAZY LOAD
range=5;
var $slides_to_hanle=$all_slides.slice(slide, slide + range +1);
if(slide - range >= 0){
$slides_to_hanle=$.merge($slides_to_hanle, $all_slides.slice(slide - range, slide ));
}else{
$slides_to_hanle=$.merge($slides_to_hanle, $all_slides.slice(0, range ));
$slides_to_hanle=$.merge($slides_to_hanle, $all_slides.slice(range * -1 ));
}
if(slide + range >= $all_slides.size()){
//handle first slides
$slides_to_hanle= $.merge($slides_to_hanle, $all_slides.slice(0,range));
}
$slides_to_hanle.find(".gtx-image-container[data-background]").each(function () {
var src = $(this).attr("data-background");
$(this).css("background-image", "url("+src+")").removeAttr("data-background");
});
adjustNavHeight();
if( typeof SPagination !== "undefined" && flexSlider.find(".spagination").length>0 ){
if(SPagination.page != slide+1){
SPagination.page = slide + 1;
SPagination.Start();
}
}
}
function reset_ads_and_refresh(){
if(!advanced_ad_refresh){
// if option is not enabled, refresh all ads, minus out of page ads
if(ads_to_refresh.length > 0){
googletag.pubads().refresh(ads_to_refresh);
}
return;
}
if(ads_to_refresh.length == 0){
return;
}
var newAds = [];
var fullAdsToRefresh = [];
for(var i = 0; i < ads_to_refresh.length; i++){
var adSlot = ads_to_refresh[i];
if(!ad_is_in_view(adSlot)){
// do not replace this ad, but store it so it can be refreshed when back in view
fullAdsToRefresh.push(adSlot);
continue;
}
if (adSlot.getSizes().length == 1) {
//Ad only has one ad slot define, skip and refresh all ads at the end
newAds.push(adSlot);
continue;
}
var slotId = adSlot.getSlotElementId();
var slotName = adSlot.getAdUnitPath();
var targeting = adSlot.getTargetingMap();
var slotWidth = adSlot.tn_width;
var slotHeight = adSlot.tn_height;
var slotX = adSlot.tn_positionX;
var slotY = adSlot.tn_positionY;
$('#'+slotId).css({minHeight: slotHeight+'px', minWidth: slotWidth+'px'});
var sizeMappingVar = googletag.sizeMapping().addSize([0, 9999999], [slotWidth, slotHeight]).build()
googletag.cmd.push(function() {
googletag.destroySlots([adSlot]);
})
googletag.cmd.push(function() {
var newAdSlot = googletag.defineSlot(
slotName,
[slotWidth, slotHeight],
slotId
).defineSizeMapping(
sizeMappingVar
).addService(
googletag.pubads()
);
if(targeting){
for (const [key, value] of Object.entries(targeting)) {
newAdSlot.setTargeting(`${key}`, `${value}`);
}
}
newAdSlot.tn_positionX = slotX;
newAdSlot.tn_positionY = slotY;
newAdSlot.tn_width = slotWidth;
newAdSlot.tn_height = slotHeight;
newAds.push(newAdSlot);
fullAdsToRefresh.push(newAdSlot);
});
}
//refresh all ads with new defined slots
googletag.pubads().refresh(newAds);
ads_to_refresh = fullAdsToRefresh;
}
var ads_to_refresh = [];
// set the ads we wish to refresh
function set_ads_to_refresh(){
var checkingAdsInVew = false;
if (typeof googletag === 'object' && typeof googletag.pubads === 'function'){
googletag.pubads().addEventListener('impressionViewable', function(event) {
// Out-of-page ads are not eligible for refresh
if(event.slot.getOutOfPage() === true){
return false;
}
var slotWidth = $('#'+event.slot.getSlotElementId() + ' iframe').width();
var slotHeight = $('#'+event.slot.getSlotElementId() + ' iframe').height();
event.slot.tn_positionX = $('#'+event.slot.getSlotElementId()).offset().left;
event.slot.tn_positionY = $('#'+event.slot.getSlotElementId()).offset().top;
event.slot.tn_width = slotWidth;
event.slot.tn_height = slotHeight;
if(ads_to_refresh.indexOf(event.slot) < 0){
ads_to_refresh.push(event.slot)
}
});
}
}
function ad_is_in_view(slot){
var wTop = $(window).scrollTop();
return slot.tn_positionY > wTop && slot.tn_positionY < $(window).height() + wTop;
}
$(window).load(function(){
set_ads_to_refresh();
})
function gtx_gallery_thumbs_set_backwards(){
backward_pos = $thumbs.find(".gtx-thumb-backward").position().left;
backward_width = $thumbs.find(".gtx-thumb-backward").width();
backward_right_pos = backward_pos + backward_width;
container_width = $thumbs.find(".flex-viewport").width();
fully_visible = backward_right_pos < container_width;
partially_visible = (backward_right_pos - container_width) < backward_width/3;
if(partially_visible){
$thumbs.find(".flex-next").hide(0);
}else{
$thumbs.find(".flex-next").show();
}
}
function gtx_gallery_thumbs_before(slide_obj){
if(slide_obj.count > 8){
gtx_gallery_thumbs_set_backwards()
}
}
function gtx_gallery_thumbs_after(slide_obj){
if(slide_obj.count > 8){
gtx_gallery_thumbs_set_backwards()
}
}
function gtx_gallery_paginated_thumbs_start(slide_obj){
gtx_gallery_paginated_thumbs_lazy();
if(false && slide_obj.count > 8){
$thumbs.find(".flex-control-nav.flex-control-paging").removeClass("flex-control-paging").addClass("g-pagination");
}
if(slide_obj.count > 8){
$thumbs.find(".flex-control-nav.flex-control-paging").hide().after("");
$pagination = $thumbs.find(".spagination");
SPagination.Init($pagination.get( 0 ), {
size: slide_obj.count, // pages size
page: 1, // selected page
step: 3, // pages before and after current
cb: function(p){
$thumbs.flexAnimate(p-1, true);
}
});
}
}
function gtx_gallery_paginated_thumbs_before(slide_obj){
var slide=(typeof slide_obj == "object" && slide_obj.animatingTo ? slide_obj.animatingTo : 0);
gtx_gallery_paginated_thumbs_lazy(slide_obj);
}
function gtx_gallery_paginated_thumbs_after(slide_obj){
var slide=(typeof slide_obj == "object" && slide_obj.animatingTo ? slide_obj.animatingTo : 0);
//THUMBS SYNC - Go to first slide of this batch
if($thumbs!=="" && navigation == "paginated_thumbs"){
var $active_slide=$slider.find(".slides>li.flex-active-slide");
var $active_thumb_page=$thumbs.find(".slides>li.flex-active-slide");
//Check if the current slide is within this thumb batch
if(!$active_thumb_page.find("li[data-i="+$active_slide.attr("data-i")+"]").size()){
first_thumb=$active_thumb_page.find("li").first().attr("data-i");
flexSlider.flexAnimate(first_thumb - 1, true);
}
}
if( typeof SPagination !== "undefined" && $thumbs.find(".spagination").length>0 ){
if(SPagination.page != slide+1){
SPagination.page = slide + 1;
SPagination.Start();
}
}
}
function gtx_gallery_paginated_thumbs_lazy(slide_obj){
var slide=(typeof slide_obj == "object" && slide_obj.animatingTo ? slide_obj.animatingTo : 0);
//LAZY LOAD THUMBS
if($all_thumbs!=="" && navigation == "paginated_thumbs"){
range=1;
var $slides_to_hanle=$all_thumbs.slice(slide, slide + range + 1);
if(slide - range >= 0){
$slides_to_hanle=$.merge($slides_to_hanle, $all_thumbs.slice(slide - range, slide ));
}else{
$slides_to_hanle=$.merge($slides_to_hanle, $all_thumbs.slice(0, range ));
$slides_to_hanle=$.merge($slides_to_hanle, $all_thumbs.slice(range * -1 ));
}
if(slide + range >= $all_thumbs.size()){
//handle first slides
$slides_to_hanle= $.merge($slides_to_hanle, $all_thumbs.slice(0,range));
}
$slides_to_hanle.each(function () {
$(this).find("img[lazy-src]").each(function () {
var src = $(this).attr("lazy-src");
if(!src) return;
$(this).attr("src",src).removeAttr("lazy-src");
$thumbs.find("img[lazy-src=\""+src+"\"]").attr("src",src).removeAttr("lazy-src");
});
});
}
}
function adjustNavHeight(){
imageHeight = flexSlider.find(".gtx-slide-img.flex-active-slide .gtx-image-container").outerHeight();
if(imageHeight > 0){
flexSlider.find(".flex-prev,.flex-next").css("top",Math.round(imageHeight/2));
}
}
var nextSlotId = 1;
function generateNextSlotName() {
var id = nextSlotId++;
return "adslot_" + id+"_"+Math.floor( Date.now() / 1000 );
}
function addAdInto(selector,options) {
try{
gtx_gallery_enable_dfp();
}catch(err) {
}
var slide=options.slide || -1;
var slotName = generateNextSlotName();
var ad_index = 0;
// Create a div for the slot
var slotDiv = document.createElement('div');
slotDiv.id = slotName; // Id must be the same as slotName
$( selector ).append( slotDiv );
try{
ad_index=$( selector ).closest(".gtx-ad-slide").attr("data-i-only-ads");
}catch(err) {
}
// Define the slot itself, call display() to
// register the div and refresh() to fetch ad.
googletag.cmd.push(function() {
slideshow_ad_loaded = true;
adslots[slotName] = googletag.defineSlot('/132916964,21750684002/honolulumagazine.com/architecture-design', [300, 250], slotName)
.addService(googletag.pubads())
.setTargeting("placement", "gallery")
.setTargeting("slide", slide)
.setTargeting("post", '734358')
.setTargeting("category", '["architecture-design","books","books-talks","from-the-magazine","homepage-latest-module","homepage-top-stories","style"]')
.setTargeting("galleryAdIndex", ad_index);
googletag.display(slotName);
googletag.sizeMapping().addSize( [0,0], [[300,250]])
googletag.pubads().refresh([adslots[slotName]]);
});
}
gtx_gallery_syncHash = function(path){
pic = "";
re = /pic\/?([0-9]+)\/?$/i;
if(!path && window.location.hash && window.location.hash.match(re)) path = window.location.hash;
if(!path && window.location.pathname && window.location.pathname.match(re)) path = window.location.pathname;
if(path){
matchslide = path.match(re);
if(matchslide && matchslide[1]>0){
pic = parseInt(matchslide[1]);
}
if(!isNaN(pic) && pic > 0){
slide=get_slide_by_attachment_id(pic);
if(slide>0){
avoid_next_pageview = true;
flexSlider.flexAnimate(slide - 1, true);
}
}
}else{
gtx_track_slide( )
}
}
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
// delay the url state replacement to avoid overload
// RAYOS-271
var efficientlyReplaceState = debounce(function(title, path){
window.history.replaceState({}, title, path);
}, 1250)
function changeURL(pic){
basepath = window.location.pathname.replace(/\/pic\/?([0-9]+)\/?$/i,"/");
if(isNaN(pic)) return;
path = basepath + "pic/"+pic+"/";
title = "Pic "+pic;
if (typeof(window.history.replaceState) == "function") {
efficientlyReplaceState(title, path)
} else {
window.location.hash = path;
}
}
function get_slide_by_attachment_id(id){
var slide=$slider.find(".slides li[data-attachment_id="+id+"]").attr("data-i");
return parseInt(slide, 10);
}
function gtx_track_slide( slide_obj ){
if(slide_obj){
var slide = slide_obj.animatingTo;
}else{
var slide = 0;
}
$active_slide=$all_slides.eq(slide) ;
if(!avoid_next_pageview){
try{
var loc = location.pathname + "#slide" + (parseInt(slide) + 1);
if (rayos_gtm_gallery_pageviews) {
// Add gallery navigation info to dataLayer
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'rayos_virtual_pageview',
'location' : loc
});
}
// Legacy support for GA tracking
ga("send", "pageview", loc);
if (ga.getByName("gtxcelTracker")) {
ga("gtxcelTracker.send", "pageview", loc);
}
}catch(err){
}
}
avoid_next_pageview = false;
}
//Add a callback on ad render
googletag.cmd.push(function() {
googletag.pubads().addEventListener('slotRenderEnded', function(event) {
var slotName=event.slot.getSlotElementId();
if(typeof adslots[slotName] !=="undefined" && !event.isEmpty){
$slider.clearQueue();
$slider.removeClass("gtx-gallery-loading");
}
});
});
jQuery("#gtx-gallery-thumbs-734358").flexslider({
animation: "slide",
controlNav: false,
animationLoop: false,
slideshow: false,
itemWidth: 100,
itemMargin: 5,
move: 1,
//asNavFor: "#gtx-gallery-slider-734358",
prevText: "",
nextText: "",
after: gtx_gallery_thumbs_after,
after: gtx_gallery_thumbs_before
});
$thumbs=$("#gtx-gallery-thumbs-734358").data("flexslider");
$thumbs.find("li.gtx-thumb-img").first( ).addClass("flex-active-slide");
$("#gtx-gallery-slider-734358").flexslider({
animation: "slide",
pauseOnHover: true,
controlNav: false,
//animationLoop: false,
//slideshow: false,
//sync: "#gtx-gallery-thumbs-734358",
prevText: "",
nextText: "",
slideshow: false,
init: gtx_gallery_slide_init,
start: gtx_gallery_slide_start,
before: gtx_gallery_slide_before,
after: gtx_gallery_slide_after
});
if(mobile_mode){
$slider.find(".flex-direction-nav").hide();
}
});
Tour a contemporary Diamond Head oasis that bears elements of Hawaiian and Chinese design, a modern Japanese restaurant inspired by machiya, a type of historic Kyoto townhouse, a plantation-style golf course clubhouse and more that showcase the firm’s commitment to sustainability, indoor-outdoor symbiosis and understated luxury.
$60, pva.com, @petervincentarchitects