Download the Internet with Kiwix
(5 min read) Did you know that you can download all of Wikipedia and tens of thousands of books from Project Gutenberg? Here's how.
(5 min read) Did you know that you can download all of Wikipedia and tens of thousands of books from Project Gutenberg? Here's how.
(12 min read) I've been a licensed ham radio operator for five years now, so I thought I'd reflect on my progress and how I am doing ham radio today in 2024.
(22 min read) Using Python to explore the probabilities of battle outcomes in War Room, a grand strategy board game similar to Axis and Allies.
(6 min read) I asked ChatGPT to help me write a bash script to count the total number of production releases our company has made to Heroku.
(2 min read) I love lists. So here's a list albums, one for each year of my life. This exercise was inspired by a blog post by the CTO of Amazon.
(5 min read) A quick tutorial on how to use OpenAI's WhisperAI library to automatically generate high-quality closed captions for your videos and attach them to your videos using ffmpeg. This process is entirely offline, meaning it's efficient and safe from prying eyes!
(1 min read) I finally updated my blog (williamhuster.com) to respect the dark mode / light mode preferences of the user's browser. It was surprisingly easy!
(6 min read) We told an AI the story of this song, and fed it some lyrics, and here is the result.
(4 min read) Today I played around with Stable Diffusion and Dreambooth to make a bunch of silly pictures of myself and friends.
(4 min read) It's my first time owning a camera with a focus stacking / bracketing feature - and it's awesome!
(4 min read) This is how I use exiftool to extract the metadata from my photos to markdown.
(5 min read) I built an ortholinear keybaord and retrained my brain!
(5 min read) The 'State of JS' survey results are always an interesting and informative read - my observations and TILs.
(1 min read) I drew self portraits a decade apart, first in 2010 and then another this year in 2020. In 2020, I'm sporting a mask, of course. I look forward to doing several more of these!
(30 min read) Use JavaScript to write a Monte Carlo simulation to estimate the probabilities of winning combat scenarios in Axis & Allies.
(1 min read) Wherein I compare product dev to moon landings.
A demonstration of a case where I cleaned up messy, mismatched data using Levenshtein distance to find and rank likely matches.
(7 min read) Let's write a command line tool in Python to record WTF moments during code reviews.
(5 min read) Radar charts are a great way to visually compare sets of numbers. They also help us gain an intuitive understanding of the data structures and pattern matching processes that underpin almost all automated matching, pattern recognition, and machine learning algorithms.
(2 min read) I just ran into an annoying issue with the `name` attribute while using radio buttons with VueJS.
(12 min read) Use JavaScript to validate user input in real time without a framework.
(2 min read) Unlike other front-end frameworks, VueJS does not provide any filters out of the box. Here's what to do if you need to display formatted currency amounts in your Vue project.
This is a timepicker component partly inspired by the Google Calendar timepicker. It allows for flexible time entry by typing or by selecting a time from a dropdown menu. It also works with the AngularJS ng-model and form validation.
(4 min read) Info Dots are a dependency-free UI Component you can use to annotate bits of your web site or web app interface. They appear as small, pulsing anchors that you can attach to practically any DOM Element. Hovering over an info-dot reveals a tooltip.
(2 min read) Alert! Alert! is dependency-free JavaScript library to easily add UI notifications to any web project.
(1 min read) The short answer is *don't*. Here's how to use the html2text library to auto-generate plaintext emails.
(4 min read) An experimental game engine from scratch, written in JavaScript. The engine provides components for building game objects, handling keyboard input, and rendering to a canvas using SVG. This demo also features "Player" and "Enemy" classes with composable mix-ins for movement and basic AI.
(1 min read) Hereβs a nice one-liner using the Arrow library to advance a Python datetime.date object by one month.
(2 min read) PEP 8 sets out some style guidelines for Python. Rather than commit these to memory, use a linter! Here's how to do it in SublimeText.
(10 min read) Back in 2006, my friend Eva d'Ambrosio and I wrote and performed a 'Global Warming Cabaret'.
(2 min read) A digital art festival that I participated in.
(2 min read) Sharing progress on a new interactive media piece I'm working on.
On September 23rd, 2009, Youngsuk Altieri and I showed our 'Connections' piece at the FOUND art show at The Lodge in downtown Bloomington.
(2 min read) In December 2009, I collaborated with digital artist Arthur Liou on the interactive design for his piece 'Nachi'.
(2 min read) An interactive 3D environment inspired by the time I spent in El Salvador.
Busy times in Berlin. Yesterday I handed in fourteen pages of pure German text for my two literature courses.
Busy times in Berlin. Yesterday I handed in fourteen pages of pure German text for my two literature courses.
Berkeley Student Yotam Mann created this multi-touch instrument with some cardboard, a couple of lasers, and a webcam.
Is computational search the future of the Internet and a threat to Google's dominance?
Okay, I owe you the rest of the story about what I observed in the classroom at the Oberschule.
Well, I'm feeling a little productive, so I decided to write another little post. A little more about my experience at the Oberschule.
As the final exams fly by in the US (for most of you they are already done), I'm taking a little break from studying for my midterms, which are coming up this week.
Some images from Walpurgisnacht in Kreuzberg, Berlin.
I know you're thinking, "What does William do all the live-long day, and has he turned German yet?" Let's talk about recent developments.
I came across this video report about Iran considering the death penalty for bloggers.
My host mother earned a Stipendium to do art in a little house in Warnemuende on the Ostsee (Baltic Sea).
A brief note about my travels in Germany from the great city of Prague.
I finally got around to uploading some pictures. It's been a grueling process, but I think it was worth it!
I did a double-take when I saw it, and then I saw the advertisement below for The Producers.
Well, here I am in Berlin two weeks before the IES Program officially begins with nothing much to do!
My bags are neatly packed, and tonight I'll drive to Indianapolis to spend the last couple days with my family before I fly to Germany on Sunday.
So, while I was in DC, my friend Neil turned me on to the divine radiance that is Gmail....
(1 min read) I'm about to drive back to Indianapolis, but before I go, check these out...
(1 min read) A recent feature on Youtube, and how interesting! Val has turned her paintings into a digital brand.
(1 min read) A brief recap of my experience at Obama's first inauguration as President of the US.
(1 min read) My plans are set for the next month, so here they are!
(3 min read) I found a post over at Gizmodo about speed painting on the iPhone.
(3 min read) Since keeping a blog consists mainly of writing, and I haven't studied writing for some years, I definitely needed a refresher. So I took some time today to search online for some writing style tips.
(1 min read) In my quest to gain some support for my new writing habit, I convinced some friends to start blogs, too.
(1 min read) Starting my public blog. Originally posted on Blogger.