Twitter-Enabled Graduation Cap

With graduation looming, I knew I wanted to do something creative with my graduation cap. And I knew I wanted to steer clear of something like this:

cc1b9407b4055a2d7ae3788fa176def2--graduation-sayings-graduation-cap-designs

Barf.

My first thought was to attach a robotic arm on the top that automatically grabs the tassel and moves it to the other side during the appropriate time during the ceremony, but was put off by the fact that it would only be active for a four second action. It would also have a relatively low chance of successfully working given the uncertainty of the precise location of the tassel.

My second idea was to incorporate a screen into the cap that displayed a live feed of tweets with a certain hashtag. This would allow people to live tweet to my head during graduation and display whatever they wanted to Gampel Pavilion. I liked the idea of allowing anyone to write anything (or post any picture) they wanted to, and it would be displayed at a UConn event through a medium that UConn had no moderation of.

I decided to go the Raspberry Pi route for implementation. I totally could have just put my spare Kindle Fire in the cap and it would have worked fine, but what fun is that? If I wanted to change what the cap did after I’ve built out the hardware, I’d have more freedom with Linux. I also wanted a Linux shell and git to work on projects and RPi Minecraft in case the ceremony got boring.

IMG_0122

I measured the dimensions of my cap, and made a model in Fusion 360 of the enclosure for the electronics. I used a 7″ Adafruit HDMI display for the screen, a Raspberry Pi Zero for the computer, a USB hub, WiFi dongle, 5v battery pack, and necessary cables.

Fifteen hours later (and three too few top layers), the massive, bed-encompassing print had finished. Thank god for the Taz 5’s build volume.

I plugged everything in, screwed in the screen, and booted up the Pi with vanilla Raspbian.

After a quick paint job to comply with UConn’s rules about being allowed to walk at Commencement, I was ready to look into getting tweets to display.

The first thing I had to figure out was HOW I wanted the tweets to display. The screen was pretty small for something attempting to broadcast to an entire stadium, so I wanted the tweets to be as big as possible. I started to look into websites that essentially pull tweets with a certain hashtag and display them in a cleaner and more streamlined format for TVs in lobbys and whatnot. I tried Tweetwally, which was totally free but didn’t do a fantastic job of displaying the tweets very large. They came in in a “waterfall” format, keeping multiple tweets on the screen at the same time, decreasing their size.

I tested a few other free or freemium services, and eventually settled on Walls.io. Walls.io gave the option of displaying in a “billboard” format, posting one tweet at a time in large text, then switching to the next tweet after a specified amount of time. After all the new tweets have been shown, Walls.io cycles through old tweets, so there’s always activity on the screen. It also made the background of the page the image attached to the tweet, if there was one. Clean and concise, but…

Screen Shot 2017-05-10 at 11.08.19 AM

That infuriating yellow bar at the top will only go away if you pay €175 a MONTH. It looked even worse on the Raspberry Pi, taking up almost one third of the screen. Luckily, there’s an option in Raspbian’s native web browser to create a custom CSS file that modifies pages as they load. Selecting this option opens “user-stylesheet.css” in a text editor. After using the “inspect” feature in Chrome on my Mac to identify some classes associated with that bar (and other notifications I wanted to eliminate), I wrote three simple lines that hid the horrendous thing for good:

.wall-notification-visible{
    opacity:0;
}

And that was it. Pure, unadulterated feed of thoughts from my fellow peers. I was a little nervous about what people would write, but mostly I was excited to stir up some controversy and get people talking about it.

workingAtGraduation

It ended up being 95% congratulatory statements, and 5% memes; so much for controversy. Regardless, it was a total blast to build and have people get stoked to see their tweet on my head during graduation! It even got picked up by the news the night before graduation:

The Absurdity of Memorization

“Never memorize something you can look up.” — Albert Einstein


My fourth grade math curriculum was comprised of mainly one thing: multiplication tables. Essentially all of the math-allocated portion of the day was dedicated to drilling a set of seemingly arbitrary sets of numbers into our skulls. After a couple months of training, one of my peers asked our teacher why it was necessary to memorize our multiplication tables. Our teacher responded with, “Well, it’s not like you’re going to keep a laminated reference sheet with you at all times!”

So that’s exactly what he did.

