News in Technology

It's been a long time... Today I decided to update my blog once again, with some interesting and new videos. Here we go:

- Google's AI won the series of games against the Go grandmaster:

- Machine learning and computer vision can get really crazy. Here is NeuralTalk (and Walk):

NeuralTalk and Walk from Kyle McDonald on Vimeo.

- This example of 3D face manipulation in videos seems really out of this world:


New Projects and Progress

Since last time, I've been working on couple of new projects. They are all in progress but here is a sneak peek at one of them; hopefully will get it done soon.

I also started building my own DIY stringed e-instrument, which will hopefully be playable in the end. Maybe I will consider making a demo and uploading it to YouTube, who knows. Highly influential videos of cigar box guitars got me going. More coming soon.



New Python Script & A Glitch GIF


It's been a while since I've been randomly playing around with code and formats of files, so I thought it's about time for me to do so.

I wanted to buy a LOMO, but since I believe all LOMO machines are offensively expensive, I wanted to buy it second hand. I checked a nation-wide online flea market called and found several posts but none of them was interesting to me. But I wanted to keep a track of them, so I wrote a small script that does the job for me. Instead of visiting the website all the time, I hardcoded the link of the web page to the script and it does the job for me. Here is the code:

import urllib2
file = urllib2.urlopen('')
dload =

searchString = "<strong>60</strong>"

if searchString in dload:
print "HTML File has not changed, still 60 posts."

print 'HTML File appears to have changed, please check: \n                           verkaufen/marktplatz?keyword=lomo&x=0&y=0&sort=4'

This may look silly at first, but that is only because the code is silly. Seriously, I just parse the HTML from the source, and look for a "<strong>60</strong>" which is totally arbitrary, but in this specific case it was the number of posts that are already shown. So if it changes, the code prints "HTML File appears to have changed, please check..." and that's it.

For running it, I just press Windows key + R, then type cmd and hit ENTER. Then go to Python directory and locate the script and run it. That's it. Pretty simple but that was what I needed anyway.

The other one is just a 10-minute fun, so I'll just leave it here. Because it's peanut butter jelly time.


This week’s inspiring (and interesting) discoveries

Let's begin with this week's list of interesting internet discoveries!

-Amazon plans to ship your products before you buy them. Seriously. We were trying to cope with the fact that they are working on airborne deliveries, yet they have another innovation.

-This comic book infographic.

-Winamp being sold to Radionomy. This might mean that Winamp users can continue using Winamp, although I don't really see the point where foobar2000 is a great alternative for listening to music on your OS. (I prefer Clementine while using Linux)

-This great, heart-warming guide on "How to be alone" by Andrea Dorfman and Tanya Davis:

-The greatly inspiring TEDx speech by Lizzie Velasquez on "How you define yourself". As she puts it: "Once labeled, "The Worlds Ugliest Woman," Lizzie decided to turn things around and create her own definitions of what she defines as beauty and happiness". This will bring tears to your eyes:

-The MakerSpace in Georgia Tech. This is exactly the place that I have been recently talking about with a friend of mine, without knowing it already exists. Here is a video:

-Neil Gaiman's commencement speech from 2012:

-The mind-blowing proof that 1+2+3+4+5+... = -1/12. Note: It is said that this result relates with String Theory and it has applications in Physics:

-Lastly, Dave Brubeck and a random violinist improvising together:


Tech terms explained by non-tech people

8 Tech Terms Explained by Non-Tech People was recently uploaded by Mashable, and this is simply wonderful. Guessing that the people in this video were not in the IT business, it is surprising to me how accurate their most guesses were.

Just a quick bit of entertainment to give you that warm feeling...


Server Maintenance

Apparently there is some maintenance/upgrade process going on in somewhere in the world, where my rented server takes place.
The website can be unreachable for "minimal amounts of downtime" due to these processes this week. Just sayin'.

Filed under: Personal No Comments

‘Project Genesis’ @ Ars Electronica Center


It was very fortunate of me to be able to take part in this exhibition, which is about how synthetical biology, which also focuses on the virtual life that is created in laboratory environment, can affect our future lives.

