Week 78: RSS, Build, and other small bits

7 Aug, 2022

This week was a bit sporadic because of work taking up a lot of time and headspace, but I did find time to think about newspapers, work a bit more on blender lessons, and read.

RSS Newspaper

I spent my holidays reflecting a bit about my use of time on social media, and how to stay up to date with “the industry” and people whose work I like.

Twitter has brought me so much joy, allowing me to digest an incredible amount of news and work from a wide range of organizations and people. But the product has devolved into so much suggested content that I didn’t ask for yet hits all the right brain chemicals to keep me scrolling. Same story for instagram.

At the same time, RSS feeds are seeing a resurgence, and I have now switched the same setup as Matt, combining NetNewsWire and Feedbin. Feedbin even allows for twitter integration, so now I can get the tweets I’m interested in without any of the garbage and NetNewsWire has a “star” functionality that functions like a archive, a great replacement for twitter’s bookmarks.

Screenshot of my NetNewsWire

Screenshot of my NetNewsWire

NetNewsWire is efficient, but not exciting. I miss beautiful typography as graphic elements, layout and images from traditional media. Feedbin has an API, so I’m wondering if I should try and sketch an “RSS newspaper”, a more visceral, scrolling that would allow me to consume more news in a visually enticing way.

I’m still experimenting with my setup and building it out. Still check twitter and instagram, but through the web-versions rather than the apps.

Blender lesson progress

The lessons continue, now on Bruno Simon’s lesson on unwrapping and baking a scene in Blender.

Blender model of a small grove with a portal

Blender model from last week, now with materials

I’m at the stage of doing UV unwrapping of all objects, which is fun and frustrating. Since the whole idea was to create a 3D world including LEGO elements for a portfolio, I’m not looking forward to unwrap those.

Blender UV unwrapping setup

Blender UV unwrapping setup

Reading

I’m reading Build by Tony Fadell together with colleagues. It’s curious, because it’s the kind of book I would have been ecstatic to read 5 years ago. I have a lot of respect for Tony Fadell and what he has accomplished in his career, but coming into this book I have to admit I thought didn’t need to read it. My manager kept pushing it though, so now I am, and learning a lot from it.

Also a hat tip to Linus’ article on designing with materials. It features work by Tyler who I met while I worked at MIT Media Lab, and it’s the kind of material that makes me happy and hopeful for the future of software. It made me think of a lecture Lucas Ochoa and Gautam Bose gave on A Tinkerer’s Guide to the AI Galaxy. They also talk about technologies as materials. So did BERG when they were around.

Week 77: Blender and back to work

31 Jul, 2022

This week has mostly been about getting to work after three weeks vacation. I’m still pretty hooked on building a fun 3D world with LEGO elements for my website. To do that, as mentioned last week, I need to learn a bit more about Blender. I’m almost done with Bruno Simon’s first lesson on creating a scene in Blender, and when I’m done with that, next lesson is about baking and exporting the scene for use with three.js.

In-progress Blender model of a small grove with a portal

In-progress Blender model of a small grove with a portal

I’ve also spent some time fixing bugs on this site, namely how my RSS feed is rendered.

Week 76: LEGO, physics and portfolios

26 Jul, 2022

This last vacation week, I got around to doing one of the things I love - intersecting different interests. Like every designer, it seems, I’ve been wanting to update my portfolio for a while. Mainly with the work from my time at LEGO.

Another thing I’ve wanted to do for a while was to play with three.js and it’s ability to load LDraw files (LDraw is an open, community-driven standard and repository for LEGO CAD models).

So the idea formed in my head that I could build my portfolio in a more playful and interactive way, using actual CAD models of LEGO models and elements I worked on.

Loading LDraw models

Last time I tried loading LDraw models, I struggled to get custom LEGO models “packed” into a single file that would contain all its “parts” and “subparts”. As usual, that was because I didn’t read the documentation properly. Using the unofficial LDraw parts (thanks Philippe Hurbain, for submitting the little dude), I was finally able to pack LEGO Mario and get him onto the scene:

Unofficial LEGO Mario model loaded into three.js

Unofficial LEGO Mario model loaded into three.js

Physics!

This made me think, it could be fun if Mario was bouncing around on the scene, accompanied by some Goompas and lightly swaying trees. First idea that came to mind was using a physics engine and define the behavior in code. Using cannon.js, I’ve made a little, buggy, prototype of LEGO elements bouncing around in a confined space:

LEGO elements flying around inside a box

LEGO elements bouncing around using a physics engine

But I also realized there might be a different way. I’ve been following Bruno Simon’s fantastic course on three.js, and in the later lessons he teaches how to create animated scenes with beautiful lighting. So I’m planning to try and import LDraw models into Blender and see if that workflow is easier, better and afford more creativity.

