Just outside the entrance vestibule there is a reception area, with a library, where the owner can meet with other gallery owners. This space acts as a hinge between the east area, where there is the private area of the loft, with the bedroom and the south area, a recreation area with a kitchen, dining room and living room.
Industrial loft for a photographer in New York. Oak floor and cast iron details - RenovationOnWeb


Desai Chia Architecture renovates a New York loft for a photographer looking for a stimulating work environment. A space that would serve both as a gallery for her photographs and as a living space in which she can enjoy her privacy
- #America>
- #United States>
- #Loft>
- #Metal>
- #Wood>
- #Stone>
- #Restyling>
- #Interior>
- #Loft>
- #Architectures>

The different lighting strategies that enhance the architecture are inspired by the art of James Turrell: thanks to cuts and folds in the ceiling the light ricochets gently. The same stale, windowless light is bright and airy.

The new oak floor connects and unifies spaces. The same oak planks are used to cover the walls and the furniture, making the spaces warm and welcoming. The design elements are made of raw steel, satin-finish aluminium, solid oak and white resin.

The bathrooms are characterized by light, streaked stone, a break from the intensity of the city. The sinks are customized with resin, in the shower some niches have been cast in the resin walls to create a solution of continuity.

Gallery
Photo: Paul Warchol
The following has evaluated to null or missing: ==> value_list[seq_index] [in template "20101#20127#2776835" at line 127, column 62] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign key_value = value_list[seq_in... [in template "20101#20127#2776835" at line 127, column 41] ----
1<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") />
2<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
3<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") />
5
6<#--
7Mostro il titolo del portlet qui
8-->
9<#assign languageId = themeDisplay.getLanguageId()>
10<#assign propertyKey = "portletSetupTitle_"+languageId>
11
12<#assign title = "">
13<#assign counter = 1>
14
15<#if portletPreferences?has_content>
16 <#list portletPreferences?keys as key>
17
18 <#if key == propertyKey>
19 <#assign values = portletPreferences[key] />
20 <#if values?has_content>
21 <#list values as value>
22 <#assign title = value>
23 </#list>
24 </#if>
25 </#if>
26
27 </#list>
28</#if>
29
30<#assign size = 0>
31
32<#list entries as curEntry>
33 <#assign renderer = curEntry.getAssetRenderer() >
34 <#assign className = renderer.getClassName() >
35 <#if className == "com.liferay.journal.model.JournalArticle">
36 <#assign article = renderer.getArticle() >
37
38 <#assign currentArticleAssetEntryId = curEntry.getEntryId() />
39 <#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
40
41 <#assign relatedDesigner = "" />
42
43 <#list currentArticleRelatedLinks as related_entry>
44
45 <#assign relatedAssetEntryId = related_entry.getEntryId1() />
46
47 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) />
48
49 <#assign relatedGroup = groupLocalService.getGroup(relatedAssetEntry.groupId) />
50
51 <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() />
52
53 <#assign relatedArticle = journalArticleLocalService.fetchLatestArticle(relatedAssetEntryPrimKey)!'' />
54
55 <#if relatedArticle?has_content>
56
57 <#assign relatedArticleStructureKey = relatedArticle.getDDMStructure().getStructureKey() />
58
59 <#if relatedArticleStructureKey = "DESIGNER-PROFILE">
60
61 <#assign size = size + 1>
62
63 </#if>
64
65 </#if>
66 </#list>
67 </#if>
68</#list>
69
70<#if (size > 0) >
71 <h2 class="portlet-title-text">${title}</h2>
72</#if>
73
74<#-- un ARTICLE può essere legato a un DESIGNER, un COMPANY, un SHOWCASE -->
75
76<#list entries as curEntry>
77
78 <#assign renderer = curEntry.getAssetRenderer() >
79 <#assign className = renderer.getClassName() >
80 <#if className == "com.liferay.journal.model.JournalArticle">
81 <#assign article = renderer.getArticle() >
82
83 <#assign currentArticleAssetEntryId = curEntry.getEntryId() />
84 <#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
85
86 <#assign relatedDesigner = "" />
87
88 <#list currentArticleRelatedLinks as related_entry>
89
90 <#assign relatedAssetEntryId = related_entry.getEntryId1() />
91
92 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) />
93
94 <#assign relatedGroup = groupLocalService.getGroup(relatedAssetEntry.groupId) />
95
96 <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() />
97
98 <#assign relatedArticle = journalArticleLocalService.fetchLatestArticle(relatedAssetEntryPrimKey)!'' />
99
100 <#if relatedArticle?has_content>
101
102 <#assign relatedArticleStructureKey = relatedArticle.getDDMStructure().getStructureKey() />
103
104 <#if relatedArticleStructureKey = "DESIGNER-PROFILE">
105
106 <#assign relatedDesigner = relatedArticle>
107
108 </#if>
109
110 </#if>
111 </#list>
112
113 <#if relatedDesigner?has_content>
114
115 <#assign relatedArticleId = relatedDesigner.getArticleId() />
116 <#assign articleGroupId = relatedDesigner.getGroupId() >
117
118 <#assign designer = journalArticleLocalService.getArticle(articleGroupId, relatedArticleId) />
119
120 <#assign designerFriendlyURL = "" />
121 <#assign designerFirendlyURLMap = designer.getFriendlyURLMap() />
122 <#assign key_list = designerFirendlyURLMap?keys/>
123 <#assign value_list = designerFirendlyURLMap?values/>
124 <#list key_list as key>
125 <#assign seq_index = key_list?seq_index_of(key) />
126 <#if seq_index != -1 >
127 <#assign key_value = value_list[seq_index]/>
128 <#if key == themeDisplay.getLocale()>
129 <#-- assign designerFriendlyURL = stringUtil.replace(key_value, "/-/", "") -->
130 <#assign designerFriendlyURL = key_value />
131 </#if>
132 </#if>
133 </#list>
134
135 <#assign hasLinkDesigner = false />
136 <#if designerFriendlyURL != "" >
137 <#assign hasLinkDesigner = articleLanguage.hasLanguageCategory(request, designer, themeDisplay.getScopeGroupId(), themeDisplay.getCompanyId(),
138 "/arkitube", true) && articleLanguage.isFriendlyURLCorrectLanguage(request, designer, themeDisplay.getLanguageId(),
139 designerFriendlyURL, themeDisplay.getScopeGroupId(), true, "/arkitube") />
140 </#if>
141
142 <#assign cssClassWrappDesigner = "mb-4" />
143 <#if (counter < entries?size)>
144 <#assign cssClassWrappDesigner = "mb-5" />
145 </#if>
146
147 <div class="${cssClassWrappDesigner}">
148 <#if hasLinkDesigner>
149 <a href="${assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, relatedAssetEntry, true)}">
150 </#if>
151 <@liferay_journal["journal-article"]
152 articleId="${relatedDesigner.getArticleId()}"
153 ddmTemplateKey="MINIMAL_DESIGNER_INFO"
154 groupId=articleGroupId />
155 <#if hasLinkDesigner>
156 </a>
157 </#if>
158 </div>
159
160 </#if>
161
162 </#if>
163
164 <#assign counter += 1>
165</#list>
The following has evaluated to null or missing: ==> value_list[seq_index] [in template "20101#20127#2776835" at line 127, column 62] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign key_value = value_list[seq_in... [in template "20101#20127#2776835" at line 127, column 41] ----
1<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") />
2<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
3<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") />
5
6<#--
7Mostro il titolo del portlet qui
8-->
9<#assign languageId = themeDisplay.getLanguageId()>
10<#assign propertyKey = "portletSetupTitle_"+languageId>
11
12<#assign title = "">
13<#assign counter = 1>
14
15<#if portletPreferences?has_content>
16 <#list portletPreferences?keys as key>
17
18 <#if key == propertyKey>
19 <#assign values = portletPreferences[key] />
20 <#if values?has_content>
21 <#list values as value>
22 <#assign title = value>
23 </#list>
24 </#if>
25 </#if>
26
27 </#list>
28</#if>
29
30<#assign size = 0>
31
32<#list entries as curEntry>
33 <#assign renderer = curEntry.getAssetRenderer() >
34 <#assign className = renderer.getClassName() >
35 <#if className == "com.liferay.journal.model.JournalArticle">
36 <#assign article = renderer.getArticle() >
37
38 <#assign currentArticleAssetEntryId = curEntry.getEntryId() />
39 <#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
40
41 <#assign relatedDesigner = "" />
42
43 <#list currentArticleRelatedLinks as related_entry>
44
45 <#assign relatedAssetEntryId = related_entry.getEntryId1() />
46
47 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) />
48
49 <#assign relatedGroup = groupLocalService.getGroup(relatedAssetEntry.groupId) />
50
51 <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() />
52
53 <#assign relatedArticle = journalArticleLocalService.fetchLatestArticle(relatedAssetEntryPrimKey)!'' />
54
55 <#if relatedArticle?has_content>
56
57 <#assign relatedArticleStructureKey = relatedArticle.getDDMStructure().getStructureKey() />
58
59 <#if relatedArticleStructureKey = "DESIGNER-PROFILE">
60
61 <#assign size = size + 1>
62
63 </#if>
64
65 </#if>
66 </#list>
67 </#if>
68</#list>
69
70<#if (size > 0) >
71 <h2 class="portlet-title-text">${title}</h2>
72</#if>
73
74<#-- un ARTICLE può essere legato a un DESIGNER, un COMPANY, un SHOWCASE -->
75
76<#list entries as curEntry>
77
78 <#assign renderer = curEntry.getAssetRenderer() >
79 <#assign className = renderer.getClassName() >
80 <#if className == "com.liferay.journal.model.JournalArticle">
81 <#assign article = renderer.getArticle() >
82
83 <#assign currentArticleAssetEntryId = curEntry.getEntryId() />
84 <#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
85
86 <#assign relatedDesigner = "" />
87
88 <#list currentArticleRelatedLinks as related_entry>
89
90 <#assign relatedAssetEntryId = related_entry.getEntryId1() />
91
92 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) />
93
94 <#assign relatedGroup = groupLocalService.getGroup(relatedAssetEntry.groupId) />
95
96 <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() />
97
98 <#assign relatedArticle = journalArticleLocalService.fetchLatestArticle(relatedAssetEntryPrimKey)!'' />
99
100 <#if relatedArticle?has_content>
101
102 <#assign relatedArticleStructureKey = relatedArticle.getDDMStructure().getStructureKey() />
103
104 <#if relatedArticleStructureKey = "DESIGNER-PROFILE">
105
106 <#assign relatedDesigner = relatedArticle>
107
108 </#if>
109
110 </#if>
111 </#list>
112
113 <#if relatedDesigner?has_content>
114
115 <#assign relatedArticleId = relatedDesigner.getArticleId() />
116 <#assign articleGroupId = relatedDesigner.getGroupId() >
117
118 <#assign designer = journalArticleLocalService.getArticle(articleGroupId, relatedArticleId) />
119
120 <#assign designerFriendlyURL = "" />
121 <#assign designerFirendlyURLMap = designer.getFriendlyURLMap() />
122 <#assign key_list = designerFirendlyURLMap?keys/>
123 <#assign value_list = designerFirendlyURLMap?values/>
124 <#list key_list as key>
125 <#assign seq_index = key_list?seq_index_of(key) />
126 <#if seq_index != -1 >
127 <#assign key_value = value_list[seq_index]/>
128 <#if key == themeDisplay.getLocale()>
129 <#-- assign designerFriendlyURL = stringUtil.replace(key_value, "/-/", "") -->
130 <#assign designerFriendlyURL = key_value />
131 </#if>
132 </#if>
133 </#list>
134
135 <#assign hasLinkDesigner = false />
136 <#if designerFriendlyURL != "" >
137 <#assign hasLinkDesigner = articleLanguage.hasLanguageCategory(request, designer, themeDisplay.getScopeGroupId(), themeDisplay.getCompanyId(),
138 "/arkitube", true) && articleLanguage.isFriendlyURLCorrectLanguage(request, designer, themeDisplay.getLanguageId(),
139 designerFriendlyURL, themeDisplay.getScopeGroupId(), true, "/arkitube") />
140 </#if>
141
142 <#assign cssClassWrappDesigner = "mb-4" />
143 <#if (counter < entries?size)>
144 <#assign cssClassWrappDesigner = "mb-5" />
145 </#if>
146
147 <div class="${cssClassWrappDesigner}">
148 <#if hasLinkDesigner>
149 <a href="${assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, relatedAssetEntry, true)}">
150 </#if>
151 <@liferay_journal["journal-article"]
152 articleId="${relatedDesigner.getArticleId()}"
153 ddmTemplateKey="MINIMAL_DESIGNER_INFO"
154 groupId=articleGroupId />
155 <#if hasLinkDesigner>
156 </a>
157 </#if>
158 </div>
159
160 </#if>
161
162 </#if>
163
164 <#assign counter += 1>
165</#list>