An Engineer’s Nametag



^ The device displaying my logo


^ The back of the device. note the ziptied pins along the right and top edges.


^The device pinned to a shirt. Quite large, but still effective.

Skills used:

Electrical Engineering, Microsoft PowerPoint



Whenever I find myself at an event that would effectively utilize nametags, I kept thinking to myself, “Darn, I wish I had a way to put some of my cool things or my resume on this little nametag.” They say if you want something done right you have to do it yourself. So I did.

During my short summer break, I hit the thrift shop in a Macklemorish fashion and bought an old digital photo frame and a power cord for it. When I got back to Virginia Tech, I disassembled the casing located the major components. My next step was to find a way to run the device off of batteries as opposed to the standard plug, and since the output of the transformer was 12V DC, I was able to splice the power cord and successfully run the device off of 8 AA batteries. The major drawback to this is that AA batteries are heavy, especially when there are 8 of them. After contemplating dropping to 8 AAAs or a 9V and 2 AAAs, I decided that it would be better to stay with the 8 AAs to avoid risking a power outage during an event.

After setting up power systems, I put a heat sink on the processor, then I duct taped the screen to the processor, and the batteries to the main circuit board (duct tape hasn’t failed me yet!). after this, I zip-tied on some pins I pulled out of shirt buttons and threw down some non-conductive rubber cement for good measure. The speakers were in the way so I removed them. I may replace them later.

Due to all this Macgyvering, the back of the nametag looks quite messy, but seeing as how it is attached to a shirt, this side will not be seen. The front side is mostly screen, and I think looks rather clean, save for some circuits along the edges and a USB drive sticking out.

The final product runs off the aforementioned 8 AA batteries, supposedly runs video (it doesn’t support .wmv, .mp4, .avi, or .mpeg), and most importantly, plays a slideshow of pictures. Assuming I can make a series of pictures with my name, logo, and other relevant information, with a changing photo at the bottom right/résumé credentials, it will act as a slideshow of some of the things I’ve done.



    • I am a fan of unusual, semi-professional attire such as this.
    • You know an engineer made this, even from across the room.
    • Finally, a nametag can act as a résumé too.


    • It is heavy, and when clipped onto a shirt it will pull it down (counterweight perhaps?).
    • It is quite large. Whether this is good or bad I don’t know.
    • The back looks sloppy.
    • There is a small array of broken pixels that really annoy me.


Opportunities for improvement:

Add a case. I don’t currently have access to any device that can effectively cut out a case (like a laser cutter), so it is currently naked. If I can find a way to 3D print or mill a case for this it would look 100 times better.



I like it. It is far from finished, but I like it.

Bottle Résumé 2.1 is complete.



^A view of the main label down the side.



^ A much larger QR code for scanning.


^The layout of the label as a whole

Skills used:

Microsoft Word



Since résumés require practically constant updating, I tried to rethink my bottle version as well as my paper version.

Looking back, I thought 1.2 was … really kind of horrible. Most of the label was faded due to the precision required of the printer and overall it was a mess. There was too much negative space and the words were all in 3 font and impossible to read. To make it worse, I felt that the bottle shape was too mainstream to stand out.

To counteract all of these issues, I got some of the Norwegian artisan water Voss, which comes in a cylindrical bottle, allowing me to extend the information downward on the label. The current model has mostly 9 font, and is rather nice. I also added some decaling to the lid, which is also a nice cylindrical shape. This is also the first version of my resume bottle to utilize my logo.

The pictures shown here are of the prototype, which has some crinkled tape. I was going to just use this, but then someone broke the “discard if broken” seal on the edge. Oh well. Gives me an excuse to make it better.



    • Has been updated to include my grades from spring.
    • Now includes my logo.
    • The font is much larger and easier to read.
    • It looks sleeker and better suits my style.


    • The bottle is a Voss artesian water bottle. Don’t get my wrong. I like it a lot, but it ain’t cheap.
    • It might just be me, but I feel it is missing an opening somewhere. I almost feel by covering up all the viewports, it makes the bottle seem like it isn’t actually filled with water.
    • The tape holding the design together is rather messy on the top, because there is no easy way to lay it down flat.
    • Despite being larger, the QR code is actually quite hard to read.


Opportunities for improvement:

For starters, I have to add some viewports. After that, I have to clean up the tape a little bit. At this point it’s a design game.



I think it is an improvement over my previous versions, but is far from the final design.

