<?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-22620103</id><updated>2012-02-10T18:21:15.649+02:00</updated><category term='motif'/><category term='scripting'/><category term='vs'/><category term='2.5'/><category term='XSI'/><category term='speed'/><category term='2.58'/><category term='java'/><category term='gyes'/><category term='3d'/><category term='material'/><category term='programming'/><category term='random'/><category term='graphics'/><category term='blender'/><category term='christmas'/><category term='music'/><category term='vriareon'/><category term='language'/><category term='benchmark'/><category term='midi'/><category term='vst'/><category term='c'/><category term='blofeld'/><category term='Shark'/><category term='waldorf'/><category term='python'/><category term='texture'/><category term='2.57'/><category term='extension'/><category term='synthesizer'/><category term='bpy'/><category term='pygame'/><category term='piano'/><category term='jython'/><category term='Zbrush'/><category term='violin'/><category term='snow'/><category term='c++'/><category term='hardware'/><category term='generator'/><title type='text'>The Vault</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-7224299721129219311</id><published>2011-11-04T11:27:00.000+02:00</published><updated>2011-11-04T11:32:03.281+02:00</updated><title type='text'>The end of Gyes</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;&lt;span style="font-size: x-large;"&gt;-----------------------&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;NEW FEATURES&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;-----------------------&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All things come to an end eventually so it comes to no surprise that Gyes ends here. The initial goal of Gyes was that would be an addon that could include all my future blender script , but I can see now this is not the best idea. Both RMG and RTG work great under the roof of gyes, but they are only 2 scripts and that keeps the GUI easily and manageable.&lt;br /&gt;&lt;br /&gt;However Gyes did not end silently, it ended with a BANG!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first thing added were a feature to import all material to the history tool that match a specific text filter even partial, making it dead simple to randomly assigne tons of already available material.&lt;br /&gt;&lt;br /&gt;Another big addition is the fact that now history is multi-history , the history now has 12 slots each slot is a history or a group of material each material taking one index. Material of course include node materials, texture and node textures.&amp;nbsp; This means that history is ideal if you want to organise your materials into material groups and because of the filter text import you can import all that material even if there thousands of them in mere seconds.&lt;br /&gt;&lt;br /&gt;The final BANG and the biggest of all, is the fact that I finally sit down to create a wiki for GYES. I tried to document through videos but it turned out to be a really bad idea, because I keep improving features and that meant that videos had to be redone&amp;nbsp; and that meant also loads of free time lost. Lesson learned from now on youtube video only for demonstration purposes.&lt;br /&gt;&lt;br /&gt;This is where the wiki is located&lt;br /&gt;&lt;br /&gt;http://wiki.blender.org/index.php/Extensions:2.5/Py/Scripts/System/Gyes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;----------------------- &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;LOOKING BACK &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;----------------------- &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To be honest when I started this project I did not intend to be 1288 lines of code , with a tons of features inside. I did not intent to randomize textures . I did not intend to offer full customisation on the randomization. I did not intent to invent a new tool for blender to store data that will be easier to organise than conventional material lists. I did not intend that tool to be saved with the blend file. And of course I did not intend to import materials based on text filters &lt;img alt="" border="0" class="inlineimg" src="http://blenderartists.org/forum/images/smilies/sago/wink.gif" title="Wink" /&gt; &lt;br /&gt;&lt;br /&gt;I did not intend many things. I was a noob , did not know what the hell I was doing , I was just toying with an idea.&lt;br /&gt;&lt;br /&gt;But I managed to do all those things, and loads more that are documented in the wiki. I certainly did not imagine that my first attemp with python and blender addons would be included in the contrib. It was so fun that I could not stop. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The thing is that for me I consider this project to have come far away, I dont want to say that I am a super coder , far from it (though I like to use the term "python wizard" for fun) , I am still very noob. But if you look into the history of blender from version 1 to version 2.6 , there have been some texture and material randomisers but nothing that offered the level of control of GYES.  Probably I could go even further, but I dont try to prove how great coder I am, cause I am not . I prefer making addons that people really need and use. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;------------------------------------ &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;AND LOOKING FORWARD&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;------------------------------------&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I like to inform people here that I decided to drop the idea of material librarian that can show thumbnails. I had the oportunity at last to look into cycles and draw 3 conclusions &lt;br /&gt;&lt;br /&gt;1) cycles is already excellent way to preview materials&lt;br /&gt;2) cycles is the future of blender&lt;br /&gt;3) cycles is not yet matured enough to develop on it an addon&lt;br /&gt;&lt;br /&gt;So my next project will be porting lithosphere and updating ANT , or to be more precise I intend to create a Ecosystem builder, starting with a terrain generator. Already speak with developer of lithosphere and I have porting some of the code, it will take some time till I release the new addon but I can promise you it will worth the wait. &lt;br /&gt;&lt;br /&gt;By ecosystem I mean that you wont be able just to build terrain , but also river, trees, rock , cities , asteroids, planets and even solar systems &lt;img alt="" border="0" class="inlineimg" src="http://blenderartists.org/forum/images/smilies/sago/wink.gif" title="Wink" /&gt;&lt;br /&gt;&lt;br /&gt;Its an ambitious project that probably will take me years to complete and it will bridge many addons like Plant generators, tree generators, littleneo's city generators, rock generator and any future addon that comes out that is related to my project. &lt;br /&gt;&lt;br /&gt;As "taste for things to come"  I link screenshots and videos from lithosphere, they are going to impress you &lt;img alt="" border="0" class="inlineimg" src="http://blenderartists.org/forum/images/smilies/sago/wink.gif" title="Wink" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lithosphere.codeflow.org/screenshots.html" target="_blank"&gt;http://lithosphere.codeflow.org/screenshots.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Have fun and see you soon &lt;img alt="" border="0" class="inlineimg" src="http://blenderartists.org/forum/images/smilies/sago/wink.gif" title="Wink" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-7224299721129219311?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/7224299721129219311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=7224299721129219311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/7224299721129219311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/7224299721129219311'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2011/11/end-of-gyes.html' title='The end of Gyes'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-7891488129762203663</id><published>2011-10-02T18:13:00.004+03:00</published><updated>2011-10-03T17:26:13.806+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='texture'/><category scheme='http://www.blogger.com/atom/ns#' term='gyes'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='generator'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><title type='text'>Gyes : RTG (Random Texture Generator)</title><content type='html'>&lt;span class="Apple-style-span" style="  color: rgb(51, 51, 51); font-family:Verdana, Arial, Tahoma, Calibri, Geneva, sans-serif;font-size:13px;"  &gt;&lt;h2 class="title icon" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 0px; font-size: 14px; font-weight: normal; display: block; font: normal normal bold 14px/normal Tahoma, Calibri, Verdana, Geneva, sans-serif; "&gt;&lt;br /&gt;&lt;/h2&gt;&lt;div class="content" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;div id="post_message_1959589" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;blockquote class="postcontent restore " style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "&gt;&lt;img src="http://i47.photobucket.com/albums/f180/TheKilon/Screenshot2011-10-02at40720PM.png" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 800px; " border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; color: rgb(255, 255, 255);font-family:arial;font-size:100%;"  &gt;When I started my Random Material Generator ( &lt;a href="http://blenderartists.org/forum/showthread.php?218110-Gyes-RMG-%28-Random-Material-Generator-" target="_blank" style="text-decoration: none;"&gt;http://blenderartists.org/forum/show...ial-Generator-&lt;/a&gt;) ) I knew that no material can look really interesting without some kind of use of textures. The reason is obvious a texture not only adds detail on a material but also brakes its uniformity making it much more interesting and natural. So it was always my intention to implement some kind of texture randomisation inside my material randomisation. However the issue was that RMG grow bigger , more complex and much more powerful I did not want to cram the interface so I decided to implement texture randomisation as a separate tool always from inside GYES.&lt;br /&gt;&lt;br /&gt;The big diffirence between RMG and RTG is that the gui in RTG is adaptive to the texture type choosen. That means that GUI changes each time a diffirent type of texture is chosen making sure that only the necessary parameters are displayed keeping the GUI as compact as possible.&lt;br /&gt;&lt;br /&gt;The tool is still a WIP but I have finished implementation , for texture types "BLEND", "NOISE", "CLOUDS" ,"DISTORTED_NOISE" and create my own type called "RANDOM" that chooses randomly one of the above 4 texture types and of course it randomises it too.&lt;br /&gt;&lt;br /&gt;As in RMG simple mode give you the ability to choose which parameters you want to randomise and percentage mode gives you the ability to choose how much those parameters will be randomised . General percentage is used in case any of the parameter percentage randomisation is 0% , it makes it easy to have the same percentage for any amount of parameters. Percentage means the following : 100% is the full range of available values for the specific parameter, any percentage is divided in half, half going bellow the current value and half going above , so for example 50% of parameter that its minimum value is 0 and its maximum 6 and current value 3 , it will give a random value value in the range of 1.5 to 4.5.&lt;br /&gt;&lt;br /&gt;Many things are yet to implemented till this is done, but its no less a released script that should be very useful for you. Bare in mind there is an error each time you change the type of the texture from inside RTG gui, I dont know why this happens but I will speak with blender devs to see if its a blender bug or a mistake from my part. This bug has not crashed my blender or stoped the script from working properly , but caution should be exercised and always save your work before trying this script.&lt;br /&gt;&lt;br /&gt;RTG is part of my GYES addon so chances are if you got the latest version of RMG you already have RTG as well. Dont hesitate to ask any questions and here is the link of the download.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://github.com/kilon/Gyes" target="_blank" style="text-decoration: none;"&gt;https://github.com/kilon/Gyes&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-7891488129762203663?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/7891488129762203663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=7891488129762203663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/7891488129762203663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/7891488129762203663'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2011/10/gyes-rtg-random-texture-generator.html' title='Gyes : RTG (Random Texture Generator)'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-5219347212205780772</id><published>2011-07-21T16:37:00.003+03:00</published><updated>2011-07-21T16:40:06.767+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bpy'/><category scheme='http://www.blogger.com/atom/ns#' term='gyes'/><category scheme='http://www.blogger.com/atom/ns#' term='2.5'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='material'/><category scheme='http://www.blogger.com/atom/ns#' term='generator'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><title type='text'>GYES -- Random Material Generator (Percentage Randomisation)</title><content type='html'>&lt;div style="text-align: justify;"&gt;I added percentage randomisation. Now you can control how much random  your material is . You can randomise existing material as much you want.  GUI update, click on Mode and it will navigate through several pages of  the GUI. "Percentage" page will give you even more option to apply  specific percentage randomisation to specific parameters, all other  parameter not covered by the specific percentages are covered by the  general percentage. When a specific percentage is zero, the general  percentage is used instead for that area. When a specific percentage is  not zero then general percentage is ignored and specific percentage is  used instead. If you dont want to randomise that area at all, in  "simple" page use the corresponding button to completely disable that  area , the percentage slider will also be disable in the "percentage"  page.&lt;br /&gt;&lt;br /&gt;Percentage randomisation means that the parameter is randomised inside a  range of percentage of the full range of the value. For example a 50%  randomisation of the specular intensity means the following :&lt;br /&gt;&lt;br /&gt;specular intensity start from 0 and end 1 , 1 being the maximum value ,  50% of 1 is 0.5 . If your existing specular intensity value is 0.3 then  randomisation will range from 0.05 to 0.55 , which mean it can be any  value that exists in this range which is a diffirence of 0.5 or 50% of  full range. Of course randomisation takes always the current value as  starting point so the next randomisation will use the current randomised  value.  Randomisation is always 50% of the specific percentage bellow  the current value and 50% above .  If the percentage exceeed minimum and  maximum values of the full range, then it will default to minimum and  maximum accordingly.&lt;br /&gt;&lt;br /&gt;There is a "help" gui page that offers a summary help for quick reminder  of the functionality. "Template" page is empty as templates are yet to  be implemented. "Simple" page has the old enable disable checkboxes  which I have replaced them as enable / disable switch buttons (enable /  disable randomisation for a specific group of parameters ) along with a  general percentage that for convenience also exists in percentage page.&lt;br /&gt;&lt;br /&gt;Did 3 minor updates, one fixes a nasty bug that did not allow the  script to load on startup as addon and another one where for some reason  the register_module functions fails in future builds from  graphicall,org after the official 2.58a from blender.org . I have  replaced it with register_class() for each class i use so it should work  now and for every future build.&lt;br /&gt;&lt;br /&gt;However both problems were critical to the execution of the script so I had to bump the thread.&lt;br /&gt;&lt;br /&gt;After a complaint I changed the "mode" button , to a list box to make it  more visible and easier to use , blender developers need to fix the  menu button (prop_enum_menu()) to make it more visible.&lt;br /&gt;&lt;br /&gt;I also reorganised the file structure. Now everything is located in a  folder called "gyes" just copy paste the entire folder to your addon  folder and you will be fine. Inside gyes/doc you will find gyes.pdf  which is the official Gyes Manual. I no longer support wiki as its  difficult to work on both (Wiki and Pdf) at the same time , that means  that wiki will no longer be updated with latest features. The reason is  no longer called "gyes random material generator" is because I decided  instead of creating several scripts that do diffirent things, to unite  all of them in one add on  script that will make installation and  activation alot easier, so that means that gyes will be alot more than  just a random material generator in the future. I plan to finish a new  script every year.  &lt;br /&gt;&lt;br /&gt;The download link has not changed, remember you can use the same link as  it always has the very latest update and I am constantly uploading new  updates everyday that I dont report here as often cause I dont want to  bump this thread unnecessarily.&lt;br /&gt;&lt;br /&gt;Here is the download link =&amp;gt; &lt;a href="https://github.com/kilon/Gyes" target="_blank"&gt;https://github.com/kilon/Gyes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is a screenshot of the new mode button&lt;br /&gt;&lt;br /&gt;Simple mode :&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img src="http://i47.photobucket.com/albums/f180/TheKilon/newmodebutton.png" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Simple Percentage Mode :&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i47.photobucket.com/albums/f180/TheKilon/simplepercentage.png" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Help mode :&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i47.photobucket.com/albums/f180/TheKilon/helpmode.png" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;!! Important Note !!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;With the as always helpful guidence of ideasman from #blenderpython I  was able to download the source and build the latest blender release.  From now on this script will support the latest build release of blender  and not just the official release from blender org. So it should work  for anyone who wants to use the latest build from graphicall.org . I  will keep updating my source and rebuilding blender to satisfy this  requirement and will upload the builds to graphicall.org that will come  included with my script.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-5219347212205780772?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/5219347212205780772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=5219347212205780772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/5219347212205780772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/5219347212205780772'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2011/07/gyes-random-material-generator.html' title='GYES -- Random Material Generator (Percentage Randomisation)'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-767313475926612701</id><published>2011-06-24T14:37:00.002+03:00</published><updated>2011-06-24T15:01:19.810+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2.58'/><category scheme='http://www.blogger.com/atom/ns#' term='2.57'/><category scheme='http://www.blogger.com/atom/ns#' term='2.5'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='material'/><category scheme='http://www.blogger.com/atom/ns#' term='generator'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><title type='text'>Video Tutorial Random Material Generator - Gyes - Introduction</title><content type='html'>Just uploaded a tutorial about my Random Material Generator - Gyes which  I described in my previous post, hope it clears up any confusion.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/hEoj-i8iUqs?fs=1" allowfullscreen="" frameborder="0" height="295" width="480"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-767313475926612701?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/767313475926612701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=767313475926612701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/767313475926612701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/767313475926612701'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2011/06/video-tutorial-random-material.html' title='Video Tutorial Random Material Generator - Gyes - Introduction'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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/hEoj-i8iUqs/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22620103.post-5337590046159338020</id><published>2011-06-05T00:26:00.006+03:00</published><updated>2011-06-05T00:55:23.594+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2.5'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='material'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Gyes (Random Material Generator) for Blender 2.5</title><content type='html'>There is little doubt that we live in the golden age of computers, with massive power, flexibility , adaptability. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I look back to my old rusty Amstrad CPC 6128 (1988) with its green monitor, its 6mhz cpu. Yeah you heard correctly not 6 ghz , 6 mhz. Thats 3000 times weaker than a Core 2 Duo at 3 ghz.  3000 times, wow , imagine that. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And of course with hardware comes software evolution, as its software that pushes hardware up in the food chain. Yet , I am always suprised to see how more difficult things have become. With my Amstrad it was a question of inserting the disk , typing the run command and i was set to go, nowdays we got just about a million things to remember to get our computers running. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This applies with making 3d graphics as well, extremely powerful but with a gazillion of options enough to make your head explode to a gazillion pieces. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I thought instead of being one of those guys bringing another new feature why not just make things easier for the tormented user. And thus i started a Blender script. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Gyes is intended to be a collection of scripts not just one, but for the time being the first one is the random material generator. It does what it says on the box, generates random materials. Of course the goal here is to give a meaning to randomisation cause no user likes completely random stuff. Every user has a goal, a dream , a desire. And gyes tries to put that into the equation. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I released earlier a massive update that started giving options to the user to limit randomisation in the way that user defines.  As always simplicity is the goal here. Remember when your mother told you that "there is no magic wand" and you have to do things the hard way. Gyes goes against this rule. If the user wants to make a random "oak tree" material , or maybe the surface of the planet , he does need to understand every single detail on the process of making such materials, all he needs is a magic button and maybe some options. Gyes does not care about the "how" or the "why" it is its role to figure those out, it cares only for the "what". What the user wants ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I wont explain every single detail about this script you can find loads of information together with a link for download in the thread i started in blenderartists. Click the following link.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://blenderartists.org/forum/showthread.php?218110-Gyes-(Random-Material-Generator)"&gt;http://blenderartists.org/forum/showthread.php?218110-Gyes-(Random-Material-Generator)&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now many people have asked what "Gyes" means. Well if you knew a couple of things about me, then you would know I am Greek and that I love ancient greek mythology. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Gyes was one of the three brother , a mythical deity , extremely powerful, capable of even slaying gods and titans. He and his brothers united with greek gods in the epic battle of the TITAN WAR , where greek gods and titans among other deities batlle in a huge civil war. Those 3 brother were called "ecatocheires" , which in greek means , the one with 100 hands. Because as you might have guessed they had 100 hands. Latter the 3 brother were assigned as keepers of the TITANS when the titans were imprisoned in Tarturus , a prison of the underworld where none , no man , god or any extremely powerful creature could go in or out. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For me 100 hands has the the meaning for 100 scripts , that will make life easier for the Blender user and even 2d artists . I know 100 sounds alot , but not all scripts will be as ambitious as random material generator. Sometimes even simple ideas can help alot. Maybe Gyes will be never finished and frankly I dont care. Its a great excuse to code in python, I am having loads of fun with it and I will keep doing it slowly but steadly. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I hope you enjoy using the script as much I enjoyed coding it. Its far from finished but its already very useful.   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-5337590046159338020?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/5337590046159338020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=5337590046159338020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/5337590046159338020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/5337590046159338020'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2011/06/gyes-random-material-generator-for.html' title='Gyes (Random Material Generator) for Blender 2.5'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-443840966647146136</id><published>2010-08-30T16:02:00.004+03:00</published><updated>2010-08-30T16:26:06.345+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synthesizer'/><category scheme='http://www.blogger.com/atom/ns#' term='pygame'/><category scheme='http://www.blogger.com/atom/ns#' term='vriareon'/><category scheme='http://www.blogger.com/atom/ns#' term='midi'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Vriareon (first Draft)</title><content type='html'>Well , I have been coding for fun for more than 20 years now. But I never made any serious app, only messing around, enough to learn the programming languages I wanted.  Gwbasic, dbase, clipper, c++, assembly, delphi, java , c# and now python.&lt;br /&gt;&lt;br /&gt;So enter Vriareon. Basically its an app for transmiting multipoint envelopes to  hardware synthesizers. If you did not understand what I just said, well, its normal if you dont use a synthesizer , software or hardware.&lt;br /&gt;&lt;br /&gt;Bottom line is that most synths out there dont ever go being simple ADSR , which is a 3 point envelope , mine will go as much as you want.&lt;br /&gt;&lt;br /&gt;Basically an envelops is nothing more than a graph that says to a parameter when to increase and when to decrease automatically. In most cases an envelope is made of  no more than 4 points (A,D,S,R for Attack, Decay, Sustain, Release) . Attack is triggerd when a note is played, decays is after the attack, sustain when a not is keep pressed down, and release when a note is released. However in software synths like Absynth, Zebra,  Alchemy this restriction is droped, and the user can make envlopes using an almost unlimited amount of points, thus creating incredible deep and complex sounds.&lt;br /&gt;&lt;br /&gt;Vriareon uses midi protocol, either CC or NRPN to transmit midi data that makes up the envelope.&lt;br /&gt;&lt;br /&gt;Currently the app, implements simple functionality. It support, add , move and delete of points, together with zoom in , zoom out and pan.&lt;br /&gt;&lt;br /&gt;This is a video showing the app in action.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-91dbfea82c5ede29" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v3.nonxt5.googlevideo.com/videoplayback?id%3D91dbfea82c5ede29%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331080745%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D7AB7AC38D1E893F75C949433B4393A8A949144DB.B99BBFE04B9BA4B1E5074EC3B0945E2DE6F3F90%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D91dbfea82c5ede29%26offsetms%3D5000%26itag%3Dw160%26sigh%3DtpQwJGxNee9Pm3_OmgjE9UrTuag&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v3.nonxt5.googlevideo.com/videoplayback?id%3D91dbfea82c5ede29%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331080745%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D7AB7AC38D1E893F75C949433B4393A8A949144DB.B99BBFE04B9BA4B1E5074EC3B0945E2DE6F3F90%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D91dbfea82c5ede29%26offsetms%3D5000%26itag%3Dw160%26sigh%3DtpQwJGxNee9Pm3_OmgjE9UrTuag&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The app of course is far from finished, but I am in no hurry either. I want to take my time and make this into a very useful and very impressive app. The ultimate goals is to impement more features than multipoint envelops, but for the time being this is the only goal. Gui is still very crude and it may not seem impressive, but most the basic architecture of the app is almost finished. I have to , as a next step, transmit the midi to the the hardware synth. But its the Gui stuff that will take me long cause I want to build a very felxible gui from zero.&lt;br /&gt;&lt;br /&gt;I use python and the python library Pygame, for gui and midi, as pygame has included the pyportmidi library which is very easy and efficient into sending and receiving midi signals.&lt;br /&gt;&lt;br /&gt;I will keep you posted with monthly updates of my pogress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-443840966647146136?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=91dbfea82c5ede29&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/443840966647146136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=443840966647146136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/443840966647146136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/443840966647146136'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2010/08/vriareon-first-draft.html' title='Vriareon (first Draft)'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-6056109714978291870</id><published>2010-02-06T15:03:00.006+02:00</published><updated>2010-02-06T16:08:25.346+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='extension'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Cython , probably the best programming language in the world.</title><content type='html'>&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;1. Introduction &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I guess you have heard all those people saying that there is no such thing as the best programming language in the world, only the right tool for the job. And its true , each language has its advantages and disadvantages.&lt;br /&gt;&lt;br /&gt;But Cython , makes me make an exception to this rule.&lt;br /&gt;&lt;br /&gt;Why ?&lt;br /&gt;&lt;br /&gt;Well because it combines the best a programming language has to offer leaving all the negatives out.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;2. What is Cython ?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So what is Cython ?&lt;br /&gt;&lt;br /&gt;Well Cython is Python. It will accept any Python code , even Python 3 , subject to some limitation because it is an ongoing project .&lt;br /&gt;&lt;br /&gt;However Cython is more than python. The first thing making Cython different is that it converts python code to C code. This code can be compiled with any C compliant compiler and produce either an executable or dynamic linked library (Known as DLL on windows) .&lt;br /&gt;&lt;br /&gt;ok so whats the big deal ?&lt;br /&gt;&lt;br /&gt;Well this alone offers double the speed for python which is fine but not very impressive if you take a look to tools like &lt;a href="http://docs.python.org/library/ctypes.html"&gt;ctypes&lt;/a&gt; an &lt;a href="http://psyco.sourceforge.net/introduction.html"&gt;psyco&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The next cool thing is that it allows you to mix C code with python code, so if you happen to code in C it can be the perfect bridge between C and Python. Again fine but it can be done with other tools as well.&lt;br /&gt;&lt;br /&gt;However what makes what makes Cython REALLY interesting is that it expands the Python syntax. It expands it in such way to implement C features. One of these features is statically typed variables.&lt;br /&gt;&lt;br /&gt;The key word here is "expands" not "replaces" , which means that you can use dynamically typed variables with &lt;a href="http://docs.cython.org/src/quickstart/cythonize.html"&gt;statically typed variables&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But why we need statically typed variables in python ?&lt;br /&gt;&lt;br /&gt;Well the answer to this is speed. To put it simply Cython code taking advantage of statically typed variables, to increase speed from 2 to 1000 times. Yes you heard correctly there are benchmarks that show Cython run 1000 times faster than Python . &lt;a href="http://aroberge.blogspot.com/2010/01/python-cython-faster-than-c.html"&gt;Here a benchmark that sho ws Cython being faster than C !!!.&lt;/a&gt;  And if you think that this requires any major recoding , then think again, it only requires putting the name of the type infront of your variable which is nothing more than on or two words.&lt;br /&gt;&lt;br /&gt;Remember that Cython is Python, which means that all you write is 99% python you just add a couple of words here and there with no major editing.&lt;br /&gt;&lt;br /&gt;Even the compilation process is automatic taking advantage of the onboard python distribution tools, requiring the usual setup.py script. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Cython Advantages &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1) 100% Python syntax, making dead easy to use and code with. You can use any existing python code with no change to your code.&lt;br /&gt;&lt;br /&gt;2) C speed, cause it supports many of the features of C language making it extremely faster alot faster than psyco and ctypes.There is some overhead because of the conversion but it usually quite small from 40% to 100%. However there have been benchmarks that have show Cython outperform C by 40% which is is not unusual. Usually for statically typed variable except a boost in speed from 50 to 1000 times compared to the same python code&lt;br /&gt;&lt;br /&gt;3) you can use any C code any time, just import it and it becomes accessible to your Cython code. Excellent for wrapping C libraries&lt;br /&gt;&lt;br /&gt;4) Cython now supports and C++.&lt;br /&gt;&lt;br /&gt;5) You never need to mess with C code all happens from inside python syntax.&lt;br /&gt;&lt;br /&gt;6) Converts the python code to C code. Well I do not know how useful that is as a few lines of python code turns to thousnads of lines of c code but for those who want to edit code to kingdom come it will be useful. Again I remind you that Cython does not force you to write any C code to take enjoy its advantages.&lt;br /&gt;&lt;br /&gt;7) Cython can be compiled to dynamic link libraries that can be imported and used like any python library out there.&lt;br /&gt;&lt;br /&gt;8) Has the support of Google , so it is actively developed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Disadvantages&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1) Cython is Python, meaning it will still require python installation and will run from inside a python VM as any python app. I dont know whether this is a disadvantage per se but for those that think that what to consider Cython as a complete replacement to C , must take this into consideration.&lt;br /&gt;&lt;br /&gt;2) Its does not offer automatic wrapping for C libaries like Swig , so if you want to wrap Alot of C functions/ Libraries , then Cython is not the best tool for that job , but it may provide support for this in the future. &lt;div&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Sum Up&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cython offers C speed from inside python with a tiny amount of recoding, it can be uses . Bare in mind that it offers alot of C features not mentioned here so the best you can do is visit the website and read the excellent documentation .&lt;br /&gt;&lt;br /&gt;Here is the Cython website.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://cython.org/"&gt;http://cython.org/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Links&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;Links offering cython benchmarks and additional information&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://prabhuramachandran.blogspot.com/2008/09/python-vs-cython-vs-d-pyd-vs-c-swig.html"&gt;http://prabhuramachandran.blogspot.com/2008/09/python-vs-cython-vs-d-pyd-vs-c-swig.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.behnel.de/cython200910/talk.html"&gt;http://www.behnel.de/cython200910/talk.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://behnel.de/cgi-bin/weblog_basic/index.php?cat=11"&gt;http://behnel.de/cgi-bin/weblog_basic/index.php?cat=11&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://carlo-hamalainen.net/blog/?p=16"&gt;http://carlo-hamalainen.net/blog/?p=16&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This one is a benchmark that show an almost 1000 times speed up over python but it uses pyrex ,bare in mind that Cython is based on pyrex so the same speed should apply. Also note the C speed it 2.15 seconds while Pyrex is 2.5 that is even less than 40% diference.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.scipy.org/PerformancePython"&gt;http://www.scipy.org/PerformancePython&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;a href="http://cython.org/" style="text-decoration: none;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-6056109714978291870?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://cython.org/' title='Cython , probably the best programming language in the world.'/><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/6056109714978291870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=6056109714978291870' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/6056109714978291870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/6056109714978291870'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2010/02/cython-probably-best-programming.html' title='Cython , probably the best programming language in the world.'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22620103.post-7964724996487139942</id><published>2009-11-23T23:54:00.002+02:00</published><updated>2009-11-24T09:12:36.498+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Java vs Python</title><content type='html'>&lt;p&gt;There some things that made me conclude that Java is easier than python &lt;/p&gt; &lt;p&gt;1) Good documentation. Yes python has a very simple syntax , while java is more verbose but nothing can make thing any easier than good documentation, especially with third party libraries. Many of them actually require their users to read C++ documentation that defeats the purpose of using python in the first place. &lt;/p&gt; &lt;p&gt;2) Speed. Python is very slow, and even this does not show very often only for CPU intense tasks , that does not mean that python does not consume too much CPU. Again this might not be the problem for non intense CPU stuff, but because I working with midi and audio it makes my life harder.&lt;/p&gt; &lt;p&gt;3) Lack of a good IDE, IDEs is an essential part of RAD and none of the IDEs that support python works in a way that is hassle free. Especially in the GUI design department these IDEs leave alot to be desired. &lt;/p&gt; &lt;p&gt;I love the python syntax, it is surely the best of the best, that is why I have jython close at hand , but overall, at least for me what killed python is bad documentation and fragmented cross platform availability of libraries ( I have even experienced severe problems into making python work on macos). &lt;/p&gt; &lt;p&gt;I dont see python conquering the universe, the best language is yet to be invented. Its a great language however and alot of fun to use.&lt;/p&gt;&lt;p&gt;I do understand that the 3 above may not apply in all cases. Some people do not use IDEs, their python libraries have very good documentation, and do not real need speed.&lt;/p&gt; &lt;p&gt;My issue with python are quite old, but it was now that I decided to make an app that via MIDI protocol will control external hardware synthesizers ( I make music as well -&gt; www.soundclick.com/kilon ) . Problem one , finding the right GUI. Qt is not free, GTK need X11 to work in mac, and Wxpython has non existent official documentation. Problem two, finding the right MIDI library, again the documentation is non existent.&lt;/p&gt; &lt;p&gt;Also I did not like the pure python ides or the IDEs that support python via plugin. I ended up that I would had to use several programm to do what I want and that is not good.&lt;/p&gt; &lt;p&gt;Java already solved the above problems.&lt;/p&gt; &lt;p&gt;Another motivation is jython. Java developers hate it beacause it inherits the slowness of python. Python developers hate it because it does nto allow of the use of cpython libraries unless they are already implemented in jython and thus is tied to java library and thus is not really pythonic. And other people love it ,like me, because it unites easy python syntac with the power and popularity of java libraries.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-7964724996487139942?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/7964724996487139942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=7964724996487139942' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/7964724996487139942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/7964724996487139942'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2009/11/java-vs-python.html' title='Java vs Python'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-7443740352483971378</id><published>2009-03-14T19:18:00.000+02:00</published><updated>2009-03-14T19:19:04.684+02:00</updated><title type='text'>The Red Dragon (part 4)</title><content type='html'>Here is a viewport real time rendering with no aa and light. AA destroys my muscle tone, still too noobish with it.&lt;br /&gt;  &lt;img src="http://i47.photobucket.com/albums/f180/TheKilon/dragonviewport.jpg" alt="" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-7443740352483971378?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/7443740352483971378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=7443740352483971378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/7443740352483971378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/7443740352483971378'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2009/03/red-dragon-part-4.html' title='The Red Dragon (part 4)'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-5293532360426178891</id><published>2009-03-14T19:17:00.000+02:00</published><updated>2009-03-14T19:18:12.776+02:00</updated><title type='text'>The Red Dragon (part 3)</title><content type='html'>Another update, the 4 feet are almost done , created several muscle tones for the torso as well, fined tuned the head abit , have not touched yet wings, neck and tail. Replaced the light , included AA and changed background for easier viewing.&lt;br /&gt;&lt;br /&gt; I am open to any suggestions. Enjoy !&lt;br /&gt;&lt;br /&gt; Next step&lt;br /&gt;&lt;br /&gt; * Finish minor details of feet&lt;br /&gt; * Work with wings , neck and tail&lt;br /&gt;&lt;br /&gt; &lt;img src="http://i47.photobucket.com/albums/f180/TheKilon/dragonAA.jpg" alt="" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-5293532360426178891?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/5293532360426178891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=5293532360426178891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/5293532360426178891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/5293532360426178891'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2009/03/red-dragon-part-3.html' title='The Red Dragon (part 3)'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-8865326206499226345</id><published>2009-02-16T00:20:00.000+02:00</published><updated>2009-02-16T00:21:30.521+02:00</updated><title type='text'>The red dragon (part 2)</title><content type='html'>a new update. Nothing is finished here, I love to jump around and give detail or change general shapes until satisfied.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i47.photobucket.com/albums/f180/TheKilon/Picture3-1.png" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i47.photobucket.com/albums/f180/TheKilon/Picture4-1.png" alt="" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-8865326206499226345?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/8865326206499226345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=8865326206499226345' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/8865326206499226345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/8865326206499226345'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2009/02/red-dragon-part-2.html' title='The red dragon (part 2)'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-6019904350009330333</id><published>2009-02-12T10:08:00.002+02:00</published><updated>2009-02-12T10:11:16.225+02:00</updated><title type='text'>The Red Dragon</title><content type='html'>Title                          : The Red Dragon&lt;br /&gt;Tools Used                :   Blender  2.48a&lt;br /&gt;Time Spent                : 1 hour 10 m&lt;br /&gt;Total Time Spent        : 1 hour 10 m&lt;br /&gt;Purpose : To build a red dragon jumping out of a cup, to be used as a logo for the programming language JYTHON (a unification of JAVA and PYTHON)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i47.photobucket.com/albums/f180/TheKilon/dragonstep1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 800px; height: 640px;" src="http://i47.photobucket.com/albums/f180/TheKilon/dragonstep1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i47.photobucket.com/albums/f180/TheKilon/Dragonview2step1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 800px; height: 640px;" src="http://i47.photobucket.com/albums/f180/TheKilon/Dragonview2step1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-6019904350009330333?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/6019904350009330333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=6019904350009330333' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/6019904350009330333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/6019904350009330333'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2009/02/red-dragon.html' title='The Red Dragon'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22620103.post-7154036765415746539</id><published>2009-01-06T21:56:00.006+02:00</published><updated>2009-11-30T10:42:57.317+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='speed'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='vs'/><category scheme='http://www.blogger.com/atom/ns#' term='benchmark'/><title type='text'>Jython Speed vs Java</title><content type='html'>&lt;span class="Apple-style-span" style=";font-family:Verdana;font-size:100%;"  &gt;I have created a small benchmark , to test the speed of Jython when calling swing components and JAVA2D methods. I was aiming to 5x times slower speed in JYTHON but JYTHON proved me very wrong. IT was only 3 times slower than JAVA.&lt;br /&gt;&lt;br /&gt;The benchmark was not only for speed reasons but also a way to learn Jython .&lt;br /&gt;&lt;br /&gt;I share with you the code of both JAVA and Jython. You may run the test in your computer and share results.&lt;br /&gt;&lt;br /&gt;The app is building a window and draws 1 point lines and then displays a very large button with the amount of nanoseconds it took to execute the program.&lt;br /&gt;&lt;br /&gt;I run the test in a ACER ASPIRE ONE with 1.GHz Pentium Atom Processor, 500 MB RAM, 8 GB SDD HD and WINXP.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:Verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:Verdana;font-size:100%;"  &gt;------------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:Verdana;font-size:100%;"  &gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;JAVA CODE&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:Verdana;font-size:100%;"  &gt;------------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:"Monospaced",monospace; color:#000000; white-space: pre;"&gt;&lt;br /&gt;&lt;span style="color:#969696;"&gt;/*&lt;br /&gt; * To change this template, choose Tools | Templates&lt;br /&gt; * and open the template in the editor.&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;package&lt;/span&gt; speed;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; javax.swing.JFrame;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; javax.swing.JButton;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; java.awt.color.*;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; java.awt.geom.Line2D;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; java.awt.*;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; java.util.Observable;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; javax.swing.JComponent;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; java.util.Observer;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;public&lt;/span&gt; &lt;span style="color:#0000e6;"&gt;class&lt;/span&gt; Central {&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#0000e6;"&gt;public&lt;/span&gt; &lt;span style="color:#0000e6;"&gt;static&lt;/span&gt; &lt;span style="color:#0000e6;"&gt;void&lt;/span&gt; main(String[] args) {&lt;br /&gt;&lt;span style="color:#969696;"&gt;//Toolkit theKit = aWindow.getToolkit();&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#969696;"&gt;//Dimension wndSize = theKit.getScreenSize();&lt;br /&gt;&lt;/span&gt;        &lt;span style="color:#0000e6;"&gt;long&lt;/span&gt; StartTime = System.nanoTime();&lt;br /&gt;        JFrame aWindow = &lt;span style="color:#0000e6;"&gt;new&lt;/span&gt; JFrame(&lt;span style="color:#ce7b00;"&gt;&amp;quot;This is my window&amp;quot;&lt;/span&gt;);&lt;br /&gt;        CentralView view;&lt;br /&gt;        view = &lt;span style="color:#0000e6;"&gt;new&lt;/span&gt; CentralView();&lt;br /&gt;&lt;br /&gt;        aWindow.getContentPane().add(view, BorderLayout.CENTER);&lt;br /&gt;&lt;br /&gt;        aWindow.setBounds(&lt;span style="color:#000000;"&gt;0&lt;/span&gt;, &lt;span style="color:#000000;"&gt;0&lt;/span&gt;, &lt;span style="color:#000000;"&gt;800&lt;/span&gt;, &lt;span style="color:#000000;"&gt;500&lt;/span&gt;);&lt;br /&gt;        aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;        aWindow.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));&lt;br /&gt;        aWindow.getContentPane().setBackground(Color.PINK);&lt;br /&gt;        aWindow.setVisible(&lt;span style="color:#0000e6;"&gt;true&lt;/span&gt;);&lt;br /&gt;        &lt;span style="color:#0000e6;"&gt;long&lt;/span&gt; EndTime = System.nanoTime();&lt;br /&gt;        &lt;span style="color:#0000e6;"&gt;long&lt;/span&gt; TimeExec = EndTime - StartTime;&lt;br /&gt;&lt;br /&gt;        aWindow.getContentPane().add(&lt;span style="color:#0000e6;"&gt;new&lt;/span&gt; JButton(&lt;span style="color:#ce7b00;"&gt;&amp;quot;Time of Excution in nano seconds:&amp;quot;&lt;/span&gt; + TimeExec));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;class&lt;/span&gt; CentralView &lt;span style="color:#0000e6;"&gt;extends&lt;/span&gt; JComponent &lt;span style="color:#0000e6;"&gt;implements&lt;/span&gt; Observer {&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#969696;"&gt;/**&lt;br /&gt;     *&lt;br /&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000e6;"&gt;private&lt;/span&gt; &lt;span style="color:#0000e6;"&gt;static&lt;/span&gt; &lt;span style="color:#0000e6;"&gt;final&lt;/span&gt; &lt;span style="color:#0000e6;"&gt;long&lt;/span&gt; serialVersionUID = &lt;span style="color:#000000;"&gt;1L&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#0000e6;"&gt;public&lt;/span&gt; &lt;span style="color:#0000e6;"&gt;void&lt;/span&gt; paint(Graphics g) {&lt;br /&gt;        Graphics2D g2D = (Graphics2D) g;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#0000e6;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000e6;"&gt;double&lt;/span&gt; x = &lt;span style="color:#000000;"&gt;0&lt;/span&gt;; x &amp;lt; &lt;span style="color:#000000;"&gt;801&lt;/span&gt;; x++) {&lt;br /&gt;            &lt;span style="color:#0000e6;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000e6;"&gt;double&lt;/span&gt; y = &lt;span style="color:#000000;"&gt;0&lt;/span&gt;; y &amp;lt; &lt;span style="color:#000000;"&gt;501&lt;/span&gt;; y++) {&lt;br /&gt;                Line2D.Double l1 = &lt;span style="color:#0000e6;"&gt;new&lt;/span&gt; Line2D.Double(x, y, x, y);&lt;br /&gt;                g2D.setPaint(Color.BLUE);&lt;br /&gt;                g2D.draw(l1);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        g2D.setPaint(Color.RED);&lt;br /&gt;        g2D.draw3DRect(&lt;span style="color:#000000;"&gt;50&lt;/span&gt;, &lt;span style="color:#000000;"&gt;50&lt;/span&gt;, &lt;span style="color:#000000;"&gt;100&lt;/span&gt;, &lt;span style="color:#000000;"&gt;100&lt;/span&gt;, &lt;span style="color:#0000e6;"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;        g2D.drawString(&lt;span style="color:#ce7b00;"&gt;&amp;quot;A Speed Test &amp;quot;&lt;/span&gt;, &lt;span style="color:#000000;"&gt;60&lt;/span&gt;, &lt;span style="color:#000000;"&gt;100&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    &lt;span style="color:#0000e6;"&gt;public&lt;/span&gt; &lt;span style="color:#0000e6;"&gt;void&lt;/span&gt; update(Observable arg0, Object arg1) {&lt;br /&gt;&lt;span style="color:#969696;"&gt;// TODO Auto-generated method stub&lt;br /&gt;&lt;/span&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------- &lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:Verdana;font-size:100%;"  &gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style=";font-family:Verdana;font-size:100%;"  &gt;JYTHON CODE&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style=";font-family:Verdana;font-size:100%;"  &gt;------------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:"Monospaced",monospace; color:#000000; white-space: pre;"&gt;&lt;br /&gt;&lt;span style="color:#969696;"&gt;# This line will import the appropriate swing library for your system (jdk 1.1 or 1.2)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;from&lt;/span&gt; java &lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; awt&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;from&lt;/span&gt; java &lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; lang&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;from&lt;/span&gt; java &lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; util&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;from&lt;/span&gt; javax &lt;span style="color:#0000e6;"&gt;import&lt;/span&gt; swing&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000e6;"&gt;class&lt;/span&gt; CentralView(swing.JComponent, util.Observer):&lt;br /&gt;    &lt;span style="color:#0000e6;"&gt;def&lt;/span&gt; paint(self, g):&lt;br /&gt;        &lt;span style="color:#0000e6;"&gt;for&lt;/span&gt; x &lt;span style="color:#0000e6;"&gt;in&lt;/span&gt; range(&lt;span style="color:#000000;"&gt;0&lt;/span&gt;, &lt;span style="color:#000000;"&gt;800&lt;/span&gt;):&lt;br /&gt;            &lt;span style="color:#0000e6;"&gt;for&lt;/span&gt; y &lt;span style="color:#0000e6;"&gt;in&lt;/span&gt; range(&lt;span style="color:#000000;"&gt;0&lt;/span&gt;, &lt;span style="color:#000000;"&gt;500&lt;/span&gt;):&lt;br /&gt;                l1 = awt.geom.Line2D.Double(x, y, x, y)&lt;br /&gt;                g.draw(l1)&lt;br /&gt;&lt;br /&gt;        g.setPaint(awt.Color.RED)&lt;br /&gt;        g.draw3DRect(&lt;span style="color:#000000;"&gt;50&lt;/span&gt;, &lt;span style="color:#000000;"&gt;50&lt;/span&gt;, &lt;span style="color:#000000;"&gt;100&lt;/span&gt;, &lt;span style="color:#000000;"&gt;100&lt;/span&gt;, &lt;span style="color:#000000;"&gt;1&lt;/span&gt;)&lt;br /&gt;        g.drawString(&lt;span style="color:#ce7b00;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ce7b00;"&gt;a nice square&lt;/span&gt;&lt;span style="color:#ce7b00;"&gt;&amp;quot;&lt;/span&gt;, &lt;span style="color:#000000;"&gt;60&lt;/span&gt;, &lt;span style="color:#000000;"&gt;100&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;StartTime = lang.System.nanoTime()&lt;br /&gt;view = CentralView()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;aWindow = swing.JFrame(&lt;span style="color:#ce7b00;"&gt;'&lt;/span&gt;&lt;span style="color:#ce7b00;"&gt;This is my window &lt;/span&gt;&lt;span style="color:#ce7b00;"&gt;'&lt;/span&gt;)&lt;br /&gt;aWindow.getContentPane().add(view, awt.BorderLayout.CENTER)&lt;br /&gt;aWindow.setBounds(&lt;span style="color:#000000;"&gt;0&lt;/span&gt;, &lt;span style="color:#000000;"&gt;0&lt;/span&gt;, &lt;span style="color:#000000;"&gt;800&lt;/span&gt;, &lt;span style="color:#000000;"&gt;500&lt;/span&gt;)&lt;br /&gt;aWindow.setDefaultCloseOperation(swing.JFrame.EXIT_ON_CLOSE)&lt;br /&gt;aWindow.setCursor(awt.Cursor.getPredefinedCursor(awt.Cursor.CROSSHAIR_CURSOR))&lt;br /&gt;aWindow.getContentPane().add(view)&lt;br /&gt;aWindow.setVisible(&lt;span style="color:#000000;"&gt;1&lt;/span&gt;)&lt;br /&gt;EndTime = lang.System.nanoTime()&lt;br /&gt;TimeExec = EndTime - StartTime&lt;br /&gt;aWindow.getContentPane().add(swing.JButton(&lt;span style="color:#ce7b00;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ce7b00;"&gt;Time of Execution in nano seconds:&lt;/span&gt;&lt;span style="color:#ce7b00;"&gt;&amp;quot;&lt;/span&gt; + str(TimeExec)))&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&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/22620103-7154036765415746539?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/7154036765415746539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=7154036765415746539' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/7154036765415746539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/7154036765415746539'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2009/01/i-have-created-small-benchmark-to-test.html' title='Jython Speed vs Java'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22620103.post-6116327883769659453</id><published>2008-12-31T16:39:00.003+02:00</published><updated>2008-12-31T16:44:18.209+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snow'/><category scheme='http://www.blogger.com/atom/ns#' term='motif'/><category scheme='http://www.blogger.com/atom/ns#' term='piano'/><category scheme='http://www.blogger.com/atom/ns#' term='christmas'/><category scheme='http://www.blogger.com/atom/ns#' term='violin'/><title type='text'>A Christmas Song</title><content type='html'>I wanted to make a Christmas Song about a Child looking at the window early in the morning and watching the snow fall slowly. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is a way for me to wish Merry Christmas and a Happy new year to you and your family. Don't forget to smile , cause life is beautiful even at its worst.   &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The song is called "First Christmas Snow" and it is made solely on a YAMAHA MOTIF ES6. You can listen to it with the player on the right. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-6116327883769659453?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/6116327883769659453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=6116327883769659453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/6116327883769659453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/6116327883769659453'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2008/12/christmas-song.html' title='A Christmas Song'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-1730639039681709609</id><published>2008-12-24T14:30:00.008+02:00</published><updated>2008-12-26T02:16:06.838+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Zbrush'/><category scheme='http://www.blogger.com/atom/ns#' term='XSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Shark'/><title type='text'>XSI-&gt; TheShark -&gt; Unfinished</title><content type='html'>In case you are wondering what happened to my reptilious  shark , it was left ufinished of course. But it turned out well. The reason I did not finished is because i tried to sculpt scales on its body resembling a crocodile but it was a bit difficult. It required a high detail mesh and my computer did not allow  it (only 2 GHz at the time and a low spec graphic card) and that was my excuse for quiting.&lt;br /&gt;&lt;br /&gt;But I managed to sculpt properly the model , so I share it with you now , some people may find it worth their time.&lt;br /&gt;&lt;br /&gt;This is the model , sculpted in Zbrush and rendered in XSI&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i47.photobucket.com/albums/f180/TheKilon/Reptilious_Lion_Shark_V1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 177px;" src="http://i47.photobucket.com/albums/f180/TheKilon/Reptilious_Lion_Shark_V1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and this is the  wireframe&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i47.photobucket.com/albums/f180/TheKilon/Reptilious_Lion_Shark_Wire_V1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 303px; height: 191px;" src="http://i47.photobucket.com/albums/f180/TheKilon/Reptilious_Lion_Shark_Wire_V1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Click the photos for a larger view.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-1730639039681709609?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/1730639039681709609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=1730639039681709609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/1730639039681709609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/1730639039681709609'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2008/12/xsi-theshark-unfinished.html' title='XSI-&gt; TheShark -&gt; Unfinished'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-3114050321357301309</id><published>2008-12-24T12:41:00.003+02:00</published><updated>2008-12-24T12:48:14.010+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='waldorf'/><category scheme='http://www.blogger.com/atom/ns#' term='blofeld'/><category scheme='http://www.blogger.com/atom/ns#' term='vst'/><title type='text'>Blofeld Editor VST with JAVA</title><content type='html'>I have already started making a blofeld editor using the VST framerwork from JAVA with the help of the jVSTwRapper . The editor will probably implement the basic functionality of Waldorf Blofeld synth and will exclude any sysex related features like the arpeggiator and utility parameters which can be unstable in some hosts. Building a very good looking GUI is the purpose as well. But for now a non GUI version is the highest priority which will control alla CC controllable parameters of the Waldorf Blofeld synthesiszer.&lt;br /&gt;&lt;br /&gt;I have already made a first version which can control the cutoff of the first filter but I experience problems with making midi pass thru the editor. As soon as I solve this problem , then the non gui editor will be just a matter of time ;)&lt;br /&gt;&lt;br /&gt;Watch this space for all updates.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-3114050321357301309?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/3114050321357301309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=3114050321357301309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/3114050321357301309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/3114050321357301309'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2008/12/blofeld-editor-vst-with-java.html' title='Blofeld Editor VST with JAVA'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-114026360055916814</id><published>2006-02-18T13:49:00.000+02:00</published><updated>2006-02-18T13:53:20.566+02:00</updated><title type='text'>XSI-&gt;The Shark-&gt;Step Two</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/6244/2303/1600/shark.1.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/6244/2303/400/shark.1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6244/2303/1600/shark.0.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6244/2303/1600/shark.jpg"&gt;&lt;/a&gt;&lt;br /&gt;As I promised i finished the general shape and added fins and tail. Here is the render region of the right side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-114026360055916814?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/114026360055916814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=114026360055916814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/114026360055916814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/114026360055916814'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2006/02/xsi-shark-step-two.html' title='XSI-&gt;The Shark-&gt;Step Two'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-114021802075388150</id><published>2006-02-18T01:12:00.000+02:00</published><updated>2006-02-18T01:13:40.753+02:00</updated><title type='text'>XSI -&gt; The Shark -&gt; Step One</title><content type='html'>I have finished the general shape of the shark and added the fins. I will try to add some pictures tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-114021802075388150?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/114021802075388150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=114021802075388150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/114021802075388150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/114021802075388150'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2006/02/xsi-shark-step-one.html' title='XSI -&gt; The Shark -&gt; Step One'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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-22620103.post-114021677062476038</id><published>2006-02-18T00:51:00.000+02:00</published><updated>2006-02-18T01:11:39.020+02:00</updated><title type='text'>Genesis</title><content type='html'>This is the first post. I will post here my progress with XSI and other hobies...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22620103-114021677062476038?l=kilon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kilon.blogspot.com/feeds/114021677062476038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22620103&amp;postID=114021677062476038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/114021677062476038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22620103/posts/default/114021677062476038'/><link rel='alternate' type='text/html' href='http://kilon.blogspot.com/2006/02/genesis.html' title='Genesis'/><author><name>kilon</name><uri>http://www.blogger.com/profile/09850963377968243298</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>
