There are many articles, videos, blog posts, etc, showing you how to use pogo pins to make programming and test fixtures for your electronics projects. But almost all are missing one critical component to make pogo pins work reliably: the Pogo Pin Receptacle. If you’re trying to build a fixture or jig that uses pogo pins, you should be mounting the receptacle part to your fixture, and not mounting…
TLDR: Do you remove the film that says “Please press firmly on the build plate when tightening the screws”? YES I started up a new firmware job at PomSafe a few months ago. Our products are small and have some detailing that isn’t suitable for my normal FDM 3D printers. I decided to finally break down and get a resin printer, which I had been putting off because I wasn’t sure how messy and…
I build a robotic aluminum can crusher from scratch, designing all of software and firmware components, doing 3D printing and laser cut aluminum, etc. Here is a video covring the entier project and some of my design philosophies. Enjoy! I also wrote detailed blog entries thorught the process: Building the Frame Stepper Drivers and Controls Development PCBA Towards Production Software Mechanical…
Now that my software is in good shape and I can easily test out the can crusher, I’m starting to see a lot of problems with the initial design. This is expected. I just dove in and built the first prototype without much analysis. It’s time to take another pass on the mechanical design and get things whipped in to shape. Let’s take a look one problem at a time: The Can Will Pop Out of the Device…
At this point I have a working dev board that makes it much easier to write code than it was on the breadboard. I’m able to deploy code faster and the can crusher is less precarious, but development is still slow going. I’m going to start working on higher quality firmware, focusing on a control interface that allows me to send commands over UART to the board. This will make it much easier to try…
At this point I’ve built out the frame for my can crusher, and I wrote a proof of concept stepper motor control program with a Raspberry Pi Pico and TMC2209 stepper driver boards. But the board was getting very delicate and fragile and didn’t have all the features to make it easy to develop better software and do testing. I decided it was time to do round one of a proper PCBA to make it easier to…
Now that I’ve built a frame for my can crusher, the next big task is to write out the drivers to control the stepper motors and test things out. At this point everything will be on a breadboard. The goal is to make sure I know how the driver boards work, and test out the motors. It is not the production-level implementation yet. Basic Design Two independent stepper motors are on each side of the…
I have some free time so I decided to do a project for fun where the goal was to build something from start-to-finish, doing as much as possible. All my public projects are software-only. Now that I’m doing more stuff with robotics, hardware, and consumer products, I thought it would be nice to do something to showcase all of those skills. The project is an aluminum can crusher. Not just any…
I finally built my own MagLoop and wanted to share plans, build tips, theory, and performance with everyone else who is thinking about trying to make one. The design is moderately portable and defaults to a 4 foot diameter loop. In addition, the loop can be swapped out for a smaller 2 foot loop to work higher frequencies up to 10 meters, and a larger 8 foot loop to get better efficiency on 30-80…
I’ve been spending some of my free time lately playing with Arduinos and Raspberry Pis. They are dirt cheap, have GPIO port exposed, and there are plenty of peripheral devices available from China for as low as 1 or 2 dollars. Controlling the hardware is different enough from my day job it makes a great engineering hobby. The Arduino IDE is nice if you’re trying to bring up some hardware quickly,…
[TLDR? Fix is at bottom of page.] We just spent two days debugging a problem with our google adwords API keys and finally got things working. We’re not sure if this problem is affecting people globally, but it was particularly difficult to debug so I wanted to get this information out there. Let me know if it helped you out. We’ve been using API keys to generate google ads for several years now.…
Did you: Get an error about readline when running psql? Quickly do a brew upgrade postgres ? Think everything seemed fine until you rebooted your computer? At that point learn that postgres wasn’t running because of incompatible file versions? Enter a world of hurt when you started reading up on the fact that an upgrade from postgres 9.3 to postgres 9.4 required a manual DB upgrade? Experience…
Are you getting https sec_error_unknown_issuer Error in Firefox? Did you add https at your EC2 Load Balancer? Well then Amazon lied to you. We just dealt with a really frustrating error over at WebKite. Our site was suddenly broken with a bad ssl certificate, but only on Firefox. To make matters more confusing, things worked fine on all our Firefox installs in the office, but only blew up on clean…
Here’s a quick example showing why you want to see your test fail before you see it pass. This verifies that you’re actually testing what you think you’re testing. This rspec test was passing just fine before I realised I didn’t even test to see if the result was true: it "detects normal zip" do Geomancer.zip_code_only?("15217").should end I only noticed it when I wrote the next test which also…
One of the nice things about dynamic languages like ruby is the REPL. The Read-Evalueate-Print-Loop. Also known as the interactive console. In ruby you fire it up with irb . Sometimes it’s easier to fire this up to learn about the implementation than to actually ugh read the documentation. I was messing around with dates, and wanted to get an idea of how dates were formatted:…
I thought I’d follow up my completely impractical post on god with a practical one. I needed to write an upstart script for god and couldn’t find any examples out there. Here’s what I ended up doing. Full Script # /etc/init/god.conf start on runlevel [2345] stop on runlevel [06] setuid webkite setgid webkite respawn respawn limit 10 60 env HOME=/home/webkite exec bash -l -c 'cd /opt/node/apps/god…
Sometimes I think about things a little too much. In this particular case, I was configuring god to watch the components of our new software stack at WebKite. God is process management software that lets you start, stop, and restart programs. Most importantly it will automatically restart a dead process so I don’t get paged at 3:17 am on a Sunday. Software developers are known for coming up with…
We had an interesting problem at work. Any time a user did a location-based search, we returned the same result set: Lakewood, Ohio. It didn’t matter what the user searched by. “Beverly Hills 90210” returned Lakewood, Ohio. “221B Baker Street” returned Lakewood, Ohio. Lakewood is part of the Cleveland Metropolitan Area, and as such we’ll just refer to it as “Cleveland” for the purposes of this…
The linux IronKey executable is 32 bit, so you can’t unlock the IronKey on 64 bit linux. The traditional fix is to install ia32-libs : sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install ia32-libs This no longer works. The internet tells us that this meta-package was removed so that you don’t install a bunch of garbage, and you should just install the specific packages…
I once again fried my system and had to recover some files from an encrypted filesystem via a Live CD. It’s a frustrating experience. I tried both Debian Wheezy and Ubuntu 13.10. First, after you boot it will show an encrypted filesystem icon. If you click on that the system will prompt for your password. After you enter your password, it will complain that the partition is invalid and can’t be…
This postmortem originally appeared on the rubygems-openpgp-ca.org site that contained a proof-of-concept system to crytographically sign ruby software packages so they could be authenticated on download. The system was developed after rubygems.org, the primary distribution network was hacked and compromised gems were uploaded. This was by far the most toxic experience I’ve ever had trying to…
I decided to move my main site away from Google Apps. I don’t think I plan to blog regularly, but Jekyll is quick and convenient, and the Lagom theme looks nice. Let the migration begin.
My computer just died. I threw the hard drive into another computer. Everything looked good until it tried to fire up X and then I just got a blank screen. You know what that means. Time to reinstall the OS. There were a few gotchas that I thought I’d document here. Live CD doesn’t mount encrypted partitions I run full disk encryption. After my computer died I wanted to grab a few files and backup…
Over at WebKite , we finally got around to updating our rails stack to 3.2 last week. This was of course long overdue. But it’s one of those things that takes a non-zero amount of time, and doesn’t provide any immediately visible features, so we’ve been pushing it back. Testing went fine. Everything looked good. The code got merged to mainline. And our CI server decided it couldn’t run tests…
I’m currently adding a key continuity feature to rubygems-openpgp. It works similar to the way that ssh stores copies of known host keys, and warns you if the key has changed. This is the first time I’m trying to store any changes locally, and was a bit worried about the directories being created properly on Windows. So I decided to setup a VirtualBox install of Windows 8. My current hard drive…