The Drop-Add Bruteforcer 1.2.1 has landed.


DBF image1

^ The user interface from run time (click to enlarge)


^ My logo, put at the top of the file

Skills used:

Computer Science (Matlab, C++, Libcurl, Ruby, various rubygems)



It’s about time I finished this.

While I label this as a project, this was more of a learning experience than anything else. I came up with this idea near the end of the Fall 2013 semester. Virginia Tech, like many other schools, has a system referred to as “Drop-Add,” during which a student may check the timetable of classes for courses that they wanted to take, and add those CRNs (Course Reference Numbers) to their schedule. The problem is that this process is live, and as such, requires the student to camp the refresh button until the F5 key is worn out. I was adequately good at MATLAB, which I had learned from my ENGE 1114 class, and decided to make a program that would do this process for me. I figured that, in order to increase my knowledge of computer science (which I had not thought about before coming to tech) this would be a quite simple program to do.

I don’t think, to date, I have ever been so wrong. This turned out to be one of the most difficult things I have ever done on a computer.

Starting with the basics, I looked at the Virginia Tech timetable of classes, and noticed that the full classes featured a grey background (the color #F3F3F3 on the HTML), while the open classes featured a white background. I also knew that I could send GET requests and return the HTML with MATLAB using urlread() and a query string tacked onto the end of the URL. “Huzzah,” I thought to myself, and got to work writing the code.

However, the first problem came when I tried to hit the submit button. I figured that since I could enter in fields with a string like blahblahblah?CRN=32559&TERMYEAR=201409, I should be able to append the submit button on there somewhere too. After trying things like “Find Class Sections = true” or “Button = submit,” I started looking at the actual HTML and realized that they were all under a POST form.  I knew that MATLAB could send POST requests, but after trying fruitlessly, and with the spring semester coming up fast, I put the project on the back burner.

Jumping forward a short while (long enough to learn the basics of C++ in ECE 1574), I was feeling guilty for giving up so easy, and noticed that C++ was intensive enough to provide the options that MATLAB would not. So, I rebuilt the framework, and started doing research. First, I ran across winsock and wininet, which are used by windows for internet interface. After getting nowhere fast, I decided to look into external libraries, and ran across libcurl, a library used for POSTs, GETs, and retrieval of source code in C. After bumbling through copious amounts of stack overflow, youtube, and google, I managed to link libcurl to my compiler, and as a test, successfully got the HTML of Then came the next problem: libcurl doesn’t take urls that don’t have “www” in them, and since the timetable of classes was at a page on, libcurl failed me.

By now, I was 75% of the way through spring, and I was worrying about finals. However, I would still work on this when I had the chance. One day, during research, I ran across a code on Github by a person known as “mil,” who had done… well, exactly what I wanted… but in ruby. Although I pushed it off, I eventually gave in and decided to rewrite the code (again) in ruby.

This time was different. Since straight-up copying his code was obviously no way to learn anything, I started learning basic ruby code, and read up on mechanize and nokogiri, the two main gems used in mil’s code. After getting rubyinstaller down pat and writing some shaky loops, I began remaking the bruteforcer. Since I had a working code to lean on in case I needed guidance, I was able to learn how to do it, and I even changed the code up, changing the page that it gets and searching for the color of the background that was going to use back when I tried it in MATLAB, as well as adding a more precise error handling system. On May 22, 2014, after over 40 hours of hard work and failure, I managed to do a successful run from start to finish.

The main flowchart is as follows (click to enlarge):



The greens have been done, and the yellows are next on my list. To put it simply, the code takes inputs, logs in to verify, then checks if the class for the given CRN is full. If it is full, it will check again, and again, and again, until if finds an open seat. Once it finds one, it will add that course to the schedule. This process is automated, and is intended to run 24/7 during the drop-add period. On a low-traffic day, the system can check the course in 3 seconds, and add it in 6. This can probably be paired down a little bit, and I intend to work on this a little bit more later on.

(The DBF.rb file for this project has been made available here.)


    • The user can get whatever class they want without having to fight people on drop-add.
    • Since I get whatever classes I want, I can plan my schedule more effectively.
    • In the process of making this, I learned so much, including but not limited to: how to use external libraries in C++,  how to use basic web interface in MATLAB, how to use basic ruby and rubygems (woohoo! something else to throw on my resume), and how to interface with the internet with mechanize.
    • This is one of the more useful inventions I’ve made.
    • Learning how to automate POST form submissions has huge potential in more than just this instance.


    • It is not a force-adder. The job of this is to run during the drop-add period to catch drops, but if a class is never dropped, then the user is out of luck.
    • I did not figure out how to use the interfacing on my own, and I was dependent on Mil’s code to figure out how to make it work.
    • It is a .rb file, which means it requires Rubyinstaller to run, as opposed to being an executable file, which requires nothing additional to run.
    • The whole process seems really, really sketchy. After spending hours looking for a VT regulation that disallows it, I’ve come up with nothing, so i guess it’s alright, but its not something to abuse.


Opportunities for improvement:

With this specific application, speed is always an issue. When attempting to get a seat in a class with some fifty people eyeing the same thing, even 10 seconds is a long time. For every little thing I can trim off the program it runs that little bit faster, and gives that little bit higher chance to get the seat. As such, cleaning up is pretty high on my list of TODOs.

For 1.3 I am going to try to add SMS/email functionality, so that the code will send a confirmation text message to tell the user that the class has been added/an error occurred. I am eyeballing the “sms_fu” rubygem. However, I have run into the problem that “sms_fu” is dependent on “pony,” which in turn is dependent on “mail,” which is dependent on “mime-types” version 1.16, while “mechanize,” the main web interface, depends on “mime-types” version 2.0. The bottom line is that I cannot use both “mechanize” and “mail” (or anything on “mail”). There are a number of ways around this, I just have to pick one and go with it.

My dream is to one day create an auto-planner, where you input times you are not available and the classes you need, and it automatically creates a series of possible schedules that you can pick from, then it will go off and add them. That is quite a challenge, but this is a significant start.



I am rather disappointed that I couldn’t fully figure out on my own, but I am glad I did it. From learning more about three different programming languages, to rebuilding it and having it actually work was quite the experience. This was one of my most time consuming projects to date, and it finally paid off. Now to add more functionality…

A Duct Tape QR Code


dtqr compressed

Me wearing the QR code to a social

dtqr compressed 2

A closeup of the QR code

Skills used:

Duct tape, spatial reasoning, computer engineering


This is a rather old creation, made during the summer of last year, but it is still quite interesting nonetheless.

I have always had a fascination with duct tape (I even founded a duct tape club at my old high school), and have earned the title “The Duct Tape Guy,” here at Virginia Tech. I wanted to do something electronic with duct tape, but seeing as how duct tape is an insulator, electricity was a no-go. So I decided to go the data route.

Overall though, the way I did this was rather difficult. After setting up a site in the directory of one of my other inactive sites (, I got the QR code for it from, then proceeded to copy the black squares onto a sheet of white duct tape with black duct tape. While this took an extremely long time, I ended up with a fully duct tape QR code.

During testing, the readability was not as high as I would have liked. Initially, the readability was around 45% for android and 30% for iPhone. I then did a little bit of research on QR codes, and decided that it was better to change up the error correction codes (the bits directly under the top left square and directly to the right of the bottom left square), in order to make the reader “guess” more of the code. After that subtle change, the readability jumped to about 70% for iPhones and 85% for android. After cleaning up some of the lines, almost everyone can successfully scan it.

I’m not entirely sure what to do with it, but I think it is quite interesting.


    • It is a giant duct tape QR code. What’s not to like?
    • It is fairly readable.
    • Random people will come up and ask to scan me. It may be a weird way to start a conversation, but it is definitely a way to meet new people.


    • It is not completely readable.
    • Building this was a painstaking job.
    • When reading it, glare off the shiny duct tape is an issue.
    • I don’t really use it for anything other than a Halloween costume (I have it link to an impossible test; I know what scares the college students).

Opportunities for improvement:

Well for starters it needs a real purpose. As of now it is just a proof of concept. Perhaps I should put it on my door…


Not horribly useful, but I would say it is successful in its own right


Watch out world (Again), Version 1.2 of my Laser-Cut Business Cards have arrived.



^ Version 1.1, the old version


^ Version 1.2.1, the newer version


^ Version 1.2.2, the card rotated 90 degrees


^ stacks of both

Skills used:

Rhino CAD software


After I cut version 1.1, I realized the 0.09 inch thick slabs of basswood were excessively large and bulky. In addition, I thought the somewhat sketchy logo was too… well… sketchy to be used on a professional card.

In response to this, I overhauled the design and logo, and put it on 0.032 inch thick birch plywood, a third the thickness of the old design. This served a double purpose, because it also burned black as opposed to dark brown, which is critical for the readability of the QR code. This design is far superior in that regard, and every QR code is readable in most lighting, whereas the old version required a very specific angle.

Also, I really liked how the hole in the card let the light through. This influenced the current design, and I ended up incorporating a mesh grid of diamonds to the design for just this purpose. It made the printing take quite a while longer, but I am happy with the result. So happy in fact that I decided to cut another version of the card rotated 90 degrees (1.2.2), and am happy with that as well.

I do have some leftover 1.1 cards that I will hand out when I get the chance.



    • Looks far better than 1.1.
    • Is far thinner than 1.1.
    • Incorporates my new logo.
    • Looks cleaner than 1.1.
    • The QR code works better than 1.1.
    • Looks professionally made.
    • Extremely creative, and draws attention to me in a stack of others.
    • As many of my fans (a rather grandiose term for “people who know me”) understand, I like to bend the rules of professionalism (see “water bottle résumé” and “light-up duct tape tie”), and this is right up my alley.
    • I, for one, have always liked the smell of burnt wood. Must be from my boy scout background.


    • I need a laser cutter to cut more. I am thinking of building a desktop version dedicated entirely to this purpose, but that Is way down the line.
    • Still a little bit thicker than a regular paper card.

Opportunities for improvement:

Get a bigger laser cutter. Cut it out of Steel.


Far superior to my original version in terms of QR code readability and overall looks. I am quite happy with it, and the only real improvement I can think of is to get it cut out of steel. One day…

Things Will Be a little different around here.

Recently, I decided to overhaul much of my work, and fix a few major points:

1) I am working on updating my Gateway Site. More details to come.

2) My list of projects will now include what skills were used to make the devices. this is critical because some things coming down the pipes use everything from C++ to car batteries to gears.