What I should have been working on this week

Before I forget, I actually also updated my main site this week! New, slightly fresher design, dark/light mode, and backend based on hugo just like this site.

My original idea for this week, rather than the title of this post, was to write out some of the future ideas on the site. Maybe I’ll get around to it next week 🤷🏼‍♂️, but also I’m going back to work, and pace my side project energy as projects winds up again.

Week 75: Web3 and thinking in bits

17 Jul, 2022

Web 3

I’ve been trying to ignore Web3, and NFTs in particular, for a while. I think apes and black PNGs selling for tens or hundreds of thousands of dollars is dumb. But I’m excited to see computer artists who’ve barely been making a living for years finally achieve financial success.

A few weeks ago, I started studying web3. First by listening to the NFTs, Blockchain, Social Tokens with Sean Bonner episode on Julian Bleecker’s podcast. Then I read Sean’s onboarding document, and the more I learn, the more excited I get. I haven’t felt so uninformed and lost in a technical space before, with all the new technologies and terminologies emerging, but on the other hand I find the prospects really exciting.

I can’t spill all the beans here since some of my investigations are work-related, but I’m keeping Sean’s words in mind, that the best way to get involved in web3 is to be part of the conversation rather than just reading. Shared on twitter earlier this week:

web3 is really making my wheels spin, hard to take my mind off of it. I’m sure someone has already done this, but thinking a lot about digital patina or “programmed patina”. The idea that an asset changes over time, either as a function of time or being traded.

I’m curious about the mental model. Like, should it be “patina”, like how copper turns green when oxidised. Or could it be thought about as a “fermentation”? or “aging”, like in fine wine?

Thinking about how when snapchat the short-lived snap, or when twitter launched with a 140 character limit. Both artificial, “unnecessary” limitations, that ended up defining the product. Curious what kind of meaningful limitations web3 could inspire.

Like, could you design limitations that encourage sustainable practices?

These days, I’m still doing sample code projects and watching hours of youtube videos on the subject. Based on my thoughts above, I’d like to try and write a “patinator” that can alter an NFT based on how it lives or is traded. Currently no idea how to do it, but hoping youtube will enlighten me.

Thinking in bits

I stumbled upon this tweet by @fiveoutofnine:

Basically, it’s a very computationally cheap way of calculating a valid chess move. What’s exciting though is that they bothered. Computers have become more capable and cheaper for decades now. Although the web has always aspired to good performance using low bandwidth, it’s nowhere near the kind of efficiency or sensitivity to device constraints that embedded software programming has been practicing all these years.

I started my journey in tech coding in HTML/CSS/JS for the web back in the 90s and later transitioned to Flash. I didn’t get into embedded systems until programming assembler at university, and I didn’t go deep until I started writing firmware and prototyping with STM 8/32-bit microcontrollers with few kilobytes of flash during my time at LEGO. My time at LEGO taught me to be smart about every bit and byte that I used, to a degree I had never had to in the 20 years of programming I had done before that.

Bringing it back to @fiveoutofnine’s tweet. The reason I’m excited is because I think web3 and it’s decentralised nature, which inherently seems more wasteful than centralised systems, could incentivise computationally cheaper algorithms and there by more sustainable computing practices. If you develop a “greener” algorithm and claim a small royalty from it’s use, the world would be better for it. Maybe I’m being naivë, but I think there’s something there.

Week 74: Visual experiments

10 Jul, 2022

Music and visual experiments

I’ve been playing the piano since I was a kid, in my teenage years I dabbled in computer music and synthesis, and a couple of years ago I got into modular synthesis. Since I moved back to Denmark and got a piano again, I’ve been curious how to marry the analog and digital music… and how to marry that with my new curiousity with three.js and shader programming.

setup

slightly chaotic setup of laptop, eurorack and mic'ed up piano

These are a couple of experiments where I have recorded the piano, fed it into the eurorack modular synth, and processed it in tone.js using a simple FFT and written a graphical representation in three.js.

Waves001

Waves001 uses the amplitude of all the frequency bins of the FFT as points for a smooth spline curve. The curve is then placed on the scene, and pushes any previous curves further away. source

waves001

Experiment with FFT represented as lines

Waves002

Waves002 uses the amplitude of all the frequency bins of the FFT as points on a circular curve. source

waves002

FFT represented as points in a circle

At the time of writing, and maybe even still while reading, the code is poor quality.

New blog infrastructure

I also spent the week migrating this blog to a new design and infrastructure. I used to use Gatsby, but it had too much plumbing and code. I wanted something simpler and ended up settling on hugo. Not intuitive, but it’s simpler and I like it so far. Might migrate more of my static sites to it in the future.