blog.NOVALISTIC

New Stuff: LEGO® Room

60150 Pizza Van, 10703 Creative Builder Box, 10404 Ocean's Bottom, 40235 Year of the Dog, 10677 Beach Trip, 60131 Crooks Island, 40154 Pencil Pot, two copies of 31062 Robo Explorer, 40311 Traffic Lights, 40312 Streetlamps, large and small Pick A Brick cups and a mystery set hidden in a LEGO Store shopping bag.
All the LEGO sets I’ve acquired this year so far, neatly arranged on my new LEGO work table in my new room

For some reason, every Friday the 13th is either a neutral day or a really good day for me. For one, Friday the 13th of May, 2005, was the day I started blogging (back when Blogger was one of the big players). Now, I don’t usually blog about it here unless it’s relevant to my site, which is why you haven’t seen any Friday the 13th posts since the launch of NOVALISTIC 5.0 “Veldin” (which, incidentally, was launched in a month with a Friday the 13th, albeit not on the day itself). But today is different.

Today I’m very excited to introduce — no, reintroduce — the LEGO® Room! First made back in NOVALISTIC 1.5 when I was 11, I’m stoked to be bringing back something that was a significant part of the site in its early days. As I noted previously, it was slated for a July 1st launch (because LEGO usually releases new products on the 1st of each month), but then I got renewed as a Microsoft MVP, and I didn’t want both events clashing on the same day so I decided to postpone the launch and I picked today as the next best day instead. And yes, this was exactly what I was alluding to when I name-dropped Betsy Weber at the end of March — she loves LEGO too!

You may also have seen this tweet from last month and wondered why I randomly decided to acknowledge Denmark’s Constitution Day with a brick-built Danish flag this year. That’s right, it was a hint at what I’d been working on!

As you enter the new LEGO Room for the first time, you’ll be greeted with a vastly different look and feel compared to the rest of the site. As LEGO has been an integral part of my life growing up and coming of age, I’ve always wanted it to feature prominently in my own bedroom when I did finally get one. And now that, at the age of 26, I’ve had the chance to make it happen at last (better late than never, right?), I wanted the new LEGO Room to reflect that personal aspect of myself by adopting its lime green walls and a black-on-white color scheme. Note that I intend for most visitors coming from LEGO-related searches and fansites to land directly within the LEGO Room as opposed to coming from elsewhere within my site (other than my blog anyway), so this different look and feel will likely be their first experience of my site — and what you see right now will be different to them! I hope folks will not mind either way.

It just so happens that this year also marks the 60th anniversary of the LEGO Brick patent. So, I figured, no time better than now to make a proper return to my LEGO hobby to coincide with my move into my own room — with my first ever LEGO Certified Store haul! This haul was actually purchased way back in late February and consists of just a fraction of the sets I purchased this year shown above. The rest of the sets were purchased in separate hauls over the last few months, and I’ve kept everything sealed as I worked on moving into my new room as well as putting the new LEGO Room together.

60150 Pizza Van, 10703 Creative Builder Box, 10404 Ocean's Bottom, 40235 Year of the Dog, large and small Pick A Brick cups and a mystery set hidden in a LEGO Store shopping bag.
My first ever LEGO Certified Store haul!

(Technically the small Pick A Brick cup was purchased separately but it didn’t feel right leaving it out so I left it in instead. You’ll also notice the LEGO Store shopping bag that seems all but strategically and deliberately placed alongside the visible sets… that’s because it contains a mystery exclusive set that I’ll reveal much later!)

So, what will be featured in the new LEGO Room? You’ll be able to see my LEGO collection, which pulls data from the Brickset API (a SOAP web service, in case you were wondering). If you live in Singapore, you’ll also be able to browse the Pick A Brick walls of most local LEGO Certified Stores.

Starting next week, I’ll also be publishing reviews of these new sets there, with photos that will look right at home shot on my new LEGO work table. Pretty excited about that one! Since my set reviews will be residing in the LEGO Room, I won’t be mirroring their content on blog.NOVALISTIC, but I will make an announcement post each time a new review goes up.

You can also find me on Brickset and Bricks Stack Exchange as LegoSonicBoy — that’s my original LEGO Club username from 2001!

I’ve been renewed as a Microsoft MVP!

I’ve been hard at work on a major new addition to my site over the last few months, and as I spent this weekend finalizing and preparing it for a soft launch I’ve been super excited to share it with you (yes, you… visitor!). However, I was interrupted by something even more exciting.

Microsoft® Most Valuable Professional

That’s right: as part of the annual renewal cycle that happens on July 1st each year, I have been renewed for the next full year as a 2018–2019 Microsoft MVP! This is my first renewal, of course, seeing as I was first awarded last September (you may recall that I first discussed this on the deadline before the renewal cycle). I was unsure if I’d sustained my activities enough to be considered for renewal as I’d heard that, as part of the relatively new July cycle, the bar had been raised significantly. But here I am, and I’m honored to have made the cut!

Honestly, I wasn’t expecting the news to come today. When I was first awarded, I’d only received my notification on September 2nd, my 10th anniversary on Twitter, so I figured I probably wouldn’t be worrying about it just yet. In fact, I didn’t want to “depend” on there being news so to speak. So that’s why I was getting the new addition ready for a soft launch today. But with the news having just dropped, I’m afraid that’ll have to wait till next weekend (to, you know, give this all some time to simmer). On the plus side, this does mean that I’ll get to launch it with a little more fanfare!1