To my knowledge, twelve years later, he still has a laminated multiplication table reference sheet folded up in his wallet. This serves no practical utility (especially given the fact he was still required to memorize his multiplication tables), but he did it to make a point: you can always look it up.

My fellow fourth grader laminated in defiance around 2004, but his point stands even stronger today. We each carry with us a pseudo-infinitely large “multiplication table” in our pockets at all times, leaving the modern need for memorization the smallest it’s ever been. Phone numbers, directions, conversion units, the air-speed velocity of an African swallow, you name it. Anything we can Google, we also efficiently eliminate from our brains.

Of course, some things are still crucial to memorize, namely in the case of an emergency where an internet-connected device is unavailable. A few important phone numbers, your social, stuff along those lines. And sometimes it’s wildly efficient to memorize something you use on a daily basis. For example, it would be prudent for a scientist who works frequently with a certain chemical compound to memorize its molar mass, or other commonly needed characteristics. But 99.5% of information can be cleanly purged without ill-effects.

I think this is fantastic. Intelligence isn’t a measurement of how well you can regurgitate information. Intelligence is a measure of what you DO with that information, and your creative solutions from a unique outlook. If we’ve built machines that are wildly efficient at organizing and indexing data, why bother trying to do the same? We should reserve our brain capacity for something only we humans can do: think critically. The information age isn’t making us stupid, it’s making it easier to be smart.

The State of Prototyping — The Best Tools to Help You Build and Fail Fast

The surge in at-home manufacturing over the past five to ten years has been extreme, with everyone and their mother attempting to miniaturize and simplify industrial manufacturing machines for home use. MakerBot famously spurred on the wave of consumer-grade 3D printers, resulting in hundreds of Kickstarter projects populating the early-adopter market. Anyone that wants a 3D printer can purchase a solid, reliable machine for only a couple hundred bucks nowadays. Other companies such as Inventables, Glowforge, and Wazer are finding ways to produce CNCs, laser cutters, and water jets respectively at a more economical and accessible price.

A similar trend in accessibility is notable with hobbiest electronics as well. Companies such as Adafruit and Sparkfun are “modulizing” electronic functions. Instead of having to create an entire circuit from scratch to develop a proof of concept, $19.95 and next-day shipping will get you a module that takes care of the hard stuff. Just wire into your microcontroller with I2C, use the provided library, and you’re off to the races.

And that’s just the hardware side of things! The nigh unlimited number of open-source software projects saves prototypers years of software development. OpenCV is one of my favorite examples of this. There exists a fully-featured machine vision framework that anyone with a moderate understanding of programming can dive into and give their widget intelligent sight.

And this is something everyone is jumping in on. Google with the TensorFlow machine learning library, Facebook’s React Javascript library for developing web applications; the list goes on.

In some ways, I believe this is arguably a step in the wrong direction. It promotes a shallower understanding of the technology being used in pursuit of simplicity and ease of use. The more plug and play it is, the less you understand what’s going on under the hood. But if your job is to test quickly, identify what is feasible, and make it look and feel gorgeous, you don’t want to get into the nitty-gritty. You just want to make a proof of concept. A production level of specialized knowledge in every relevant engineering topic is not reasonable to expect from one single person.

Handling and understanding the nitty-gritty is the job of a developer that specializes in one engineering practice. A quick hack job of a minimum viable product is passable for testing, but for a production unit, true engineering practices must be implemented. Designing a custom PCB, creating parts designed for injection molding — these things all require specialized knowledge in each of their fields. This is not to say that prototyping techniques don’t help developers. Many products in production utilize open-source libraries, or borrow circuit design from an Adafruit module. But ultimately, it’s the developers that need to know what’s going on under the hood, not the prototypers.


Throughout my time building proof of concept units, a few prototyping tools have stood out to me as being critical to my success:

1. 3D Printing / Excellent CAD Software

This one’s a no-brainer. And the real hero of this pair is CAD. Having solid 3D design software that you’re comfortable using and won’t get in the way of your design process is crucial. When you’re trying to build quickly, the last thing you want is a lack of good software design being your bottleneck. The job of these tools is to hinder the creative process in as few ways as possible.

