<?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-9888308</id><updated>2011-04-21T14:10:43.164-07:00</updated><title type='text'>gcode development</title><subtitle type='html'>gcode is a Linux PC CNC system based on the best of the Soviet experience</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9888308.post-2746294504599067926</id><published>2008-09-19T17:13:00.000-07:00</published><updated>2008-09-19T17:18:49.773-07:00</updated><title type='text'>(Quick) status update</title><content type='html'>There has been no updates for quite a while now, so let's take a look at what's happening.&lt;br /&gt;&lt;br /&gt;In the core functionality of MyNC, not much has changed. It's still a limited version of 5-axis wire EDM. I'm looking forward to implementing support for milling, but that's not at the top of my TODO list, since I've got no real-world application for it in the near future, and, most importantly, no one else interested in it has showed up so far.&lt;br /&gt;&lt;br /&gt;Right now, I'm working on a parser for C++ to become able to write static source code checks. I was surprised to find that there's no decent general-purpose parser out there, so maybe this project has some moment. Writing one is no easy task, it's going to take quite a while. To me, it's like a vacation from MyNC development.&lt;br /&gt;&lt;br /&gt;Just before that, I've upgraded MyNC communication middleware layer (myrelay) to support automatic code generation from IDL. The compiler is called 'relic'. It's different from other IDL compilers in that with myrelay+relic one can have a completely custom wire protocol while still having quite a lot of code generated automatically. And the simplicity, of course. MyConf update is on its way.&lt;br /&gt;&lt;br /&gt;I had to switch several workstations lately, and at some point I've become tired of random problems with setting up development environment for MyNC and stuff. So I've invested some time in preparing a portable development framework. One can simply download it, unpack it, and then get right to work. It's called "Sovereign", the project's page is at http://sgn.sourceforge.net . The description is all there. In short, it just works.&lt;br /&gt;&lt;br /&gt;I have also spent some time playing with GNU Modula-2 compiler to see if the older CNC system could be ported to Linux. And the answer is that yes, it could be ported, but who cares.&lt;br /&gt;&lt;br /&gt;What else... Ah, yes, I've completed my diploma thesis and graduated from the university. So if you have any problems with information security these days, you know the number.&lt;br /&gt;&lt;br /&gt;Some words on linux-rti-pf (home-grown patch for hard real-time in Linux). Two major things happened.&lt;br /&gt;&lt;br /&gt;The first one is that the patch has bit-rotted to the state where porting it to the latest kernel version means an almost complete rewrite. The only major update I did so far (transition from 2.6.5 to 2.6.19) was mostly about rewriting from scratch too, and it took me about two weeks of (hard) work. I expect the next update, if one happens, to require a similar amount of time. The good news is that there's now a bunch of helpful virtualization hooks in the kernel, the bad news is that it looks like any externally maintained patch is going to bit-rot real quick anyway.&lt;br /&gt;&lt;br /&gt;The second one is that I've found that I had no sensible idea of memory barriers at the time I was actively hacking on the patch. This means that in its current form it's not adequate for SMP, and that's just what I experienced while testing it (which included using the -rti kernel for my everyday work). It basically hanged somewhat twice a month on my dual-core machine, and worked just fine with SMP disabled. But now there's no doubt  that I have all the necessary expertise to write a correct patch for SMP (fingers crossed).&lt;br /&gt;&lt;br /&gt;Well, that's it for now. It's not like I'm spending 100% of my spare time on MyNC these days. It's time to get a life after the graduation, you know :)  Good luck, and stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-2746294504599067926?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/2746294504599067926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=2746294504599067926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/2746294504599067926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/2746294504599067926'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2008/09/quick-status-update.html' title='(Quick) status update'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-117228161669993018</id><published>2007-02-23T17:44:00.000-08:00</published><updated>2007-02-23T17:46:56.713-08:00</updated><title type='text'>3D view</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger/1570/740/1600/137970/screen.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/x/blogger/1570/740/320/973480/screen.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-117228161669993018?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/117228161669993018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=117228161669993018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/117228161669993018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/117228161669993018'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2007/02/3d-view.html' title='3D view'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-117158636418087830</id><published>2007-02-15T16:07:00.000-08:00</published><updated>2007-02-15T16:44:52.766-08:00</updated><title type='text'>Current TODO list</title><content type='html'>&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Implement plane switching to support milling (in progress)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;3D view (OpenGL, also in progress)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Move path discretization code into the kernel, support in-program fast feeds, pauses. I deferred this till "later times", and now this seems to be the right decision: the implementation I had in mind before looks flawed to me now.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Support EMC's rs274ngc interpreter (some initial adoption has been done already). This interpreter is a nice option, but in its current form it is not suitable for 4-axis wire EDM, so the current interpreter is not going away.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;Hope to finish this before it gets warm and dry. Then, if all goes well, another real-world testing session will follow, during which probing support is to be added.&lt;br /&gt;&lt;br /&gt;Future plans and thoughts include more compatibility with EMC: become compatible with HAL, and make -mync real-time kernels an option for RTAPI. I've investigated into it recently, and it looks perfectly possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-117158636418087830?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/117158636418087830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=117158636418087830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/117158636418087830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/117158636418087830'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2007/02/current-todo-list.html' title='Current TODO list'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-117064148663312784</id><published>2007-02-04T17:58:00.000-08:00</published><updated>2007-02-04T18:13:20.590-08:00</updated><title type='text'>erDoc</title><content type='html'>Besides passing the final university exams and working on my diploma project, I've almost finished &lt;br /&gt;writing the "erDoc" documentation extractor for MyNC. It is already usable, so I have began to write actual documentation, incrementally adding new features to erDoc as they become relevant. The major ones already implemented are: cross-referencing of types between different libraries, inheritance tracking, tracking of namespaces ('using' keyword honored too). I'm planning to spend some time documenting the code already written. It's better to do it now, before I forget all the details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-117064148663312784?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/117064148663312784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=117064148663312784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/117064148663312784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/117064148663312784'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2007/02/erdoc.html' title='erDoc'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-116933629055958521</id><published>2007-01-20T15:33:00.000-08:00</published><updated>2007-01-20T15:38:10.570-08:00</updated><title type='text'>Docs.</title><content type='html'>I'm working on source-code documentation extractor (codename "erdoc"). A bit of Perl, some XSLT, XML at your taste... The goal is to write some API docs to make mync libraries more useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-116933629055958521?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/116933629055958521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=116933629055958521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116933629055958521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116933629055958521'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2007/01/docs.html' title='Docs.'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-116705865715026523</id><published>2006-12-25T06:33:00.003-08:00</published><updated>2006-12-25T10:32:20.313-08:00</updated><title type='text'>Pf tracing results</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger/1570/740/1600/430038/pf_idle.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/x/blogger/1570/740/320/545412/pf_idle.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger/1570/740/1600/76687/pf_rt.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/x/blogger/1570/740/320/831887/pf_rt.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Pf.gaunlet is now able to make plots of "intervals" and "speed". "An interval" is the count of CPU cycles between two consequent interrupt events. "Speed" is determined as (1 / interval), it is plotted with blue color, while "intervals" are plotted with brown.&lt;br /&gt;&lt;br /&gt;On the first screenshot you can see a plot that was made for all interrupt events in the system. The noise at the left is the result of my system being a samba file server, somebody was downloading a movie at the moment. A bit of idle time follows, and then another download had began according to smbstatus output. Bold crossing lines are the result of local APIC timer and i8253 PIT timer being set for almost the same frequency, with a slight difference due to different clock sources of these timers.&lt;br /&gt;&lt;br /&gt;The second plot is for a real-time interrupt only. I was performing fast manual movements at that time. The plot shows linear speed increasing (constant acceleration). At the top speed (5Khz frequency in this case) some noise is noticeable, that's how "2.6.19-mync" kernel performs. The worst-case interrupt latency seems to be around 25 microseconds, which is a usual limit for PC hardware.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-116705865715026523?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/116705865715026523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=116705865715026523' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116705865715026523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116705865715026523'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/12/pf-tracing-results_116705865715026523.html' title='Pf tracing results'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-116613996304979721</id><published>2006-12-14T15:37:00.000-08:00</published><updated>2006-12-14T15:47:43.006-08:00</updated><title type='text'>...and the second binary release</title><content type='html'>The first livecd release contained a pair of unfortunate bugs causing rare system hangs on speed changes and terminal crashes. I've fixed those. And when booted from the livecd, the GUI feels noticably slower than under my Ubuntu installation. This has to be addressed as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-116613996304979721?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/116613996304979721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=116613996304979721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116613996304979721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116613996304979721'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/12/and-second-binary-release.html' title='...and the second binary release'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-116597959341511810</id><published>2006-12-12T18:56:00.000-08:00</published><updated>2006-12-16T06:27:37.926-08:00</updated><title type='text'>First binary release</title><content type='html'>Compiling and deploying MyNC system is not an obvious task, but it is not hard either. I think that a project like MyNC should be distributed in two forms: source code tarballs and LiveCD images, plus SVN repository for developers. LiveCD that I've prepared seems to work, I've tested it on several computers already and everything went fine except on my old system with Matrox G400 video adapter: X.org refuses to work with it. Problems with the kernel have been holding me for almost two weeks: instantly I've discovered that my last modifications were working only on systems with IO-APIC, so I've decided to upgrade to the newest kernel version and have reworked the patch. The result is now available through sf.net file release system. And this is the first time I disclose the patch, here it is: http://mync.sourceforge.net/kernel.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-116597959341511810?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/116597959341511810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=116597959341511810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116597959341511810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116597959341511810'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/12/first-binary-release.html' title='First binary release'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-116455277167123552</id><published>2006-11-26T06:45:00.000-08:00</published><updated>2006-11-26T06:52:51.680-08:00</updated><title type='text'>Working on a LiveCD and a minimal distribution</title><content type='html'>I'm currently building a custom distribution for running MyNC from CDs and for installing it onto small flash cards. The main purpose is demonstration. I've chosen Linux From Scratch (linuxfromscratch.org) to begin with. Compiling modular Xorg now...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-116455277167123552?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/116455277167123552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=116455277167123552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116455277167123552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116455277167123552'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/11/working-on-livecd-and-minimal.html' title='Working on a LiveCD and a minimal distribution'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-116389972993750454</id><published>2006-11-18T16:42:00.000-08:00</published><updated>2006-11-19T10:58:11.853-08:00</updated><title type='text'>Ready</title><content type='html'>It's all in SVN. A few tasks should still be done but they are disintegrated and thus do not form one major challenge any more. I've found myself testing and fixing things, so the core system is here with us. Started to think what to place at the website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-116389972993750454?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/116389972993750454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=116389972993750454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116389972993750454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/116389972993750454'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/11/ready.html' title='Ready'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-115731504329978025</id><published>2006-09-03T13:16:00.000-07:00</published><updated>2006-09-03T13:24:03.320-07:00</updated><title type='text'>gncedit</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1570/740/1600/gncedit.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/1570/740/320/gncedit.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;NC editor is ready, it's back in a better shape. The editor is now a GPart and the text editing widget with undo/redo support is now actually a separate widget class. MyNC is now on the last turn before the announcement. The only packages left are myncbd-* ones, and they are already getting hot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-115731504329978025?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/115731504329978025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=115731504329978025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/115731504329978025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/115731504329978025'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/09/gncedit.html' title='gncedit'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-115660952528298241</id><published>2006-08-26T09:12:00.000-07:00</published><updated>2006-08-26T09:25:25.290-07:00</updated><title type='text'>MyConf is back</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1570/740/1600/myconf.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/1570/740/320/myconf.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;MyConf is MyNC's state management subsystem. It is similar to GConf of the GNOME project, but is more lightweight and is meant to meet the requirements of a soft-realtime system. MyConf includes a server which stores name/value pairs in a tree structure and keeps it synchronized with its XML representation on the disk. There is a well-defined grelay interface so that one can perform operations on the server remotely, and a C++ client library that allows to write MyConf clients in C++. The main feature is the subscription mechanism: clients can subscribe to certain options and receive notifications when those options change. I've just finished porting MyConf to GRelay. Here you can see a picture of MyConfUI.Control widget in action.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-115660952528298241?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/115660952528298241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=115660952528298241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/115660952528298241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/115660952528298241'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/08/myconf-is-back.html' title='MyConf is back'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-115608914571360164</id><published>2006-08-20T02:23:00.000-07:00</published><updated>2006-08-20T09:23:11.906-07:00</updated><title type='text'>Had fun with AVL trees</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1570/740/1600/gtree.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/1570/740/320/gtree.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Balanced trees are required for several tasks in MyNC. I've just written a graphics tool to debug them in three incarnations: for the kernel, for grelay and for mycpp. Fresh MyCpp::AvlTree code seems to work. Here's a screenshot of what is available at https://svn.sourceforge.net/svnroot/mync/trunk/mync-gtree.&lt;br /&gt;&lt;br /&gt;Oh, and yes, I've registered MyNC at sf.net and have already imported several modules into SVN. The rest is due soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-115608914571360164?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/115608914571360164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=115608914571360164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/115608914571360164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/115608914571360164'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/08/had-fun-with-avl-trees.html' title='Had fun with AVL trees'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-114972680034907940</id><published>2006-06-07T17:10:00.000-07:00</published><updated>2006-10-29T17:53:10.690-08:00</updated><title type='text'>Performance in action</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1570/740/1600/performance.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/1570/740/320/performance.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Yesterday I've written the first combat plugin for performance.gauntlet called PfLatencyPlugin. It finds the longest interval between local APIC timer's interrupts on CPU 0 and draws a horizontal green line covering that interval. The most natural test was to try to determine the cause of the worst latency case that I know to date which is latency introduced by nVidia's graphics driver. And an instant success followed! I've prepared a screen composition to illustrate the process. The cause of the delay is x86's wbinvd instruction.&lt;br /&gt;&lt;br /&gt;There's a recent discussion on the topic here: http://www.nvnews.net/vbulletin/showthread.php?t=67430&lt;br /&gt;&lt;br /&gt;I'm going to try to overcome this in a way similar to the one proposed by Bernhard: to prefill the cache with a necessary lot of data to make it synchronized with the main memory so that wbinvd would not take long to complete.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-114972680034907940?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/114972680034907940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=114972680034907940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/114972680034907940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/114972680034907940'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/06/performance-in-action.html' title='Performance in action'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-114958399209538617</id><published>2006-06-06T01:48:00.000-07:00</published><updated>2006-06-06T01:53:12.113-07:00</updated><title type='text'>Equidistant task solved</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1570/740/1600/correction.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/1570/740/320/correction.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;I've mentioned equidistant correction plans here. It was implemented last summer. The correction is done at the program description level in terms of lines and curves. Tunable corner cases and transitions, instant configurability over myconf, works fine. Here is a shot of it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-114958399209538617?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/114958399209538617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=114958399209538617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/114958399209538617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/114958399209538617'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/06/equidistant-task-solved.html' title='Equidistant task solved'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-114953572528703441</id><published>2006-06-05T12:13:00.000-07:00</published><updated>2006-06-05T12:29:50.930-07:00</updated><title type='text'>Performance tuning</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1570/740/1600/performace.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/1570/740/320/performace.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;I've just put a bit of love into Performance. Here is the screenshot of performance.gauntlet. I take the trace with the following commands:&lt;br /&gt;&lt;br /&gt;echo 1 &gt; /proc/performance/enable&lt;br /&gt;# Do something special&lt;br /&gt;echo 0 &gt; /proc/performance/enable&lt;br /&gt;cp /proc/performance/trace ./&lt;br /&gt;gauntlet trace&lt;br /&gt;&lt;br /&gt;Copying from proc is required because gauntlet mmaps the file and procfs doesn't support mmap. I'm looking forward to some better way of accessing trace data that would allow direct mmap without copying.&lt;br /&gt;&lt;br /&gt;Then gauntlet window appears where the trace is displayed in a timeline horizontally and can be moved and zoomed. A thick yellow marker line follows mouse pointer and in a text field at the bottom there is a list of events covered by the marker. It's quite convinient. The only thing left is to add some heuristics to determine bad high-latency places and to highlight them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-114953572528703441?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/114953572528703441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=114953572528703441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/114953572528703441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/114953572528703441'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/06/performance-tuning.html' title='Performance tuning'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-114945948682146316</id><published>2006-06-04T15:03:00.000-07:00</published><updated>2006-06-04T15:18:06.836-07:00</updated><title type='text'>Long live GRelay</title><content type='html'>Last winter I tried to prepare packages for the first public MyNC distribution. I soon realized that privately-patched OmniORB was a killing dependency: it builds enormously long, it is uncertain how to distribute IDL's properly, and I've failed to write Makfile.am that I would be satisfied  with. CORBA took its evil hands too deep into my code and turned simple things into complicated beasts. So I've decided to throw CORBA away from MyNC and replace it with something home-grown. The new middleware is called GRelay, it's simple, features straightforward design, textual protocol (direct GRelay shell scripting? - yes) and lacks any kind of IDL and IDL compiler. MyNC porting to GRelay is not finished yet but I've already tested GRelay in a file-server called "filewar" written as a student hometask. It's a bit boring to write client and server stubs for GRelay objects manually but overall simplicity worths it and MyNC interfaces are quite compact anyway.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-114945948682146316?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/114945948682146316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=114945948682146316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/114945948682146316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/114945948682146316'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/06/long-live-grelay.html' title='Long live GRelay'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-114945847110053227</id><published>2006-06-04T14:46:00.000-07:00</published><updated>2006-12-13T16:47:02.263-08:00</updated><title type='text'>On the way to 1.0</title><content type='html'>First, the project now has a stable name: "MyNC" which stants for "My Numerical Control" - quite simple, really.&lt;br /&gt;Debugging a real-time patch for SMP Linux 2.6 is pain. It looks like I've just finally assembled something stable called linux-2.6.16.19-rti-pf. It doesn't show great timings yet, I know it can perform better, but this is the only stable version so far. In the version string "-rti" stands for "Real-Time Interrupts" and "-pf" stands for "PerFormance", a tracing toolkit somewhat similar to Linux Trace Toolkit. The main purpose of Performance is to catch real-time-consuming critical sections to get rid of interrupt latency. -rti-pf is not critically important though, MyNC can easily be ported to any real-time environment like RTAI (or even lower-level ADEOS) and L4/Linux. I even considered the possibility of running MyNC on MINIX 3, but lack of threading support in MINIX blocks the effort.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-114945847110053227?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/114945847110053227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=114945847110053227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/114945847110053227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/114945847110053227'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2006/06/on-way-to-10.html' title='On the way to 1.0'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-112404754449443554</id><published>2005-08-14T12:25:00.000-07:00</published><updated>2005-08-14T12:25:44.500-07:00</updated><title type='text'>Real-work test</title><content type='html'>I can proudly say that gcode has been tested on real hardware with real stepper motors and a pencil instead of a real wire EDM process. Steppers are running, the form and trajectory speed looks fine, no one micron escapes on fast moves.&lt;br /&gt;Now I'm working on some modifications that include a re-worked real-time kernel patch that uses local APIC and its timer, so I suspect to reduce interrupt latency about 10 more times: it is 50 microseconds at the moment and I read a report about analogous work done by Bernhard Kuhn and he claimed 5 microseconds latency. That looks likely as in such case there are no system bus and PCI transactions.&lt;br /&gt;I'm also going to rearchitect the lowest-level gcode module (a kernel module) to make it more flexible, so that other hardware configurations could be easily supported as well. Today this turns out to be a priority because it turns out that it is not so easy to successfully pop up with a wire EDM CNC software today :) I need a universal software machine controller to keep interest in the project, so I'm thinking hard on how it should be implemented.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-112404754449443554?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/112404754449443554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=112404754449443554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/112404754449443554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/112404754449443554'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2005/08/real-work-test.html' title='Real-work test'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-111835887217249991</id><published>2005-06-09T15:57:00.000-07:00</published><updated>2005-06-09T16:17:27.916-07:00</updated><title type='text'>Current state record</title><content type='html'>gcode has reached certain degree of maturity&lt;br /&gt;&lt;br /&gt;The following is the list of ready-to-work modules:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;real-time 2.6.5-ds Linux kernel patch&lt;/li&gt;&lt;li&gt;ncb-kernel for the most low-level work&lt;/li&gt;&lt;li&gt;ncb-user as the Numeric Control Block high-level part&lt;/li&gt;&lt;li&gt;core library, contains program translation and path calculation logics&lt;/li&gt;&lt;li&gt;grlib graphics rendering library&lt;/li&gt;&lt;li&gt;gcode-conf configuration server and client interfaces&lt;/li&gt;&lt;li&gt;omniORB-4.0.3-ds patch and gcode.crio library, mainly for managing multiple robust CORBA connections&lt;/li&gt;&lt;li&gt;graphical control terminal&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The most recent addition is unified system state support: all parts of gcode installation now have real-time information about current ncb-kernel state (which defines the state of the whole system).&lt;br /&gt;Just before state handling work precise instrument marker rendering had been written. Elliptic forms are honored, and instrument's position is being displayed in a precise sub-pixel manner. My own sub-pixel ellipse drawing algorithm worths separate description :). This allows to debug future equidistant correction code.&lt;br /&gt;&lt;br /&gt;TODO list includes extending terminal to control new ncb-kernel's manual movement capabilities, adding back-link support to ncb-kernel (should be quite straightforward as ncb-kernel was designed with this in mind), adding advanced path handling algorithms to the core library (e.g. equidistant paths).&lt;br /&gt;&lt;br /&gt;This all is planned for my spare time, which my life currently consists of :) Education and spare time. I'm a happy man, really.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-111835887217249991?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/111835887217249991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=111835887217249991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/111835887217249991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/111835887217249991'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2005/06/current-state-record.html' title='Current state record'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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-9888308.post-110461186157877806</id><published>2005-01-01T11:19:00.002-08:00</published><updated>2005-11-29T23:05:37.153-08:00</updated><title type='text'>It's all about gcode</title><content type='html'>'gcode' is a piece of software that I am currently working on. It is a PC-CNC system. CNC stands for Computer Numerical Control - a set of tools to drive manufacturing processes with a personal computer. gcode is based on Linux, it inlcudes a patched Linux kernel, a Numerical Control Block (NCB) software and a control terminal. I'll explain it later as an exersize in English, and in Russian some descriptive documentation is already available, but it is still a subject to publish.&lt;br /&gt;&lt;br /&gt;Nobody but me worked on gcode for more than a year and this blog marks a step when I begin to prepare to share it. Of course, before "the great sharing" happens, gcode has to be taught to do something really useful and I want it to be documented a bit, so that you could at least understand how it works and what the main idea is. I'd also like to mention that although gcode is a real beast at the moment, things may change so that it'll fail. Really, I don't worry too much about it: I've learned a lot from its development and thats sufficient to me. But giving up on gcode is not not more likely than escaping from the university. And the last is very unlikely, so I belive that the 'gcode' game will go on (and on, and on).&lt;br /&gt;&lt;br /&gt;Really, never mind if nobody reads this. Writing stuff helps to organise personal thoughts, anyway. And I'm going to post here in English (will try to do my best), so that more people could benefit from this blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9888308-110461186157877806?l=gcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gcode.blogspot.com/feeds/110461186157877806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9888308&amp;postID=110461186157877806' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/110461186157877806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9888308/posts/default/110461186157877806'/><link rel='alternate' type='text/html' href='http://gcode.blogspot.com/2005/01/its-all-about-gcode.html' title='It&apos;s all about gcode'/><author><name>erdizz</name><uri>http://www.blogger.com/profile/07509355188944697752</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></feed>
