Chris Lowis by Chris Lowis

Show and Tell 53

A week last Wednesday we held our Show & Tell event at the Proper Office on Bath Place. We were joined by some friends and I’ve written some notes on what we saw below. If you’d like to join us at the next one you’d be very welcome.

Everyday Ethics

Chris Zetter is planning a talk on Ethics and how the subject is relevant to developers. Chris said that many of the books he’d looked at about ethics were very philosophical and he found it difficult to relate them to everyday issues. He then passed around a copy of Kirnan’s Everyday Ethics: A case study approach which he has found more useful.

The front cover of the book "Everyday Ethics"

Chris showed us a couple of the case studies from the book. One case study concerned an employee who has realised that they have been overpaid and is in a dilemma about reporting it to their manager.

We then talked about some of the ethical issues we’ve faced professionally and shared some ideas with Chris on how he might turn this topic into a talk. We all agreed that it sounds like a really interesting topic for a talk, so fingers crossed Chris will find the time to turn it into one!

Ray Tracing

Tuzz has been working through the book Physically Based Rendering: From Theory To Implementation with the London Computation Club. To help understand the content he’s implemented some ray tracers in Rust.

The first, starlight, is an implementation of the ray tracer described in the early chapters of the book. Chris decided that following the specification given in the book exactly would be very time consuming, so he’s taken some shortcuts in places. He pointed out that the core algorithm that simulates the rays bouncing around the scene is only around 50 lines of code. The rest of the project handles setting up the scene, defining light sources, modelling the materials of the objects in the scene and writing the output.

Chris then decided to deviate from the book and implement a ray tracer using a different programming style. moonlight uses the Entity-component-system design pattern which makes it easier to add behaviour to some of the objects in the scene and therefore create animations. This video is created by moving the camera through the scene.

Finally, the book defines a “scene language” for describing the location and properties of objects within a rendered scene. Chris wrote a ruby gem to make it easier to pragmatically generate these scene descriptions. He then wrote vivid which is some more ruby code to take scene descriptions and render them using the official implementation of the renderer from the book. Chris then used this code to generate some animations.

Chris often joins us at Show and Tell and I’m always really impressed by how he uses side projects as a springboard to learn new things - languages or design patterns, for example. His side projects never seem to have a “throw-away” quality to them either, Chris takes time to write clear READMEs including the motivation behind the project - it’s very inspirational.

No Thank You, Evil!

Ben showed us a small Elm app he’s been developing. It speeds up the creation of character sheets for the child-friendly role-playing game No Thank You, Evil!.

The "No Thank You, Evil!" game box and contents

Ben said that the character generation part of the game was a bit slow and off-putting for his children, and having a quick, clickable character generator was more fun. He’s particularly excited that he’s managed to collaborate on github with his son for the first time!

We’ve been using Elm for our mission patch project at GFR and it’s really encouraging to see that Ben can now use Elm as his go-to library for developing quick, front-end heavy applications.

Learning Elm

Go Free Ranger Roos has been getting up to speed with Elm development so that he can work on the Elm parts of our mission patch codebase. To practice what he’s learnt he created a stand-alone application for searching through a list of emojis by keyword. He was able to iterate on the code quickly using Ellie the code-in-a-browser tool for Elm. He also created a git repository as he went and took us through each commit to show us how to develop and refactor code in Elm.

The emoji search he developed is now integrated as part of the Mission Patch design interface:

If you have any feedback on this article, please get in touch!

Historical comments can be found here.