I recommend Autodesk Fusion 360, for a multitude of reasons. It runs on PC and Mac, and stores designs in the cloud so collaboration is all in real time and trivially easy across platforms. The user interface is clean and understandable, especially for beginners, but also has many complex features for advanced users. The built-in rendering isn’t the best, but really convenient for getting a quick, pretty image of a part. Fusion also has built-in toolpath generation, and temperature and stress simulations, which I haven’t personally used, but have heard are fantastic features. Updates are released regularly with many new features, almost always sourced from interactions with users in the Autodesk forums. It’s a quick moving, fully-functional CAD suite that’s free for students.

Of course the other half of this marriage is the printer itself. Most on the market today will give exceptional results if tuned properly, but printers from Lulzbot and Prusa Research are sure-fire wins. I’ve had a Lulzbot Taz 5for a year and a half now, and I have only good things to say about it.

2. Module-Based Electronics

The central nervous system of your widget, silicon is getting increasingly more accessible due to the aforementioned modulization movement. Standardized communication protocols such as I2C, SPI, USB, and Serial in conjunction with libraries provided by the manufacturer help make modules easier to interface with each other, especially with an Arduino-style microcontroller at the core.

These modules can do just about anything you could expect from your widget. They act as the interface to the outside world, gathering data or displaying it. They act as Human Machine Interfaces (HMIs) and allow different kinds of interaction with the user.

3. Python

This could arguably be another similar language, but I think Python really nails the essence of prototyping. The first argument for this is Python’s syntax. In many situations, Python can read very close to plain english. This lowers the bar for entry in terms of comprehension by a significant degree. When even a beginner can look at some code and immediately understand what it does, you’re removing barriers to creativity and getting out of the way of the prototyping process. Plus, being cross-platform doesn’t hurt.

The truly significant reason why I believe Python is critical to prototyping is the absurdly large number of libraries available to help you accomplish almost anything you could imagine with the language. The excellent documentation that goes along with most of these repositories makes them simple to implement, and keeps you moving. The vibrant community constantly developing tools for anyone to implement with Python make it an incredible tool for any prototyper to utilize.

4. Wait, why not ___?

CNCs? Laser cutters? Hell, sewing machines? The reason I picked what I picked is because all of those tools move an aspect of prototyping from “prohibitive” to “accessible.” I can still sew with a needle and thread. It might take me longer than it would with a sewing machine, but it’s still doable. Same goes for a CNC and laser cutter. They are tools that just make an already accessible task a bit easier. But if I didn’t have a 3D printer, the only way I could make the part I needed was to get it injection molded, or custom-machined, which is prohibitively expensive. Module-based electronics are similar, but with time as opposed to money. Understanding enough about electronics to design the functionality of all the required modules and combine them would take a prohibitively long amount of time, especially in a prototyping setting. Not the difference between 20 minutes of using a CNC versus an hour with a jigsaw, but the difference between an afternoon of connecting modules versus years and years of studying and learning about the fundamentals of electrical engineering. And in the same vein, python (and its all-encompassing array of libraries) reduces the development time of software from a prohibitive amount of time, to an accessible one. These three are game-changers, not time-savers.

Keeping a Skill Index

I was recently asked, “What was the first thing you built that you were truly proud of?” My answer was an RSS feed aggregator I build in high school to get my feet wet with php, database management, cookies, etc. But as I was explaining the technical details of the project, I was surprised recalling what skills I had used to complete it. Granted, it had been four or five years since I had worked on the site, but this was slightly jarring to me. How many times had I neglected to consider that I had the ability to develop in some way, and altered my development stack because of it? I felt like this was unlikely; who actually forgets they have a skill? But I had clearly done it to some degree.

This got me thinking about all the projects I had worked on. What went into them? What did I have to learn in order to complete each project? What are all the skills I’ve collected over the years? And most importantly, what are all the features I could incorporate into a hardware and/or software widget?

So I counted.

I opened a new note in Evernote and started listing. Software, hardware. App development, data storage and management, programming languages, libraries, APIs, methods of automation, bluetooth and wifi connectivity, development boards, all of it. After an hour or so, I felt like I had summarized my smattering of technical capabilities into a neat, hierarchal format.

My first reaction was satisfaction. This document had become my “maker resumé.” All of my “just-for-fun” projects suddenly had a very practical result by adding a skill-set to my development toolbox.

