Apathetic Numbers

My son is 11, and he likes to think about numbers. In this time of working and learning from home, I’ve had him reading Isaac Asimov’s Realm of Numbers. The other day my son stumbled upon this numerical curiosity: $$3 \times 1.5 = 3 + 1.5$$ How fascinating that the numbers don’t care whether they […]

Apache and Icons

This semester I’m teaching a web development course. This is the first time I’ve taught the course, which means I have no Catalog of Errors that we teachers consult when trouble arises. Rather, I am writing the first entries in this Catalog as we speak. This week I spent an hour chasing down a pernicious […]

CS 268: Lecture 17 – Hello, Express

Dear students: Many websites pull down data from web services, just as we did with the News API. But how are these web services made exactly? That’s what we explore in this lecture. We’ll use Express to create our own web service that responds to HTTP requests and serves back its data through JSON. We’ll […]

CS 268: Project 2 – React App

In the second project of this course, you will create a web app that consumes a web service using several tools from the Node.js ecosystem, including React, Redux, and Express. Expectations Your app must meet the following expectations: You will create an app that has a coherent purpose. Its content must be original and satisfy […]

CS 268: Lecture 16 – Hello, React

Dear students: The first theme of this course has been learning the foundational technologies of the web: HTML, CSS, and JavaScript. Today we officially reach the second theme: designing modern web apps with React. Systems like React ease the burden of designing interactive sites with dynamic content. Here’s your TODO list: Install Node.js, an ecosystem […]

CS 268: Lecture 15 – Higher-order Functions

Dear students: Today we hit up higher-order functions, a feature of modern languages that will shorten up your code considerably. Once you know a few of these higher-order functions, you may never write loops again. Why? Because so much of our looping algorithms follow certain patterns, we can generalize those patterns into reusable functions. For […]

CS 268: Lecture 14 – Fetch

Dear students: Last time we examined objects and how to pass them around using JSON. This time, we apply these ideas by consuming a web service: News API. We’ll use JavaScript’s builtin fetch function to grab and send JSON data. We started looking at this before spring breeeaaak happened, but I’ve re-implemented the example we […]

CS 268: Lecture 13 – JavaScript Objects

Dear students: There’s a pandemic going on right now, and it has turned the world upside down. We are no longer able to meet in person. But we’ll try to finish out this semester through the web. How apt. Our format for the rest of this constrained is constrained by a few things. First, we […]

Modeling a Jump Sound

I recently unveiled Earpiece as a playground for exploring how sounds are shaped by their frequency and amplitude envelopes. Today we use it to explore a jump sound. First, close your eyes. Imagine you are holding a game controller. Press the jump button. Wrong one. Try again. That’s right. What did you hear? We can […]

Avisual Maze

Around the same time that I discovered 3D printers, I ran across this compendium of maze algorithms by Jamis Buck. Just as our stomachs unite the various dishes of a meal into a puddle of nutrients, so my brain united these two ideas into a puddle of … plastic. I had long wondered how a […]