As always, check out my contributions on my MVP profile! I’ll be keeping it up to date on a monthly basis, and if you’re a fellow MVP I encourage you to do the same!


  1. Assuming there won’t be any surprises next weekend. 

Talk.CSS #29

Yesterday was Talk.CSS #29. Although I’m still recovering from what happened last Saturday, I’ve been doing much better, so I was happy to head on down. If you haven’t already, feel free to check out my recap of and thoughts on my first time there!

As I mentioned previously, the venue is different each month. This month, the meetup was hosted by Carousell. I’d not been to their office before, so it was pretty exciting to check it out for the first time. There didn’t appear to be a convenient way there from the nearest train station, EW15 Tanjong Pagar, but fortunately I was able to hop on a 20-minute bus at a stop close to EW11 Lavender (which happens to be the same train station I stop at to go to church) that took me right there.

I missed the Insider Dev Tour

You might have seen me tweet these last weekend:

After Georgie assured me that people in the tech scene have been more open about health over the past couple of years and that it was normal to tweet this sort of stuff even in a professional capacity, I decided I’d go ahead and blog about this. So, as a word of caution, this is primarily a health-related entry, the first of its kind (at least since I first announced Emergency Chat for Windows), and I suspect it won’t be the last.

When Microsoft announced the Insider Dev Tour (seemingly the new name for the Microsoft Build Tour) last month, and Singapore was listed as one of the locations, I was stoked. Some of the topics covered during the talks included modernizing classic desktop apps for Windows 10, UWP development, PWAs, machine learning and mixed reality; the first three of these were of particular interest to me, and so I really wanted to go. Plus, Kenneth Ham, my college senior and now fellow Microsoft MVP, was speaking!

However, it was an all-day event that began at 9 am and ended at 5 pm, and Microsoft Singapore is a little over an hour away from home, which meant I had to be out of the house by 7:30. These are typical hours for most full-time working adults, but I have a number of health issues that make getting a nine-to-five basically not an option for me. In fact, I had given January’s Microsoft Tech Summit a miss for the exact same reason.

GDPR compliance is hard: the WordPress edition

When my friend Georgie commented on my post about Talk.CSS, she told me that her comment wasn’t visible to her as awaiting moderation after submission, although she assumed that it had posted successfully based on the fact that the URL in her browser’s address bar had changed. This was new to me: I could’ve sworn the moderation notice was always visible because I’d tested it thoroughly when developing the theme for blog.NOVALISTIC 5.0 “Veldin”.

We couldn’t find any leads so we left it as it was. Two weeks later, this morning, she sent me links to this WordPress.org support forum topic, posted around the same time we first ran into this issue, and to this Stack Overflow question which was asked just a few hours ago. The asker self-answered with the following:

Apparently the solution was to have the “Save my name, email, and website in this browser for the next time I comment.” checkbox selected in order for the message to show up.

So you have to have the GDPR checkbox to be checked in order to have the comment and message appearing before approval.

Sorry for bothering.

(Yes, I’m including that last line here, and no, I didn’t edit it out, because I simply don’t see the point in making a fuss over it.)

So, it dawned on me, the issue was twofold:

  1. My theme was missing a critical privacy element for GDPR compliance; namely, a checkbox that indicates the user’s consent to their browser remembering their details in a cookie (yes, you do need explicit consent for anything a user submits that you might store either on your server or in a cookie now).

  2. WordPress 4.9.6, the latest release that adds GDPR compliance elements, is failing to display the comment moderation notice when the user submitting a comment has not given this consent, presumably as an unintended side effect of being a little too conservative (not that I’m saying that’s a bad thing!).

If your WordPress theme has a custom comment form implementation (i.e. the comment form is provided by a custom callback rather than the built-in comment_form() template), you’ll need to add the new cookie consent checkbox. The only important bit is the name attribute, whose value must be wp-comment-cookies-consent. Here’s what mine looks like:

<form class="feedback" action="<?php echo site_url( '/wp-comments-post.php' ); ?>" method="post">
    <!-- ... -->
    <p><label><input type="checkbox" name="wp-comment-cookies-consent"<?php if ( ! empty( $commenter['comment_author_email'] ) ) echo ' checked'; ?>> Remember my name, email and website for future comments</label></p>
    <p><button type="submit">Post Comment</button>
<?php comment_id_fields(); ?></p>
<?php do_action( 'comment_form', $post->ID ); ?>
</form>

As with the rest of the comment form fields, you don’t need any additional plumbing for this to work. As long as the checkbox is present in your comment form, when the user checks it off WordPress will correctly set the cookie and notify the user if their comment is awaiting moderation.

Wait, what? So if the user doesn’t allow the cookie to be created, they don’t get notified?

That’s right. An oversight in the implementation of this feature means that since WordPress won’t remember the user’s details, it won’t be able to determine that the comment that it just received was theirs and display it to them along with the moderation notice. Privacy, am I right?

No worries though, the developers have been made aware of this since before WordPress 4.9.6 was released, as it was reported on the WordPress Trac at least two months ago. Understandably, they punted this issue to 4.9.7 in order to get the important stuff (GDPR compliance tools) out in a timely fashion (4.9.6 was released on May 17, which happens to be exactly one month ago at the time I’m writing this). Hopefully a fix for this issue will be shipped soon.