The second was potential. Patterns emerged while scanning this collection of seemingly non-related capabilities. And they were definitely not USEFUL patterns, but it got the gears turning. I started picking three random topics and trying to see how I could combine them. A script that tweets the first hit on Google Images of the word you’ve said most that day. A heads-up display that constantly shows you how many steps away you are from Reno, Nevada. A thermostat system that changes the temperature in accordance with the NASDAQ. Again, not tremendously useful, but a fascinating exercise in creativity. Seeing the possibilities of what you can create is an empowering feeling of possibility.

If someone asks you if you’ve read Stranger in a Strange Land by Robert Heinlein, you know immediately if you have or haven’t. But if they ask you to tell them all the science fiction books you’ve ever read, that is a MUCH more difficult task. So, the point of this exercise wasn’t to help me remember what I’ve done. If someone asks me to build a web scraping app, I can tell them immediately if I can or can’t; my memory wasn’t the issue. The point of this exercise was instead to be able to see all the “science fiction books” I’ve ever read in one place for easy reference. To get the juices flowing. To see how any combination of these techniques could be used together. To keep possibility on the front of my mind.

This becomes the most useful when brainstorming solutions. If a solution is simple, it becomes a “Have I read this book?” scenario. But if you’re attempting to solve a complex problem, looking at everything on the table gives you more context and perspective on ways to build a solution.

 

 

Aluminum Forge

3D printed parts are spectacular for quick prototypes that don’t experience large amounts of stress, but they eventually fail at higher loads.  Curious about casting my own metal parts, I was inspired to build a small aluminum forge after seeing a few tutorials online.

An old propane tank served beautifully as the body of the forge after the top was removed with an angle grinder.  I cut a small hole in the side of the tank near the bottom, and welded a few feet of one inch diameter steel tubing over the hole.  This is for airflow, making the charcoal much hotter than it would be under normal conditions.

I attached a thrift store hairdryer to the other end with some trusty duct tape.  This will blow air through the tubing to increase the forge’s temperature.  The next step is to fill the forge with charcoal and a thick steel soup can for a crucible, light the charcoal, and turn on the hairdryer!

 

casting1

Once the hairdryer had been running for a few minutes, I checked the charcoal.  Although the charcoal was red hot, the can wasn’t glowing yet.  I gave it a few more minutes until most of the bottom of the can was at least a little orange.  Then, i started putting aluminum cans into the crucible, and pushing them down as they melted.

casting2

One by one, the cans got swallowed up by the molten pool of metal, resulting in a half-full soup can!  Using a bit of Sugru, I made a makeshift mold of the greek symbol Pi.  After clearing the impurities off the surface of the molten aluminum, I poured some into my mold. Aluminum Pi!

picasting

ATLAS Arm

Model 1

Last fall, I applied for a grant called the UConn IDEA Grant through my university to build a 3D printed prosthetic hand controlled with an EMG sensor. EMG stands for electromyography, which looks for the voltage in a muscle using a small adhesive pad. I started off by designing a hand in Inventor that doesn’t utilize the EMG sensor and just articulates like a normal hand.

Screen Shot 2015-06-30 at 10.50.48 PM

 

Needless to say, my first versions were less than pretty.

Never mind pretty, most weren’t even functional.  But going through the process of creating a hand from scratch and making quite a few models that don’t do what they should taught me a lot about how to make them work.  Finally, I had created something that worked.

 

IMG_5588

 

 

The two main things I learned from this version were that the fingers did not work well being made out of rigid material, and that my thumb design was quite useless.  A real thumb moves using many compound angles, where mine moves in just one, and not a very useful one at that.  I knew at this point a serious overhaul in the design was necessary.

The next step, however, was building the circuit that would run the hand. I ordered all the electronics, and prototyped them on a breadboard to make sure everything worked as expected.

 

 

After the electronics were all figured out, I had to find a way to contain and arrange them. Thus began my numerous attempts to create the “forearm” of the hand that would house all the electrical components.

 

 

Next, I began designing a hand that could be printed in all one piece. But in order to make this happen, I would have to print in NinjaFlex, a flexible 3D printer filament from Fenner Drives.  Ninjaflex is incredibly hard to print due to its flexibility.  Two things can help printing with NinjaFlex to keep it from messing up; the filament should be tightly constrained from the extruder stepper all the way down to the nozzle, and the print speed must be decreased significantly.

