Ever since I discovered it years ago, I’ve loved Progress Quest . It came out in 2002 as a parody of EverQuest and the emerging MMORPG boom. “Playing” it consists of creating a character, clicking “Sold!”, and then watching progress bars fill forever. It’s considered the original idle game. While there’s no actual interaction or gameplay, Progress Quest has a lot of hidden charm. The game’s…
I recently made the switch from Xfinity to Quantum Fiber and I couldn’t be happier. It’s cheaper, has symmetrical 1Gbps up/down and the latency is much improved (1ms vs 15-20ms). Getting it set up and working with my Unifi UCG Ultra was a bit tricky though. I read through some conflicting information and had to try a few different things to get it stable. This is the setup that worked best for me.…
I made a retro-inspired dock to charge my Playdate out of a Raspberry Pi case . The case is a miniature version of the Super Famicom and I love how it makes the Playdate look like a little game cartridge when it’s charging. Making one yourself is pretty straight-forward, you’ll just need the following components: Retroflag SUPERPi case A compact right-angle USB-C cable, like this one The 3D…
A few years ago, I built a Wi-Fi-controlled Nerf turret , but I never got around to creating a proper build guide for it. When I finally sat down to write one, I realized just how many things I would do differently. That realization quickly snowballed into a full redesign—and the result is a vastly improved version of the SwarmTurret. This new version is not only more powerful and precise, but…
Last summer, I was inspired by a computer that was built inside of a toaster that I saw at a local computer recycling store . The idea of a computer with the design of a home appliance was really appealing and so was the absurdity of it. It occurred to me that this would be a fun and creative way to integrate technology into my life. After thinking about it, I realized there’s also something…
I wanted to add more hauling capacity to my bike and was looking for something compatible with my Yepp rear rack. I also use my rack with a child seat (the Yepp Maxi) which has a mechanism that allows it to attach and detach easily without sacrificing safety. I was thinking it would be great to build a Yepp compatible rear basket that could I just as quickly attach/detach from my rack. I designed…
The Yoto Mini is one of my favorite products. The team behind it deeply understands its users and put just the right set of features into a brilliantly designed package. I have no affiliation with Yoto, I’m just a happy customer with kids who love it. If you aren’t aware, Yoto is an audio platform for kids with what they call “screen-free” audio players (even though they have little pixel LED…
When I first got my 3D printer, I built an enclosure to protect it from dust, maintain a consistent temperature, and minimize noise. I was surprised to find that the enclosure didn’t reduce noise that significantly. I then placed a patio paver under my printer, which made it noticeably quieter, but it was still audible from other rooms in my house. Recently, I found the most effective noise…
My 6-year-old is obsessed with jokes and often asks me for any new ones I’ve heard. I usually can’t remember many, which gave me the idea of creating a fridge magnet to display jokes in our kitchen. This is the finished product: I wanted a highly readable and battery-efficient screen so I decided on the paperd.ink Classic. It has a 4.2-inch E-ink display, 1900MAh battery, and an Arduino ESP32 all…
I’ve had a heater in my home office this winter and I’ve wished it could turn on/off automatically based on whether or not I was in the room. A smart outlet wouldn’t work for this because the heater has a manual switch. My next thought was to use my Switchbot smart button pusher, but even this wouldn’t work because the heater uses capacitive buttons . After doing some digging and experimenting, I…
Earlier this year, I decided to build a 3D-printed Nerf turret with streaming video that is fully controllable from a web browser. It’s something a 6th grader would have thought was a good use of time, but for some reason as a dad in my thirties, I spent the last several months hacking it together. I’ve created a printables project and github repo if you are interested in making one. Starting the…
I love creating tiny programs that solve actual (often minor) problems. As Julia Evans points out, this is not only a great way to make programming fun but actually one of the best ways to learn. Below are some my favorite tiny programs I’ve created. Finding Campsites My wife and I like to go camping on the Oregon coast but we had a hard time finding available campsites. I wrote a Python script to…
Last week I switched to a new nozzle on my Prusa MK3S 3D Printer and made the mistake of not watching the first layer of the print. This led to a large blob of PLA sticking to my heat block. In my attempts to remove it, I severely damaged the thermistor wires resulting in the MINTEMP error . I went through all the recommended troubleshooting steps and even soldered the wires back together but…
I received a Traeger Tailgater as a gift last year and I love it. It’s compact, easy to store, and works amazingly well. It has more than enough grill space for me and is pretty minimalist on features, which I like. Last Thanksgiving, many people wished they didn’t get the “smart” Wi-Fi-enabled version . Just like my gas grill , I store my Traeger in my garage and roll it out the back patio…
Earlier this year, I purchased a 3D printer and it’s been a blast! I had no idea how easy it would be to create high-quality prints with such little effort. I’ve printed raspberry pi cases, kids’ toys, ceiling hooks, custom parts, electronics enclosures, curtain rod holders, phone mounts, bike parts, printer upgrades and I feel I’m just scratching the surface of what I can do with it. The…
I wrote this post on November 23rd, 2020 when I reported the issue via Craigslist’s vulnerability disclosure process. I didn’t want to publish it until I confirmed the issue was fixed, but it appears to have been fixed on February 28th, 2021 so I am posting it now. Background Someone reached out to me recently because of an issue they were having. They had evidence that people in their area were…
«««< HEAD Smart outlets are great. I’ve owned Belkin Wemo Mini smart plugs for years and used them for controlling lighting and fans. I thought it would be cool to control my Wemo plugs using a physical button (in addition to my phone). In many situations, a button is faster than pulling out my phone and it also allows family and friends to control the outlets themselves. Smart outlets are great.…
Four years ago, I wrote about using Amazon Dash buttons as simple hackable Wi-Fi buttons. It’s pretty cool to order pizza, turn on a light, send a tweet, or even run a custom script at the press of a physical button. But I recently tried to use one of my dash buttons and couldn’t get it to work. I then learned that Amazon has completely killed off the dash button product, and even sent out a…
At my company , it’s a tradition to say “ring the bell” when we sign a new customer, release a new feature or receive other positive news, big or small. When we hear the large bell ring in the center of the office, we know that something good just happened. It’s been a great way to celebrate the wins we have together. The problem is that our remote team members are completely left out of this…
I’ve been into playing games on my RetroPie machine lately and thought it would be cool to build an arcade stick (also called a “fight stick”). Here’s the finished product: Materials and Components I had some leftover IKEA oak butcher block from a kitchen project and I thought it would be perfect to use for this (Check out Bamboo Arcade if you you’re looking for a similar build with entirely IKEA…
I work in downtown Portland and see a lot of people getting parking tickets every day (parking is one of the reasons I ride my bike to work). I was curious to learn more about it. Thanks to the Freedom of Information Act , Portland parking ticket data is available to anyone who wants it. I decided to make a request to the city, and in a few short weeks, I had my hands on a collection of nearly 1…
If you host your website on Amazon CloudFront or directly on Amazon S3, you may not currently have it configured to support IPv6 . This means that visitors won’t be able to access your content with IPv6-only enabled which is not good. On top of that, I think its important to support IPv6 in order to future-proof your site and be a part of the effort to replace IPv4. Enabling IPv6 Support on Amazon…
I’ve found myself more often using web apps instead of dedicated desktop applications at work. It seems that in general, desktop apps have been getting slower and more resource intensive lately. The trend of teams using Electron or the Chromium Embedded Framework in order to ship dedicated desktop apps has also contributed to this. If you are using the desktop versions of Slack, Skype, Atom,…
I’ve owned a Weber Q 1000 for many years and always loved this little grill. I have mine hooked up to a 15 lb propane tank at home where it gets regular use. It is small, but it heats up quickly and cooks food better than any other grill I’ve tried. However, I recently noticed that my grill was taking much longer to heat up and was not getting hotter than about 400 degrees. Rather than buying a…
We were trying to launch a new captive portal page design for a customer and we ran into the strangest issue. Only on iOS devices, we’d see extreme slowness and unresponsive behavior in the Apple Captive Network Assistant (CNA). Over the course of several days, we made multiple attempts to fix the problem. We tried rewriting our ajax libraries, removing external dependencies, adding elaborate…
Setting up SSL is a pain. Even using free certificate authorities like Let’s Encrypt are difficult to get working. For some time now, I’ve been looking for a cheap and easy way to set up SSL for static sites. AWS Certficate Manager I recently discovered AWS Certificate Manager (ACM). Among other things, ACM allows you to easily issue free certificates for any static site hosted on Cloudfront with…
I love Craigslist, but trying to buy certain things (like Subarus in Portland) can be ridiculously competitive. I wanted a simple way to be alerted immediately when an item I was looking for was posted. Craigslist Search Alerts I tried using Craigslist’s built in Search Alert feature but I found some major limitations with it. For instance, it’s not clear how often the alerts run. There is no…
Heads up! This post is no longer current. Check out the WBA’s Captive Network Portal Behavior site for a better resource on the Captive Network Assistant. If you’re a mac user, you likely have seen a strange popup window appear on your computer when you try to connect to the internet at a hotel, coffee shop or airport. It looks like this: This popup is a utility built in to Mac OS called the…
After nearly 6 months of looking, my wife and I finally bought a house in Portland. We physically toured more than 70 houses, put in 13 offers and looked over hundreds of listings in nearly every neighborhood in the city. I thought it might be a good time to reflect on the process as we are just settling into our new home. Where we looked My wife and I have lived in the Portland area for a long…
I recently migrated my blog to Jekyll and wanted to use the s3_website gem to deploy it. Everything worked out-of-the-box extremely well until I wanted to actually run the s3_website push command to deploy my site to the live S3 bucket. The command would hang for a really long time and eventually respond with the following error: java.lang.OutOfMemoryError: GC overhead limit exceeded After some…
The Amazon Dash button is about a year old and has proven to be a pretty great hackable internet-of-things button. It’s got built-in wifi, an onboard battery and best of all, a $4.99 price tag. How It Works The actual “hacking” of dash buttons has really nothing to do with the button itself. The process involves an external application that sits on the local network and listens for when the button…
I thought it would be fun to recreate the iconic Windows Blue Screen of Death (BSOD) in Photoshop. I found the classic DOS system font and was able recreate a pixel-perfect BSOD image using it. You can see a rendering of the classic BSOD in all it’s pixelated glory here and download the font and psd file below. Download the font here Download the photoshop file here
My wife and I love to camp on the Oregon coast and the summer is always the best time to go. It also ends up being the most competitive time to find a campsite. If you look up the handful of good campsites on the coast you will probably find that nearly every summer weekend is booked months in advance. This makes it really hard to go camping! This is what a typical summer weekend looks like on…
Setting material rewards for myself has helped me stay motivated and focused on important long-term goals. This isn’t a new idea but I’ve found it to be really helpful in keeping me on track and giving me that extra push to follow through on my goals. Set SMART Goals In order to have any hope of being successful in reaching your milestones, goals should be Specific , Measurable , Action-Oriented ,…
I’m not really a fan of bumper stickers in general, but I saw this one on the freeway a few days ago and I couldn’t stop laughing: It’s of course making fun of the Earth Stickers that are so common everywhere (especially in Portland): If you’re curious, the original sticker was designed by Philip Krohn/Astrov and uses the font: Futura Std Bold . I made some different Fart/Art versions that can be…
In my opinion, the UI design of Windows peaked in the late 1990s. The classic, utilitarian icons from Windows 98 just look amazing. Why are they so good? Rather than some designer’s flashy vision of the future, Windows 98 icons made the operating system feel like a place to get real work done. They had hard edges, soft colors and easy-to-recognize symbols. It’s obvious that the icons were…
Dropbox is a fantastic service. In addition to keeping my files synced across computers, I love the fact that I can give public links to others as an easy way to send large files. Recently though, a few links of mine were getting pretty popular and I received the following very ambiguous message from Dropbox: The frustrating thing was that they don’t say which link was generating excessive…
The Moscow mule is one of my favorite cocktails because it’s simple, easy to make and delicious. This is a guide to making the perfect Mule. The Perfect Copper Mug The copper mug is essential for a real Moscow Mule. Copper immediately takes on the temperature of the drink keeping it cold and also offering that distinctive look and feel that makes this drink unique. After trying a few different…
Application Installs Homebrew is a ridiculously good package management system for OSX. It’s a huge step above MacPorts and Fink when it comes to installing and managing open source software. Spectacle is a free window resizing utility that gives you keyboard shortcuts to resize windows with. TotalTerminal makes the built-in terminal accessible via a system-wide hotkey. After installing, run this…
Recently I became a Car2Go member and I can’t say enough good things about the service. It’s fast, cheap and ridiculously convenient; it’s a pretty incredible transportation option. Part of what makes it so great are the apps that give you up-to-date car location and availability information. After using the app, I was curious why I sometimes couldn’t find a car and what the usage patterns of…
This post is a summary of the different values of the CSS position property. It assumes you have knowledge of basic document flow . Absolute Position position: absolute elements are removed from the normal document flow and will be positioned relative to their next parent with relative or absolute positioning up the element tree. Fixed Position position:fixed elements are removed from the document…
While the checked attribute of an HTML checkbox can only have two values, the checkbox itself can actually have up to four different visual states: checked, unchecked, disabled and indeterminate. What is indeterminate? It’s defined by the W3C this way: If the element’s indeterminate IDL attribute is set to true, then the control’s selection should be obscured as if the control was in a third,…
JSDOM is an awesome node package for simulating a browser environment. It’s a NodeJS implementation of the DOM that makes it super easy to work with pages retrieved from the Internet. Unfortunately, JSDOM relies on a node package called Contextify that is difficult to get working in Windows. Before beginning, make sure you’ve got the following installed on your system: A recent copy of the x86…
I finally had a chance to use my Chromecast over the past few weeks. In doing so I noticed that the background images that cycle through the home screen are pretty awesome. I looked into it and was able to find the URL that this page uses and pull all the images using a Node script. I whipped up a quick page using captionss and Angular. It might come in handy if you’re looking for a new desktop…
The CSS Box Model is used to describe how items are rendered (in boxes) from elements in the document tree. It determines how the content area, padding, border and margin of an element will be displayed. There are two types. The W3C Box Model CSS: width: 300px; height: 200px; padding: 20px; border: 5px solid #f00; Actual Size x The W3C specification calls for the width property of any particular…
This is a list of the top five computer games ever made. These are games that you should most definitely play if you have any interest in playing games. Fallout 2 (1998) Fallout 2 is my favorite game of all time. It’s truly a masterpiece. It expanded on everything good about the first Fallout adding TONS of new content and features. It really hit the sweet spot between an interesting story-driven…
My entertainment setup is relatively simple but I’m happy with it. All my content is stored on a Synology DiskStation DS213 NAS with 2x2TB RAID 0 configured drives. This is hands down the best NAS I’ve ever used. It’s super easy to set up and the interface is awesome (all linux-based). I’ve set it up with Dynamic DNS/Port Forwarding so it’s accessible from anywhere. The DS213 supports torrenting…
Short of leaving your wireless network open, the Wifi Protected Setup (WPS) vulnerability is probably the single biggest security hole on any home wireless network. About WiFi Protected Setup WiFi Protected Setup is a security standard that comes enabled by default on many routers. Part of the WPS specification is a method for adding a device to the network using a PIN number. The router comes…
I developed a set of scripts that scrape Amazon’s product pages. The result of scraping and processing nearly 300,000 products from 26 departments is my own Amazon Top 400 List . I struggled to come up with a good way to calculate a score for each product based on the number of reviews and average rating given. I wanted this “score” to be a true measure of how good the product was and not to be…
On a removeChild function call, Internet Explorer complains: “Do you want to view only the webpage content that was delivered securely?”. This is a particularly obscure bug with IE that has caused me lots of grief. First of all, it is indeed a bug with IE. This behavior can be repeated with 100% HTTPS content all on the same domain (see example below). The popup looks like this and it’s loosely…