I think it’s obvious up to this point that we love LEGO® MOCs at Belle-Ve Bricks and in my opinion for finding quality LEGO® MOC content I do not think there are any better places to find them other than Instagram or Flikr. I personally find Instagram easier to use and navigate but hey, that’s just me!
Anyway… I frequently came across the content posted by @archbrick00, when I first checked out his account I spent a long time scrolling through each of his posts and I have to say I loved every single one of them!
I sparked up a conversation with him and I very quickly knew I needed to do this interview with him and get his perspective on the world of LEGO® Architecture MOCs! So without any further delay, here we go…
Can you share a little about yourself?
I’m from Milwaukee, Wisconsin (USA), and work as a library circulation supervisor. I have a wife and a two-year-old daughter and enjoy sports and architecture outside of LEGO. I also hold a master’s degree in architecture.
Last year I published a book, Black Built: History and Architecture in the Black Community. The book discusses the work of Black architects in the US, with buildings from the late 1800s – to the present. I also co-founded the non-profit MKE Black, which has an app for Black businesses in the Milwaukee area. The non-profit also assists businesses with funding and other services.
How did you get into starting a LEGO® Instagram theme page?
ArchBrick Daily Instagram’s page was starting to increase the reach of the blog. Instagram is great for its simplicity and visual appearance. Many posts that I share on the app reach tens of thousands of viewers, which is something I’m not able to achieve anywhere else.
I see you run a blog as well, it has some amazing content! Do you want to share a bit about how you started your blog and what we would expect to see on there?
I started ArchBrick Daily in late May 2016. Originally called ArchBrick (Architecture + Brick), I created the blog to showcase the work of others, and inspire new builders. Eventually, I shared the blog on Facebook, followed by Instagram, Pinterest, and Twitter.
The blog continued to grow and I achieved the recognized fan media status with LEGO. Due to work and other commitments, I made the tough decision to cut back on managing ArchBrick Daily. I downgraded the blog to a free website and removed myself from the fan media status. I also decided to focus on Facebook and Instagram.
On the blog website (https://archbrickdaily.wordpress.com/) you will find images of most blogged models, as well as interviews, articles, LEGO® show recaps, and more.
If someone wanted to have you find their work or to get featured on your Instagram account how would they go about this? Do you accept direct requests to feature their work?
I find over half of the featured models on Flickr, however, I also use Facebook, Eurobricks, LEGO® Ideas, Instagram, and MOCpages (when it works). Builders regularly ask me to share their creations, which I’m happy to do as long they relate to LEGO® architecture and are quality builds.
Requests are accepted through messages on Instagram, Facebook, and via email (archbrick00@gmail.com). All requests are free, and I do not make any money from running ArchBrick Daily.
What would you say is the most fun part about running your LEGO® page ArchBrick Daily?
The best part of running ArchBrick Daily is seeing all of the amazing models. I’m not the only person inspired by the MOCs, which is a big reason why I started the blog. Even after four years of blogging I still get really excited to share great models.
What’s the most impressive LEGO® MOC that you have come across so far?
I would have to choose a model from one of my favorite builders and friends, Rocco Buttliere. His SPQR – Imperial Rome model is so incredible I can’t even describe how great it is. Please go and check it out! All of his models are amazing, but SPQR is my favorite.
Have you ever created your own MOC? If you have what was it and was it digital or with bricks?
I build both digitally and with bricks, but I’m mostly known for my real builds. With bricks, I build micro cities, including Brickville, Metropolis, and Brick City. While the cities are small in scale they tend to take up several dozen baseplates! My recent digital builds have been models of real buildings, The Royal Danish Library – Black Diamond, Harold Washington Library (Chicago), and the Milwaukee Central Library.
I’ve also had a few commissions. I have designed the Polk Library for UW-Oshkosh, Unity Temple (outside Chicago), and two models for the Greendale Historical Society (suburban Milwaukee).
Right now I’m working on a new micro-city, using mostly gray bricks. Look for photos soon!
If you could have someone design your perfect MOC what would it be?
My ideal MOC would be a micro replica of my hometown, Milwaukee. I’ve planned the idea in my head but can’t bring myself to commit to it. Maybe one day!
Do you have a favorite LEGO® theme and set?
The Architecture series of course! I also like the modular building series. I don’t particularly have a favorite set, as I rarely buy models.
/* Auto generated, hash = 5dceu9kevqjdyuy2uw1atqrsu */
//TODO: Break this file down so that we can actually unit test it.
(function(window) {
/**
* Renders all unrendred LinkedIn Badges on the page
*/
window.LIRenderAll = function () {
var CALLBACK_NAME = 'LIBadgeCallback', //Must match callback on helpers.js
BADGE_NAMES = '.LI-profile-badge, .LI-entity-badge',
// TODO -- tracking param for other badge types
TRACKING_PARAM = 'profile-badge',
responsesReceived = 0, //Keeps track of number of responses recieved for proper cleanup when finished
expectedResponses = 0, //Keeps track of number of responses to expect
scripts = [ ], //Keeps track of scripts added for proper cleanup when finished
childScripts = {}, //Keeps track of child scripts to render
badges = Array.prototype.slice.call(document.querySelectorAll(BADGE_NAMES));
var i, len, badge, rendered;
for (i = 0, len = badges.length; i < len; i++) {
badge = badges[i];
rendered = badge.getAttribute('data-rendered');
if (!rendered) {
expectedResponses++;
badge.setAttribute('data-rendered', true);
renderBadge(badge);
}
}
function isCNDomain() {
if (typeof window !== "undefined") {
var hostName = window.location && window.location.hostname || '';
return (/linkedin(-ei)?.cn$/).test(hostName);
}
return false;
}
function generateUrl(isEI) {
var domainPrefix = isEI ? 'https://badges.linkedin-ei' : 'https://badges.linkedin';
if (isCNDomain()) {
return domainPrefix + ".cn/";
}
return domainPrefix + ".com/";
}
function getBadgeKeyQueryParams(badge) {
return Array.prototype.slice.call(badge.attributes).filter(function (attr) {
return attr.name.lastIndexOf('data-key-', 0) !== -1;
}).map(function (attr) {
// Most browsers automatically lowercase the attribute name when its being read
// We are calling lowercase on it again to ensure consistency for any browsers that are lagging behind.
return encodeURIComponent(attr.name.replace('data-', '').toLowerCase()) + '=' + encodeURIComponent(attr.value);
});
}
/*
* Renders a single badge on the page
* @param badge: div element of badge to render
*/
function renderBadge(badge) {
var size = badge.getAttribute('data-size'),
locale = badge.getAttribute('data-locale'),
type = badge.getAttribute('data-type'),
theme = badge.getAttribute('data-theme'),
vanity = badge.getAttribute('data-vanity'),
version = badge.getAttribute('data-version'),
isEI = badge.hasAttribute('data-ei'),
entity = badge.getAttribute('data-entity'),
isCreatePage = badge.hasAttribute('data-iscreate'),
uid = Math.round(1000000 * Math.random()),
baseUrl = generateUrl(isEI),
queryParams = [
'locale=' + encodeURIComponent(locale),
'badgetype=' + encodeURIComponent(type),
'badgetheme=' + encodeURIComponent(theme),
'uid=' + encodeURIComponent(uid),
'version=' + encodeURIComponent(version)
],
url;
if (version === 'v2') {
baseUrl += 'view';
queryParams.push('badgesize=' + encodeURIComponent(size));
queryParams.push('entity=' + encodeURIComponent(entity));
queryParams = queryParams.concat(getBadgeKeyQueryParams(badge));
} else {
baseUrl += 'profile';
queryParams.push('maxsize=' + encodeURIComponent(size));
queryParams.push('trk=' + encodeURIComponent(TRACKING_PARAM));
queryParams.push('vanityname=' + encodeURIComponent(vanity));
}
if (isCreatePage) {
queryParams.push('fromCreate=true');
}
url = baseUrl + '?' + queryParams.join('&');
badge.setAttribute('data-uid' , uid);
jsonp(url); //Calls responseHandler when done
}
/**
* Handles a response from the server. Finds badge matching badgeUid and inserts badgeHtml there
* @param badgeHtml: String representing contents of the badge
* @param badgeUid: UID of the badge to target
**/
function responseHandler(badgeHtml, badgeUid) {
responsesReceived ++;
var i, badge, uid, isCreate;
var defaultWidth = 330 // max possible width
var defaultHeight = 300 // max possible height
for (i = 0, len = badges.length; i < len; i++) {
badge = badges[i];
// isCreate needed to prevent reloading artdeco script tag
isCreate = badge.getAttribute('data-iscreate');
uid = parseInt(badge.getAttribute('data-uid'), 10);
if (uid === badgeUid) {
var badgeMarkup = `<body>${badgeHtml}</body>`
var iframe = document.createElement('iframe');
iframe.onload = function() {
var iframeBody = iframe.contentWindow.document.body;
// 5 px buffer to avoid the badge border being cut off.
iframe.setAttribute('height', (iframeBody.scrollHeight || defaultHeight) + 5);
iframe.setAttribute('width', (iframeBody.scrollWidth || defaultWidth) + 5);
};
iframe.setAttribute('frameBorder', '0');
iframe.style.display = 'block';
badge.appendChild(iframe);
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(badgeMarkup);
iframe.contentWindow.document.close();
replaceScriptTags(badge, isCreate);
}
}
tryClean();
}
// These functions are needed because badge markup is added via innerHtml property which does not run script tags
function replaceScriptTags(node, isCreate) {
if (shouldReplaceNode(node, isCreate)) {
node.parentNode.replaceChild(cloneScriptNode(node), node);
childScripts[node.src] = true;
} else {
var i = 0,
children = node.childNodes;
while (i < children.length) {
replaceScriptTags(children[i++], isCreate);
}
}
return node;
}
function shouldReplaceNode(node, isCreate) {
return isScriptNode(node) && !childScripts[node.src] && (!isCreate || (isCreate && !node.getAttribute('data-isartdeco')));
}
function isScriptNode(node) {
return node.tagName === 'SCRIPT';
}
function cloneScriptNode(node){
var script = document.createElement("script");
for( var i = node.attributes.length-1; i >= 0; i-- ) {
script.setAttribute( node.attributes[i].name, node.attributes[i].value );
}
return script;
}
// Gets all incoming responses
window[CALLBACK_NAME] = responseHandler;
/**
* Tries to clean added tags
**/
function tryClean() {
//Clean up after all requests are done..
//Accounts for people including script more than once
var done = (responsesReceived >= expectedResponses && expectedResponses > 0) || responsesReceived >= badges.length;
if (done) {
delete window[CALLBACK_NAME];
// remove all script tags
scripts.map(function(script){
document.body.removeChild(script);
});
}
}
/*
* Makes Jsonp request, responses handles by CALLBACK_NAME
* @param url String: url of server to make request to
*/
function jsonp(url) {
var script = document.createElement('script');
script.src = url;
scripts.push(script);
document.body.appendChild(script);
}
};
if (document.readyState === 'complete') {
window.LIRenderAll();
} else {
window.addEventListener('load', window.LIRenderAll, false);
}
})(window);