The first of our series of Q&A sessions with one of Belle-Ve Bricks LEGO® MOC designers is Stijn or otherwise known in our shop They_See_Me_Buildin. We want you to be able to get inspiration from the LEGO® MOC designers that sell with us, so if you have any questions why not pop a comment at the end of this blog and let’s get you INSPIRED!
Can you share a little about yourself?
Well ehm, hi! I’m Stijn, I’m from the Netherlands, (which is in Europe). You might not be able to pronounce it since it’s a very Dutch name ;). I am 16 years old, but almost 17, and most of you might know me by the username They_see_me_buildin on Instagram.
I make custom Brickheadz and post them on Instagram and Reddit. But of course, I also make a lot of other MOCs. I also have other hobbies. I play tennis and I love to draw, like, a lot. I just finished high school, and after the big summer vacation, I will be studying to become a teacher. Excuse me if I make some grammar mistakes in this Q&A, but as I said, English isn’t my native language. 😀
How did you get into designing LEGO® MOCs?
I’ve been making MOCs for A long time! As far as I can remember, when I was young I started with Duplo it was nothing great or impressive, but I sure did enjoy it! Ever since then, I’ve built a lot of things! I saw people online build amazing things and I wanted to do that too, so I did. Because I really enjoy the process of building, I love how much freedom you have with Lego. The possibilities are endless and I love that. I have built robots, houses, little scenes, vehicles, and of course Brickheadz.
What software and websites do you use to design and release your LEGO® MOCs?
This is one of those frequently asked questions, I build almost all my Brickheadz with the computer program STUD.IO by BrickLink. I use it for building, rendering, and making instructions. I also do backgrounds and some editing (like colors and ‘special effects’) in a simple drawing program called ibis paint, but you could just as well use photoshop. and as I said already, I post them on my Instagram and Reddit.
How do you pick what MOC to build next?
Completely random, haha. I choose Brickheadz based on what is ‘trending’. Like, say if there’s a recent game or a recent movie I like, I will most likely build it. I don’t often take requests, but I do sometimes. Every now and then someone comes up with a good idea and I’ll put it on my list. I think it’s important to make stuff YOU like and not only listen to your followers. I follow my passions and interests because I enjoy building those things. Of course, I build more than just Brickheadz. I love to build robots and star wars inspired things, but most of the time it’s just whatever comes to mind, or I’ll see something cool on the internet and just do it.
What’s your favorite LEGO® MOC that you have created?
That’s a hard one because I’ve built a lot of things. But my favorite has gotta be the big star wars scene I have built recently. It’s kind of based on places like Jedha, and the other dessert planets, which really screams star wars in my opinion. To get the desert feeling I used a lot of tan bricks, and because it is star wars, I tried to put in a whole lot of Griebling as they call it. I want to expand it but I’m running out of certain colors, so I might have to order some more. This project actually took me quite a while to build and I’m planning on expanding it with vehicles and hopefully more buildings!
Do you have any particular techniques that you use when designing and building a MOC?
Ehm, I don’t think so. I do like to use a lot of snot (Studs Not On Top) techniques and actually avoid using too many solid bricks. That way you can put more detail into a MOC, but I wouldn’t say I use specific techniques often. It’s more of a case of what work/fits the best. Often I go online to look for certain techniques when I can’t think of anything myself. It’s just a mix of anything that looks good I suppose.
Do you have any hints or tips for anyone out there who is thinking about starting to design a LEGO® MOC themselves?
Do what YOU like. Take your hobbies, your interests, and passions and find something you like, and go wild! Don’t build something just because you think it will make others happy, because it has to stay fun right? That’s the main purpose of Lego! Second: don’t be afraid to copy. With that I mean, go look online for inspiration when you build something, that’s what I do too because there will most likely always be people better than you, and that’s fine because they can help you grow and improve! And of course, you don’t straight up steal someone’s design and claim it as your own. just take inspiration and look at techniques and use it in your build! The internet is your biggest friend when you’re building, haha.
Are there any LEGO® sets or themes that you take inspiration from for your LEGO® MOC?
Definitely! The creator theme was always one of my favorites because it had everything! Houses, vehicles, and animals. I learned a lot of building techniques from it and it was a ton of fun and of course LEGO® City! The houses and vehicles from both the LEGO® creator and the city were a big inspiration for me. I love to build both of those things so it was nice to learn from those themes. The Brickheadz theme, of course, inspired me to start my whole Instagram account! The bodies of the Brickheadz were never really special, with a lot of prints, so I had to figure that out myself, but the heads gave me some neat ideas. So that’s definitely a theme that I won’t forget soon! Last but not least: star wars. It’s probably more the movies that inspired me, but the sets are based on the movies so I suppose it counts.
Off the MOC subject… What’s your favorite LEGO® set and why?
There are so, so many LEGO® sets, so it’s hard to choose just one. So to make it a little more simple I will go with my favorite LEGO® set which is my own. My favorite set I own is the LEGO® creator expert ford mustang. It’s so detailed and smooth and it’s really fun to put together! When I saw it I instantly fell in love with it and bought It as soon as possible. I like the color and the overall design of it. Actually, I like all the creator’s expert cars and the expert modular building. I wish they weren’t that expensive, haha, then I would’ve bought a lot more (and most of the UCS star wars sets are pretty epic too)!
/* 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);