Loft with oak floors and cast iron details
Loft with oak floors and cast iron details
Industrial loft for a photographer in New York. Oak floor and cast iron details

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

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.

Loft with oak floors and cast iron details

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.

Loft with oak floors and cast iron details

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.

Loft with oak floors and cast iron details

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.

Loft with oak floors and cast iron details

Gallery

An error occurred while processing the template.
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> 
An error occurred while processing the template.
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>