<?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-1913551021252960898</id><updated>2012-02-06T07:46:49.980-08:00</updated><category term='Giver'/><category term='haiku'/><category term='gsoc'/><category term='Plugins'/><category term='Avahi'/><category term='akonadi'/><category term='Files Utility'/><category term='openchange'/><category term='Directory Layer'/><category term='Mira Groupware'/><category term='FreeBSD'/><category term='network stack'/><category term='Zeroconf'/><category term='libmapi++'/><category term='planetkde'/><category term='kde'/><category term='icmp'/><category term='Utilities'/><title type='text'>Alien Coder</title><subtitle type='html'>Nothing but Martian Code...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alan Alvarez</name><uri>http://www.blogger.com/profile/13071649849555999351</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-VunpzDD5FRg/TfrThsnrI4I/AAAAAAAAAAY/XL2yUl0lrQw/s220/aalvarez.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-9091676752308589282</id><published>2011-05-02T20:47:00.000-07:00</published><updated>2011-06-10T19:02:41.856-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><title type='text'>GSoC 2011 Project: FreeBSD Path-based file system MAC policy</title><content type='html'>I've been accepted into Google Summer of Code (2011) once more. If you don't know and are curious, I was accepted into Google Summer of Code 2008. &lt;a href="http://mailman.openchange.org/pipermail/devel/2008-August/004279.html"&gt;This&lt;/a&gt; summary email to the OpenChange mailing list better describes what I accomplished that summer of 2008 with the OpenChange and KDE projects and my mentor Brad Hards.&lt;br /&gt;&lt;br /&gt;This year I applied to the FreeBSD project and you can find a description of my proposal &lt;a href="http://www.google-melange.com/gsoc/project/google/gsoc2011/aalvarez/5001"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've already started talking to my mentor (Pawel Jakub Dawidek) and we're in the brainstorming phase.&lt;br /&gt;&lt;br /&gt;There are some interesting obstacles that I will be facing this summer that I am looking forward to overcome. To begin with, except for starting to write a small hobby OS for educational purposes a long time ago, I've never really done any kernel-level development in the past. I have read much about OS design and implementation principles and have read through kernel sources. I'm also currently reading The Design and Implementation of the FreeBSD Operating System.&lt;br /&gt;&lt;br /&gt;Engineering-wise the first and foremost challenging obstacle that I am currently facing is the fact that the MAC framework doesn't really forward any path metadata to its modules. So, I'm trying to find a way to do this in a clean and modular way. Once I do, I can then use this data to match it with the vnodes of files that access needs to be restricted on.&lt;br /&gt;&lt;br /&gt;I will try to keep posting as much as I can as the project develops.&lt;br /&gt;&lt;br /&gt;As a bonus, here's a tool I've been using for browsing the FreeBSD sources. It's an &lt;a href="http://lxr.sourceforge.net/"&gt;LXR&lt;/a&gt;-based &lt;a href="http://fxr.watson.org/"&gt;FreeBSD and Linux Kernel Cross-reference site&lt;/a&gt;. It also has the sources for other operating systems such as NetBSD, Darwin, Plan 9 and MINIX.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1913551021252960898-9091676752308589282?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/9091676752308589282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=9091676752308589282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/9091676752308589282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/9091676752308589282'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2011/05/gsoc-2011-project-freebsd-path-based.html' title='GSoC 2011 Project: FreeBSD Path-based file system MAC policy'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-5661005527807558458</id><published>2009-12-28T20:07:00.000-08:00</published><updated>2010-07-03T11:44:01.459-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Files Utility'/><category scheme='http://www.blogger.com/atom/ns#' term='Mira Groupware'/><title type='text'>Preliminary screenshot</title><content type='html'>I've been working hard on getting the Files utility to work by working on the Utility Layer.&lt;br /&gt;&lt;br /&gt;My goal is to get the (0.1) Files utility finished by the first week of January (and it seems like I should be able to make it).&lt;br /&gt;&lt;br /&gt;I just wanted to quickly post a screenshot of where I am so far.&lt;br /&gt;There's a lot to explain as to what's going on behind the scenes because I've added a lot of stuff, so I'll save that for later.&lt;br /&gt;&lt;br /&gt;Here's the screenshot:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_icq61YdQHaM/SzmAS7_4SEI/AAAAAAAAAEI/jrAKXpBGXz0/s1600-h/Files+Utility.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_icq61YdQHaM/SzmAS7_4SEI/AAAAAAAAAEI/jrAKXpBGXz0/s400/Files+Utility.png" /&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;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The only thing that is hard-coded here are the "Static" folder and file shown. Not for long however, as the client and server can already synchronize the files/folders that are in the server The client just doesn't parse and display that information yet.&lt;br /&gt;&lt;br /&gt;Also, I would like to push out our 0.1 pre-alpha release out by February 1st. If it all goes, I think we should be able to do it.&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;So we've pushed out 1.0, but I forgot to show an update of what the files utility is looking like now.&lt;br /&gt;This is on Ubuntu, instead of Kubuntu:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_icq61YdQHaM/TC-E3i9WZ6I/AAAAAAAAAE0/RbPuFhKvZ_0/s1600/Screenshot.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_icq61YdQHaM/TC-E3i9WZ6I/AAAAAAAAAE0/RbPuFhKvZ_0/s400/Screenshot.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1913551021252960898-5661005527807558458?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/5661005527807558458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=5661005527807558458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/5661005527807558458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/5661005527807558458'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/12/preliminary-screenshot.html' title='Preliminary screenshot'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_icq61YdQHaM/SzmAS7_4SEI/AAAAAAAAAEI/jrAKXpBGXz0/s72-c/Files+Utility.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-8141937089254149720</id><published>2009-11-28T21:25:00.000-08:00</published><updated>2009-11-28T21:39:25.085-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='Mira Groupware'/><title type='text'>Utilities++</title><content type='html'>I've gotten a lot done this weekend on getting workplace and utility data synchronized between the client and server on login.&lt;br /&gt;&lt;br /&gt;The task was easier than I expected, but still a lot had to be done.&lt;br /&gt;&lt;br /&gt;It won't seem like much in this screenshot, but believe me, it was quite a bit of work:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_icq61YdQHaM/SxIDUJ4ARWI/AAAAAAAAAEA/qqBhVfX8_xY/s1600/Utilities.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_icq61YdQHaM/SxIDUJ4ARWI/AAAAAAAAAEA/qqBhVfX8_xY/s400/Utilities.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;It might actually seem like less is going on now than in our previous screenshots.&lt;br /&gt;&lt;br /&gt;What happened before was that all those Utilities and Workplaces that were loaded on the GUI, were manually loaded.&lt;br /&gt;&lt;br /&gt;What I've done this weekend is that I've added a few messages to our client&amp;lt;-&amp;gt;server protocol to synchronize workplaces and utilities over the network when a client logs in. Also, they are actually utility plugins, and not just made up utilities.&lt;br /&gt;&lt;br /&gt;Another thing here is that the Utility icon is actually part of the utility plugin binary, and Mira core gets it from the plugin at run-time.&lt;br /&gt;&lt;br /&gt;Also, this weekend I finally got a new laptop and I have a dual-boot setup with Windows 7 on it.&lt;br /&gt;&lt;br /&gt;So, my next task is to set up a dev environment around MS Visual C++ express 2008 and get Mira to compile on it. I tried once a long time ago, but gave up on it because a lot of code had to be re-written.&lt;br /&gt;&lt;br /&gt;However, this code has already been removed, so I don't expect this to take too long this time around.&lt;br /&gt;&lt;br /&gt;Also, all the work I've done on the plugin has been tested on linux, but not on windows, which prevents me from pushing these changes to trunk according to the rules we laid out a while ago in a meeting.&lt;br /&gt;&lt;br /&gt;After I'm done getting Mira to work with Visual C++, I'll then work on a simple Files utility and get ready for our 0.1 release :).&lt;br /&gt;&lt;br /&gt;I expect us to be able to release 0.1 before mid-January if we keep up this pace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1913551021252960898-8141937089254149720?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/8141937089254149720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=8141937089254149720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/8141937089254149720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/8141937089254149720'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/11/utilities.html' title='Utilities++'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_icq61YdQHaM/SxIDUJ4ARWI/AAAAAAAAAEA/qqBhVfX8_xY/s72-c/Utilities.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-2096418617124539435</id><published>2009-11-25T18:18:00.000-08:00</published><updated>2009-11-25T18:25:44.000-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='Mira Groupware'/><title type='text'>Mira Client Utilities</title><content type='html'>I just finished laying the framework for Utilities (Plugins) on the Client.&lt;br /&gt;&lt;br /&gt;The design is more Object Oriented and cleaner than it is for the server thanks to QPluginLoader.&lt;br /&gt;&lt;br /&gt;This is an example of what a plugin looks like:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include "UtilityInterface.h"&lt;br /&gt;#include "GuiInterface.h"&lt;br /&gt;#include "NetworkInterface.h"&lt;br /&gt;&lt;br /&gt;class FilesUtility : public QObject, public UtilityInterface, public GuiInterface, public NetworkInterface&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Q_OBJECT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Q_INTERFACES(UtilityInterface GuiInterface NetworkInterface)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FilesUtility();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;~FilesUtility();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bool initialize_gui(QLayout* qt_layout);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bool receive_message(const std::string&amp;amp; workplace_name, const std::string&amp;amp; message);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bool load_workspace(const std::string&amp;amp; workspace_name);&lt;br /&gt;};&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Basically you have to implement interfaces in order for Mira core to be able to interact with the Plugin.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are some interfaces that are going to be required, and others are going to be optional.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With this design it is also really easy for utilities to communicate with each other. All that is necessary is for utilities to share interfaces, request the other utility's object, and just use the interface.&amp;nbsp;This is not implemented yet, but it's fairly easy to do.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All that's needed now is a good library for plugins to use to interact with Mira core. This will probably be an ever-evolving library, at least until we get to release our first version of Mira.&lt;br /&gt;&lt;br /&gt;After I get the library started, I will propose a merge with trunk. But for&amp;nbsp;now you can follow this code in my &lt;a href="https://code.launchpad.net/~clsk/mira/mira-utilities"&gt;Launchpad branch&lt;/a&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/1913551021252960898-2096418617124539435?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/2096418617124539435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=2096418617124539435' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/2096418617124539435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/2096418617124539435'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/11/mira-client-utilities.html' title='Mira Client Utilities'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-606211714410094078</id><published>2009-11-08T18:46:00.000-08:00</published><updated>2009-11-08T19:14:31.307-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='Mira Groupware'/><title type='text'>Mira Utilities via Plugins</title><content type='html'>After reading through a lot of material on the web on dynamic libraries (aka plugins) using C++, I've come to a basic design for plugins in the server.&lt;br /&gt;&lt;br /&gt;It consists of using the functions provided by the OS (dlopen/dlsym for Unix-based systems including Mac OS X and LoadLibrary/GetProcAddress for MS Windows).&lt;br /&gt;&lt;br /&gt;Each plugin will have to provide two functions with C linkage:&lt;br /&gt;- &lt;code&gt;extern "C" void create_utility(WorkPlace* workplace)&lt;/code&gt;&lt;br /&gt;- &lt;code&gt;extern "C" void receive_message(const std::string&amp;amp; workplace_name, TcpConnection* tcp_connection, const std::string&amp;amp; message)&lt;/code&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first function (create_utility) is a factory function that takes care of creating new instances of the utility.&lt;br /&gt;&lt;br /&gt;The way it should work is that a new instance of the utility class is created for each workplace. This Utility class wouldn't have to derive from any other base class as is normally done with C++ plugins.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The second function (receive_message) is used to receive network messages coming from clients, mostly from its utility counterpart on the client-side.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Keep in mind that this implementation will only be for the server. The Qt QPluginLoader framework will probably have to be used on the client. I didn't want to use this on the server to not introduce Qt as a dependency for the server.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also, the plugin system on the server doesn't require much flexibility. The current design is rather simple and seems to work quite well so far. The UtilityManager class is less than 50 (real) lines of code.&lt;br /&gt;&lt;br /&gt;One thing I haven't introduced yet is a way for utilities to communicate with each other internally (within the server). A few ideas that I can think off the top of my head to implement this, might to require the addition of another function with external C linkage to pass internal messages. Not sure how flexible this would be do.&lt;br /&gt;&lt;br /&gt;Another option would be to use Boost.Signal2.&lt;br /&gt;&lt;br /&gt;With this, and some more work on the Mira framework, I should be able to produce some simple utilities rather easily. Still some design issues that I'm gathering need to be worked out.&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/1913551021252960898-606211714410094078?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/606211714410094078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=606211714410094078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/606211714410094078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/606211714410094078'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/11/mira-utilities-via-plugins.html' title='Mira Utilities via Plugins'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-9014502884025065682</id><published>2009-11-07T13:29:00.000-08:00</published><updated>2009-11-07T13:48:34.390-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mira Groupware'/><title type='text'>Mira client connects to Server</title><content type='html'>There isn't much to say about this, so I'll just show some screenshots.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_icq61YdQHaM/SvXmUepP10I/AAAAAAAAAC4/yIdANs-0CPI/s1600-h/mira-client-network-gui2.jpeg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://4.bp.blogspot.com/_icq61YdQHaM/SvXmUepP10I/AAAAAAAAAC4/yIdANs-0CPI/s200/mira-client-network-gui2.jpeg" width="200" /&gt;&lt;span style="-webkit-text-decorations-in-effect: none; color: black;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_icq61YdQHaM/SvXmblvjvpI/AAAAAAAAADA/cn7-CH9DHGw/s1600-h/mira-client-network-gui3.jpeg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_icq61YdQHaM/SvXmblvjvpI/AAAAAAAAADA/cn7-CH9DHGw/s200/mira-client-network-gui3.jpeg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These two screenshots show some error handling I've added to the network code. Apart from this and a handler for error messages coming from the server, I haven't really added anything else to the network code.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_icq61YdQHaM/SvXmfMTUsOI/AAAAAAAAADI/HnKpcPVlXiI/s1600/mira-client-network-gui.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_icq61YdQHaM/SvXmfMTUsOI/AAAAAAAAADI/HnKpcPVlXiI/s400/mira-client-network-gui.jpeg" /&gt;&lt;span style="-webkit-text-decorations-in-effect: none; color: black;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="-webkit-text-decorations-in-effect: none; color: black;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&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;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_icq61YdQHaM/SvXnL4ilnTI/AAAAAAAAADg/P0srTkbKn4s/s1600-h/mira-client-network-gui4.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_icq61YdQHaM/SvXnL4ilnTI/AAAAAAAAADg/P0srTkbKn4s/s400/mira-client-network-gui4.jpeg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&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;The client code has been able to connect to the server, but nothing had been done to be able to do this with the GUI. This is just to show the little progress I've made this weekend.&lt;br /&gt;&lt;br /&gt;The code is currently in a separate branch from trunk which Shilpa created for handling network messages on the server. I'm waiting on her to finish up some work on this and then we're going to merge these changes with trunk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1913551021252960898-9014502884025065682?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/9014502884025065682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=9014502884025065682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/9014502884025065682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/9014502884025065682'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/11/mira-client-connects-to-server.html' title='Mira client connects to Server'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_icq61YdQHaM/SvXmUepP10I/AAAAAAAAAC4/yIdANs-0CPI/s72-c/mira-client-network-gui2.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-6815051252331614025</id><published>2009-10-31T17:17:00.000-07:00</published><updated>2009-10-31T17:22:56.412-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mira Groupware'/><category scheme='http://www.blogger.com/atom/ns#' term='Directory Layer'/><title type='text'>Security in the Directory Layer</title><content type='html'>After brainstorming for a while I came up with an idea for the security stuff in the directory layer.&lt;br /&gt;&lt;br /&gt;In the existing code it's&amp;nbsp;referred to as an access list.&lt;br /&gt;&lt;br /&gt;Basically different resources are registered with the Directory layer. Each resource has an access list which is basically an user id associated with a permission.&lt;br /&gt;&lt;br /&gt;Right now the access is an int8_t with the following constants defined for&amp;nbsp;identifying what each value represents:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;static const uint8_t &amp;nbsp;READ_ACCESS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0x01;&lt;br /&gt;&amp;nbsp;static const uint8_t &amp;nbsp;WRITE_ACCESS &amp;nbsp; &amp;nbsp; &amp;nbsp; = 0x10;&lt;br /&gt;&amp;nbsp;static const uint8_t &amp;nbsp;READ_WRITE_ACCESS &amp;nbsp;= 0x11;&lt;br /&gt;&amp;nbsp;static const uint8_t &amp;nbsp;NO_ACCESS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0x00;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What identifies the resource is a simple std::string object. This makes it flexible enough so that we can provide this functionality to utility developers and new resources can be created at run-time without creating conflicts.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, because of this we will need to enforce a naming convention for resource names. This will need to be enforced by only allowing utility developers to create resource access lists through our API.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The naming convention should probably be something like this:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- For server resources: "server_resource"&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- For workspace resources: "workspace_workspacename_resource"&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- For workspace resources created by utilities: "utility_workspace_utilityname_workspacename_resource"&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ie: In the Directory database in trunk there is an existing resource called "server_add_new_user". This is a resource that is used to determine who can add new users to the server.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this case, a read access would only allow to see who has access to the resource, and a write access would allow to actually use the resource (Add new users to the server).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is one more thing that we've talked about which is Server and WorkPlace roles. I haven't implemented this yet, but I have a good idea of how to do so (probably sometime next week).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think the Role code should be more like a script (not literally of course). All it will do is know how to give the person the role is given to, the right access, to the right resources. So if a role of Server Administrator is applied to a user, then the Role code will give the user read/write access to most server functionalities, such as stopping the server (server_stop), restarting the server (server_restart), adding new users (server_add_new_user), etc... This should be easy to implement. We just need to find out what resources to give access to for each Role.&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/1913551021252960898-6815051252331614025?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/6815051252331614025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=6815051252331614025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/6815051252331614025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/6815051252331614025'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/10/security-in-directory-layer.html' title='Security in the Directory Layer'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-6498119591874308133</id><published>2009-10-12T18:53:00.000-07:00</published><updated>2009-10-20T21:25:02.588-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Avahi'/><category scheme='http://www.blogger.com/atom/ns#' term='Mira Groupware'/><category scheme='http://www.blogger.com/atom/ns#' term='Zeroconf'/><title type='text'>Mira connects to peers on LAN</title><content type='html'>Ok... so it wasn't as easy as I thought to get the network code going for p2p. I think the discovery part was actually easier.&lt;br /&gt;&lt;br /&gt;Either way I do have something to show:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_icq61YdQHaM/StPccL2grTI/AAAAAAAAACo/xI-h1CPE6x4/s1600-h/mira-discovery2.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_icq61YdQHaM/StPccL2grTI/AAAAAAAAACo/xI-h1CPE6x4/s400/mira-discovery2.jpeg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&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;What you see is my regular laptop (clsk@aliensoft (192.168.0.3)) + a virtual machine (aalvarez@alientest (192.168.0.4)) both running a Mira client. You can see that they discover each other and connect to each other as well.&lt;br /&gt;&lt;br /&gt;Right now, they create two connections when they discover each other, but I've already got a system down so that they chose which one will connect just haven't implemented it yet. Also, I haven't integrated it to the GUI just yet, but that will be the easy part.&lt;br /&gt;&lt;br /&gt;Either way, that's the final product of long hours of scratching my head, trying to figure out how Avahi really worked and re-designing the network code. There's a lot Mira will be able to do from here. Getting Mira to do what Giver does is just a matter of implementing drag&amp;amp;drop and sending the files through the connection already established.&lt;br /&gt;&lt;br /&gt;Also, the network code is multi-threaded. Right now the whole application runs 5 concurrent threads which is more than enough. So for those that have multi-core processors, Mira will take advantage of them.&lt;br /&gt;&lt;br /&gt;Update: Here's a screenshot with the ContactDockWidget userlist being updated when a connection with a Neighbor (P2P) is established.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_icq61YdQHaM/StZN7Y8WMeI/AAAAAAAAACw/7YknitVTVmU/s1600-h/mira-gui.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_icq61YdQHaM/StZN7Y8WMeI/AAAAAAAAACw/7YknitVTVmU/s400/mira-gui.jpeg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&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;Also, I've created a new &lt;a href="https://code.launchpad.net/~mira-dev/mira/p2p"&gt;branch in launchpad&lt;/a&gt; for this code called p2p. This will live there until I can port the code to Windows and OS X&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1913551021252960898-6498119591874308133?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/6498119591874308133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=6498119591874308133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/6498119591874308133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/6498119591874308133'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/10/mira-does-connects-to-peers-on-lan.html' title='Mira connects to peers on LAN'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_icq61YdQHaM/StPccL2grTI/AAAAAAAAACo/xI-h1CPE6x4/s72-c/mira-discovery2.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-6441408691614074142</id><published>2009-10-11T14:50:00.000-07:00</published><updated>2009-10-11T22:58:38.696-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Avahi'/><category scheme='http://www.blogger.com/atom/ns#' term='Mira Groupware'/><title type='text'>Service discovery on the LAN on Mira</title><content type='html'>&lt;div&gt;So I don't have much to show, but here is something...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_icq61YdQHaM/StJXRVj7Z3I/AAAAAAAAACg/Pe4J6oSM6sg/s1600-h/mira-discovery.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_icq61YdQHaM/StJXRVj7Z3I/AAAAAAAAACg/Pe4J6oSM6sg/s320/mira-discovery.jpeg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This means the Mira client application can register its own peer-to-peer service and discover other clients on the network.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's some more to do before I can actually show some useful screenshots. Mainly re-doing the client networking code. Shouldn't be much work since I'm just going to use the Server's network code as a template. Like I did before, but this time taking into account the fact that the client is somewhat of a server as well.&lt;br /&gt;&lt;br /&gt;By the way, this only works on linux so far. I plan to do a version using Bonjour so it'll work on windows and Mac OS X. So for now I'll be posting to a separate branch.&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/1913551021252960898-6441408691614074142?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/6441408691614074142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=6441408691614074142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/6441408691614074142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/6441408691614074142'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/10/so-i-dont-have-much-to-show-but-here-is.html' title='Service discovery on the LAN on Mira'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_icq61YdQHaM/StJXRVj7Z3I/AAAAAAAAACg/Pe4J6oSM6sg/s72-c/mira-discovery.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-4533936239712641942</id><published>2009-10-10T21:12:00.000-07:00</published><updated>2009-10-10T21:12:45.962-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Giver'/><category scheme='http://www.blogger.com/atom/ns#' term='Avahi'/><category scheme='http://www.blogger.com/atom/ns#' term='Mira Groupware'/><title type='text'>Restarting Mira development</title><content type='html'>Another project I used to work on, and plan to start working on again is &lt;a href="http://www.miragroupware.org/"&gt;Mira Groupware&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Its development has been inactive for some time, but that won't be for long.&lt;br /&gt;&lt;br /&gt;After watching a &lt;a href="http://video.google.com/googleplayer.swf?docId=3768442676796881783&amp;amp;hl=en"&gt;video&lt;/a&gt;&amp;nbsp;on Giver (an application developed by a Novell programmer), it motivated me to start working on it again.&lt;br /&gt;&lt;br /&gt;Giver is a great application, and I suppose it does what it is supposed to do, but it has so much potential. However, development for it has stopped completely as it was just a weekend (or week-long) project. I could just expand Giver, but I don't think it was designed to do all the things I have in mind. Which Mira Groupware is. The network code for Mira has been ready for a long time. I'm now working on the Zeroconf (service discovery) on linux using Avahi (the same library Giver uses).&lt;br /&gt;&lt;br /&gt;Hopefully I'll have some screenshots to show in a few days/weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1913551021252960898-4533936239712641942?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/4533936239712641942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=4533936239712641942' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/4533936239712641942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/4533936239712641942'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/10/restarting-mira-development.html' title='Restarting Mira development'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-2522074235384181128</id><published>2009-10-09T18:02:00.000-07:00</published><updated>2009-10-10T20:48:27.139-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libmapi++'/><category scheme='http://www.blogger.com/atom/ns#' term='openchange'/><title type='text'>libmapi++ not header-only for long</title><content type='html'>So after trying to clean up the code in the Akonadi Resource it seems like libmapi++ is not going to be a header-only library much longer.&lt;br /&gt;&lt;br /&gt;Either way, the main reason for keeping it that way was to make it easier for other people to use. Now that libmapi++ is part of the openchange build-system, and it's distributed as part of the openchange distribution, that is not really needed anymore, because it gets "built" anyway.&lt;br /&gt;&lt;br /&gt;However, that's going to be in the near-future. First I want to concentrate in getting the resource stable and working with the current version of akonadi and whatever client is able to access it (which I'm still trying to figure out).&lt;br /&gt;&lt;br /&gt;After a quick trial, Mailody seems not to be very up-to-date with Akonadi development. So right now I'm trying to figure out what to use to test the resource.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1913551021252960898-2522074235384181128?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/2522074235384181128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=2522074235384181128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/2522074235384181128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/2522074235384181128'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/10/libmapi-not-header-only-for-long.html' title='libmapi++ not header-only for long'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-1597936263508296469</id><published>2009-10-08T18:23:00.000-07:00</published><updated>2009-10-10T21:04:44.540-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='planetkde'/><category scheme='http://www.blogger.com/atom/ns#' term='openchange'/><category scheme='http://www.blogger.com/atom/ns#' term='akonadi'/><title type='text'>Brad Hard's OpenChange/Akonadi Talk</title><content type='html'>&lt;div&gt;Here's a link to Brad Hard's (My GSoC Mentor) talk on OpenChange and Akonadi:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://www.kdedevelopers.org/node/3905"&gt;http://www.kdedevelopers.org/node/3905&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/1913551021252960898-1597936263508296469?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/1597936263508296469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=1597936263508296469' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/1597936263508296469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/1597936263508296469'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/10/brad-hards-openchangeakonadi-talk.html' title='Brad Hard&apos;s OpenChange/Akonadi Talk'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-295850444504394012</id><published>2009-10-08T18:04:00.001-07:00</published><updated>2009-10-10T21:05:03.340-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='planetkde'/><category scheme='http://www.blogger.com/atom/ns#' term='openchange'/><category scheme='http://www.blogger.com/atom/ns#' term='akonadi'/><title type='text'>So How Was GSoC 2008 after all?</title><content type='html'>&lt;div&gt;So I never used this for GSoC. It's actually been a while since I got accepted and finished GSoC.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I'll tell a brief story of how it went.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After being asked to decide for one of the two projects, I decided to go with the Akonadi OpenChange resource. I would say that the biggest factor was the fact that I already had a relationship with who would be my mentor before I was even accepted. But I was very interested in both projects.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The summer went well, and I accomplished almost all tasks of my project.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can see most of what I accomplished &lt;a href="http://wiki.openchange.org/index.php/Akonadi_Resource"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;After the summer ended I redeployed from Iraq back to the U.S. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've also moved a lot of times since then, so I never really had a chance to completely settle down until now.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now that I'm somewhat settled down, I've decided to start working on the Akonadi openchange resource again. Most of what is left is sending information to the Exchange server, as I almost finished pulling information from it during GSoC.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've already fixed an annoying bug that made the resource crash when an openchange profile database wasn't created (which is the case for all new users). &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The bug slipped by because I always had a profile database while I was working on the resource before. I guess starting all over again brought something good to the table :).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, After installing MS Exchange 2008 R2 Preview, I found out that you can't install Exchange server in it, so now I'm going to try and install MS Exchange Server 2008 (not the R2 version) and see if that works.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I hope to start using this again to keep people updated.&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/1913551021252960898-295850444504394012?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/295850444504394012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=295850444504394012' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/295850444504394012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/295850444504394012'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2009/10/so-i-never-used-this-for-gsoc.html' title='So How Was GSoC 2008 after all?'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-8376550987446655639</id><published>2008-03-24T03:31:00.000-07:00</published><updated>2008-12-11T16:48:42.361-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='haiku'/><category scheme='http://www.blogger.com/atom/ns#' term='icmp'/><category scheme='http://www.blogger.com/atom/ns#' term='network stack'/><title type='text'>Haiku Project Proposal</title><content type='html'>Below is part of my project proposal for Haiku. I have removed the first part of the application that has personal information I would rather not post on this blog. Also this post expands on the content within the application with graphics and more detailed explanation.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Project Idea&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;What I will be trying to achieve this summer is to implement ICMP and an error-handling mechanism for the network stack. I have been reading the network stack code and already have a good understanding of how it works internally.&lt;br /&gt;&lt;br /&gt;The main goals for this project are to:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Implement the ICMP module (for IPv4) as described in RFC792&lt;/strong&gt;: This will require minor modifications to the IPv4, TCP and UDP modules. Right now the IPv4 header is being removed from the net_buffer before it is being passed to the other protocols (TCP, UDP or ICMP). Some ICMP messages require (in some cases) that the original IPv4 header + 64 bytes of the upper layer header (TCP/UDP in this case) be sent back as part of the ICMP header so that the receiving host can identify which packet caused the error.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Create an error-handling mechanism for IPv4, TCP and UDP&lt;/strong&gt;: I will use the functions already set for the net_modules. Specifically error() and error_reply(). This will be implemented in such a way that the TCP and UDP modules are independent from the ICMP module and all messages are transmitted through the IPv4 module, like so:&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5181255992844617634" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_icq61YdQHaM/R-eE37_eB6I/AAAAAAAAAAM/3loC9kMrVpE/s200/icmp.jpg" border="0" /&gt;&lt;br /&gt;&lt;p&gt;The error-reporting mechanism will work as follows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;An ICMP message is received from a remote host and is passed to the ICMP module from the IPv4 module.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If the message is regarding a previously-sent packet by either the IPv4, TCP or UDP layers, the message will be sent to the IPv4 module using the error() function.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If the message is regarding a previously-sent packet by either the TCP or UDP layers, they are sent to these modules using their error() function and the message is handled accordingly. Otherwise they are processed and handled by the IPv4 module.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To reply to a message the TCP and UDP module will use the IPv4's reply_error() function to pass the reply message down to the ICMP module using the send_data() function. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Below is a graphic representation of this process:&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5181259055156299714" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_icq61YdQHaM/R-eHqL_eB8I/AAAAAAAAAAc/GNFRu5_DQkY/s320/icmp-data-flow.jpg" border="0" /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Document the work described above&lt;/strong&gt;: I plan to document all the work that I do. I will use this blog so that people can track my progress and also to show step-by-step how I implemented the work described above. I will also prepare a separate document which will more likely be based on the contents of this blog by the end of the summer. If time permits I would also like to document the whole inner-workings of the network stack based on &lt;a href="http://www.pinc-software.de/files/Network%20Stack.html"&gt;this document&lt;/a&gt;.&lt;br /&gt;I’m not sure who the author is, so I might have to start from scratch to avoid copyright issues.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1913551021252960898-8376550987446655639?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/8376550987446655639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=8376550987446655639' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/8376550987446655639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/8376550987446655639'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2008/03/below-is-part-of-my-application-for.html' title='Haiku Project Proposal'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_icq61YdQHaM/R-eE37_eB6I/AAAAAAAAAAM/3loC9kMrVpE/s72-c/icmp.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1913551021252960898.post-6124590143108458991</id><published>2008-03-24T00:30:00.000-07:00</published><updated>2008-03-24T01:07:05.370-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='haiku'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='akonadi'/><title type='text'>First Post + GSoC 2008</title><content type='html'>I set up a blog once before, but never really posted much to it since I didn't have much stuff to talk about that other people would even care about.&lt;br /&gt;&lt;br /&gt;Now things have changed since I'm planning on applying for Google Summer of Code 2008 and (I think) I have a good chance of getting accepted.&lt;br /&gt;&lt;br /&gt;I'll be using this blog mainly so that other people can track my progress on whichever project I get accepted.&lt;br /&gt;&lt;br /&gt;As of right now I'm planning on applying for two projects. One is to implement a resource (basically a backend plugin) to &lt;a href="http://pim.kde.org/akonadi/"&gt;Akonadi&lt;/a&gt;. The resource I would be implementing in the event that I get picked up is an &lt;a href="http://www.openchange.org/"&gt;OpenChange&lt;/a&gt; resource to allow users to interact with MS Exchange Servers.&lt;br /&gt;&lt;br /&gt;I will also be applying to implement ICMP and an error-handling mechanism for the &lt;a href="http://www.haiku-os.org/"&gt;Haiku&lt;/a&gt; network stack. This will also include Path MTU discovery.&lt;br /&gt;&lt;br /&gt;I already have a pretty good idea of how to do this since I've spent a couple of hours looking at the network stack code and I must say that Haiku has one of the cleanset network stack implementation I've ever seen in my life. It was relatively easy to follow the code. I think this might have to do wit the fact that it's written in C++. Some might argue that having C++ in the kernel is stupid. I think otherwise, and Haiku has definitely proven those people to be wrong.&lt;br /&gt;&lt;br /&gt;For anyone interested &lt;a href="http://www.pinc-software.de/files/Network%20Stack.html"&gt;here&lt;/a&gt; is a basic explanation of the internal design of the Haiku Network Stack that I (unfortunetly) found after I already knew the how things worked. It did help clarify one or two things afterwards though.&lt;br /&gt;&lt;br /&gt;As you have seen both projects I've chosen to apply for are in C++. C++ is my native (programming) language. It's the first one I learned (except for BASIC in like 4th grade) and it's the one I have the most experience on. It also happens to be the one I like the best. I've started to appreciate python lately however, but that's another story.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1913551021252960898-6124590143108458991?l=blog.aliensoft.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.aliensoft.net/feeds/6124590143108458991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1913551021252960898&amp;postID=6124590143108458991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/6124590143108458991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1913551021252960898/posts/default/6124590143108458991'/><link rel='alternate' type='text/html' href='http://blog.aliensoft.net/2008/03/first-post-gsoc-2008.html' title='First Post + GSoC 2008'/><author><name>Alan Alvarez</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_icq61YdQHaM/Ss-CEYz0vpI/AAAAAAAAACA/tDwfk-m3ugo/S220/beach.jpg'/></author><thr:total>0</thr:total></entry></feed>