The stock extruder for a Lulzbot Taz 5 doesn’t support flexible material, but Lulzbot is an Open Source company, releasing all their files and build notes online.  I went hunting through their forum for a thread that might contain some development notes about when Lulzbot was developing their flexible material extruder, and lo, I found a wealth of information.  After printing out one of the prototypes posted in the thread, I replaced the one that came in my extruder, and I was printing NinjaFlex!

When I had designed the hand, I imported it into Cura for slicing.

Screen Shot 2015-11-20 at 9.33.37 PM

This picture illustrates the channels cut throughout the hand to allow for cabling to move.

Screen Shot 2015-11-20 at 9.34.01 PM

46 hours and 22 minutes later, my NinjaFlex hand was completed.

IMG_5939

This print required quite a few hours of cleanup to get into a workable state, but eventually it was moving in the way it was designed.

IMG_5947

Finally, all that was left to do was install the electronics in the slightly redesigned forearm piece, wire up the fingers, and finishing touches!

 

 

I took the hand to the 2015 World Maker Faire at the New York Hall of Science, and exhibited for the weekend! I met a tremendous number of cool and interested people, and made some fantastic connections for the future of this project.

 

All development files including STLs and Arduino code can be downloaded here.

Model 2

 

Catapult

In my Intro to Engineering class during my first semester at UCONN, I was assigned a group project of creating a catapult using limited resources.  We were given a budget of imaginary currency, and a catalog from which we could “purchase” materials that we could build our catapult with.  The catapult had to shoot a ping pong ball to hit two targets at set distances away. A combination of least amount of currency used, and high degree of accuracy with your catapult shot would win you the most points.

I decided right off the bat that I wanted to take complete creative control over this project. I typically enjoy working as a team, but for this project I wanted to really test myself and see what I could do.  I picked teammates that agreed to allow me to do all the work for the project. As soon as we were signed up, I drew up a materials list, spending the smallest amount on materials that I could manage while still purchasing what I needed.

I immediately got to work after purchasing my materials from the engineering department’s office.  After driving home to pick up some tools, I began hacking my plywood into pieces dictated by the template I drew up beforehand.  In a few hours, I had the frame assembled, and the next day I had calibrated the tension in the rubber bands so that the catapult would fire consistently to where the targets would be.

As an extra credit component of the project, we could automate the firing process using an Arduino microcontroller and a small stepper motor.  After writing a quick bit of code, and attaching the motor and Arduino, the catapult was finished.

After the competition, my catapult came in first in regards to accuracy of shots, the first target being hit exactly in the center, and the second shot landing about a foot away from its target.  With the cost of materials taken into account, my catapult came in third, still winning me and my team some prizes from the engineering department.

Wolverine Claws

During my freshman year of college, my friend Nick expressed an interest in being Wolverine for Halloween. His thick wiry hair and ability to grow impressive sideburns made Wolverine an ideal choice for a costume.  I decided I would help him out and build him a pair of custom Wolverine claws!

First off, I went out to my local hardware store and bought a ton of cheap welding steel.  I brought a template I cut out of card stock that fit my design, and made sure the profile fit easily on the stock I purchased.

I ended up purchasing a ~2.5 inch wide, 1/8 inch thick flat plate of steel for the blades, and a few feet of square steel tubing for the grip, and to connect the blades together.

When I got the steel home, the first step was tracing out my template six times on the flat plate.  Unfortunately, at the time I didn’t own a band saw, or any other tool that would make cutting these templates out easy.  I was forced to use my angle grinder to cut them out, which took an incredibly long time, and was finicky to accomplish.

Before long, I had six “blade” cutouts.  These burr-covered wrecks still needed a fair amount of work before they were ready to be welded together.  Thus began the tedious process of grinding down every blade, sharpening each edge, and making them all as uniform as possible.

Finally, six beautifully sharpened, polished adamantium blades.  From here, all that was left to do was cut two pieces of the square tubing approximately the width of my palm, and welding the blades to them.  After a final polish and application of lacquer to prevent rusting, they were ready to go!

claws