# Robin Ward

Recent content in Blogs on Evil Trout Inc.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Tips for Saving Game Data in Godot

DevFeed: [Tips for Saving Game Data in Godot](<https://devfeed.tech/articles/tips-for-saving-game-data-in-godot-40649.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2026-08-21-tips-for-saving-game-data-in-godot/>)

Published: 2026-08-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Godot](<https://devfeed.tech/topics/godot.md>), [saving](<https://devfeed.tech/topics/saving.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [data](<https://devfeed.tech/topics/data.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [disk-space](<https://devfeed.tech/tags/disk-space.md>), [game](<https://devfeed.tech/tags/game.md>), [games](<https://devfeed.tech/tags/games.md>), [json](<https://devfeed.tech/tags/json.md>), [mutex](<https://devfeed.tech/tags/mutex.md>), [os](<https://devfeed.tech/tags/os.md>), [saving](<https://devfeed.tech/tags/saving.md>), [testing](<https://devfeed.tech/tags/testing.md>), [thread](<https://devfeed.tech/tags/thread.md>), [tips](<https://devfeed.tech/tags/tips.md>)

### AI overview

This tutorial describes a save-data approach for Godot games, based on experience shipping two games. It compares custom binary and JSON formats, recommends frequent debounced saves on a separate thread, checks available disk space, and discusses temporary-file replacement to reduce corrupted save-game reports.

### Source excerpt

Saving game data is easy. Making your save code survive every kind of hardware failure is not. A lot of these issues will never show up during testing, but if your game reaches a wide audience with many different kinds of hard drives in different states of degradation, you will start to get bug reports about save games not working. I decided to write up my approach, learned over the course of shipping two Godot games, that has reduced our corrupted save game bug reports to virtually nothing.

## Technical Development of The Incident at Galley House

DevFeed: [Technical Development of The Incident at Galley House](<https://devfeed.tech/articles/building-galley-house-40648.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2026-07-28-building-galley-house/>)

Published: 2026-07-28T00:00:00Z

Content type: article

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [HTML](<https://devfeed.tech/topics/html.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [interface](<https://devfeed.tech/topics/interface.md>), [Game engine](<https://devfeed.tech/topics/game-engine.md>)

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [development](<https://devfeed.tech/tags/development.md>), [game](<https://devfeed.tech/tags/game.md>), [html](<https://devfeed.tech/tags/html.md>), [interface](<https://devfeed.tech/tags/interface.md>), [steam](<https://devfeed.tech/tags/steam.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

A technical development post about The Incident at Galley House, covering its origins as a Twine and HTML prototype, iterative content and puzzle testing, and adaptation of its typing-based gameplay for a controller interface.

### Source excerpt

Evil Trout's second game, The Incident at Galley House, is out now on Steam! Last year, after The Roottrees are Dead shipped, I wrote a technical blog post about its development, which was well received, so I decided to do the same thing for this game. Note: The images in this post have minor spoilers for the beginning of the game. If you want to be 100% spoiler free, now's your chance to run away.

## Evil Trout + DEG

DevFeed: [Evil Trout + DEG](<https://devfeed.tech/articles/evil-trout-deg-40647.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2026-03-31-evil-trout-plus-deg/>)

Published: 2026-03-31T00:00:00Z

Content type: article

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Demo](<https://devfeed.tech/topics/demo.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [deal](<https://devfeed.tech/tags/deal.md>), [demo](<https://devfeed.tech/tags/demo.md>), [developers](<https://devfeed.tech/tags/developers.md>), [games](<https://devfeed.tech/tags/games.md>), [puzzles](<https://devfeed.tech/tags/puzzles.md>), [steam](<https://devfeed.tech/tags/steam.md>)

### AI overview

Evil Trout founder Robin Ward describes investing in Doseo's puzzle game DEG after playing its demo during Steam Next Fest. The funding will support the game's improvement and marketing; a full release is planned for later in 2026.

### Source excerpt

During the last Steam Next Fest, I played a demo of a puzzle game called DEG that was getting a lot of buzz. The game is made for people who like grid puzzles like Sudoku, or Nurikabe, with many additional unique concepts and puzzle ideas that are tutorialized silently to the player. Needless to say, I was hooked. I reached out to Doseo, its creator, and inquired about investing in the game. We discussed how he would use additional money to improve and market the game, and a deal was struck.

## Anatomy of a Room

DevFeed: [Anatomy of a Room](<https://devfeed.tech/articles/anatomy-of-a-room-40646.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2026-03-23-anatomy-of-a-room/>)

Published: 2026-03-23T00:00:00Z

Content type: article

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [3D](<https://devfeed.tech/topics/3d.md>), [blender](<https://devfeed.tech/topics/blender.md>), [layout](<https://devfeed.tech/topics/layout.md>), [structure](<https://devfeed.tech/topics/structure.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [blender](<https://devfeed.tech/tags/blender.md>), [game](<https://devfeed.tech/tags/game.md>), [layout](<https://devfeed.tech/tags/layout.md>), [structure](<https://devfeed.tech/tags/structure.md>)

### AI overview

The article explains how the team designed rooms for The Incident at Galley House, an adaptation of the text-based game Type Help. It covers creating a believable floor plan, modeling the house and rooms in Blender, preparing art briefs with references and game-specific requirements, and producing illustrations from 3D scenes.

### Source excerpt

Background Our next game, The Incident at Galley House, is an adaptation of a text-based game called Type Help. It takes place at Galley House, a dwelling in the English countryside, during a dinner party where things go sideways. Galley House is divided into many rooms, and the core gameplay involves following characters from room to room, listening in on their conversations, learning their motives, and eventually piecing together a mysterious incident.

## Building The Roottrees are Dead

DevFeed: [Building The Roottrees are Dead](<https://devfeed.tech/articles/building-the-roottrees-are-dead-40645.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2025-01-27-building-the-roottrees/>)

Published: 2025-01-27T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Game Development](<https://devfeed.tech/topics/game-development.md>), [Godot](<https://devfeed.tech/topics/godot.md>), [Homelab](<https://devfeed.tech/topics/homelab.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Gitea](<https://devfeed.tech/topics/gitea.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Git](<https://devfeed.tech/topics/git.md>), [Windows 11](<https://devfeed.tech/topics/windows-11.md>), [tailscale](<https://devfeed.tech/topics/tailscale.md>), [blender](<https://devfeed.tech/topics/blender.md>), [Synology](<https://devfeed.tech/topics/synology.md>)

Tags: [diskstation](<https://devfeed.tech/tags/diskstation.md>), [docker](<https://devfeed.tech/tags/docker.md>), [game](<https://devfeed.tech/tags/game.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [git](<https://devfeed.tech/tags/git.md>), [gitea](<https://devfeed.tech/tags/gitea.md>), [homelab](<https://devfeed.tech/tags/homelab.md>), [linux](<https://devfeed.tech/tags/linux.md>), [tailscale](<https://devfeed.tech/tags/tailscale.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

The developer describes the technical considerations behind building the Steam version of The Roottrees Are Dead. The supplied excerpt covers the game's release and reception, a homelab using Linux, ZFS, Gitea, Docker, and Git LFS, backup practices, remote access through Tailscale, and development hardware. It also identifies Godot as the game's engine.

### Source excerpt

The Roottrees are Dead was released on January 15, 2025 and it did much better than I ever expected. The reception has been amazing. In just over a week, the game hit the magic mark of 500 reviews on Steam, and triggered the "Overwhelmingly Positive" status. On BlueSky, Bloomberg writer Jason Schreier blew me away when he posted: "Seven days into 2025 and I've already played what I suspect will be one of my favorite games of the year: The Roottrees Are Dead." Wow!

## The Roottrees are (still) Dead

DevFeed: [The Roottrees are (still) Dead](<https://devfeed.tech/articles/the-roottrees-are-still-dead-40644.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2024-03-03-the-roottrees-are-dead/>)

Published: 2024-07-17T00:00:00Z

Content type: opinion

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Godot](<https://devfeed.tech/topics/godot.md>), [Unity](<https://devfeed.tech/topics/unity.md>), [3D](<https://devfeed.tech/topics/3d.md>), [ui](<https://devfeed.tech/topics/ui.md>), [User interface design](<https://devfeed.tech/topics/ui-design.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [game](<https://devfeed.tech/tags/game.md>), [generative-ai](<https://devfeed.tech/tags/generative-ai.md>), [unity](<https://devfeed.tech/tags/unity.md>), [user-interface](<https://devfeed.tech/tags/user-interface.md>)

### AI overview

The author explains how discovering The Roottrees are Dead led them to collaborate with Jeremy Johnston on a Steam version. The update replaces the game's generative AI art with professional illustrations, adds a hybrid 3D/2D interface, remastered audio, redesigned user interface, and a port from Unity to Godot.

### Source excerpt

Last year I broke my elbow. This meant that I had to take a break from programming for about six weeks, and The Secrets of Skellig, my indie game, was put on hold. After a couple of weeks, I recovered enough to do some basic keyboard and mouse movements, and I stumbled on a free game called The Roottrees are Dead by Jeremy Johnston. It was exactly my kind of thing: a thinky game where you have to use your brain to fill in a family tree, based on results from a search engine. It was Her Story meets Return of the Obra Dinn meets The Case of the Golden Idol, and it consumed my free time for several days in a row.

## The Secrets of Skellig

DevFeed: [The Secrets of Skellig](<https://devfeed.tech/articles/the-secrets-of-skellig-40643.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2023-07-17-the-secrets-of-skellig/>)

Published: 2023-07-17T00:00:00Z

Content type: release

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Game Development](<https://devfeed.tech/topics/game-development.md>), [Godot](<https://devfeed.tech/topics/godot.md>), [blender](<https://devfeed.tech/topics/blender.md>), [3D](<https://devfeed.tech/topics/3d.md>)

Tags: [blender](<https://devfeed.tech/tags/blender.md>), [development](<https://devfeed.tech/tags/development.md>), [game](<https://devfeed.tech/tags/game.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [games](<https://devfeed.tech/tags/games.md>), [puzzle](<https://devfeed.tech/tags/puzzle.md>)

### AI overview

The author announces The Secrets of Skellig, a puzzle game inspired by crosswords, while noting that the project is currently on indefinite hold. The article describes learning Blender and Godot while developing the game primarily alone.

### Source excerpt

Note: The Secrets of Skellig is on indefinite hold now while I work on other things. I've wanted to dip my feet back into game development for a while, and last year I decided to put my money where my mouth is. I resigned from my full time job at Discourse and pulled up a bunch of YouTube tutorials on Blender and Godot. It's been a ridiculous amount of fun, and I've learned so much about how modern 3D games are made. I'm finally ready to announce what I've been working on. It's a puzzle game, inspired by crosswords, called "The Secrets of Skellig."

## My Retro PC Gaming Nostalgia Kick

DevFeed: [My Retro PC Gaming Nostalgia Kick](<https://devfeed.tech/articles/my-retro-pc-gaming-nostalgia-kick-40642.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2022-07-13-my-retro-pc-gaming-nostalgia-kick/>)

Published: 2022-07-18T00:00:00Z

Content type: opinion

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [pc](<https://devfeed.tech/topics/pc.md>), [Godot](<https://devfeed.tech/topics/godot.md>), [Graphics](<https://devfeed.tech/topics/graphics.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [C](<https://devfeed.tech/topics/c.md>), [3D](<https://devfeed.tech/topics/3d.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [animations](<https://devfeed.tech/tags/animations.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [c](<https://devfeed.tech/tags/c.md>), [gaming](<https://devfeed.tech/tags/gaming.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [pc](<https://devfeed.tech/tags/pc.md>), [programming](<https://devfeed.tech/tags/programming.md>), [retro](<https://devfeed.tech/tags/retro.md>), [videos](<https://devfeed.tech/tags/videos.md>), [youtube](<https://devfeed.tech/tags/youtube.md>)

### AI overview

The author reflects on making videos about early PC gaming and programming, including Sierra game graphics, palette cycling, 8086 assembly, Godot, and embedding old AGI games with C.

### Source excerpt

Over the last couple of months, I've been posting a series of videos about early PC gaming and programming on my YouTube Channel. It's been quite a fun journey and I thought I might write a few words about it. I have a lot of nostalgia for early games, which makes sense since it was how I spent most of my free time in the 80's and 90's. Times were boring before the Internet :)

## Home streaming my games in 4K

DevFeed: [Home streaming my games in 4K](<https://devfeed.tech/articles/home-streaming-my-games-in-4k-40641.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2019-12-23-home-streaming-in-4k/>)

Published: 2019-12-23T00:00:00Z

Content type: article

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Streaming](<https://devfeed.tech/topics/streaming.md>), [pc](<https://devfeed.tech/topics/pc.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [tvOS](<https://devfeed.tech/topics/tvos.md>), [Xbox](<https://devfeed.tech/topics/xbox.md>), [App](<https://devfeed.tech/topics/app.md>), [NVMe](<https://devfeed.tech/topics/nvme.md>)

Tags: [apple-tv](<https://devfeed.tech/tags/apple-tv.md>), [controllers](<https://devfeed.tech/tags/controllers.md>), [devices](<https://devfeed.tech/tags/devices.md>), [fps](<https://devfeed.tech/tags/fps.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [pc](<https://devfeed.tech/tags/pc.md>), [ssd](<https://devfeed.tech/tags/ssd.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [xbox](<https://devfeed.tech/tags/xbox.md>)

### AI overview

The author describes streaming PC games to home televisions instead of building a second gaming PC. The article covers the Steam Link setup on an Apple TV 4K, including Xbox One controller pairing issues, and begins evaluating 4K performance.

### Source excerpt

I have two 4K TVs at home, one in the bedroom and one in my living room. Both have consoles attached. One has a PS4 Pro and one has a Nintendo Switch and both are great. However, I also have a gaming PC in my office, which is quite powerful compared to any home console Mine is equipped with a RTX 2080 TI GPU, and a 9900K processor, so it can play pretty much any new game at 4K with a solid 60 fps on high settings.

## Building a Home Media Server with Docker Compose

DevFeed: [Building a Home Media Server with Docker Compose](<https://devfeed.tech/articles/building-a-home-media-server-with-docker-compose-40640.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2019-07-03-building-home-media-download-server/>)

Published: 2019-07-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Docker Compose](<https://devfeed.tech/topics/docker-compose.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [docker](<https://devfeed.tech/tags/docker.md>), [docker-compose](<https://devfeed.tech/tags/docker-compose.md>), [linux](<https://devfeed.tech/tags/linux.md>), [server](<https://devfeed.tech/tags/server.md>), [setup](<https://devfeed.tech/tags/setup.md>)

### AI overview

A practical guide to repurposing an Intel NUC as a headless home media server. It covers hardware choices, Ubuntu installation, Docker and Docker Compose setup, storage mounting, and permissions, with plans for streaming content and sharing files across a home network.

### Source excerpt

I recently moved into a bigger condo which had a wall mount pre-installed in the bedroom for a TV, so I decided to take advantage of it and bought a second TV. Previously, I was using an Intel NUC attached to my TV and running LibreElec. If you've not heard of LibreElec, it's a very cool minimal Linux OS that sets itself up to run Kodi. It is remarkably easy to set up, and even found and setup my obscure USB remote control automatically.

## Candles, Programming and Archetypes

DevFeed: [Candles, Programming and Archetypes](<https://devfeed.tech/articles/candles-programming-and-archetypes-40639.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2018-05-22-candles-programming-archetypes/>)

Published: 2018-05-22T00:00:00Z

Content type: opinion

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [browser](<https://devfeed.tech/topics/browser.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [memory](<https://devfeed.tech/tags/memory.md>), [processing](<https://devfeed.tech/tags/processing.md>), [programming](<https://devfeed.tech/tags/programming.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

The author reflects on how specialized modern computing knowledge can obscure foundational concepts. They trace TypeScript backward through JavaScript, web browsers, C++, machine language, operating systems, streams, and CPUs, while acknowledging gaps and inaccuracies, and connect this reflection to the simplicity of older computers.

### Source excerpt

Once in a while, I daydream about being thrown back in time. I'd have no Wikipedia, no books, or any access to information except what's already in my head. If I were thrown into Victorian London, what could I do? What could I teach them? Well, the first thing I would do is tell them to wash their hands. With soap. Frequently. That would probably be the most significant contribution I could make.

## The value of a thousand little features

DevFeed: [The value of a thousand little features](<https://devfeed.tech/articles/the-value-of-a-thousand-little-features-40638.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2017-04-13-a-thousand-little-features/>)

Published: 2017-04-13T00:00:00Z

Content type: opinion

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Development](<https://devfeed.tech/topics/development.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Ember](<https://devfeed.tech/topics/ember.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Database](<https://devfeed.tech/topics/database.md>), [code reviews](<https://devfeed.tech/topics/code-reviews.md>), [test-coverage](<https://devfeed.tech/topics/test-coverage.md>)

Tags: [code-reviews](<https://devfeed.tech/tags/code-reviews.md>), [coverage](<https://devfeed.tech/tags/coverage.md>), [database](<https://devfeed.tech/tags/database.md>), [development](<https://devfeed.tech/tags/development.md>), [ember](<https://devfeed.tech/tags/ember.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>)

### AI overview

The author reflects on five years of Discourse development, describing how the team settled on major technical choices such as Rails, ActiveRecord, Postgres, Ember.js, and JavaScript. The article also discusses codebase practices, performance improvements, and planned changes including TypeScript, replacing Sprockets, and upgrading Ruby and Rails.

### Source excerpt

It's been over a year since I wrote a blog entry! And while of course the universal excuse of "I've been busy" applies, I think we reached a point in Discourse's development where we just were able to focus on the product without a lot of stuff getting in our way. I've now been working on Discourse full time for 5 years. In the beginning we had a lot more uncertainty about technical decisions. Some of the things we debated interally include:

## Replacing Ember's Rendering Engine Improved Discourse Performance on Android

DevFeed: [Replacing Ember's Rendering Engine Improved Discourse Performance on Android](<https://devfeed.tech/articles/we-finally-did-something-about-android-performance-40637.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2016-02-25-fixing-android-performance/>)

Published: 2016-02-25T00:00:00Z

Content type: opinion

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Ember](<https://devfeed.tech/topics/ember.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [render](<https://devfeed.tech/topics/render.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [devices](<https://devfeed.tech/tags/devices.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [performance](<https://devfeed.tech/tags/performance.md>), [render](<https://devfeed.tech/tags/render.md>), [speed](<https://devfeed.tech/tags/speed.md>)

### AI overview

The article describes how the Discourse team addressed slow Android performance by replacing Ember's rendering engine for a common view with a custom virtual DOM-based renderer. Reported benchmarks show faster large-topic rendering across desktop and Android devices, with the largest gains on older Android hardware.

### Source excerpt

Back in September, Codinghorror wrote a popular post on the state of android Javascript performance on Discourse's Meta forum. It drew a lot of attention, and led to some fascinating discussions on our forum and behind the scenes with browser engineers. The poor performance of Discourse on Android was already old news to us at that point: we started paying attention several years ago, and have spent some time contributing to the Ember.js community tools to help profile application performance, in particular the "Render Performance" tab on the Ember Inspector, and the ember performance suite.

## TIS-100: My emulator for a CPU that doesn't exist

DevFeed: [TIS-100: My emulator for a CPU that doesn't exist](<https://devfeed.tech/articles/tis-100-my-emulator-for-a-cpu-that-doesn-t-exist-40635.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2015-06-29-an-emulator-for-tis-100/>)

Published: 2015-06-29T00:00:00Z

Content type: opinion

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Emulator](<https://devfeed.tech/topics/emulator.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [C](<https://devfeed.tech/topics/c.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [c](<https://devfeed.tech/tags/c.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [pdf](<https://devfeed.tech/tags/pdf.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

The author describes becoming interested in TIS-100, an assembly-language programming game built around an imaginary CPU. After solving its puzzles, the author finds an inefficient division solution and decides to implement a TIS-100 emulator in pure C.

### Source excerpt

Recently I became infatuated with TIS-100, a game which aptly describes itself as "the assembly language programming game you never asked for!" The point of the game is to program the (imaginary) TIS-100 CPU to solve problems. For example, you might need to take input from two ports and swap them, then write the outputs to two other ports. The game flies in the face of all modern game design: The first thing you need to do is sit and read a 14 page PDF that outlines the TIS-100 instruction set. And when I say "read", I mean "learn", because a quick skim is not going to cut it! There are no tutorial levels or handholding. You must read the manual.

## Watch: Ember at 10 feet

DevFeed: [Watch: Ember at 10 feet](<https://devfeed.tech/articles/watch-ember-at-10-feet-40634.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2014-12-22-watch-ember-tv/>)

Published: 2014-12-22T00:00:00Z

Content type: article

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Ember](<https://devfeed.tech/topics/ember.md>)

Tags: [ember](<https://devfeed.tech/tags/ember.md>), [video](<https://devfeed.tech/tags/video.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

A video of the author's "Ember at 10 feet" talk from the Embergarten Saturday Symposium is available to watch. The post also links to source code and an online demo.

### Source excerpt

Previously I posted notes and links for my talk about "Ember at 10 feet" from the Embergarten Saturday Symposium. Today my awesome friends at Unspace posted a video of the talk, which you can watch below: Source Code | Online Demo

## ember-tv: Creating a 10 foot interface in Ember.js

DevFeed: [ember-tv: Creating a 10 foot interface in Ember.js](<https://devfeed.tech/articles/ember-tv-creating-a-10-foot-interface-in-ember-js-40633.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2014-11-17-ember-tv/>)

Published: 2014-11-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Ember](<https://devfeed.tech/topics/ember.md>), [interface](<https://devfeed.tech/topics/interface.md>), [Code](<https://devfeed.tech/topics/code.md>), [repo](<https://devfeed.tech/topics/repo.md>), [Demo](<https://devfeed.tech/topics/demo.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [demo](<https://devfeed.tech/tags/demo.md>), [ember](<https://devfeed.tech/tags/ember.md>), [github](<https://devfeed.tech/tags/github.md>), [interface](<https://devfeed.tech/tags/interface.md>), [js](<https://devfeed.tech/tags/js.md>), [repo](<https://devfeed.tech/tags/repo.md>), [speaking](<https://devfeed.tech/tags/speaking.md>), [talk](<https://devfeed.tech/tags/talk.md>)

### AI overview

The article introduces a project for creating a TV-friendly, 10-foot interface in Ember.js. It describes a related conference talk and points readers to the talk's source code, slides, speaking notes, and an online demo.

### Source excerpt

Over the weekend I spoke at the Embergarten Saturday Symposium, which was an awesome mini conference on Ember in Toronto. My topic was "Ember at 10ft", and it was about how to build a TV friendly interface in Ember.js. The talk was recorded but not yet posted, however I've already posted the source code on github. The github repo contains my slides from the talk as well as speaking notes. I've also put up an online demo. Check it out!

## Screencast: Using Pretender to mock a server with Ember.js

DevFeed: [Screencast: Using Pretender to mock a server with Ember.js](<https://devfeed.tech/articles/screencast-using-pretender-to-mock-a-server-with-ember-js-40632.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2014-08-26-pretender/>)

Published: 2014-08-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Ember](<https://devfeed.tech/topics/ember.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [test](<https://devfeed.tech/topics/test.md>), [Library](<https://devfeed.tech/topics/library.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [branch](<https://devfeed.tech/tags/branch.md>), [ember](<https://devfeed.tech/tags/ember.md>), [integration-test](<https://devfeed.tech/tags/integration-test.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [js](<https://devfeed.tech/tags/js.md>), [library](<https://devfeed.tech/tags/library.md>), [login](<https://devfeed.tech/tags/login.md>), [mock](<https://devfeed.tech/tags/mock.md>)

### AI overview

A screencast demonstrates how to use Pretender, a JavaScript mock server library, in an Ember.js integration test. The source code for the login application is available on GitHub, with the finished version in the pretender branch.

### Source excerpt

Recently I fell in love with Pretender, the mock server library in Javascript, so I decided to record a screencast showing how to use it in an Ember.js integration test: The source code for the login application is on github. The finished version is in the pretender branch.

## Screencast: Debugging an Ember.js Application

DevFeed: [Screencast: Debugging an Ember.js Application](<https://devfeed.tech/articles/screencast-debugging-an-ember-js-application-40631.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2014-08-16-debugging-ember-js/>)

Published: 2014-08-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Ember](<https://devfeed.tech/topics/ember.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [Chrome](<https://devfeed.tech/topics/chrome.md>), [Developer Tools](<https://devfeed.tech/topics/developer-tools.md>)

Tags: [application](<https://devfeed.tech/tags/application.md>), [bug](<https://devfeed.tech/tags/bug.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [code](<https://devfeed.tech/tags/code.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [ember](<https://devfeed.tech/tags/ember.md>), [github](<https://devfeed.tech/tags/github.md>)

### AI overview

A short screencast demonstrates debugging techniques for Ember.js applications using Chrome Developer Tools and the Ember Inspector. It also links to the source code for a Bug Tracker project on GitHub.

### Source excerpt

I've found that a lot of people don't know how powerful the Chrome Developer Tools are, especially when paired with the Ember Inspector. I recorded this short screencast to show a handful of tricks you can use when debugging Ember.js applications: The source code to the Bug Tracker project is on github.

## Creating an Integration test in Ember.js (Screencast)

DevFeed: [Creating an Integration test in Ember.js (Screencast)](<https://devfeed.tech/articles/creating-an-integration-test-in-ember-js-screencast-40630.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2014-06-27-integration-testing/>)

Published: 2014-06-27T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Ember](<https://devfeed.tech/topics/ember.md>), [Integration testing](<https://devfeed.tech/topics/integration-testing.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [boilerplate](<https://devfeed.tech/tags/boilerplate.md>), [ember](<https://devfeed.tech/tags/ember.md>), [ember-cli](<https://devfeed.tech/tags/ember-cli.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [integration-test](<https://devfeed.tech/tags/integration-test.md>), [integration-testing](<https://devfeed.tech/tags/integration-testing.md>), [js](<https://devfeed.tech/tags/js.md>)

### AI overview

A screencast tutorial explains how to set up integration testing in an Ember.js application with ember-cli, including the boilerplate required at the top of integration test files.

### Source excerpt

Once upon a time it used to be difficult to create integration tests in Ember.js. Fortunately, the framework has come a long way and it's now really easy to get integration testing working in your application. This screencast shows how to set it up with ember-cli: There is some boilerplate code required that you'll need at the top of your integration test files if you want to do it yourself. Here it is:

## Wrapping a jQuery plugin in a Ember.js component (Screencast)

DevFeed: [Wrapping a jQuery plugin in a Ember.js component (Screencast)](<https://devfeed.tech/articles/wrapping-a-jquery-plugin-in-a-ember-js-component-screencast-40629.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2014-06-03-jquery-component/>)

Published: 2014-06-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Ember](<https://devfeed.tech/topics/ember.md>), [jQuery](<https://devfeed.tech/topics/jquery.md>), [reuse](<https://devfeed.tech/topics/reuse.md>)

Tags: [component](<https://devfeed.tech/tags/component.md>), [ember](<https://devfeed.tech/tags/ember.md>), [js](<https://devfeed.tech/tags/js.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [reuse](<https://devfeed.tech/tags/reuse.md>)

### AI overview

A screencast demonstrates how to wrap a jQuery plugin in an Ember.js component for reuse.

### Source excerpt

Time for another screencast! This one is shorter and shows how easy it is to wrap a jQuery plugin in an Ember.js component for reuse.

## Building Emberredit (screencast)

DevFeed: [Building Emberredit (screencast)](<https://devfeed.tech/articles/building-emberredit-screencast-40628.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2014-05-29-emberreddit-screencast/>)

Published: 2014-05-29T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Ember](<https://devfeed.tech/topics/ember.md>), [App](<https://devfeed.tech/topics/app.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [advanced](<https://devfeed.tech/tags/advanced.md>), [application](<https://devfeed.tech/tags/application.md>), [building](<https://devfeed.tech/tags/building.md>), [ember](<https://devfeed.tech/tags/ember.md>), [ember-cli](<https://devfeed.tech/tags/ember-cli.md>), [how-to](<https://devfeed.tech/tags/how-to.md>)

### AI overview

A screencast demonstrates how to build an Ember.js application without Ember Data. It converts the emberreddit project to ember-cli, beginning with a simple implementation and progressing to building an identity map.

### Source excerpt

One of my more popular blog entries is on using Ember.js without Ember Data. Recently I've been going through my old entries and making sure they don't have any glaring mistakes, and I realized this would be a good opportunity to convert my emberreddit project to ember-cli. This screencast shows how you can build an Ember.js application without using Ember Data. It starts off simple and then shows how to build advanced stuff like an identity map yourself.

## Getting Started with ES6 Modules

DevFeed: [Getting Started with ES6 Modules](<https://devfeed.tech/articles/getting-started-with-es6-modules-40627.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2014-05-03-getting-started-with-es6/>)

Published: 2014-05-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [ECMAScript](<https://devfeed.tech/topics/ecmascript.md>), [modules](<https://devfeed.tech/topics/modules.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [CommonJS](<https://devfeed.tech/topics/commonjs.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [commonjs](<https://devfeed.tech/tags/commonjs.md>), [es6](<https://devfeed.tech/tags/es6.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [modules](<https://devfeed.tech/tags/modules.md>), [node-js](<https://devfeed.tech/tags/node-js.md>)

### AI overview

This tutorial introduces ES6 modules, explaining how they provide standardized JavaScript module syntax after the competing AMD and CommonJS approaches. It demonstrates exporting and using a class across files and explains that transpilers can make ES6 modules usable in browsers before native support is available.

### Source excerpt

Javascript is a fantastic example of how something, despite having visible warts and very poor design, can dominate the tech landscape. Nobody uses Javascript because it's a beautiful language; they use it because it's ubiquitous. Its warts are now well understood and most have workarounds. An amazing omission in Javascript's design is the lack of a built-in module system. As more projects used Javascript and shared more code, the need for a robust module system became necessary. Two contenders sprung up, Asynchronous Module Definition (AMD) and CommonJS (CJS). The former is much more popular with browser applications and the latter is much more popular with server applications written in node.js.

## The Refresh Test

DevFeed: [The Refresh Test](<https://devfeed.tech/articles/the-refresh-test-40626.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2014-04-10-the-refresh-test/>)

Published: 2014-04-10T00:00:00Z

Content type: opinion

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Ember](<https://devfeed.tech/topics/ember.md>), [Website](<https://devfeed.tech/topics/website.md>), [browser](<https://devfeed.tech/topics/browser.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [browser](<https://devfeed.tech/tags/browser.md>), [ember](<https://devfeed.tech/tags/ember.md>), [fields](<https://devfeed.tech/tags/fields.md>), [form](<https://devfeed.tech/tags/form.md>), [make](<https://devfeed.tech/tags/make.md>), [reload](<https://devfeed.tech/tags/reload.md>), [required](<https://devfeed.tech/tags/required.md>)

### AI overview

The article argues that web applications should preserve form data and tolerate page refreshes. It uses frustrating account-creation and online checkout experiences to illustrate the problem, then discusses how Ember App Kit's live reloading encouraged the author to make an application refresh-resistant.

### Source excerpt

How many times has the following happened to you? You go to a web site and it asks you to create an account. You fill out a form with all the obvious fields and hit submit. The page refreshes and shows you the form again. Phone Number is required Well, that's annoying. There was no indication that the site needed your phone number. You prefer not to give out your phone number to every web site, but this one is run by a company you trust, so you scroll down and fill it out. You submit the form again.

## Hiding Offscreen Content in Ember.js

DevFeed: [Hiding Offscreen Content in Ember.js](<https://devfeed.tech/articles/hiding-offscreen-content-in-ember-js-40625.md>)

Original publisher: [Read original article](<https://eviltrout.com/blog/2014-01-04-hiding-offscreen-ember/>)

Published: 2014-01-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Robin Ward](<https://devfeed.tech/sources/robin-ward.md>)

Topics: [Ember](<https://devfeed.tech/topics/ember.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [render](<https://devfeed.tech/topics/render.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [elements](<https://devfeed.tech/tags/elements.md>), [ember](<https://devfeed.tech/tags/ember.md>), [js](<https://devfeed.tech/tags/js.md>), [memory](<https://devfeed.tech/tags/memory.md>), [render](<https://devfeed.tech/tags/render.md>)

### AI overview

This article explains how hiding offscreen content in Ember.js can reduce the browser's DOM workload and memory use. It describes Discourse's infinite-scrolling performance problem and a cloak technique that replaces offscreen views with simpler elements while preserving their height.

### Source excerpt

Everything you render in a browser, whether it's a blog post or a tweet or a video, has a performance cost. At the very least, you will be asking the browser to render a handful of tags and text elements that make up your user interface. That structure, a subtree in the browser's DOM, can be quite complicated and memory intensive. The more tags and elements you render, the slower the browser is going to perform, and the more memory it is going to use to do it. It follows that if you give the browser less work to do, it will do it faster.

[Next page](<https://devfeed.tech/sources/robin-ward.md?cursor=WyIyMDE0LTAxLTA0VDAwOjAwOjAwKzAwOjAwIiwgIjk4YjY1YzE1LWUzMDktNDY4Ni1hMDQ4LWNmNzA4ODA5N2JiMCJd>)