Our project is about saving digital data into DNA, which enables all of us to save our data for thousands of years, whereas the lifespan of a common harddisk drive is only couple of years. Also this allows us to carry our data at all times, since large stacks of information can be stored in a tablespoon full of DNA. Although the current drawback is cost, it is known that the first transistors were impractically expensive and this might point out that at a certain point in future, we might be able to use DNA as a new medium to save our data. All this process bases on the algorithm of George Church, a molecular biology professor at Harvard Medical School.

My part in this exhibition was to code this algorithm with a GUI in Processing environment and to create a bundle experience for visitors, to type in whatever they like and to print this data out in binary and DNA strings, printed onto a paper.

If you happen to visit the exhibition, please do consider to contribute to our DNA wall, which consists of strings of information that is printed by previous visitors, who sticked their information onto this wall. Collaborative memory!

Now it's time to chill and lean back for a while...


ReHearSal featured on ID-Mag


It's always enjoyable to see your work getting featured somewhere. My friends and I worked on this project for couple of months and I'm glad to see it is appreciated.

The link on ID-Mag's website can be directly reached from here.


An Online Tutorial For Creating Interactive Artworks


Hey all,

It has been a busy couple of months and my two friends and I managed to exhibit an interactive work that we named Rehearsal. For detailed information and a handsome video, do check here.

This will be a tutorial for creating an interactive project with Pure Data and Ableton Live on Windows.

In couple of sentences, our project gathers user input from Kinect sensors, processes the data in vvvv and sends floats/integers to Pure Data (Pd), Pd receives the data and maps it to MIDI notes, sends the MIDI notes over LoopBe1 Midi to Ableton Live and lastly, Ableton Live plays them out loud. At the last step I also used a synthesizer VST plug-in to create an appealing sound. Seems intimidating when you read it like that, but trust me once you know what to do it isn't that hard.

The exhibition consisted of four computers with four individual Kinect sensors and each four computer ran vvvv, Pd, Ableton Live and synthesizer VST plug-in. A fast computer would be nice, all these stuff require effort for the processor to deal with. We had four fast computers, but you can run vvvv and the rest of the software on different computers, since the connection between vvvv and Pd is done with TCP.

I was responsible for the sound design part, so I worked with Pure Data, Ableton Live and the synthesizers.

Don't mind the fancy topic, I was just trying to catch your attention. Although I can tell you that if you are into interactive works, you will definetely benefit from this tutorial. I will also provide my Pure Data patches to make everything easier for you. Please note that Pd is a free and open source software and LoopBe1 is also free, however Ableton Live is a product that you would need to buy (it has a one-month trial period though).

First, if you haven't already installed Pure Data to your computer, you should download it. It is a must if you are interested in DIY sounds, computer generated (algorithmic) music, computer aided live shows and most definetely, interactive projects. I recommend the extended version, since it has lots of additional libraries in it. Also Dr. Rafael Hernandez's Pd tutorials are great to get started with. Don't feel like these videos are the ultimate guides to learn Pd though. After a couple of videos, I figured that Pd help files that come along with Pd and googling stuff is the best option to get your way around. Also you can ask me anything about Pd, I will do my best to reply you quickly. I know what it feels like getting stuck at a point and never finding a solution to your problem.