3) I thought that my old “lightbulb” logo was too poorly done to make sense as a logo. As such, I redid it, and the new “lightning” version looks a whole lot better.

old logoThe old “lightbulb” logo put on my business cards

logoThe new “lightning” logo that will go on everything I do from now on

Polar Collage



The work to the naked eye


The work where the viewing sheet is at 0 degrees


The work where the viewing sheet is at 90 degrees


A picture of the work where half is seen through the viewing sheet, and the other is not.

Skills used:

spatial reasoning, basic physics, artistic design


While it is not necessarily an invention, and while I am not necessarily an artist, I figured I would try my hand at art, using my knowledge of science.

This is a simple abstract collage created for my HUM 2204 creative process class. However, I wanted it to stand out, so instead of using cutouts or something boring like that, I decided to cut up an old broken computer monitor I had lying around my dorm room. I pulled the polarizing film off the front and back of the screen. I then cut these shards up to fit my needs, then taped them down to the canvas board with packaging tape.

Since I knew that polarizing film placed parallel to itself blocked out all light, I used an angle Theta from 90 degrees (clear grey) to 0 degrees (pitch black) to shade the work. When the viewer looks through a viewing sheet, the clear sheet located on the back of most TFT LCD screens, and rotated, Theta changes, and what was once clear becomes black, and vice versa.

