Some explanation for a program I posted here a little while ago.
I finally finished the hydroponic garden I’ve been building at Hive76 for the past few months. The plants have just started to sprout, so it will be at least another month before they can be harvested. But when they are ready, if you want to take some cuttings for yourself at open house you’re more than welcome to. Right now I am growing basil, thyme, oregano and morning glories.
Unfortunately, I’m spending the rest of the summer in Germany so I won’t be at open house to answer any questions in person, but I will be back in september. In the mean time I’ll start posting the blueprints of the hydrogarden, so anyone will be able to build one if they want. Hope to have more of the details next week!
Thanks, to Pete for agreeing to watch my plants while I’m gone, Rob for letting me steal his wood and carpentry techniques to build the frame, and Jordan for helping to design the caster flat bed and general support!
“Hey let’s take the boat out.”
“Hold on, I wanna build a hydrophone first.”
And so, using the parts left over from the day’s Piezo Transducer Class, some wire, a spraypaint cap, red solo cup, and two sticks, the Hive76 Aquaphone was born. With a battery powered amplifer and some groovy headphones, we had ourselves a mobile underwater listening apparatus. Globs and globs of hot glue waterproofed all connections. (more…)
PJ and a number of other Hive members have been fortunate enough to participate in preparations for the Drexel Design Futures Lab “Projects 12/13” exhibition. PJ was almost certainly the most involved Hive contributor — he helped with the development of a number of key software elements for several of the exhibits.
I wound up getting involved in the creation of a special display screen that was part of an interactive piece which allows people to “play” with a computer model of bacterial swarms. This piece was part of Tashia Tucker’s exhibit, and she wanted an “organic looking” display surface. After some brainstorming that included condemnations of the high price of silicone etc., PJ suggested bacterial cellulose. What!? The idea of a movie screen made by real bacteria to show movies of simulated bacteria was too “meta” to pass up.
I had grown some fairly large sheets of bacterial cellulose in the past, and was interested in having an excuse to grow something even larger — so sign me up! Tashia wanted a sheet that started out about 4’x8′ so that the final screen could be cropped to dimensions that were about the size of a slightly gigantic person.
Yikes — this was literally a tall order. Bacterial Cellulose (BC) is created by the same organisms that are used to ferment Kombucha — in fact, the “Shroom” or “Scoby” in a Kombucha culture is a big lump of cellulose. So this was simple, in principle, but the scale of the piece left a lot of novel details that had to be worked out.
On July 14th Hive76 will be hosting a class on piezo transducers! What’s so cool about peizo transducers? They let you turn anything into an electric instrument that you can amplify, record, and experiment with! These nifty little devices turn vibrations into usable electrical signals -and the nice thing is that they’re dirt cheap and easy to work with.
Basically microphones that work by touch, they can be used to electrify guitars, make drum boxes, or listen to sounds you can’t hear with your ears. Essential to the musical tinkerer and sonic experimenter.
The class will include a brief lesson on the science of music, sound, and practical applications of piezo transducers (music or otherwise). Participants will build their own contact microphones and leave ready to start making their own noise. If you have any cool old tins, boxes, or things that vibrate in an interesting way, bring them and turn them into instruments.
Please RSVP by commenting below with the number of seats you’d like to reserve.
When: July 14th, 2pm
Who: Open to the public
Where: Hive76, 915 Spring Garden Street
How Much: $10 at the door
Difficulty: Basic as basic can be
(Parents, please accompany minors under 18)
I’ve been studying artificial intelligence for many years. One of the AI constructs that has fascinated me the most has been Genetic Algorithms (GA). With a GA, one “evolves” a solution to ones problem. A “gene” is a candidate solution to a problem, and individual alleles in that gene are individual parameters to the function that attempts to solve the problem. The output of the function is evaluated for “fitness”–essentially, how well it solved the problem–and good candidates are intermingled for the benefit of future generations, while particularly bad candidates are discarded; “survival of the fittest” in its most incredibly literal sense.
This little sketch was written for a couple of reasons. First, I’ve been seeing some AI code that I felt like has been overly complicated. A lot of principle AI algorithms are quite simple to implement, once you understand them. But also, I wanted to demonstrate the flow of a GA and how it tends to find intermediate solutions, improving over time.
This sketch will require some basic programming knowledge to be able to alter the fitness function and make the GA do different things, but I think it can be an exciting and compelling exploration into code. There are actually a few simple things one can do to alter the course of the algorithm. Each “gene” represents a row of pixels in the image being drawn when you click “start”. As it currently stands, it will “evolve” solutions converging on the color red. If you change “if((i%4)===0)”* to read “if((i%4)===1)”, it will converge on green. “if((i%4)===2)” converges on blue. There is a 4th opacity component at #3, but it basically just ends up showing black. It isn’t necessary but I just didn’t feel like fixing the code to get rid of it, and maybe someone else will find it useful.
Instead of “if((i%4)” you replace the 4 with another number–say a prime number like 31–you get some interesting results as well. There are a lot of things that you could do here, it’s just a matter of whether or not you wish to pluck at it.
* the percent sign, ‘%’, is known as the modulus operator. For positive numbers, it returns the remainder of a division operation. So, “13 % 5 ” return 3 because 13 divided by 5 is 2 remainder 3 (i.e. 2 x 5 + 3 = 13).
A few years back I received a birthday card that, when opened, played a 15-second clip of The Final Countdown. Before tossing it out, I tore the little board and speaker from the card. I knew nothing about electronics at the time, but I just thought it was worth keeping around. (more…)
This Thursday, please join us at a FREE exhibition of the work of Cornelius Varley (1800-1860) put on by the venerable American Philosophical Society. It is a fantastic exploration of the life work of this fellow tinkerer and inventor who’s insight and explorations reminds me a lot of our Hive76 members!
A few of us will also be presenting at this event! We will have live 3D sugar glass printing, exhibitions of Brendan’s boom cases, Dan’s 8 mm RockBox, PJ’s electronics, Corrie’s textiles and artwork, Chris Terrell’s wood burning, and maybe a few more things.
We hope to see you there! Deets and directions below.
Free Refreshments (wine, food, music) will be provided at the event!!
APS Requests your RSVP HERE: email@example.com
Thursday, June 6th, 2013
APS Museum in Philosophical Hall
104 S. Fifth Street, Philadelphia, PA
Lately, I’ve been teaching myself the Racket programming language. It has a very interesting combination of tools, training-wheels-mode, and rocket-ship-mode. Originally built as a teaching programming language, it has significantly outgrown its pedagogical roots and is now a very robust applications language. I’m even developing a business project in it as we speak!
But it is a little rough around the edges. While it has a lot to make it a very easy language to learn, it is ultimately meant for computer scientists, those in training and those in working. There is an underlying feeling to everything that “this easy thing will eventually get harder.” As I see more and more inside the Racket community itself, I know that that is not their intention, and that they hope to be able to bring the joy of programming to everyone, regardless of their background.
A tool that has brought the joy of programming to everyone has been Processing. Processing, in a round-about way, brought a lot of features of the Racket environment to Java. There are some very, very clear parallels between the DrRacket programming environment and the Processing editor. If this was unintentional, then it at least clearly indicates the superiority of the form as a pedagogical tool, as two independent environments have both evolved the same feature. If it was intentional, then there are ways in presentation in which Processing has grown past Racket that I think could be brought back to Racket-land.
Racket and Processing
At a very high level, you can see the similarities between the DrRacket editor and the Processing editor. I have intentionally made the code samples different for each, as they represent more of the canonical methodology for each language.
As an artist with a very strong background in computer science, there are things about Racket that appeal to me that Processing will never be able to do. There are things about Processing that are very awesome and very nice that Racket could do, if someone with a very strong background in computer science took the time to make it so.
Where Racket succeeds over Lisp and Scheme, and where Processing–and thus Java–succeeds over all, is that enough is provided for you to not require you to learn the more advanced language features to get good results. Racket calls it “batteries included”, and it is, I believe, the most important concept that Processing borrows from Racket. Beginners don’t want to learn about “public static void mains”; to this day I still don’t know why that garbage is so necessary.
My hope is to try to bring some of the batteries of Processing back to Racket. The potential is there for Racket to be every bit as popular with artists as Processing is, today. The things that it lacks in comparison to Processing are relatively trivial to develop, in relation to the things that Processing lacks in comparison to Racket. By bringing artists into the much more powerful environment of the Racket programming language, once they have mastered the fundamentals of programming with the training-wheels mode, Racket can be molded by artists, for artists, to let people think and program in ways that the programmer-artist chooses, not in ways that the original language designer chose for them. If there are two groups of people that I know hate being told how to think more than anyone, it’s artists and programmers.
I’d like to hear from the Hive76 readership, especially those who have experience with Processing (though all are welcome to comment), about what you like and don’t like about Processing, about programming, about art, about putting code down in text files, etc. This certainly applies to the Arduino crowd, as well, as Arduino is based on Processing. In the meantime, I have a few thoughts on where the work could begin.
Make the website prettier
First impressions are important, and most programming language websites are prettier than Racket’s. I would more readily crib from Ruby than from Processing here. Ruby’s website is very clean and concise, very inviting and pleasing. Everyone cares about taste, especially artists.
Racket’s website is built in Racket, with a sub-language called Scribble, specifically designed for building documents and documentation. It’s an excellent language, but its default styling is kind of ugly. Restyling the site is a low-hanging fruit that could bring in more people, if only because they don’t jump ship prematurely.
Make more dynamic examples for beginners
The Racket documentation has its heart in the right place, but ultimately feels like its drawing examples are just pat examples. The drawings aren’t very interesting and its not immediately obvious how one gets to more interesting things. See this page for an example. It’s easy to draw a smiley face in Racket, it’s much harder to draw a good looking smiley face. And before it becomes apparent, the documentation dives too quickly into the computer science topics thereafter. In contrast, Processing starts off with examples that are extremely visually compelling. As people are visual creatures by nature, this seems the superior methodology. Note that the Processing example is the introductory page to the documentation–one click off of the front page–whereas the Racket example is several pages into the documentation–two clicks and several screenfuls of scrolling off of the front page. Much more compelling examples in Racket are much more deeply hidden.
Finally, make more artistic things with Racket
The Processing website is built around showcasing what people have done with Processing. While Racket’s package system can be considered the same thing, to a degree (and it is already in the process of getting better), it is again not as visually compelling. Racket needs an elevator pitch, a high level view that shows the answer to “what will you do with Racket?”.
 Historical Note: Racket has been around since 1994, when it was originally called PLT Scheme. They figured they lost more people being immediately associated with Scheme and Lisp than they gained, so in 2010 they changed the name to underscore the fact that there is so much more to Racket than the name “Scheme” implies. Suffice to say, for beginners it doesn’t matter, other than knowing that their is history to the project and it isn’t going away anytime soon.
 There are problems in both examples; both are overly simplistic and both would not scale well for large applications. But the gist of the difference is there, Racket is about functions that define what we want to happen, Processing (because it is based on Java) is about instructions. The differences to the non computer scientist are difficult to explain, so for now you will just have to take my word for it that the former is a generalization of the latter and is therefore more robust and open for greater expressiveness.
 For the computer scientists reading, succinctly: macros. You either know what I mean or you don’t, this is not the place to get into a technical description of macros. For the non-computer scientists, the best analogy I can make is magic. Magic isn’t real in our world, but I can think of nothing that comes closer to resembling it than the massive productivity gains that macros can afford, once mastered. But neither is mastery of macros in Racket required to do great work. Processing is what happens to languages like Java that do not have macros. In Racket, something like Processing would stay a part of Racket and not be a separate project.
We got some Raspberry Pis and began jumping through some tutorials. Adafruit has a particularly thorough and easy to follow series. We’ve had good luck with the Raspbian Wheezy distro and it works just like familiar Ubuntu since it’s based on Debian. Remember to run:
sudo apt-get update
sudo apt-get upgrade
upon first launch. That will make things a lot easier since the release is rather old by now.
I got some time to explore the Raspbian distro.
After seeing all of my efforts, Morfin couldn’t wait to give it a shot.
Eventually we got my favorite light-weight print controller github.com/kliment/printrun running an active 3D print. It really was incredible to have a $40 computer connected to the interwebs and sending gcode with a full GUI over python->USB-serial. It’s a bit too slow for computational slicing, but would probably be GREAT for a bot-farm. Note that you should also use pianobar instead of full-blown pithos for pandora audio. Note that the audio worked great after we ran the apt-get upgrades mentioned above.