<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8544454439012011230</id><updated>2011-11-01T00:21:03.985-07:00</updated><category term='linux'/><category term='Digital heritage'/><category term='Physical Computing'/><category term='opendimension.org'/><category term='Blender'/><category term='Arduino'/><category term='Android'/><category term='web 3.0'/><category term='free speech'/><category term='Beagleboard'/><category term='scripts'/><category term='information agents'/><title type='text'>Open Dimension</title><subtitle type='html'>About free software and digital cultural heritage</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-5027673416759978032</id><published>2011-11-01T00:05:00.000-07:00</published><updated>2011-11-01T00:21:04.003-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free speech'/><title type='text'></title><content type='html'>Interested of freedom of speech?Then say no to ACTA!&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/citzRjwk-sQ" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-5027673416759978032?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/5027673416759978032/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2011/11/interested-of-freedom-of-speechthen-say.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/5027673416759978032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/5027673416759978032'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2011/11/interested-of-freedom-of-speechthen-say.html' title=''/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/citzRjwk-sQ/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-9160556003568804763</id><published>2011-09-14T01:55:00.000-07:00</published><updated>2011-09-14T02:02:38.658-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Digital heritage'/><title type='text'></title><content type='html'>&lt;h1&gt;Museums, images and non-institutional digital heritage&lt;/h1&gt;&lt;p&gt;What do people want from museums? Better metada, better search algorithms? Nope. They want to download images, videos and sounds. Don't believe me? Well, have a look at the&lt;a href="http://www.europeanaconnect.eu/news.php?area=News&amp;pag=79"&gt; Europeana survey 2011&lt;/a&gt;: Over 90% of respondents agree that ability to download materials would be "useful" or "very useful".&lt;/p&gt;&lt;p&gt;I gave a little provocative presentation in CIDOC 2011 about museums, images, Google and people outside heritage institutions. My main point was that people want to participate in creating of digital heritage in their own terms, not museums. There is already a very active digital heritage field outside of heritage organisations which often overrules official digital heritage in search engine visibility, usability and coverage. And since search engines (Google) are the main entry points to the internet, official digital heritage is struggling with its visibility. Non-institutional digital heritage is here to stay and museums must decide if they want to be part of that or not.&lt;/p&gt;&lt;p&gt;You can find my slides and full paper from here: &lt;a href="http://opendimension.org/ida/papers.php"&gt;http://opendimension.org/ida/papers.php&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-9160556003568804763?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/9160556003568804763/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2011/09/museum-images-and-non-institutional.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/9160556003568804763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/9160556003568804763'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2011/09/museum-images-and-non-institutional.html' title=''/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-7335508146066327428</id><published>2011-03-01T05:13:00.000-08:00</published><updated>2011-03-01T05:13:48.014-08:00</updated><title type='text'>Are you sure?</title><content type='html'>&lt;a href="http://www.mendeley.com/"&gt;Mendeley&lt;/a&gt; shows the right way to ask if you want to remove your data!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JBxIUp2Ybm4/TWzwrb6HupI/AAAAAAAAADk/lRlQgvGICpw/s1600/Screenshot-Reset%2BMendeley%2BDesktop.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="290" width="235" src="http://3.bp.blogspot.com/-JBxIUp2Ybm4/TWzwrb6HupI/AAAAAAAAADk/lRlQgvGICpw/s320/Screenshot-Reset%2BMendeley%2BDesktop.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-7335508146066327428?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/7335508146066327428/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2011/03/are-you-sure.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/7335508146066327428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/7335508146066327428'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2011/03/are-you-sure.html' title='Are you sure?'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-JBxIUp2Ybm4/TWzwrb6HupI/AAAAAAAAADk/lRlQgvGICpw/s72-c/Screenshot-Reset%2BMendeley%2BDesktop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-8052763318429910693</id><published>2011-02-11T02:01:00.000-08:00</published><updated>2011-02-11T02:02:59.393-08:00</updated><title type='text'>Nokia and Microsoft, it's a deal!</title><content type='html'>Oh, this is a sad day! &lt;br /&gt;Probably there is no Nokia in future. It might be called Microsoft's mobile unit...&lt;br /&gt;&lt;br /&gt;As a Finn, I'm so sorry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-8052763318429910693?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/8052763318429910693/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2011/02/nokia-and-microsoft-its-deal.html#comment-form' title='4 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/8052763318429910693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/8052763318429910693'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2011/02/nokia-and-microsoft-its-deal.html' title='Nokia and Microsoft, it&apos;s a deal!'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-2627217087099244095</id><published>2011-02-02T05:05:00.000-08:00</published><updated>2011-02-02T05:05:33.752-08:00</updated><title type='text'>VIM code completion</title><content type='html'>Hidden treasure: Ctrl + n in insert mode completes variable names etc. Oh joy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-2627217087099244095?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/2627217087099244095/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2011/02/vim-code-completion.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/2627217087099244095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/2627217087099244095'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2011/02/vim-code-completion.html' title='VIM code completion'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-9033981816591387512</id><published>2011-01-26T09:23:00.000-08:00</published><updated>2011-01-26T09:24:10.186-08:00</updated><title type='text'>Disabling auto exposure in Logitech 9000 pro</title><content type='html'>Auto exposure was ruining my attempts to use OpenCV successfully. Then I found guvcview. It gives option to disable auto exposure and set values manually.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation&lt;/b&gt;&lt;br /&gt;In Debian based systems:&lt;br /&gt;sudo apt-get install guvcview&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-9033981816591387512?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/9033981816591387512/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2011/01/disabling-auto-exposure-in-logitech.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/9033981816591387512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/9033981816591387512'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2011/01/disabling-auto-exposure-in-logitech.html' title='Disabling auto exposure in Logitech 9000 pro'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-7127859359577397078</id><published>2010-12-21T02:29:00.000-08:00</published><updated>2010-12-21T04:24:46.109-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blender'/><title type='text'>Using threads in Blender game engine</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vAj-oEVMSfY/TRCExcJQ3MI/AAAAAAAAACo/iyjGZLJXrIo/s1600/LogoBlender.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 276px; height: 233px;" src="http://4.bp.blogspot.com/_vAj-oEVMSfY/TRCExcJQ3MI/AAAAAAAAACo/iyjGZLJXrIo/s320/LogoBlender.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5553084325451324610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I just made an experiment of using threads in Blender's game engine. Even though using threads in Python does not necessarily make code any faster (see &lt;a href="http://kurt.seifried.org/2010/05/31/python-performance-part-2/"&gt;GIL&lt;/a&gt;), in this case using thread(s) has a really big difference. &lt;br /&gt;&lt;br /&gt;AFAIK, rendering and execution of python scripts are running sequential in BGE. This is a bad thing if you have to make some heavy lifting in the script. Whole game engine have to wait until the job is done ruining your FPS. By using threads, the heavy lifting can be done parallel (or at least semiparallel) to main rendering loop.&lt;br /&gt;&lt;br /&gt;The script can be found from &lt;a href="http://blenderartists.org/forum/showthread.php?t=204802&amp;p=1758878"&gt;Blenderartists&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-7127859359577397078?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/7127859359577397078/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2010/12/using-threads-in-blender-game-engine.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/7127859359577397078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/7127859359577397078'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2010/12/using-threads-in-blender-game-engine.html' title='Using threads in Blender game engine'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vAj-oEVMSfY/TRCExcJQ3MI/AAAAAAAAACo/iyjGZLJXrIo/s72-c/LogoBlender.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-8654631965415287251</id><published>2010-12-20T10:56:00.000-08:00</published><updated>2010-12-21T04:33:55.621-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blender'/><title type='text'>Towards Blender 2.55</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://opendimension.org/blender_en/images/pyramidazed.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://opendimension.org/blender_en/images/pyramidazed.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I had a little break from Blender but now its time to go back and see what devs have been doing. I just converted my old pyramidaze script for 2.55. It is REALLY simple but it was my first python script back in 2006 :)&lt;br /&gt;&lt;br /&gt;It just iterates through selected faces of the object and adds a pyramid top of them (see image above).&lt;br /&gt;&lt;br /&gt;Here is 2.55 version:&lt;br /&gt;&lt;pre&gt;#**********************************************************************************************&lt;br /&gt;#pyramidaze.py&lt;br /&gt;# - This script adds a "pyramid" over every selected face&lt;br /&gt;#&lt;br /&gt;# - Open this file in the Blender's text window&lt;br /&gt;# - Select faces&lt;br /&gt;# - set settings (see below)&lt;br /&gt;# - run script (Alt + P)&lt;br /&gt;# &lt;br /&gt;# there is nothing special in this script but it shows how to iterate &lt;br /&gt;# through all faces in selected object, how to get normal and how to &lt;br /&gt;create new mesh object.&lt;br /&gt;#&lt;br /&gt;# Feel free to use this script any way you like, I'm sure this is very useful ;)&lt;br /&gt;#&lt;br /&gt;#Ari Hayrinen 29.11.2006 &lt;br /&gt;# updated for Blender 2.55 20.12.2010&lt;br /&gt;#www.opendimension.org/blender_en&lt;br /&gt;#&lt;br /&gt;# TODO:&lt;br /&gt;# - GUI &lt;br /&gt;# &lt;br /&gt;#*************************************************************************************************&lt;br /&gt;&lt;br /&gt;import bpy&lt;br /&gt;import mathutils&lt;br /&gt;&lt;br /&gt;#************************************************************************************************&lt;br /&gt;# settings&lt;br /&gt;#************************************************************************************************&lt;br /&gt;py_height = 1       # pyramid height if use_area is 0, negative value inverts pyramid&lt;br /&gt;use_area = 1        # if 1, uses face area as pyramid height&lt;br /&gt;area_multi = 1      # multiplier for face area, negative values inverts pyramid&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#********************************************************************************&lt;br /&gt;#main&lt;br /&gt;#*********************************************************************************&lt;br /&gt;&lt;br /&gt;objekti = bpy.context.active_object&lt;br /&gt;scene = bpy.context.scene&lt;br /&gt;&lt;br /&gt;# list for new faces&lt;br /&gt;coords = []&lt;br /&gt;faces = []&lt;br /&gt;&lt;br /&gt;# counter so we know where to add new faces &lt;br /&gt;verts = 0  &lt;br /&gt;vertices = objekti.data.vertices&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# let's go through all faces in selected object&lt;br /&gt;for face in objekti.data.faces:&lt;br /&gt;#use only selected faces    &lt;br /&gt;&lt;br /&gt;if face.select:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;center = face.center&lt;br /&gt;&lt;br /&gt;#number of vertices&lt;br /&gt;vco = len(face.vertices) &lt;br /&gt;&lt;br /&gt;if use_area:&lt;br /&gt;py_height = face.area * area_multi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#multiple normal with pyramid height and add result to the center of the face&lt;br /&gt;center.x = center.x + face.normal[0] * py_height&lt;br /&gt;center.y = center.y + face.normal[1] * py_height&lt;br /&gt;center.z = center.z + face.normal[2] * py_height&lt;br /&gt;&lt;br /&gt;#create vertices &lt;br /&gt;coords.append([center.x,center.y,center.z])&lt;br /&gt;verts +=1&lt;br /&gt;&lt;br /&gt;for i in range(vco):&lt;br /&gt;coords.append(vertices[face.vertices[i]].co)&lt;br /&gt;verts +=1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#create triangles&lt;br /&gt;cco = vco + 1                        # number of created vertices&lt;br /&gt;for j in range(vco):    &lt;br /&gt;if j &lt; (vco-1):&lt;br /&gt;faces.append([verts-cco, verts-(cco-(j+1)), verts-(vco-j-1)])&lt;br /&gt;else:&lt;br /&gt;faces.append([verts-cco, verts-(cco-(j+1)), verts-(cco-1)])&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Create new mesh block and add faces to it&lt;br /&gt;mesh = bpy.data.meshes.new('myMesh')&lt;br /&gt;&lt;br /&gt;mesh.from_pydata(coords,"",faces)&lt;br /&gt;mesh.update()&lt;br /&gt;&lt;br /&gt;new_obj = bpy.data.objects.new("koe", mesh)&lt;br /&gt;scene.objects.link(new_obj)&lt;br /&gt;&lt;br /&gt;new_obj.location = objekti.location&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-8654631965415287251?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/8654631965415287251/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2010/12/towards-blender-2.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/8654631965415287251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/8654631965415287251'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2010/12/towards-blender-2.html' title='Towards Blender 2.55'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-1917650071376353576</id><published>2010-11-17T02:32:00.000-08:00</published><updated>2010-11-17T02:56:08.987-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vAj-oEVMSfY/TOOyBq4Oh2I/AAAAAAAAACA/WLP9yn0qN-c/s1600/android-logo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 239px; height: 264px;" src="http://2.bp.blogspot.com/_vAj-oEVMSfY/TOOyBq4Oh2I/AAAAAAAAACA/WLP9yn0qN-c/s320/android-logo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5540467708355577698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Why do I have a problem with Android market&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I bought Samsung Galaxy S phone. It has Android in it and it is a wonderful phone. And then there is the Android market which has a lot of nice applications in it. The problem is that I don't trust them. I'm so used to use Free software that any proprietary code makes me suspicious.&lt;br /&gt;&lt;br /&gt;And why should I trust? &lt;a href="http://www.pcworld.com/businesscenter/article/206644/android_apps_more_open_than_users_know.html"&gt;Android applications knows more than they should&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Where is a market place for Free software only? &lt;/span&gt;&lt;br /&gt;I think FLOSS-market place could be a great way to support Free software. So far, I haven't paid for Free software (although I've donated), but I can see myself paying for Free applications more happily than proprietary ones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-1917650071376353576?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/1917650071376353576/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2010/11/android-market-for-gpl-applications-i.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/1917650071376353576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/1917650071376353576'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2010/11/android-market-for-gpl-applications-i.html' title=''/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vAj-oEVMSfY/TOOyBq4Oh2I/AAAAAAAAACA/WLP9yn0qN-c/s72-c/android-logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-2260872817364159856</id><published>2010-10-04T05:25:00.000-07:00</published><updated>2010-10-04T05:29:04.287-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scripts'/><title type='text'></title><content type='html'>Handy Perl script for generating passwords:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; perl -e 'print crypt("something_here", "this_is_salt"),"\n"' &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-2260872817364159856?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/2260872817364159856/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2010/10/handy-perl-script-for-generating.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/2260872817364159856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/2260872817364159856'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2010/10/handy-perl-script-for-generating.html' title=''/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-5351528346029778431</id><published>2010-06-05T04:56:00.000-07:00</published><updated>2010-06-05T05:50:45.662-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='information agents'/><category scheme='http://www.blogger.com/atom/ns#' term='web 3.0'/><title type='text'>Are information agents the format radio of Internet?</title><content type='html'>Those who have bought books from Amazon.com knows of their habit of recommend other books that Amazon thinks could be in your interest. And I hate to admit but usually these recommendations are pretty good. I think this is the basic idea of web 3.0 in general. It knows more than current web and it can act based on that knowledge.&lt;br /&gt;&lt;br /&gt;So Web 3.0 should be smarter web. Not just documents but information provided by context sensitive agents. But how about information outside my context?&lt;br /&gt;&lt;br /&gt;There is a radio channel that advertises itself with slogan "Hit Music Only". The listener can be sure that he or she is never exposed to Bach or Arvo Pärt. Those things simply does not exist in that universe. &lt;br /&gt;&lt;br /&gt;So what if intelligent agents works similarly than radio stations that are concentrated only one type of music? They filters out everything that is not suitable to our "context" and we don't never have to see anything inappropriate (e.g. something that does fit in our beliefs)?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-5351528346029778431?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/5351528346029778431/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2010/06/web-30.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/5351528346029778431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/5351528346029778431'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2010/06/web-30.html' title='Are information agents the format radio of Internet?'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-5837351783759128928</id><published>2010-05-05T01:08:00.000-07:00</published><updated>2010-05-05T01:20:32.177-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Ubuntu 10.4 is fast!</title><content type='html'>I tried the latest version of Ubuntu and it is just fast! Boots quickly and overall appearance is snappy. I hope next version of Fedora can compete with that.&lt;br /&gt;&lt;br /&gt;Anyway, good work devs!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ubuntu.com/"&gt;http://www.ubuntu.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-5837351783759128928?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/5837351783759128928/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2010/05/ubuntu-104-is-fast.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/5837351783759128928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/5837351783759128928'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2010/05/ubuntu-104-is-fast.html' title='Ubuntu 10.4 is fast!'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-1084450227266055866</id><published>2009-12-14T00:06:00.000-08:00</published><updated>2009-12-14T02:18:55.353-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>From Ubuntu to Fedora</title><content type='html'>There are lot of distros to choose for Linux users and I've been a loyal Ubuntu user since the beginning of the Ubuntu saga. Until now. Ubuntu is doing great work enabling "out-of-a-box" experience for novice users. But when you are not a novice user any more, this approach starts to annoy a little bit. So it was time switch from comfort zone to Fedora. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why Fedora?&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.theregister.co.uk/2009/11/19/fedora_12_review/"&gt;According to Paul Frields&lt;/a&gt; (Fedora's project leader) Fedora is intended "first and foremost for users interested in and capable of contributing to open source." I would really like to count myself to those users. In addition, Fedora is a bleeding edge distro and Red Hat is a &lt;a href="http://press.redhat.com/2008/04/08/red-hat-leads-open-source-contributions-to-kernel/"&gt;big contributor&lt;/a&gt; to Linux kernel. &lt;br /&gt;&lt;br /&gt;So Fedora just seems right for me :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;In practise&lt;/strong&gt;&lt;br /&gt;Of course I had tried several distros earlier but now I wanted to convert my work PC to another system and that is something that you I'm not willing to do very often. I've listed some differences that I had to deal with:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Selinux&lt;/strong&gt;&lt;br /&gt;Selinux is an additional security layer and it can drive you crazy. I did not remember that Fedora has this on by default. I spent whole one day trying to get PostgreSQL and Apache working nicely. Finally I realised what was causing the trouble up and I turned the selinux off. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.crypt.gen.nz/selinux/disable_selinux.html"&gt;http://www.crypt.gen.nz/selinux/disable_selinux.html&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PHP Development&lt;/strong&gt;&lt;br /&gt;There are some differences in PHP settings between Ubuntu and Fedora.&lt;br /&gt;I need PHP's xml and mbstring modules for my development. In ubuntu these are included by default, but in fedora they can be found as a separate packakeges: php-xml and php-mbstring. In fedora, PHP's errors are logged to file instead of showing them. That's good for production server but not for a development server. Not a big deal, just small edit in php.ini file.&lt;br /&gt;&lt;br /&gt;display_errors = On&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Yum&lt;/strong&gt;&lt;br /&gt;Yum is Fedora's "apt". It is little bit slower that Apt in Debian or Ubuntu, but it is also more verbal by default. The speed is really not an issue, at least for me. Yum install XXX, yum remove XXX, yum update, not big differences here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Multimedia&lt;/strong&gt;&lt;br /&gt;By default Fedora does not find any closed codecs like MP3. Luckily there is a &lt;a href="http://rpmfusion.org/"&gt;RPM Fusion&lt;/a&gt;. Just install RPM from the Fusion site and codecs are found when you try to play those unneeded closed formats.  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Software Development&lt;/strong&gt;&lt;br /&gt;So far I haven't found any significant differences here. Make, scons, SVN and CVS just do their work like expected.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DWM&lt;/strong&gt;&lt;br /&gt;DWM is the window manager I'm using and can't live without. Downloaded source, compiled and it was working. So no complaints!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dwm.suckless.org/"&gt;http://dwm.suckless.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-1084450227266055866?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/1084450227266055866/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2009/12/from-ubuntu-to-fedora.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/1084450227266055866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/1084450227266055866'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2009/12/from-ubuntu-to-fedora.html' title='From Ubuntu to Fedora'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-7470018392118160745</id><published>2009-11-05T23:05:00.000-08:00</published><updated>2009-11-06T04:31:20.090-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Beagleboard'/><title type='text'>Beagleboard running!</title><content type='html'>I finally got my Beagleboard running! It took time but now I'm satisfied :)&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;EBVBeagle&lt;/h5&gt;&lt;br /&gt;I ordered &lt;a href="http://www.ebv.com/en/products/categories/details/product/ebvbeagle-board.html?no_cache=1"&gt;EBVBeagle&lt;/a&gt;, which is Beagleboard with out-of-the-box functionality. It comes with a SD card that has Angstrom distribution in it. &lt;br /&gt;&lt;br /&gt;I had no previous experience of embedding Linux and I was very unsure of how things worked. But finally I got it booting and got display working. But things still did not work very well. The problem was that I was not able to login graphically. X died every time after login screen. I decided to try with a newer version of Angstrom. But how?&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;Making it running&lt;/h5&gt;&lt;br /&gt;&lt;br /&gt;Luckily there is &lt;a href="http://elinux.org/BeagleBoard"&gt;http://elinux.org/BeagleBoard&lt;/a&gt;. &lt;br /&gt;So, I followed loo-oong directions in http://elinux.org/BeagleBoard and I managed to get the new Angstrom demo image running. It booted and I could use BeagleBoard through serial connection but now I lost mouse and keyboard. Next I tried Ubuntu's arm version (&lt;a href="http://elinux.org/BeagleBoardUbuntu"&gt;http://elinux.org/BeagleBoardUbuntu&lt;/a&gt;). I got it running but again, no mouse or keyboard.&lt;br /&gt;&lt;br /&gt;I thought that maybe I'm just not geeky enough and maybe I should leave these to real geeks :(&lt;br /&gt;&lt;br /&gt;But I don't like the idea of giving up, so I tried one more thing: I updated the U-boot. The update process seemed to be a little bit scary operation since it means changing the content of board's flash memory. But that solved the problem, I have now mouse and keyboard in XFCE Ubuntu BeagleBoard box.&lt;br /&gt;&lt;br /&gt;So why did I have to update the U-Boot? Because:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;The kernel your running (2.6.29 series) is expecting the usb pins to be setup in U-boot.. &lt;/span&gt; &lt;br /&gt;&lt;a href="http://groups.google.com/group/beagleboard/msg/e0c8fcdd64a68252"&gt;source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Directions for updating the U-Boot:&lt;br /&gt;&lt;a href="http://elinux.org/BeagleBoardUbuntu#Upgrade_U-Boot"&gt;http://elinux.org/BeagleBoardUbuntu#Upgrade_U-Boot&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-7470018392118160745?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/7470018392118160745/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2009/11/beagleboard-running.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/7470018392118160745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/7470018392118160745'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2009/11/beagleboard-running.html' title='Beagleboard running!'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-4513064388369606891</id><published>2009-05-15T05:34:00.000-07:00</published><updated>2009-05-19T02:59:57.601-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Physical Computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Blender'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>Blender and Physical Computing</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vAj-oEVMSfY/Sg1szY9wLqI/AAAAAAAAABE/FjyRQsiBwQs/s1600-h/servo_controlled_mirror_p.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_vAj-oEVMSfY/Sg1szY9wLqI/AAAAAAAAABE/FjyRQsiBwQs/s320/servo_controlled_mirror_p.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5336040763634495138" /&gt;&lt;/a&gt;&lt;br /&gt;During a Physical Computing class here at the University of Jyväskylä, I made a small experiment with Blender and Arduino. I build a very simple prototype called CHEEX (Cheap Exhibition Expander).&lt;br /&gt;&lt;br /&gt;The idea is that instead of traditional exhibition posters or information kiosks, one could use any part of the exhibition room as a display by using data projector and servo-controlled mirror. By using sensors it is possible to react visitors and show them more information when they get near objects. &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The Blender part&lt;/h2&gt;&lt;br /&gt;Blender has a virtual camera which is pointing to a target object. This target object is then animated and the camera naturally follows it. The rotations of the camera are then sent to Arduino, which controls two axis servo system which has a mirror attached to it. &lt;br /&gt;&lt;br /&gt;Inside Blender I have a normal scene with camera, the target object and some other objects. Blender scene can be modelled according the exhibition room so that virtual camera and mirror points to same spot. Then it is possible to combine physical space with virtual space.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Technicalities&lt;/h2&gt;&lt;br /&gt;Technically system is very simple. I used very simple protocol between Blender and Arduino. By sending sequences of three bytes, I could quite easily send rotations to Arduino. First Blender sends "255" and then angle for root servo and then angle for head servo. Arduino is reading serial port and when it receives 255, it knows that following two bytes are the angles for the servos.&lt;br /&gt;&lt;br /&gt;System also has one ultrasonic sensor and value from that sensor is send back to Blender every time Blender sends the angle values for servos. This way everything stays in sync and there is no problems with serial port buffer overflows.&lt;br /&gt;&lt;br /&gt;System has still one major problem. Servos are connected directly to Arduino and they are using too much power. This makes the readings from the ultrasonic sensor unreliable when servos are moving (at least I *think* that is causing this). I sort of resolved the problem by taking an average of several values but that can be considered a hack. I'll order a motorshield for Arduino and test if using it will resolve the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-4513064388369606891?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/4513064388369606891/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2009/05/blender-and-physical-computing.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/4513064388369606891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/4513064388369606891'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2009/05/blender-and-physical-computing.html' title='Blender and Physical Computing'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vAj-oEVMSfY/Sg1szY9wLqI/AAAAAAAAABE/FjyRQsiBwQs/s72-c/servo_controlled_mirror_p.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-3086039122754435964</id><published>2009-04-20T08:54:00.000-07:00</published><updated>2009-04-20T09:10:24.140-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>/dev/Arduino</title><content type='html'>I noticed that if I unplugged Arduino from my Ubuntu-box and then plugged it back, the /dev name for Arduino changed from /dev/ttyUSB0 to /dev/ttyUSB1. Fortunately this was easy to fix. The problem was solved by adding a file 97-arduino.rules in /etc/udev/rules.d/ and adding the following rule (all in one line):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;kernel=="ttyUSB*", SYSFS{idVendor}=="0403", &lt;br /&gt;SYSFS{idProduct}=="6001", &lt;br /&gt;SYMLINK="Arduino"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So now I can always trust that Arduino is in /dev/Arduino. If you have two Arduinos,you can use serial numbers in order to recognize them (see link below).&lt;br /&gt;&lt;br /&gt;Original source:&lt;br /&gt;&lt;a href="http://www.arduino.cc/playground/Linux/Udev"&gt;http://www.arduino.cc/playground/Linux/Udev&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-3086039122754435964?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/3086039122754435964/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2009/04/i-noticed-that-if-i-unplugged-arduino.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/3086039122754435964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/3086039122754435964'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2009/04/i-noticed-that-if-i-unplugged-arduino.html' title='/dev/Arduino'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-943283120231201159</id><published>2009-04-17T10:03:00.000-07:00</published><updated>2009-04-20T08:50:55.275-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blender'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>Bouncing virtual ball with Arduino (and Blender)</title><content type='html'>UPDATED 20.4.2009&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://opendimension.org/images/arduino_with_photoresistor.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 400px;" src="http://opendimension.org/images/arduino_with_photoresistor.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm quite new on this Arduino stuff and I may have misunderstood something. But anyway, here are some observations of using Arduino and Blender's game engine.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;It's easy!&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;It is really easy to get values from Arduino to Blender. Here is a simple setup for reading photo-resistor's values from Blender:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;from Blender.Mathutils import Vector import serial &lt;br /&gt;port = '/dev/ttyUSB0' &lt;br /&gt;pin = 0 &lt;br /&gt;try: &lt;br /&gt;    GameLogic.SerialPort &lt;br /&gt;except: &lt;br /&gt;    GameLogic.SerialPort = serial.Serial(port,9600) &lt;br /&gt;&lt;br /&gt;# read data &lt;br /&gt;valo = GameLogic.SerialPort.readline() &lt;br /&gt;val = float(valo)/200 &lt;br /&gt;&lt;br /&gt;# BLENDER stuff &lt;br /&gt;&lt;br /&gt;objs = GameLogic.getCurrentScene().getObjectList() &lt;br /&gt;cube = objs["OBbox"] &lt;br /&gt;cube.setPosition([1.0,1.0,val])&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here I'm reading photoresistor values and then tell Blender's game-engine to change "box" object's position according that value. The arduino code looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/* Arduino reading photo resistor to serial * * */ &lt;br /&gt;int analogPin=0; &lt;br /&gt;int analogVal=0; &lt;br /&gt;void setup() { Serial.begin(9600); } &lt;br /&gt;void loop() { &lt;br /&gt;    // get the value from photoresistor &lt;br /&gt;    analogVal = analogRead(analogPin); &lt;br /&gt;    Serial.println(analogVal); &lt;br /&gt;    //delay(100);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Not so fast!&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;There is a one catch when reading data from Arduino to Blender. And that's the fact that python scripts are executed on every frame and that mean that you'll read data from serial port approx. 60 times per second.&lt;br /&gt;&lt;br /&gt;However, Arduino is sending data much faster. As a result, you'll see a horrible delay in Blender. That's because the data arduino sent is buffered and you are actually reading from buffer. So you'll get "historical" values from serial port, not the current values. And for interactive application that is not wanted.&lt;br /&gt;&lt;br /&gt;There are couple of ways to fix this:&lt;br /&gt;&lt;br /&gt;The simplest way is to program Arduino to send data more rarely. You could use delay function if there is nothing else that Arduino should do (delay halts everything in Arduino).&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Request/response model&lt;/h2&gt;&lt;br /&gt;Better and more predictable way is to tell Arduino when we want to get a value. So when we want a value, we sent a signal to arduino to send data and then we read the value. This way we'll always get the current values no matter of how high or low our frame rates are.&lt;br /&gt;&lt;br /&gt;(I *think* that it would be also possible to run a separate python thread for Arduino input and just read values from that thread)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;port = '/dev/Arduino' &lt;br /&gt;pin = 0 &lt;br /&gt; &lt;br /&gt;try: &lt;br /&gt;    GameLogic.SerialPort &lt;br /&gt;except: &lt;br /&gt;    try: &lt;br /&gt;        GameLogic.SerialPort = serial.Serial(port,9600,timeout=1)  &lt;br /&gt;        print 'Port ' + port + 'found!' &lt;br /&gt;         &lt;br /&gt;        #ok, we have a port. Let's test if we can write to it &lt;br /&gt;        try: &lt;br /&gt;            GameLogic.SerialPort.write('x') &lt;br /&gt;            GameLogic.serialRead = False &lt;br /&gt;            GameLogic.serialOk = True &lt;br /&gt;              &lt;br /&gt;        except: &lt;br /&gt;            GameLogic.serialOk = False &lt;br /&gt;            print 'could not write to port ' + port + '!' &lt;br /&gt;         &lt;br /&gt;         &lt;br /&gt;    except: &lt;br /&gt;        GameLogic.serialOk = False &lt;br /&gt;        print 'no port ' + port + ' found!' &lt;br /&gt;     &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;# do stuff if serial port is OK &lt;br /&gt;if GameLogic.serialOk: &lt;br /&gt;    if GameLogic.serialRead: &lt;br /&gt;        valo = GameLogic.SerialPort.readline() &lt;br /&gt;        val = float(valo)/100 &lt;br /&gt;        GameLogic.serialRead = False     &lt;br /&gt;    else: &lt;br /&gt;        GameLogic.SerialPort.write('a') &lt;br /&gt;        GameLogic.serialRead = True     &lt;br /&gt;     &lt;br /&gt; &lt;br /&gt;    # BLENDER stuff &lt;br /&gt;    if GameLogic.serialRead == False: &lt;br /&gt;        objs = GameLogic.getCurrentScene().getObjectList() &lt;br /&gt;        cube = objs["OBbox"] &lt;br /&gt;        cube.setPosition([1.0,1.0,val])&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When Blender is ready to receive a value from Arduino, it send character "a" to the Arduino. Arduino sent one value and that is read next round. Arduino code is very simple:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int analogPin=0;&lt;br /&gt;int analogVal=0;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;  if ( Serial.available()) {&lt;br /&gt;    char ch = Serial.read();&lt;br /&gt;    if ('a'==ch) {&lt;br /&gt;      analogVal = analogRead(analogPin);&lt;br /&gt;      Serial.println(analogVal);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is a very simple demo using photoresistor to control a box's position. A top of box there is a ball so you can bounce the ball with adjusting the amount of light.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vAj-oEVMSfY/Sei4XeMV7WI/AAAAAAAAAAc/hHa3L1go2Gc/s1600-h/bounce.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 270px;" src="http://1.bp.blogspot.com/_vAj-oEVMSfY/Sei4XeMV7WI/AAAAAAAAAAc/hHa3L1go2Gc/s320/bounce.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5325709272746945890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-943283120231201159?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/943283120231201159/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2009/04/bouncing-virtual-ball-with-arduino-and.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/943283120231201159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/943283120231201159'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2009/04/bouncing-virtual-ball-with-arduino-and.html' title='Bouncing virtual ball with Arduino (and Blender)'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vAj-oEVMSfY/Sei4XeMV7WI/AAAAAAAAAAc/hHa3L1go2Gc/s72-c/bounce.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-1080319164688227682</id><published>2009-04-05T02:08:00.000-07:00</published><updated>2009-04-05T03:17:10.237-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>Arduino and schematic views</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vAj-oEVMSfY/Sdh38ah1cLI/AAAAAAAAAAM/5irIlQbravg/s1600-h/Screenshot-AnalogInputToServo.fz+%5BREAD-ONLY%5D++-+Fritzing+-+%5BBreadboard+View%5D.png"&gt;&lt;img style=" margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_vAj-oEVMSfY/Sdh38ah1cLI/AAAAAAAAAAM/5irIlQbravg/s320/Screenshot-AnalogInputToServo.fz+%5BREAD-ONLY%5D++-+Fritzing+-+%5BBreadboard+View%5D.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5321134839535333554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Want to make a nice shematic diagram from your Arduino-based system? Interaction Design Lab at the University of Applied Sciences Potsdam have developed a really nice tool called Fritzing that can do that and even more. It can also make PCB (Printed Circuit Board) diagram for you.&lt;br /&gt;&lt;br /&gt;You make your connections via drag-drop and then you can just switch between different kind of views (breadboard, schematic and PCB).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vAj-oEVMSfY/Sdh7NgJ_mJI/AAAAAAAAAAU/O3rRnWi1A3Q/s1600-h/Screenshot-AnalogInputToServo.fz+%5BREAD-ONLY%5D++-+Fritzing+-+%5BSchematic+View%5D.png"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_vAj-oEVMSfY/Sdh7NgJ_mJI/AAAAAAAAAAU/O3rRnWi1A3Q/s320/Screenshot-AnalogInputToServo.fz+%5BREAD-ONLY%5D++-+Fritzing+-+%5BSchematic+View%5D.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5321138431638608018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fritzing is Free Softaware and there are version for Linux, Mac and Windows. You can find downloads and more info here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fritzing.org/welcome/"&gt;http://fritzing.org/welcome/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-1080319164688227682?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/1080319164688227682/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2009/04/arduino-and-schematic-views.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/1080319164688227682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/1080319164688227682'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2009/04/arduino-and-schematic-views.html' title='Arduino and schematic views'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vAj-oEVMSfY/Sdh38ah1cLI/AAAAAAAAAAM/5irIlQbravg/s72-c/Screenshot-AnalogInputToServo.fz+%5BREAD-ONLY%5D++-+Fritzing+-+%5BBreadboard+View%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8544454439012011230.post-5363548902651562932</id><published>2009-04-04T04:31:00.001-07:00</published><updated>2009-04-04T04:51:35.781-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opendimension.org'/><title type='text'>Blog</title><content type='html'>This is a blog for &lt;a href="http://www.opendimension.org/"&gt;opendimension.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This blog will serve a) as a extension memory for myself by storing short notes about different kind of things  (I have lousy memory) and b) as place for publishing small tutorials I think could be useful for other persons too.&lt;br /&gt;&lt;h2&gt;What are the main topics?&lt;/h2&gt;&lt;br /&gt;If it runs on Linux, if it's free software and if it somehow could be used in the field of cultural heritage, then I'm surely interested!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8544454439012011230-5363548902651562932?l=opendimension.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opendimension.blogspot.com/feeds/5363548902651562932/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://opendimension.blogspot.com/2009/04/testi.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/5363548902651562932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8544454439012011230/posts/default/5363548902651562932'/><link rel='alternate' type='text/html' href='http://opendimension.blogspot.com/2009/04/testi.html' title='Blog'/><author><name>Tuxer</name><uri>http://www.blogger.com/profile/10686250929700362565</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