However, there was an effect I did not expect. The clear plastic packaging tape I used to hold the work down acted as a primitive prism, and when placed over a polarized film sheet in dark mode (Theta ≥ 45) showed up as orange, and when placed over one in light mode (Theta < 45) showed up as blue. This effect was completely accidental, but I like how it turned out

There is quite a use in this art form for the rotation of the viewing screen. If Theta for a few consecutive components is about 15* off each other, they will darken in succession, causing motion in the work, as well as a change of color. There is so much that can be done with this, and I would love to do more of these to explore the processes that can be used.

 What I like about it:

    • It is colored, but not until you look through polarized film. This is quite stunning for the first time viewer.
    • It uses some crazy science that people rarely run across outside of screens.
    • It’s something different, which is always important.
    • It’s not just another invention, which I could use a break from.

What I don’t like about it:

    • The coolest part, the color, was run across by accident. I wish I did that on purpose.
    • When making this, I cut myself rather bad while removing the film. I have never had art attack me before, but after bleeding profusely, I decided I need to watch out for it more.
    • The materials are not cheap. The only place to easily get this is from the back of TFT LCD screens.
    • The background is too plain.


I like it, and my professor was grounded with how cool an idea it was. All around, I like it, but, unlike my inventions, it is not really useful at all. Oh well. It was fun to make.