Why yes! I sure do. It's not all once, and it's not always to completion, but I sure do things! I was thinking deeply today about things like spoilers, datamining, and reveals. I was wondering if I should adopt a sort of "showroom floor" attitude towards my accomplishments and only post them on completion, but I feel that undermines all the work that goes on beforehand! There's already so many people suffering from technological illiteracy that feel like things just come into being after someone has an idea, but really there is and always will be a lot of hard work between those two points. And I feel it's time that I reveled in that time a bit more. I feel like there's a lot of pressure around to get in, get working, and get done, but the truth is this is what I do and I love it! So what if I take a break? I'm still contributing to a wide-base of knowledge I can pick back up at any point. That's how the brain works, and I love it!
That being said, I figured I would make a few posts about the various things I've been working on. None of them are quite at the level of the showroom floor, but that's not all there is to tech! I've been reading a fascinating book, learning to 3d print, and fussing with my new smartphone. The game is a lot different since I've graduated college, and for the time-being, I really enjoy it! Anyways, I'll be sure to post that content along with the other life-updatey things I've been doing. I'd say I have about five posts of content, and I'll try to get them out on a soonish basis. :D
In breaking down research of larger topics, I've found that it's been useful (for me) to place a higher emphasis on reading than swinging wildly at application. I'm sure anyone interested in Computer Science understands the sometimes overwhelming pressure to create and be 'deliverable', so much so that some discard reading altogether. However, I've found that by pacing myself and spending "loose time" reading, I'm further solidifying my understanding and setting myself up for success when it comes time to begin implementation.
Another I have chose to do this is I have a bad habit of picking up a lot of books when I'm in "The zone". I remember spending time in professors' offices at awe at the large collection of books and wondering how many they had read cover to cover, how many were gifts, how many are only reference, and etc. I want to do my best to make sure that any book on my shelf I've at least read through a couple of chapters in. It can be easy when you're concerned with output to be a bit on the impatient side with books, but the fact of the matter is that you're overlooking the opportunity to gain a better, passive understanding of the material at hand.
My present example would be my study of MP3 files. Amazing stuff really. A form of compression based human psychoacoustics. However, I wouldn't have been able to reap all the fascinating information I've learned so far if I hadn't spent the time throughout reading about it. Instead I'd just be staring down the frame header documentation, wondering what each component meant, and desperately googling for every answer. I say that, because that's where I was. Staring at each individual bit, unsure of what many of them were for... but the important part is that I encountered them casually in my reading, and coming back, the whole structure has come together for me. Now it's just a matter of doing more reading into encoding and decoding, and how I can go about that.
My big idea is to spend most of the week --when my dedicated programming time is sparse-- to reading, and then use part of my weekend block to execute a small, perhaps unrelated bit of programming. For example tomorrow I'll either be looking at a 6502 assembly application or coding through a neural network in C++. I suppose it's whatever I feel like!
I'll be sure to post more about what I've learned, I just thought this entry may be useful for those who want to learn but don't have a lot of consistent time on their hands! Let me know your study strategies as well.
As you may have seen in "My Career and My Ambition, pt. 1", I've really enjoyed the opportunity at my work to investigate things on a deep level, such as how encodings affect the size of data as well as what characters are supported. It's got me asking a lot of questions about what the data around every day really is, on a fundamental level. How many people, technologically/musically literate or not, understand how MP3 files are structured? I don't know the answer to that question, but I would like to be one of those who does understand. So I decided to create a list of small programs I could create to systematically acquire this kind of information, a sort of "CS bucket list" (mediocre title definite tentative). Here are some of the things I'd be interested in studying:
Raw MP3 processing
Raw image processing
QR code generation
Creating an Assembly script
Neural Network applications
File Compression
Live sensing
So, these kind of applications will be a lot of the content of my future posts-- and in no particular order. I've already got a foot in the door studying 6502 and other flavors of assembly through tutorials and TIS-100. This will just be something in my free time too, so don't expect any kind of schedule. I'll gradually update on my progress from time to time.
After a lot of prior planning, I've began work on my first pedal build! Of course I decided to go a bit easy this time, and build something that has a simple circuit and doesn't require a lot of signal processing. This also happens to be within the same window that I purchased an Boss RC-3 loop station, so I decided to build a dual footswitch much like Boss' fs-6 dual footswitch, because it's ugly and I can't bring myself to pay the price of a new video game release for something that doesn't actually change my guitar sound.
Everyone remember the 1980's? Also pictured: several options you don't need (that you're paying for anyways)
Using a schematic I got from instructables, I purchased all the parts I need from Mammoth Electronics (custom painted to match the loop station I might add), and took it home this Father's day weekend to get the holes drilled (Mammoth provides several preset drillings for typical stompboxes, but my hole plan for my footswitch is admittedly a little far-fetched). We had a great time taking measurements and planting the holes, and this was the end result:
the next step is taking it home to get it wired, which could be messy. :)
Either way I'm sure it will turn out well. I'll be sure to update whenever it is in action.
Looking ahead I have plans of designing several completely original pedals, but I'm going to start with several kits: next up will be an analog reverb pedal ("Mammoth Cave"), a bass octaver ("Big Bomb") and a fuzz pedal ("Muppet Fuzz"). I have many interesting and creative ideas for these kits, including getting some local talent to make me some vinyl stickers to put atop the enclosure. After I have a body of work, I'll start doing some experiments with designing my own unique pedals, or perhaps yet-unknown replicas of well-known pedals.
I'm happy to announce that the folks at Adafruit thought my mortar board was so cool, that they decided to share my recent video of the cap in action on their wearables blog. I'd like to thank them so much for their support and promotion. Here's the video that was featured in case you missed it:
As promised, here are some more up close shots of the circuit. It performed well at graduation despite the battery concerns. Many thought it was the best graduation cap there, and netted me a few cat calls from Naomi Judd, as well as compliments from the President and Registrar. As promised I will make a fritzing diagram and some code for github.
Side view of circuit.
More vertical view of circuit.
(attempt at) other side of circuit.
A bigger picture of the circuit.
Here's how it looks from the front with the lights disabled.
A close look at the safety pin job that held it in place.
So, after some initial ups and downs, I completed my full graduation outfit!
Here's a short video preview of the headwear:
What you see here is the full package: the mortar board modified with a LED sequence using Adafruit Neopixel and an Arduino Uno, a feathered tassel, aaand some sunglasses. While the last two are a bit more self-explanatory, let me explain how I made the cap possible-- I'll try to get some pictures of it tomorrow after the big rodeo... maybe even some of my college's footage, if I can find any.
While it's not exactly the best practices for a project like this I working under the pressure of only having a few hours in the lab, so I had to work quickly. The first and most important thing, which you may want to keep in mind with your own Neopixel adventures is the fact that the strand I got was actually wired in reverse. That is to say, the wires for input were actually on the output side. I read that this occasionally happens, but I thought I would mention it as it set me back for a while. Of course, you can always just read that one said says "digital in" or DI, and the other says "digital Out" or DO...
Other than this, it should as (possibly) simple as wiring the digital in to a selected digital pin, the 5v to 5v and the ground to ground. Next comes the programming!
Working with neopixel is a great way to experience iteration in a very 'real' environment! I see this because of course your code will be driven make the lights change. Luckily, if you're working with the Adafruit modded Arduino 1.6 install, the Neopixel library will be right there to use, which, while it does not contain many useful example codes, has some great built in functions for making your own sequences, namely setPixelColor(), show(), and clear(). Using all three of these, along with the numberOfPixels() qualifier should be all you need to right successful iterating sequences! While I will make the ones I made available on github after graduation, I implore you to write your own functions, because, even if they go wrong, you might produce something awesome! For example, I accidentally fed in a uint16_t instead of a uint32_t for a color, and instead of white, it was this eery blue. If you do something too far fetched, the sequence just won't occur, so there's nothing to worry about! Start simple, and get more complex. Play around with delay speeds, the size of the pixels you work with and what colors you change them too, and you're guaranteed to have a great time! I look forward to applying neopixel to more things, like my instruments.
For powering the arduino, I got some 9v adapter wires and fed them into one of the dc adapters that goes into the arduino. I modified the circuit to include an on/off switch for when I don't feel like parading my funk. I've been told that 9vs are really efficient, but for the scope of this particular project it was beneficial in that it took up much less space, and complimented the parts I had on hand. I would have rather used my flora, but I didnt have any batteries to satisfy the pinout, so I ended up using just an Arduino Uno. Thankfully I don't think my audience will be too critical.
As I mentioned once I get some free time I'll upload my functions to github, as well as a fritzing diagram. Thanks for all your support! I look forward to graduating tomorrow.