<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>csc</title>
	<atom:link href="http://cemsinacetin.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cemsinacetin.com</link>
	<description></description>
	<lastBuildDate>Sun, 05 May 2013 08:45:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Nonwoven for iOS</title>
		<link>http://cemsinacetin.com/nonwoven/</link>
		<comments>http://cemsinacetin.com/nonwoven/#comments</comments>
		<pubDate>Wed, 10 Apr 2013 19:57:23 +0000</pubDate>
		<dc:creator>sinabey</dc:creator>
				<category><![CDATA[commercial]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://cemsinacetin.com/?p=832</guid>
		<description><![CDATA[Nonwoven:(adj.) A fabric-like material made of interlocked fibers, held together by chemical, mechanical or thermal means.]]></description>
				<content:encoded><![CDATA[<p><em><strong>Nonwoven:<em>(adj.)</em> A fabric-like material made of interlocked fibers, held together by chemical, mechanical or thermal means.</strong></em></p>
<p>Nonwoven is a mobile painting application for iOS devices. When the user touches the screen, invisible &#8220;pins&#8221; are placed on the drawing area. Then, patterns are formed by connecting these pins within the user defined range with transparent threads, thus creating weblike forms. The pins can be generated from a given photograph for generation, as well as being placed by the classical &#8220;painting&#8221; gesture.</p>
<p>The color, transparency, threading range, blending mode, radial symmetry, thickness and many other options are available for manipulation to create a wide range of effects that can be used for generative painting, finger painting, calligraphic effect or photo manipulation. The generation algorithm is prototyped on Processing and ported to iOS. In other words, the system is portable and it will be available on other platforms, hopefully with alternative modes of interaction, other than a mouse and a keyboard.</p>
<p>I hope you&#8217;ll find this documentation useful and like the Nonwoven application.</p>
<p>If you have any suggestions or comments, be sure to send me an email or contact me at Nonwoven&#8217;s <b><a href="https://www.facebook.com/nonwovenapp">Facebook Page</a></b>. There I&#8217;ll share news and users&#8217; works. Also, I always have promo codes more than I need. I&#8217;ll be sharing them in small batches as well.</p>
<p style = "text-align: center">
<a href="https://itunes.apple.com/app/id633409874?l=en&#038;mt=8" target = "_blank"><img title="View on App Store" src="http://cemsinacetin.com/wp-content/themes/sina2013/images/app.png" width="120" height="40" /></a>
</p>
<h2><a id="Documentation">Documentation</a></h2>
<p><a href="#StylingMenu"> <strong>Styling Menu </strong></a><br />
<a href="#ColorPicker"> <strong>Color Picker </strong></a><br />
<a href="#DrawingContext"> <strong>Drawing Context</strong></a><br />
<a href="#AutoGeneration"> <strong>Auto Generation </strong></a><br />
<a href="#GenerationContext"> <strong>Generation Context</strong></a><br />
<a href="#Progress"> <strong>Progress View</strong></a></p>
<p>The user interaction is divided into two areas, the Styling Menu and the Context Menu. In the iPad interface, these two menus are placed side by side and in the iPhone interface they are split into two tabs. The options in the context menu changes depending on the current mode of interaction. Since there are only two different contents for the context menu, they will be referred as &#8220;the Drawing Context&#8221; and the &#8220;the Generation Context&#8221;</p>
<p><a href="http://cemsinacetin.com/wp-content/uploads/ipad-interface.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img class="size-medium wp-image-862 alignnone" alt="ipad interface" src="http://cemsinacetin.com/wp-content/uploads/ipad-interface-225x300.jpg" width="225" height="300" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/iphone-interface.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img class="size-medium wp-image-861 alignnone" alt="iphone interface" src="http://cemsinacetin.com/wp-content/uploads/iphone-interface-300x255.jpg" width="300" height="255" /></a></p>
<h3><a id="StylingMenu">Styling Menu</a></h3>
<p>The styling menu controls the visual appearance of the threads.</p>
<p><b>Opacity slider</b> controls the opacity of a single thread. The following image shows three strokes with the opacity values 10%, 50% and 100% respectively.</p>
<p style="text-align: center;"><img class="size-full wp-image-863 aligncenter" alt="opacity" src="http://cemsinacetin.com/wp-content/uploads/opacity.png" width="384" height="220" /></p>
<p><b>Thickness slider </b>controls the thickness of a single thread. The following image shows three strokes (at 10% opacity) with 1, 5 and 10 point thickness values respectively.</p>
<p style="text-align: center;"><img class="size-full wp-image-864 aligncenter" alt="thickness" src="http://cemsinacetin.com/wp-content/uploads/thickness.png" width="494" height="333" /></p>
<p><b>Brush Size slider </b>controls the over all thickness of the stroke (not the individual threads). The following two strokes are both at 10% opacity. First one has 3 points thickness and 5 points brush size, the second one has 1 point thickness and 20 points brush size, the third one has 1 point brush size and thickness.</p>
<p style="text-align: center;"><img class="size-full wp-image-865 aligncenter" alt="brushsize" src="http://cemsinacetin.com/wp-content/uploads/brushsize.png" width="469" height="330" /></p>
<p><strong>Length Limit slider</strong> controls the maximum length a thread can have. The following strokes have 10% opacity, 1 point thickness and 5 point brush size. Their length limits are 5, 20, 50 respectively.</p>
<p><strong><img class="aligncenter size-full wp-image-871" alt="length" src="http://cemsinacetin.com/wp-content/uploads/length.png" width="650" height="215" /><br />
</strong></p>
<p><strong>The blending Mode</strong> controls how the new drawn threads&#8217; colors interact with the existing image.</p>
<p><strong>In normal blending mode</strong>, the thread is drawn over the existing image with the selected color and opacity.</p>
<p><strong>In multiply blending mode</strong>, white is transparent and the color acts like ink; dark colors get darker when drawn over and over. The following two rectangles are drawn in normal and multiply modes respectively with 10% opacity, 1 point thickness, 5 points brush size, 20 points length limit and RGB value: 235, 0, 0 (slightly dark red)</p>
<p style="text-align: center;"><img class="size-full wp-image-876 aligncenter" alt="multiply" src="http://cemsinacetin.com/wp-content/uploads/multiply.png" width="500" height="400" /></p>
<p><strong>In screen blending mode</strong>, black is transparent and the color acts like light; light colors get brighter when drawn over and over. The following two rectangles are drawn in normal and screen modes respectively with 10% opacity, 1 point thickness, 5 points brush size, 20 points length limit and RGB value: 255, 40, 40 (slightly bright red)</p>
<p style="text-align: center;"><img class="size-full wp-image-877 aligncenter" alt="screen" src="http://cemsinacetin.com/wp-content/uploads/screen.png" width="500" height="400" /></p>
<p>Using different blending modes over each other can be used for effects such as masking. The following image shows a dark blue patch blended in multiply mode, with pink and green strokes blended in screen mode. As screen blending makes anything invisible over a white canvas, green and pink strokes are only visible within the area of the blue patch.</p>
<p style="text-align: center;"><img class="size-full wp-image-878 aligncenter" alt="screen over multiply" src="http://cemsinacetin.com/wp-content/uploads/screen-over-multiply.png" width="527" height="292" /></p>
<p>The following example shows a black stroke blended in normal mode, over a large black patch in screen mode. Even though the black patch becomes invisible in screen mode, it still provides pins for the new strokes to attach. Therefore, the second stroke has a &#8221;hairy&#8221; look, extending out to invisible points of attraction.</p>
<p style="text-align: center;"><img class="size-full wp-image-879 aligncenter" alt="screen over screen" src="http://cemsinacetin.com/wp-content/uploads/screen-over-screen.png" width="392" height="370" /></p>
<h3><a id="ColorPicker">Color Picker</a></h3>
<p style="text-align: center;"><a href="http://cemsinacetin.com/wp-content/uploads/picker.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img class="size-medium wp-image-896 aligncenter" alt="picker" src="http://cemsinacetin.com/wp-content/uploads/picker-190x300.jpg" width="190" height="300" /></a></p>
<p>The Color Picker Menu allows the user to change the canvas and the thread color. You can either drag your finger on the large color picker area to change the hue and the brightness, or use the sliders to select the color you like.</p>
<p>Sliders can work both in HSB (hue, saturation, brightness) and RGB (red, green, blue) modes so that you can choose the one that feels easier. When the scheme is changed, the sliders are automatically adjusted to match the currently selected color. Although RGB is more conventional, HSB scheme is much more intuitive than RGB once you get used to it.</p>
<p>The following capture of the iOS simulator shows how the color picker area works.</p>
<p style="text-align: center;"><video width="340" height="500" controls="controls"><source src="http://cemsinacetin.com/wp-content/uploads/picker.m4v" type="video/mp4" /><br />
</video></p>
<p style="text-align: left;">The background color changes only if the canvas is empty. If there is an existing drawing, then the new background color will be applied on the next clear (see drawing context/actions).</p>
<h3><a id="DrawingContext">Drawing Context Menu</a></h3>
<p>While in drawing mode, context menu displays drawing specific options. The drawing context has the following subcategories: Symmetry, Actions, Canvas Shape (iPad only), Input Output, Preview (iPad only)</p>
<p><b style="font-size:14px;">Symmetry</b><br />
<b>Radial Symmetry</b> option enables the user to draw copies of the stroke simultaneously around the center of the canvas. The number of the copies are represented by the symmetry guides. The following two images show a single stroke drawn with 3 and 7 radial copies respectively. (10% opacity, 1p thickness, 10p brush size, 20p length, dark green multiply blending)</p>
<p><img class="size-full wp-image-935 alignnone" alt="s3" src="http://cemsinacetin.com/wp-content/uploads/s3.jpg" width="300" height="300" /> <img class="size-full wp-image-936 alignnone" alt="s7" src="http://cemsinacetin.com/wp-content/uploads/s7.jpg" width="300" height="300" /></p>
<p><b>Mirror Horizontally</b> and <b>Mirror Vertically</b> options turn on and off corresponding modes of reflective symmetries. The following images display horizontal and vertical symmetries. (10% opacity, 1p thickness, 5p brush size, 20p length, dark green multiply blending)</p>
<p><img class="alignnone size-full wp-image-938" alt="h" src="http://cemsinacetin.com/wp-content/uploads/h.jpg" width="300" height="300" /> <img class="alignnone size-full wp-image-939" alt="v" src="http://cemsinacetin.com/wp-content/uploads/v.jpg" width="300" height="300" /></p>
<p>The following image shows the result when both reflective symmetries are on.</p>
<p style="text-align: center;"><img class="size-full wp-image-940 aligncenter" alt="hv" src="http://cemsinacetin.com/wp-content/uploads/hv.jpg" width="300" height="300" /></p>
<p>Reflective and Radial symmetry work mutually exclusively (i.e. turning one on turns the other one off).</p>
<p><b style="font-size:14px;">Actions</b><br />
<b>Undo button</b> undos the last action, including the undo itself. (in other words, it&#8217;s a undo/redo button)</p>
<p><strong>Clear button</strong> deletes the current drawing and creates a new, empty canvas.</p>
<p><strong>Disconnect button</strong> deletes the existing pins but keeps the drawing. This way, the new threads will not interact with the existing drawing and act like a new layer on top of the existing one. The following two images show a red stroke drawn over a black one. In the second image, disconnect button is pressed before the red stroke. (10% opacity, 1p thickness, 5p brush, 60p length) Notice how in the second image, the strokes only bind onto themselves since they are disconnected.</p>
<p><img class="alignnone size-medium wp-image-950" alt="connected" src="http://cemsinacetin.com/wp-content/uploads/connected-300x300.png" width="300" height="300" /> <img class="alignnone size-full wp-image-949" alt="disconnected" src="http://cemsinacetin.com/wp-content/uploads/disconnected.jpg" width="300" height="300" /></p>
<p><strong style="font-size:14px;">Canvas Shape (iPad only)</strong><br />
Unlike the iPhone screen, the iPad screen size is large enough to support square canvas without making it look ridiculous and sad. Also symmetrical drawings usually look better in square, whereas rectangle canvas supports a larger painting area. In case of the auto-generation (see auto-generation below), some photographs work better with rectangle canvas and others work better with square. Therefore, in the iPad version, the user has the chance to decide on the shape of the canvas. Also, I like squares.</p>
<p><strong>Square</strong> and <strong>Rectangle</strong> buttons under the Canvas Shape subcategory resets the canvas in the selected shape. When the application is using a rectangle canvas (default in the iPhone version), the menu disappears when the drawing area is touched. While working with a square canvas however, the menu does not fade away since its size is exactly what is left from a square canvas so it does not occlude anything while visible.</p>
<p><b style="font-size:14px;">Input Output</b><br />
Buttons under the I/O subcategory lets the user to load, save and share images.</p>
<p><strong>Save &#038; Share Button</strong> triggers iOS&#8217; native sharing menu, as displayed below.</p>
<p style="text-align: center;"><img src="http://cemsinacetin.com/wp-content/uploads/share.jpg" alt="share" width="434" height="479" class="aligncenter size-full wp-image-961" /></p>
<p>Services are available if the device is logged into the desired social network. E.g. in order to share on Facebook, the phone or the pad should be logged into Facebook through the settings page. Facebook app is not necessary.</p>
<p><strong>Load Button</strong> lets the user to import images into the application. An image can be used in two different ways: It can be used for auto-generation: extracting pins from the image to automatically generate the threads, or load it as a background. The image can either be picked from the camera or the gallery. Upon clicking the Load button, the four resulting combinations can be chosen from the menu below:</p>
<p style="text-align: center;"><img src="http://cemsinacetin.com/wp-content/uploads/load.jpg" alt="load" width="310" height="327" class="aligncenter size-full wp-image-966" /></p>
<p>By <strong>loading an image as background</strong>, the user is able to draw over an existing image, such as the strokes drawn over the out of focus marina lights below. (3% opacity, 1p thickness, 3p brush, 45p length, 5 radial symmetry, screen blending, light orange)</p>
<p style="text-align: center;"><img src="http://cemsinacetin.com/wp-content/uploads/marina.jpg" alt="marina" width="500" height="500" class="aligncenter size-full wp-image-969" /></p>
<p><strong>Loading an image for auto-generation</strong> has its own section and explained below.</p>
<p><b style="font-size:14px;">Preview (iPad only)</b><br />
The styling options may create a wide range of effects and it&#8217;s not always easy to guess the output. Therefore, the preview screen generates a pre-defined golden spiral with the styling options: opacity, thickness, length limit, blending and colors. The following images show different renderings of the preview screen.</p>
<p style="text-align: center;">
<img src="http://cemsinacetin.com/wp-content/uploads/preview1.jpg" alt="preview1" width="166" height="166" class="alignnone size-full wp-image-974" /><img src="http://cemsinacetin.com/wp-content/uploads/preview2.jpg" alt="preview2" width="166" height="166" class="alignnone size-full wp-image-975" /><img src="http://cemsinacetin.com/wp-content/uploads/preview3.jpg" alt="preview3" width="166" height="166" class="alignnone size-full wp-image-977" /><img src="http://cemsinacetin.com/wp-content/uploads/preview4.jpg" alt="preview4" width="166" height="166" class="alignnone size-full wp-image-978" /><img src="http://cemsinacetin.com/wp-content/uploads/preview5.jpg" alt="preview5" width="166" height="166" class="alignnone size-full wp-image-979" /><img src="http://cemsinacetin.com/wp-content/uploads/preview6.jpg" alt="preview6" width="166" height="166" class="alignnone size-full wp-image-976" />
</p>
<h3><a id="AutoGeneration">Auto Generation</a></h3>
<p>As explained above, the painting process is executed by drawing threads between the pins on the canvas. So, technically speaking, the creation of the pins and the drawing of the image are completely independent events; As long as there are pins, Nonwoven can draw threads between them. Just like the preview pane with the predefined spiral.</p>
<p>When an image is loaded for the auto-generation process, the pins are extracted based on the two following features of the image: brightness and edge detection. The user is able to tweak how the pins are generated through the Generation Context Menu, explained below.</p>
<p>Before that, let me show you this loosely auto generated image of one of my cats. His name is Meriç. Meriç&#8217;s hobbies include sleeping on the sofa, meowing during my dinner for inducing guilt to get some of my food and modeling for experimental mobile drawing applications.</p>
<p style="text-align: center">
<img src="http://cemsinacetin.com/wp-content/uploads/meric.jpg" alt="meric" width="500" height="500" class="alignnone size-full wp-image-987" />
</p>
<h3><a id="GenerationContext">Generation Context</a></h3>
<p style="text-align: center;"><img src="http://cemsinacetin.com/wp-content/uploads/pincontrols.png" alt="pincontrols" width="370" height="230" class="alignnone size-full wp-image-993" /></p>
<p>When an image is loaded for auto generation, the application displays the pins generated with the initial settings of the Generation Context. Please note that these settings do not have numerical values displayed like the styling options. Because they control values such as the brightness of a pixel, so any kind of representation other than 0 to 1 mapping would be my own abstraction, and the slider itself is a visual representation of the intermediate values between zero and one.</p>
<p>The settings in the generation context defines which pixels have the chance to be a pin. The following examples will make use this image as a base:</p>
<p style="text-align: center">
<img src="http://cemsinacetin.com/wp-content/uploads/sinatodd.jpg" alt="sinatodd" width="500" height="500" class="alignnone size-full wp-image-990" />
</p>
<p><strong>The Edge Threshold</strong> slider controls the threshold for edge detection. Lower values generate more pronounced edges. The highest threshold means disregarding edge information entirely. The following four screenshots show four different edge values with the brightness information excluded.</p>
<p style="text-align: center">
<a href="http://cemsinacetin.com/wp-content/uploads/edge4.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/edge4-300x300.jpg" alt="edge4" width="300" height="300" class="alignnone size-medium wp-image-1005" /></a><a href="http://cemsinacetin.com/wp-content/uploads/edge3.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/edge3-300x300.jpg" alt="edge3" width="300" height="300" class="alignnone size-medium wp-image-1006" /></a><a href="http://cemsinacetin.com/wp-content/uploads/edge2.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/edge2-300x300.jpg" alt="edge2" width="300" height="300" class="alignnone size-medium wp-image-1007" /></a><a href="http://cemsinacetin.com/wp-content/uploads/edge1.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/edge1-300x300.jpg" alt="edge1" width="300" height="300" class="alignnone size-medium wp-image-1008" /></a>
</p>
<p><strong>The Edge Separation</strong> slider controls the distance between the points in the detected edges. This comes in handy especially with images such as this one, which has too many detected edges in the areas like the hair. The following two images show the same set of generated pins at a very low edge threshold level. The first one has the lowest separation value, whereas the second one has a considerably higher separation. Like the examples above, the brightness information is excluded.</p>
<p style="text-align: center">
<a href="http://cemsinacetin.com/wp-content/uploads/edgesep1.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/edgesep1-300x300.jpg" alt="edgesep1" width="300" height="300" class="alignnone size-medium wp-image-1011" /></a><a href="http://cemsinacetin.com/wp-content/uploads/edgesep2.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/edgesep2-300x300.jpg" alt="edgesep2" width="300" height="300" class="alignnone size-medium wp-image-1012" /></a></p>
<p><b>The Darkness Threshold</b> slider defines the minimum level of black that can be a pin. This way, it is possible to decide what level of darkness will be included in the final image. The following images show the pins generated by using all levels of black (slider at zero) and excluding dark grays (slider near the middle) respectively. Edge values are excluded for the sake of this example.</p>
<p style="text-align: center">
<a href="http://cemsinacetin.com/wp-content/uploads/dark1.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/dark1-300x300.jpg" alt="dark1" width="300" height="300" class="alignnone size-medium wp-image-1018" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/dark2.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/dark2-300x300.jpg" alt="dark2" width="300" height="300" class="alignnone size-medium wp-image-1017" /></a>
</p>
<p>Notice how the pins in the eye pupils disappear in the second image as they are exlcluded.</p>
<p><b>The Lightness Threshold</b> slider defines the maximum level of white that can be a pin. This way, it is possible to decide what level of brightness will be used for creating pins. The following images show the pins generated by using all levels of white except light gray (slider near the beginning) and by using only dark grays (slider near the end).</p>
<p style="text-align: center">
<a href="http://cemsinacetin.com/wp-content/uploads/light1.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/light1-300x300.jpg" alt="light1" width="300" height="300" class="alignnone size-medium wp-image-1022" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/light2.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/light2-300x300.jpg" alt="light2" width="300" height="300" class="alignnone size-medium wp-image-1023" /></a>
</p>
<p>The photograph that is used here has light gray background, so it has to be excluded to get a reasonable output.</p>
<p><strong>The Luminosity Separation</strong> slider controls the distance between the points in the generated patches of dark and bright areas, just like the edge separation for edge detection. The following two images show the same set of generated pins. The first one has the lowest separation value, whereas the second one has a considerably higher separation.</p>
<p style="text-align: center">
<a href="http://cemsinacetin.com/wp-content/uploads/lum1.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/lum1-300x300.jpg" alt="lum1" width="300" height="300" class="alignnone size-medium wp-image-1026" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/lum2.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/lum2-300x300.jpg" alt="lum2" width="300" height="300" class="alignnone size-medium wp-image-1027" /></a>
</p>
<p><b style="font-size:14px;">Generate</b><br />
When all these options are used together, the resulting pin output include both edge and brightness information. The following image is the way I decided to be a nice input for generation: Luminosity separation is fairly high and I use all the blacks. Light grays are excluded. Edges are fairly pronounced and they are close to each other.</p>
<p style="text-align: center">
<a href="http://cemsinacetin.com/wp-content/uploads/combined.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/combined-300x300.jpg" alt="combined" width="300" height="300" class="alignnone size-medium wp-image-1029" /></a></p>
<p>Remember that the styling menu is always accessible at any point. Thus it is possible to review the styling options before generation. For this image, I prefer to use 7% opacity, 1p thickness, 20p length, light warm gray background and dark red threads with multiply blending.</p>
<p style="text-align: center">
<a href="http://cemsinacetin.com/wp-content/uploads/generatedsinatodd.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/generatedsinatodd-300x300.jpg" alt="generatedsinatodd" width="300" height="300" class="alignnone size-medium wp-image-1033" /></a></p>
<p>The threading phase is no different than painting with finger, as explained above. So, the produced image interacts with the new strokes the same way as the hand drawn shapes interact with each other. Please enjoy my portrait below for new night terrors. As you can see, the new strokes in my eyes and around my lips thread out to the generated image and paint as if the existing portrait was drawn by the regular painting process.</p>
<p style="text-align: center">
<a href="http://cemsinacetin.com/wp-content/uploads/creepysinatodd.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/creepysinatodd-300x300.jpg" alt="creepysinatodd" width="300" height="300" class="alignnone size-medium wp-image-1036" /></a>
</p>
<h3><a id="Progress">Progress View</a></h3>
<p>Sometimes the generation process can take a very long time due to the fact that there might be millions of threads drawn for the generation. To avoid waiting for minutes in darkness or having to force quit the application to cancel the generation, the progress view with the option to interrupt appears over the interface during the generation.</p>
<p><img src="http://cemsinacetin.com/wp-content/uploads/progress.jpg" alt="progress" width="600" height="236" class="alignnone size-full wp-image-1035" /></p>
<p>Interrupting the process yields an interesting result. When the threading process is interrupted, the canvas reveals the half-baked image. But, since the pins are already there and what&#8217;s missing is the threads, drawing over this half baked image still interacts with the existing pins. Notice how the randomly painted patch reaches out to invisible points, getting denser around the missing eye and the hair.</p>
<p style="text-align: center">
<a href="http://cemsinacetin.com/wp-content/uploads/nonwovous_interruptus.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/nonwovous_interruptus-300x300.jpg" alt="nonwovous_interruptus" width="300" height="300" class="alignnone size-medium wp-image-1038" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/interrupted2.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/interrupted2-300x300.jpg" alt="interrupted2" width="300" height="300" class="alignnone size-medium wp-image-1040" /></a>
</p>
<p>This interruption effect was actually an overlooked design issue that I realized during the development phase and deliberately left it as it might be used for the sake of the design. Removing it is simple as touching the clear button.</p>
<p style="text-align:center;">
<a href="http://cemsinacetin.com/wp-content/uploads/sinainspace.jpg" rel="lightbox[832]" title="Nonwoven for iOS"><img src="http://cemsinacetin.com/wp-content/uploads/sinainspace-584x600.jpg" alt="sinainspace" width="584" height="600" class="alignnone size-large wp-image-1054" /></a></p>
<p><a href="#Documentation">Back to the Beginning</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cemsinacetin.com/nonwoven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://cemsinacetin.com/wp-content/uploads/picker.m4v" length="1518889" type="video/mp4" />
		</item>
		<item>
		<title>Multithreaded Buddhabrot</title>
		<link>http://cemsinacetin.com/buddhabrot/</link>
		<comments>http://cemsinacetin.com/buddhabrot/#comments</comments>
		<pubDate>Fri, 15 Mar 2013 12:01:23 +0000</pubDate>
		<dc:creator>sinabey</dc:creator>
				<category><![CDATA[open-source]]></category>

		<guid isPermaLink="false">http://cemsinacetin.com/?p=779</guid>
		<description><![CDATA[Multithreaded Buddhabrot Generator for Processing]]></description>
				<content:encoded><![CDATA[<div style="text-align:center; margin: 10px;"><script src="http://cemsinacetin.com/processing/processing.js" type="text/javascript"></script><canvas id="buddhabrot" data-processing-sources="http://cemsinacetin.com/processing/buddhabrot.pde" width="400" height="400"><p>Your browser does not support the canvas tag.</p> </canvas><noscript> <p>JavaScript is required to view the contents of this page.</p> </noscript> </div>
<p>Buddhabrot is a visualization of the famous Mandelbrot fractal. Mandelbrot fractal shows whether or not a particle is in the Mandelbrot Set. Buddhabrot plots the escape paths of the particles, which are not in the set.</p>
<p>This version divides the sampling process into different threads to massively increase the rendering speed (the one above is single threaded because the processing code extends the Java Thread class, which is not available for javascript). The RGB thumbnail is a combination of different renders with different iteration values, used as color channels.</p>
<p>Tested with Processing 2.0b8 on Mac OS X Lion and Windows 8</p>
<p style="text-align: center;"><a href="http://cemsinacetin.com/wp-content/uploads/buddha3.jpg" rel="lightbox[779]" title="Multithreaded Buddhabrot"><img class="aligncenter size-thumbnail wp-image-787" alt="buddha3" src="http://cemsinacetin.com/wp-content/uploads/buddha3-150x150.jpg" width="150" height="150" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/buddha2.jpg" rel="lightbox[779]" title="Multithreaded Buddhabrot"><img class="aligncenter size-thumbnail wp-image-786" alt="buddha2" src="http://cemsinacetin.com/wp-content/uploads/buddha2-150x150.jpg" width="150" height="150" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/buddha.jpg" rel="lightbox[779]" title="Multithreaded Buddhabrot"><img class="aligncenter size-thumbnail wp-image-785" alt="buddha" src="http://cemsinacetin.com/wp-content/uploads/buddha-150x150.jpg" width="150" height="150" /><a href="http://cemsinacetin.com/wp-content/uploads/m10b20_-2_2_0_2.jpg" rel="lightbox[779]" title="Multithreaded Buddhabrot"><img class="aligncenter size-thumbnail wp-image-823" alt="m10b20_-2_2_0_2" src="http://cemsinacetin.com/wp-content/uploads/m10b20_-2_2_0_2-150x150.jpg" width="150" height="150" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/halfbrot.jpg" rel="lightbox[779]" title="Multithreaded Buddhabrot"><img class="aligncenter size-thumbnail wp-image-822" alt="halfbrot" src="http://cemsinacetin.com/wp-content/uploads/halfbrot-150x150.jpg" width="150" height="150" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/buddhargb.jpg" rel="lightbox[779]" title="Multithreaded Buddhabrot"><img class="aligncenter size-thumbnail wp-image-821" alt="buddhargb" src="http://cemsinacetin.com/wp-content/uploads/buddhargb-150x150.jpg" width="150" height="150" /></a></a></p>
<p style="text-align: center;">download the <a title="Multithreaded Buddhabrot source" href="http://cemsinacetin.com/processing/buddhabrot.zip">processing project</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cemsinacetin.com/buddhabrot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A tiny security camera</title>
		<link>http://cemsinacetin.com/securitycam/</link>
		<comments>http://cemsinacetin.com/securitycam/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 09:39:48 +0000</pubDate>
		<dc:creator>sinabey</dc:creator>
				<category><![CDATA[open-source]]></category>

		<guid isPermaLink="false">http://cemsinacetin.com/?p=767</guid>
		<description><![CDATA[Simple security camera application based on motion detection for Processing]]></description>
				<content:encoded><![CDATA[<p>Tested on Processing 2.0b7, Mac OS X Lion<br />
<strong>Important</strong>: to keep it simple, the images folder is created under the sketch folder so you might want to save it before running to avoid saving images under the temp folder.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//Tiny security camera</span>
<span style="color: #666666; font-style: italic;">//Cem Sina Çetin 2013</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.video.*</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.File</span><span style="color: #339933;">;</span>
&nbsp;
Capture cam<span style="color: #339933;">;</span>   <span style="color: #666666; font-style: italic;">//camera object</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> w <span style="color: #339933;">=</span> <span style="color: #cc66cc;">320</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//camera width</span>
<span style="color: #000066; font-weight: bold;">int</span> h <span style="color: #339933;">=</span> <span style="color: #cc66cc;">240</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//camera height (different than the frame height)</span>
<span style="color: #000066; font-weight: bold;">int</span> pixelCount <span style="color: #339933;">=</span> w<span style="color: #339933;">*</span>h<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//pixel count of the webcam</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> infoBand <span style="color: #339933;">=</span> <span style="color: #cc66cc;">30</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//height of the timestamp band</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> frameDifference<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//color difference of consecutive frames.</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> R,  G,  B<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//current RGB</span>
<span style="color: #000066; font-weight: bold;">int</span> Rp, Gp, Bp<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//previous RGB</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> threshold <span style="color: #339933;">=</span> <span style="color: #cc66cc;">20</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//minimum difference that counts as a difference</span>
<span style="color: #000066; font-weight: bold;">int</span> differenceThreshold <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2500</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//min. number of pixels to be considered as movement</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> imageCount <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//number of images already saved.</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    size<span style="color: #009900;">&#40;</span>w, h<span style="color: #339933;">+</span>infoBand<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//set the size to camera + timestamp band</span>
    frameDifference <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//use two consecutive difference data for detecting movement</span>
    <span style="color: #666666; font-style: italic;">//to avoid false detections of camera flicker</span>
    <span style="color: #666666; font-style: italic;">//ASSUMPTION: INTRUDERS DO NOT MOVE IN SUB-FRAME SPEEDS</span>
&nbsp;
    <span style="color: #003399;">File</span> imageFolder <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span>sketchPath<span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;/images&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//folder for saving images</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>imageFolder.<span style="color: #006633;">exists</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//check if the folder exists</span>
    <span style="color: #009900;">&#123;</span>
      imageCount <span style="color: #339933;">=</span> imageFolder.<span style="color: #006633;">list</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">length</span><span style="color: #339933;">;</span>
      <span style="color: #666666; font-style: italic;">//if it does, set the image count to file count</span>
      <span style="color: #666666; font-style: italic;">//so that different sessions do not overwrite the previous images.</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    cam <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Capture<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, w, h<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//initialize the camera</span>
    cam.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//start the camera</span>
    noStroke<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//do not use draw the stroke [for the timestamp band]</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>cam.<span style="color: #006633;">available</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//when there is a new frame on the camera buffre</span>
  <span style="color: #009900;">&#123;</span>
    loadPixels<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//load the frames of the current window</span>
    cam.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//read the camera pixels</span>
&nbsp;
    frameDifference<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> frameDifference<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//save the previous difference count to fD[1]</span>
    frameDifference<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//reset fD[0] to zero</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>pixelCount<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//for every pixel on the camera buffer</span>
    <span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">int</span> currentColor  <span style="color: #339933;">=</span> cam.<span style="color: #006633;">pixels</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//numeric value of the pixel color</span>
      <span style="color: #000066; font-weight: bold;">int</span> previousColor <span style="color: #339933;">=</span> pixels<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>     <span style="color: #666666; font-style: italic;">//numeric value of the frame pixel color</span>
&nbsp;
      R  <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>currentColor <span style="color: #339933;">&gt;&gt;</span> <span style="color: #cc66cc;">16</span><span style="color: #009900;">&#41;</span>   <span style="color: #339933;">&amp;</span> 0xFF<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//red value of the camera pixel color</span>
      G  <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>currentColor <span style="color: #339933;">&gt;&gt;</span> <span style="color: #cc66cc;">8</span><span style="color: #009900;">&#41;</span>    <span style="color: #339933;">&amp;</span> 0xFF<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//green value of the camera pixel color</span>
      B  <span style="color: #339933;">=</span>  currentColor          <span style="color: #339933;">&amp;</span> 0xFF<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//blue value of the camera pixel color</span>
&nbsp;
      Rp <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>previousColor <span style="color: #339933;">&gt;&gt;</span> <span style="color: #cc66cc;">16</span><span style="color: #009900;">&#41;</span>  <span style="color: #339933;">&amp;</span> 0xFF<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//red of the previous frame's pixel color</span>
      Gp <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>previousColor <span style="color: #339933;">&gt;&gt;</span> <span style="color: #cc66cc;">8</span><span style="color: #009900;">&#41;</span>   <span style="color: #339933;">&amp;</span> 0xFF<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//green of the previous frame's pixel color</span>
      Bp <span style="color: #339933;">=</span>  previousColor         <span style="color: #339933;">&amp;</span> 0xFF<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//blue of the previous frame's pixel color</span>
&nbsp;
      <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>abs<span style="color: #009900;">&#40;</span>R <span style="color: #339933;">-</span> Rp<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> threshold <span style="color: #339933;">||</span>
         abs<span style="color: #009900;">&#40;</span>G <span style="color: #339933;">-</span> Gp<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> threshold <span style="color: #339933;">||</span>
         abs<span style="color: #009900;">&#40;</span>B <span style="color: #339933;">-</span> Bp<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> threshold<span style="color: #009900;">&#41;</span>      <span style="color: #666666; font-style: italic;">//if any of the R, G or B value difference is</span>
      <span style="color: #009900;">&#123;</span>                                <span style="color: #666666; font-style: italic;">//above the threshold</span>
        frameDifference<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">++;</span>          <span style="color: #666666; font-style: italic;">//increase the difference count by one</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      pixels<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> cam.<span style="color: #006633;">pixels</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      <span style="color: #666666; font-style: italic;">//replace the frame pixels with camera pixels this</span>
      <span style="color: #666666; font-style: italic;">//prepares the window frames for the next comparison. </span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    updatePixels<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//update the frame with the updated pixel values.</span>
    timeStamp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//draw the timestamp</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">/*if the number of different pixels is above the threshold for the last
      two cycles (to ensure false detections - refer to the assumption above)
      save the application frame to the images folder with the imageCount as
      the filename and increment the image count by one.
     */</span>
    <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>frameDifference<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;</span> differenceThreshold <span style="color: #339933;">&amp;&amp;</span>
       frameDifference<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;</span> differenceThreshold
       <span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      save<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;images/&quot;</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>imageCount<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;.jpg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">/*to save images named as the timestamp,
       *comment the line above out and use
       *the one below instead:
&nbsp;
        save(&quot;images/&quot;+year()+&quot;-&quot;+month()+&quot;-&quot;+day()+
             &quot;_&quot;+hour()+&quot;-&quot;+minute()+&quot;-&quot;+second()+&quot;.jpg&quot;);
&nbsp;
        I prefer image count for simplicity. besides the timestamp
        information is both visually embedded and the files intrinsically
        have this information anyway.
       */</span>
&nbsp;
      delay<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #666666; font-style: italic;">//wait for one second after saving the image to avoid</span>
      <span style="color: #666666; font-style: italic;">//saving tens of images for a single movement</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> timeStamp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  fill<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//set fillcolor to black</span>
  rect<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,h,w,infoBand<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//draw a rectangle</span>
&nbsp;
  fill<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//set fillcolor to white</span>
  text<span style="color: #009900;">&#40;</span>
        day<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;/&quot;</span><span style="color: #339933;">+</span>month<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;/&quot;</span><span style="color: #339933;">+</span>year<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: #339933;">+</span>hour<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;:&quot;</span><span style="color: #339933;">+</span>minute<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;:&quot;</span><span style="color: #339933;">+</span>second<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,
        <span style="color: #cc66cc;">10</span>,
        height<span style="color: #339933;">-</span><span style="color: #cc66cc;">10</span>
      <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//write the timestamp 10 pixels away from the left and bottom end of the frame</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://cemsinacetin.com/securitycam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gifbin</title>
		<link>http://cemsinacetin.com/gifbin/</link>
		<comments>http://cemsinacetin.com/gifbin/#comments</comments>
		<pubDate>Fri, 08 Mar 2013 23:48:37 +0000</pubDate>
		<dc:creator>sinabey</dc:creator>
				<category><![CDATA[gifbin]]></category>

		<guid isPermaLink="false">http://cemsinacetin.com/?p=601</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;">
<img alt="" src="http://csc.im/gifbin/12cosmonaut.gif" /><br />
<img alt="" src="http://csc.im/gifbin/11bloodpressure.gif" /><br />
<img alt="" src="http://csc.im/gifbin/10metaballs.gif" /><br />
<img alt="" src="http://csc.im/gifbin/9fleetingcommunity.gif" /><br />
<img alt="" src="http://csc.im/gifbin/7woodenwaves.gif" /><br />
<img alt="" src="http://csc.im/gifbin/6drill.gif" /><br />
<img alt="" src="http://csc.im/gifbin/5upstream.gif" /><br />
<img alt="" src="http://csc.im/gifbin/4attractor.gif" /><br />
<img alt="" src="http://csc.im/gifbin/2cusp.gif" /></p>
]]></content:encoded>
			<wfw:commentRss>http://cemsinacetin.com/gifbin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Frankenstein Application</title>
		<link>http://cemsinacetin.com/frankenstein/</link>
		<comments>http://cemsinacetin.com/frankenstein/#comments</comments>
		<pubDate>Mon, 23 Jul 2012 21:22:32 +0000</pubDate>
		<dc:creator>sinabey</dc:creator>
				<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://cemsinacetin.com/?p=525</guid>
		<description><![CDATA[The Frankenstein Application uses glyph interpolation to generate each letter. Neither grotesque nor humanist, pretty much like the Frankenstein monster.]]></description>
				<content:encoded><![CDATA[<p><a href="http://cemsinacetin.com/wp-content/uploads/heisenbergs_a.jpg" style="float:left;" rel="lightbox[525]" title="The Frankenstein Application"><img class="size-medium wp-image-689 alignleft" alt="frankenbook_softcopy" src="http://cemsinacetin.com/wp-content/uploads/heisenbergs_a-320x400.jpg" width="320" height="400" /></a>Ever since the invention of the printing press, one of the premises that typeface design has been relying on is that every instance of a glyph for a specific letter should be the same. Even if it is not, it should be very close variations of the same glyph with minimal adjustments to support the text’s visual coherence (e.g. a longer tail for the &#8220;z&#8221; letter at the end of a line).</p>
<p>When the first invention of the printing machine and the physical boundaries that are present for a type cutter are considered, it would be unfair to question his intentions for creating only a couple of glyphs for each character. Yet, as the process of type design is translated to digital medium, the means of creation and thus the nature of the product change. The glyphs are no longer defined by their physical features, but by mathematical abstractions of the desired shapes.</p>
<p>The process of pattern recognition relies not only the visual perception, but also the ability to understand and interpret features, visual references and concepts. In order to recognize letters and words, the brain does not run an algorithm to match the vertices of the shape and determine which glyph it is. Instead, it refers to its features and past experiences to understand the meaning.</p>
<p>This way, we are able to recognize every letter in all kinds of different fonts. If it wasn’t possible, we wouldn’t be able to recognize our own handwriting. In this sense, it is possible to expect the human brain to easily interpret a piece of text, when it is written by a system that is capable of producing glyphs at each occurrence of a letter, which are very similar but slightly different versions of each other.</p>
<p>The Frankenstein Application offers a digital typing environment, which is capable of generating theoretically infinitely unique glyphs for each letter at desired frequency. This generation can take place only once, when the letter is typed, continuously through an animated sequence for an appropriate context (such as an interactive e-book) or it can happen randomly once for every frame as long as the application runs.</p>
<p>For the purpose of the project, the usage of this system will be limited to generating different glyphs at each keystroke. The aim of this project is to study the effect of presenting different glyphs for each letter on the speed and the ease of reading.</p>
<p>The Frankenstein Application (a.k.a. the Franken-font) uses glyph interpolation to generate each letter. The interpolation occurs between Helvetica, a grotesque font, and Syntax, a humanist font; neither grotesque nor fully humanist, pretty much like the Frankenstein monster.</p>
<p>The Frankenstein Application is currently in progress as my visual arts and communication master thesis in Sabancı University, supervised by Onur Yazıcıgil. Both Helvetica and Syntax are registered trademarks of Linotype Foundation.</p>
<div id="pdf"><a href="http://csc.im/franken"><img title="The Frankenbook" alt="pdf" src="http://cemsinacetin.com/wp-content/themes/sina2013/images/pdf.png" width="41" height="42" align="left" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://cemsinacetin.com/frankenstein/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A tiny time lapse</title>
		<link>http://cemsinacetin.com/a-tiny-time-lapse/</link>
		<comments>http://cemsinacetin.com/a-tiny-time-lapse/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 21:05:43 +0000</pubDate>
		<dc:creator>sinabey</dc:creator>
				<category><![CDATA[open-source]]></category>

		<guid isPermaLink="false">http://cemsinacetin.com/?p=481</guid>
		<description><![CDATA[Simple time lapse application source code for Processing.]]></description>
				<content:encoded><![CDATA[<p>Processing code for a time lapse application.</p>
<p>Tested on MacOS X and Windows 7.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//A tiny time lapse application (probably the tiniest)</span>
<span style="color: #666666; font-style: italic;">//Cem Sina Çetin 2012</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.video.*</span><span style="color: #339933;">;</span>
&nbsp;
Capture cam<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> pixelCount<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> tick<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> filename<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> seconds<span style="color: #339933;">;</span>
<span style="color: #003399;">String</span> path<span style="color: #339933;">;</span>
<span style="color: #003399;">File</span> file<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  size<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">640</span>,<span style="color: #cc66cc;">480</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  tick <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  seconds <span style="color: #339933;">=</span> <span style="color: #cc66cc;">30</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//the time interval between two captured images.</span>
  filename <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//root directory for the time lapse sessions.</span>
  <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #009900;">&#123;</span>
    path <span style="color: #339933;">=</span> selectFolder<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>path <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  path <span style="color: #339933;">=</span> path<span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;/&quot;</span><span style="color: #339933;">+</span>
         <span style="color: #003399;">Integer</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span>day<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #339933;">+</span>
         <span style="color: #003399;">Integer</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span>month<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #339933;">+</span>
         <span style="color: #003399;">Integer</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span>year<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;/&quot;</span><span style="color: #339933;">;</span>
&nbsp;
  println<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;save directory: &quot;</span><span style="color: #339933;">+</span>path<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  file <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span>path<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>file.<span style="color: #006633;">isDirectory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    filename <span style="color: #339933;">=</span> file.<span style="color: #006633;">listFiles</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">length</span><span style="color: #339933;">;</span>
    println<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;existing files in folder: &quot;</span><span style="color: #339933;">+</span><span style="color: #003399;">Integer</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span>filename<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  println<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;for 25fps, the time lapse of a single day will take: &quot;</span><span style="color: #339933;">+</span>
          <span style="color: #003399;">Float</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">86400.0</span><span style="color: #339933;">/</span>seconds<span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">25</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">60</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span>
          <span style="color: #0000ff;">&quot; minutes.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  frameRate<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cam <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Capture<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, width, height, <span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cam.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  pixelCount <span style="color: #339933;">=</span> width<span style="color: #339933;">*</span>height<span style="color: #339933;">;</span>
  loadPixels<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  tick<span style="color: #339933;">++;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>tick <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> seconds <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> cam.<span style="color: #006633;">available</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    cam.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    cam.<span style="color: #006633;">loadPixels</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>pixelCount<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
       pixels<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> cam.<span style="color: #006633;">pixels</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    updatePixels<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    save<span style="color: #009900;">&#40;</span>path<span style="color: #339933;">+</span><span style="color: #003399;">Integer</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span>filename<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;.jpg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    println<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Image &quot;</span><span style="color: #339933;">+</span><span style="color: #003399;">Integer</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span>filename<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;.jpg is saved.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    filename<span style="color: #339933;">++;</span>
    tick <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://cemsinacetin.com/a-tiny-time-lapse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mandelbrot Explorer</title>
		<link>http://cemsinacetin.com/mandelbrot/</link>
		<comments>http://cemsinacetin.com/mandelbrot/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 16:51:09 +0000</pubDate>
		<dc:creator>sinabey</dc:creator>
				<category><![CDATA[open-source]]></category>

		<guid isPermaLink="false">http://cemsinacetin.com/?p=390</guid>
		<description><![CDATA[Mandelbrot explorer for Processing]]></description>
				<content:encoded><![CDATA[<p>Processing applet and code will be available soon. Screenshots below are from the C++ version of the explorer.</p>
<p><a href="http://cemsinacetin.com/wp-content/uploads/mandel4.jpg" rel="lightbox[390]" title="Mandelbrot Explorer"><img class="alignnone size-thumbnail wp-image-731" alt="mandel4" src="http://cemsinacetin.com/wp-content/uploads/mandel4-150x150.jpg" width="150" height="150" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/mandel3.jpg" rel="lightbox[390]" title="Mandelbrot Explorer"><img class="alignnone size-thumbnail wp-image-730" alt="mandel3" src="http://cemsinacetin.com/wp-content/uploads/mandel3-150x150.jpg" width="150" height="150" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/mandel2.jpg" rel="lightbox[390]" title="Mandelbrot Explorer"><img class="alignnone size-thumbnail wp-image-729" alt="mandel2" src="http://cemsinacetin.com/wp-content/uploads/mandel2-150x150.jpg" width="150" height="150" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/mandel7.jpg" rel="lightbox[390]" title="Mandelbrot Explorer"><img class="alignnone size-thumbnail wp-image-728" alt="mandel7" src="http://cemsinacetin.com/wp-content/uploads/mandel7-150x150.jpg" width="150" height="150" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/mandel5.jpg" rel="lightbox[390]" title="Mandelbrot Explorer"><img class="alignnone size-thumbnail wp-image-727" alt="mandel5" src="http://cemsinacetin.com/wp-content/uploads/mandel5-150x150.jpg" width="150" height="150" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/mandel1.jpg" rel="lightbox[390]" title="Mandelbrot Explorer"><img class="alignnone size-thumbnail wp-image-726" alt="mandel1" src="http://cemsinacetin.com/wp-content/uploads/mandel1-150x150.jpg" width="150" height="150" /></a><a href="http://cemsinacetin.com/wp-content/uploads/mandel6.jpg" rel="lightbox[390]" title="Mandelbrot Explorer"><img class="alignnone size-thumbnail wp-image-738" alt="mandel6" src="http://cemsinacetin.com/wp-content/uploads/mandel6-150x150.jpg" width="150" height="150" /></a> <a href="http://cemsinacetin.com/wp-content/uploads/mandel8.jpg" rel="lightbox[390]" title="Mandelbrot Explorer"><img class="alignnone size-thumbnail wp-image-739" alt="mandel8" src="http://cemsinacetin.com/wp-content/uploads/mandel8-150x150.jpg" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://cemsinacetin.com/mandelbrot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Escape Velocity</title>
		<link>http://cemsinacetin.com/the-escape-velocity/</link>
		<comments>http://cemsinacetin.com/the-escape-velocity/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 21:35:10 +0000</pubDate>
		<dc:creator>sinabey</dc:creator>
				<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://cemsinacetin.com/?p=468</guid>
		<description><![CDATA[A mockumentary on the fictional neurological disorder the Escape Velocity disease]]></description>
				<content:encoded><![CDATA[<p><iframe src="http://www.youtube.com/embed/USL5BDSnGRc" height="315" width="560" allowfullscreen="" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://cemsinacetin.com/the-escape-velocity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anagramaster</title>
		<link>http://cemsinacetin.com/anagramaster/</link>
		<comments>http://cemsinacetin.com/anagramaster/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 17:04:17 +0000</pubDate>
		<dc:creator>sinabey</dc:creator>
				<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://cemsinacetin.com/?p=371</guid>
		<description><![CDATA[Anagram finder for iPhone]]></description>
				<content:encoded><![CDATA[<p>Anagramaster is an extremely simple, intuitive and fast anagram finder, which uses a dictionary of over 100,000 words.</p>
<p>Results are not only generated and updated on each letter input simultaneously, but they can also be copied to the clipboard or can be sent by email directly through the application.</p>
<p>Anagramaster is a free project and it will continue to be updated with new functions, including partial and multiple word searches.</p>
<p><a href="http://itunes.apple.com/us/app/anagramaster/id405371502?mt=8"><img class="aligncenter size-full wp-image-376" title="view on appstore" alt="app" src="http://flawedvictory.com/cemsinacetin.com/wp-content/uploads/2010/12/app.png" width="120" height="40" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://cemsinacetin.com/anagramaster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>virtual street seller</title>
		<link>http://cemsinacetin.com/virtual-seller/</link>
		<comments>http://cemsinacetin.com/virtual-seller/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 12:32:33 +0000</pubDate>
		<dc:creator>sinabey</dc:creator>
				<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://cemsinacetin.com/?p=367</guid>
		<description><![CDATA[Collaborative Project with Lauren Ten Hoor]]></description>
				<content:encoded><![CDATA[<p><iframe src="http://www.youtube.com/embed/u-2cYRw8NYo" height="315" width="560" allowfullscreen="" frameborder="0"></iframe></p>
<div style="width: 560px;">
Interactive Installation for the &#8220;Meeting Istanbul&#8221; exhibiton. This particular work symbolizes the way street sellers approach people; walk by to catch their attention, make eye contact to attract them.</p>
<p>Concept: Lauren ten Hoor<br />
Implementation: Cem Sina Çetin
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://cemsinacetin.com/virtual-seller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