So anyway, you should have installed Pd-extended by now. You are ready to roll. Click on the Pd file I have provided with this post and let's investigate it step by step. Download and open "Interactive MIDI.pd". Two windows will show up; Pd-extended is the main window of Pure Data and Interactive MIDI.pd is the file you opened with Pure Data. Pure Data is a node based, visual programming language. You will see bunch of blocks connected to each other with lines. Kind of like a block diagram. The structure is easy to understand: the hierarchy goes up to down. The output of the first block is connected to the next block's input (At this point let's assume this totally correct. I will show other stuff as we move on).

You see netreceive 9922 is the first block we have. Netreceive opens the port 9922 on your computer and listens to the incoming messages from that port. Right click on it and go to Help to read more about it. This Interactive MIDI.pd file was meant to listen to the incoming messages from port 9922, to which the Kinect data was sent. I was getting seven floats, which were the x and y axis coordinates on a canvas. When you went in front of Kinect and waved your hand from left to right, one of the floats I was getting would change, say, from 0 to 8. Now I received seven of these floats in a packet, so I used unpack function as the second node. The third set of blocks are just numbers, to visualize the floats that I get. Next, we have select function. This redirects the received float at an instance to the related output. It receives seven floats and repeats this process for each input.

Next we have buttons, or 'bang's as they are called in Pure Data. This is again used for visualization purposes. When you receive a series of floats simultaneously, it is harder to see what's going on without a button. Think of them as LEDs in a circuit, which show the path taken by a signal at an instance.

Now, this part looks a bit crowded but it's very simple to understand what is done here. Until here, I receive some coordinates from Kinect sensor as floats, and I have changing signals as someone interacts with the sensor. What I want to do is to map these signals to some beautiful audio output. Heck, I just want to produce some cool sound. So, what do I do?

I had the idea to choose a musical scale and get the notes out of this scale, connect them to the signals I receive and whenever the signal changes, it will play a note in that scale. No matter what signal I get, the played note will be in a specific scale and it will be a consonant note. So, what's with the numbers in the blocks, right? They are the frequencies of each note in that scale. For example, if I want to use F3, I type 174.61 in - or simply 174. I just googled for the list of these frequencies and found this table. Use it! It is wonderful, and you are totally free to select whatever note/scale you want. You can also create a dissonant structure and use notes that are off the scale. Or you can use totally random notes - just go ahead and try it out.

All these frequencies are connected to another number block, which changes whenever a signal is transmitted to it. If the signal comes from 131 at time t, it becomes 131 until the next signal comes from another block. Then it takes the number of that block and it goes on like this. Then it passes its value to ftom function, which is the abbreviation of frequency-to-midi. Pretty straight-forward, this converts the frequency we get to a MIDI note, a note that you could play on a keyboard. You can see this MIDI note in the next block.

The rest is MIDI connection. Makenote block takes 'pitch', 'velocity' and 'duration' as input and gives 'pitch' and 'velocity' as output. The pitch is what we get from the ftom block. You can manually change the other values though. Makenote is connected to noteout block, which transmits the MIDI notes. So as you see, we don't use Pd to create the sound. We could do that, but using a DAW (Ableton Live in thix example) and a synthesizer is a much more elegant way to produce the sound. So, I chose to transmit the MIDI notes to the synthesizer in Ableton Live.

Do not forget to go to the main Pd-extended window and click on DSP button, which stands for Digital Signal Processing. As long as this block is unticked, Pd will do the computation but will not produce any sound. This is where LoopBe1 comes into play.

LoopBe1 is an internal MIDI port for Windows OS, which virtually connects the input and output of different software. So when you want to take the output of Pd and connect it to the input of Ableton Live, you need it. For Mac, you have other options such as Jack OS X. There is LiveOSC, a widely used interface for connecting MIDI, but for me LoopBe1 was the easiest and the most user-friendly tool I could find.

Don't forget, these tutorial patches are made for the incoming data on port 9922, but you can always change it. Try deleting the netreceive 9922 block and inserting a randomizer: Create a bang, connect it to a 'metro 500' object and connect 'metro 500' to 'random 20' object. Then, connect the 'random 20' object to 'unpack f f f f f f f'. When you click on the bang with the proper mouse icon, you will see your patch working. Also check the ftom output, it changes as the signals come through right? These are the different notes played by your computer. Good work there!

It has been a long tutorial but I tried to explain the methodolgy in mapping sound according to the data input. Next time, I will show how to do things on the DAW side.

If you could really read all this post up until here and do everything properly, you really have a good patience. This was my first tutorial post and I apologize for the poor explanation. Feel free to ask me anything regarding this tutorial and I will try to answer your question.

Until next time!


Sparks 2013


Some of my works are being exhibited in Sparks 2013, a student exhibition taking place in Sabancı University Fine Arts Faculty (FASS).

You can check out my works also online by clicking here, here and here. There are some explanations, which will inform you about what I had in my mind as I made those recordings.

Hope you enjoy.

PS: Click here for the large version of the exhibition poster.