<?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-3631974605130814998</id><updated>2011-04-21T14:41:59.567-07:00</updated><title type='text'>Audio/Video Mailbox for SIP-Communicator</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ryan Ricard</name><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>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3631974605130814998.post-3651541397220174945</id><published>2007-08-17T00:27:00.000-07:00</published><updated>2007-08-17T00:29:12.298-07:00</updated><title type='text'>Patch it!</title><content type='html'>I sent in my big patch today. Hopefully this is the first of many contributions to Sip-Communicator. I've had a whole lot of fun working on this project and I've got a whole big list of features that didn't make the cut for the Summer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-3651541397220174945?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/3651541397220174945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=3651541397220174945' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3651541397220174945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3651541397220174945'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/08/patch-it.html' title='Patch it!'/><author><name>Ryan Ricard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3631974605130814998.post-7099701862180474475</id><published>2007-08-14T01:09:00.000-07:00</published><updated>2007-08-14T01:17:05.730-07:00</updated><title type='text'>well, it looks nice in my head</title><content type='html'>So I coded up the configuration form for the Mailbox. Right now it doesn't do anything, but I was hoping that I could at least do a build/run and see if the buttons ended up the way I wanted them to. &lt;br /&gt;&lt;br /&gt;Unfortunately, I can't get it to show in the GUI. &lt;br /&gt;&lt;br /&gt;I took the PluginManager as a template, and I think that the mailbox is doing everything that PluginManager is doing, including&lt;br /&gt;&lt;br /&gt;-A new class implements Configuration Form and Extends JPanel&lt;br /&gt;-Activator Class Creates a new Instance of this class on Bundle Start&lt;br /&gt;-Activator Class grabs the current configuration window from UIService.getConfigurationWindow()&lt;br /&gt;-Activator Class calls addConfigurationForm() method to add my form to the configuration window&lt;br /&gt;&lt;br /&gt;...but nothing happens. Not even an exception. A few logger.logInfo() statements suggest that the Mailbox form is being properly added to the list of config forms. I'm out of ideas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-7099701862180474475?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/7099701862180474475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=7099701862180474475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/7099701862180474475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/7099701862180474475'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/08/well-it-looks-nice-in-my-head.html' title='well, it looks nice in my head'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-6738205890270535776</id><published>2007-08-13T20:19:00.000-07:00</published><updated>2007-08-13T20:21:49.371-07:00</updated><title type='text'>where the hell am I</title><content type='html'>after a long hiatus I am back to hacking! It feels very good to be getting work done again... I think that working on this project is going to be hard to stop once the school year starts ;) Anyway, I've got the message cap working properly... the mailbox hangs up on the call when the incoming message hits X seconds (60 seconds is the default). &lt;br /&gt;&lt;br /&gt;Up next is coding up a GUI form for the mailbox config parameters. I'm a bit worried that my Swing-fu has gotten weak from lack of exercise, so I may have my nose buried in a tutorial for a good portion of the rest of this evening. &lt;br /&gt;&lt;br /&gt;Wish me luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-6738205890270535776?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/6738205890270535776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=6738205890270535776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/6738205890270535776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/6738205890270535776'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/08/where-hell-am-i.html' title='where the hell am I'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-8297599954248532544</id><published>2007-07-25T20:30:00.001-07:00</published><updated>2007-07-25T20:37:40.978-07:00</updated><title type='text'>well that was easy</title><content type='html'>I got it working so that the incoming message starts recording just as the outgoing message finishes. &lt;br /&gt;&lt;br /&gt;So the mailbox sort of works. I'm pretty excited. Frankly I'm not sure what I should do next. &lt;br /&gt;&lt;br /&gt;Some of the possible candidates:&lt;br /&gt;&lt;br /&gt;-expose some sort of GUI functionality for playing received messages and/or alerting the user to the fact that messages were received. Seems like this would go on the "call list" tab on the SIP-communicator GUI. &lt;br /&gt;&lt;br /&gt;-enable a time or size maximum on incoming messages. As it stands if the caller forgets to hang up it's possible that the incoming message might fill up the hard drive, which would be bad. &lt;br /&gt;&lt;br /&gt;-Right now the incoming message is audio-only. Perhaps I could auto-detect if there is an incoming video stream and record to video if that is the case&lt;br /&gt;&lt;br /&gt;-Set up custom outgoing messages, IE associate each outgoing message file with a contact so that if your mom calls she hears message A but if your boss calls he hears message B. &lt;br /&gt;&lt;br /&gt;-Perhaps have a "record outgoing message" function from within SIP-Communicator? IDK if this is necessary as all the OSes SC comes on have some sort of sound recorder built in. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At first glance it seems as though a size cap on incoming messages is most important, followed by some sort of GUI exposure. But I'll probably put it to Emil and whoever else and see what rises to the top.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-8297599954248532544?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/8297599954248532544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=8297599954248532544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/8297599954248532544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/8297599954248532544'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/07/well-that-was-easy.html' title='well that was easy'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-300313027850153082</id><published>2007-07-25T07:47:00.000-07:00</published><updated>2007-07-25T07:53:21.444-07:00</updated><title type='text'>Good news in many varieties</title><content type='html'>Finally a bit of good news.&lt;br /&gt;&lt;br /&gt;-Merged all the changes from mainline into the necessary media files. Also learned that &lt;a href="http://meld.sourceforge.net/"&gt;meld&lt;/a&gt; is, for lack of a better phrase, pretty goddamned sweet. &lt;br /&gt;&lt;br /&gt;-The config file works as expected. &lt;br /&gt;&lt;br /&gt;-I figured out a way to get the output media file's duration (so I can wait that long to start recording). It seemed that the sanest way was to add a field in MediaControl called getOutputDuration(). This field performs a call to getDuration() on the Processor object it is using for outgoing media. This won't mean a whole lot if the output source is a microphone/webcam, but if it's a file then it properly returns how long the file is. This means that I can call mediaServCallBack.getMediaControl().getOutputDuration().getSeconds() and I know how many seconds I need to wait to start recording. Hopefully I'll have that implemented by the end of the day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-300313027850153082?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/300313027850153082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=300313027850153082' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/300313027850153082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/300313027850153082'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/07/good-news-in-many-varieties.html' title='Good news in many varieties'/><author><name>Ryan Ricard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3631974605130814998.post-5544853968548644692</id><published>2007-07-24T23:27:00.000-07:00</published><updated>2007-07-24T23:28:13.276-07:00</updated><title type='text'>found it</title><content type='html'>someone made substantial changes to CallSessionImpl.java that need to be merged into my version. &lt;br /&gt;&lt;br /&gt;Why it took me so long to realize that, I'll leave that as an exercise for the reader.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-5544853968548644692?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/5544853968548644692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=5544853968548644692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/5544853968548644692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/5544853968548644692'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/07/found-it.html' title='found it'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-2690090801912102964</id><published>2007-07-24T23:04:00.000-07:00</published><updated>2007-07-24T23:08:37.863-07:00</updated><title type='text'>shouldn't have done that</title><content type='html'>Well, I committed the sin of "implementing feature B before testing feature A," and now here's where I am at:&lt;br /&gt;&lt;br /&gt;Whenever I try to connect a call (either via clicking the answer button or via letting the mailbox pick it up) I get  "java.net.BindException: Address already in use." This also happens when I try to create an outgoing call. This is caused by one of the following:&lt;br /&gt;&lt;br /&gt;-something I did while trying to move some values to the configuration files&lt;br /&gt;-something I did while trying to get the incoming message to wait for the outgoing message to finish before recording starts&lt;br /&gt;-something else entirely.&lt;br /&gt;&lt;br /&gt;Right now neither scenario is looking very likely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-2690090801912102964?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/2690090801912102964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=2690090801912102964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/2690090801912102964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/2690090801912102964'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/07/shouldnt-have-done-that.html' title='shouldn&apos;t have done that'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-8585302059608969851</id><published>2007-07-15T21:43:00.000-07:00</published><updated>2007-07-15T21:44:24.961-07:00</updated><title type='text'>check one more thing off my list</title><content type='html'>The Mailbox now loads the settings for the outgoing message location, incoming message location, and wait time from the config file. &lt;br /&gt;&lt;br /&gt;At least I think it does. I haven't had time to test it yet. &lt;br /&gt;&lt;br /&gt;It does compile, though, so I am checking in and going to bed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-8585302059608969851?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/8585302059608969851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=8585302059608969851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/8585302059608969851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/8585302059608969851'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/07/check-one-more-thing-off-my-list.html' title='check one more thing off my list'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-1610268899987104020</id><published>2007-07-11T12:46:00.001-07:00</published><updated>2007-07-11T12:48:49.882-07:00</updated><title type='text'>can you hear me knockin?</title><content type='html'>Outgoing message works. Incoming message works. Neither of them try to run when you pick up the phone. &lt;br /&gt;&lt;br /&gt;This is good. &lt;br /&gt;&lt;br /&gt;Anyway, I've got two things to fix right away:&lt;br /&gt;&lt;br /&gt;1. The incoming message starts recording as soon as the call connects, so it picks up some of the outgoing message as well. &lt;br /&gt;&lt;br /&gt;2. I need to move the settings for the location of the outgoing/incoming messages out of the code and into the config file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-1610268899987104020?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/1610268899987104020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=1610268899987104020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/1610268899987104020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/1610268899987104020'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/07/can-you-hear-me-knockin.html' title='can you hear me knockin?'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-331180036359514784</id><published>2007-07-10T13:23:00.000-07:00</published><updated>2007-07-10T13:26:52.453-07:00</updated><title type='text'>Leave a message after the tone</title><content type='html'>After messing around with all the quirks in manager.createDataSink, I finally got incoming audio to record to a file. Very exciting. &lt;br /&gt;&lt;br /&gt;Now I need to have the mailbox tell the media service which calls it needs to record and which it needs to play as normal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-331180036359514784?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/331180036359514784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=331180036359514784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/331180036359514784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/331180036359514784'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/07/leave-message-after-tone.html' title='Leave a message after the tone'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-2625617172852538146</id><published>2007-07-10T08:06:00.000-07:00</published><updated>2007-07-10T08:09:06.589-07:00</updated><title type='text'>breaking rocks in the hot sun</title><content type='html'>Yesterday I did some code tidying to get my project ready for some additional midterm eyeballs. This included removing the unnecessary Mailbox Service that I was exporting and changing the outgoing message to a location inside the repository instead of /home/ryan. Eventually I will use a config file entry to point to the outgoing messsage, but in the mean time at least it will work after a fresh checkout.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-2625617172852538146?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/2625617172852538146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=2625617172852538146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/2625617172852538146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/2625617172852538146'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/07/breaking-rocks-in-hot-sun.html' title='breaking rocks in the hot sun'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-1630575421807874720</id><published>2007-07-06T15:12:00.000-07:00</published><updated>2007-07-06T15:14:48.437-07:00</updated><title type='text'>the internet is nice sometime</title><content type='html'>Tried to get sip-communicator recording all incoming audio to a file today (figured that was a good first step in getting it to record incoming audio to a file some of the time). My first go at it came back with an empty file and a NoDataSinkException. It turns out that someone else had a similar experience and the process for creating a data sink is &lt;a href="http://archives.java.sun.com/cgi-bin/wa?A2=ind0010&amp;L=jmf-interest&amp;D=0&amp;P=49436"&gt;a bit more complicated&lt;/a&gt;. However, it does appear fairly straightforward to create a processor and do a transcode, so hopefully I'll have incoming audio working soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-1630575421807874720?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/1630575421807874720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=1630575421807874720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/1630575421807874720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/1630575421807874720'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/07/internet-is-nice-sometime.html' title='the internet is nice sometime'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-9025853399959068567</id><published>2007-07-05T21:46:00.000-07:00</published><updated>2007-07-05T21:50:11.312-07:00</updated><title type='text'>in your head, in your head. zombie</title><content type='html'>Had a major setback the last few days in the form of a rather nasty sinus/throat/sneeze/cough thing. Tried to sit down and hack a few times but I'm more or less useless in my sick/medicated state. On the bright side it feels like it's about to pass, so I should hopefully be able to get some definite progress on getting an incoming message recorded over the weekend. Hopefully. &lt;br /&gt;&lt;br /&gt;At the very least, I'll try to keep posting more, even if it's a few more days of "too sick to code, drank lots of tea and watched movies all day."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-9025853399959068567?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/9025853399959068567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=9025853399959068567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/9025853399959068567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/9025853399959068567'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/07/in-your-head-in-your-head-zombie.html' title='in your head, in your head. zombie'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-6612812951378064368</id><published>2007-06-28T12:48:00.001-07:00</published><updated>2007-06-28T12:54:10.325-07:00</updated><title type='text'>It works better!</title><content type='html'>Based on a conversation with Emil today, I changed the way that the DataSource is switched over to a file. Instead of changing the default data source, I have sip-communicator make a new instance of MediaControl, instantiate it with the outgoing message file, and place the mapping of that particular mediacontrol to that particular call in a hashmap. Once the call ends, said mapping is removed. In this way, calls that are picked up normally get the usual DataSource while calls that are picked up by the mailbox get the outgoing message. &lt;br /&gt;&lt;br /&gt;And to top it all off, it actually works!&lt;br /&gt;&lt;br /&gt;I suppose that My next goal is to get the input from the remote caller redirected to a file and save the incoming message. Wish me luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-6612812951378064368?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/6612812951378064368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=6612812951378064368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/6612812951378064368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/6612812951378064368'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/it-works-better.html' title='It works better!'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-726319359867981150</id><published>2007-06-27T14:33:00.001-07:00</published><updated>2007-06-27T14:42:15.417-07:00</updated><title type='text'>It Works!</title><content type='html'>I got an outgoing message to play today!&lt;br /&gt;&lt;br /&gt;So what was that insidious bug, lurking around in my code, preventing the file from playing?&lt;br /&gt;&lt;br /&gt;I forgot to tell the Mailbox to quit waiting after it starts to connect the call. It just kept looping, re-starting the call every 10 seconds. &lt;br /&gt;&lt;br /&gt;D'oh. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Right away I noticed that I forgot to set SIP-Communicator's data source back to default after the call ends, so the next call gets connected to the outgoing message even if you click the "connect" button. so fixing that is my next step.&lt;br /&gt;&lt;br /&gt;Luckily, the CallListener interface (that Mailbox already implements) has a CallEnded method that will be called when a call ends. So I will insert code there that will check to see if the data source is set to default and re-initialize it if it is not. &lt;br /&gt;&lt;br /&gt;Easy, right? Ah, the hubris of optimism.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-726319359867981150?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/726319359867981150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=726319359867981150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/726319359867981150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/726319359867981150'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/it-works_27.html' title='It Works!'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-3381008555560551600</id><published>2007-06-25T10:26:00.000-07:00</published><updated>2007-06-25T10:52:31.601-07:00</updated><title type='text'>Datasources in the mist</title><content type='html'>This morning I observed how sip-communicator plays out from a file while in its natural habitat.  I knew that sip-communicator had such functionality from looking at the code, but as until a recent conversation with Emil I hadn't known how to turn it on. turns out that is as easy as adding the following little tidbit to sip-communicator.xml:&lt;br /&gt;&lt;br /&gt;(NOTE: Blogger ate my XML, so I replaced the angle brackets with square brackets. You get the idea)&lt;br /&gt;&lt;br /&gt;[media]&lt;br /&gt;[debug_data_source_url value="file:///home/ryan/Desktop/lostinspace.mov"/]&lt;br /&gt;[/debug_data_source_url]&lt;br /&gt;[/media]&lt;br /&gt;[/impl]&lt;br /&gt;&lt;br /&gt;notice that the &lt;media&gt; tag is nested within the &lt;impl&gt; tag. The namespace resolution for the system properties follows the structure of the xml document.&lt;br /&gt;Some.System.Property.Here corresponds to [some][system][property][here value="stuff"/][/here][/property][/system][/some]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I also installed JMStudio so that I can be sure that if a file doesn't play in the future that it is my fault and not JMF's&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-3381008555560551600?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/3381008555560551600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=3381008555560551600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3381008555560551600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3381008555560551600'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/datasources-in-mist.html' title='Datasources in the mist'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-5100239649371727207</id><published>2007-06-21T11:47:00.000-07:00</published><updated>2007-06-21T11:51:09.697-07:00</updated><title type='text'>Easier than I thought</title><content type='html'>I found a much easier way to load up two instances of sip communicator with different config files (and therefore different sip accounts).&lt;br /&gt;&lt;br /&gt;It turns out that the first place that sip communicator looks for a configuration file is the current directory, IE the directory from which ant is called. So I just have a separate sip-communicator.xml file in my sc-avmailbox directory.&lt;br /&gt;&lt;br /&gt;I'm not going to mention the system that I had in place earlier. Such Kludges ought not be discussed in mixed company.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-5100239649371727207?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/5100239649371727207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=5100239649371727207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/5100239649371727207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/5100239649371727207'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/easier-than-i-thought.html' title='Easier than I thought'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-879136910341603078</id><published>2007-06-20T08:08:00.000-07:00</published><updated>2007-06-20T08:10:11.475-07:00</updated><title type='text'>more little issues</title><content type='html'>spent the morning tracking down some new problems with importing sip-communicator's build.xml. I want to say that I've got it all figured out and I can now focus all my energies on getting the mailbox to work properly, but I've said that before ;)&lt;br /&gt;&lt;br /&gt;Anyway, at least I know that my repository has everything it needs, in case I need to do a spontaneous reformat/reinstall like I did yesterday. Long story short, backups are good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-879136910341603078?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/879136910341603078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=879136910341603078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/879136910341603078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/879136910341603078'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/more-little-issues.html' title='more little issues'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-3570598792063266314</id><published>2007-06-19T16:45:00.000-07:00</published><updated>2007-06-19T16:47:37.154-07:00</updated><title type='text'>I feel like I contributed something</title><content type='html'>My patch got accepted and I can now build sip-communicator and sc-avmailbox using the cvs copy.&lt;br /&gt;&lt;br /&gt;I figured out why files were mysteriously missing from my svn repository today after I did a checkout. It turns out that copying over backed-up files into a blank repository and including the ".svn" folder will make svn think that files are in the repository when they are not. I think I've got it all sorted out though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-3570598792063266314?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/3570598792063266314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=3570598792063266314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3570598792063266314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3570598792063266314'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/i-feel-like-i-contributed-something.html' title='I feel like I contributed something'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-6404228311714164264</id><published>2007-06-14T11:44:00.000-07:00</published><updated>2007-06-14T11:48:03.558-07:00</updated><title type='text'>it works!</title><content type='html'>I sent in what is (hopefully) my first working patch to the dev mailing list today.&lt;br /&gt;&lt;br /&gt;After tracking down a few nit-picky errors, I've got my project set up so that I can update sip-communicator from cvs, update sc-avmailbox from svn, and nothing breaks!&lt;br /&gt;&lt;br /&gt;yet.&lt;br /&gt;&lt;br /&gt;check back in a few days and see if I'm so optimistic.&lt;br /&gt;&lt;br /&gt;Anyway, back to work on getting an outgoing message to play. Last I checked the call to manager.createDataSource was coming back null. Since this method usually throws an exception when it messes up (IE the NoDataSourceException described earlier), I'm not even sure what that means.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-6404228311714164264?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/6404228311714164264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=6404228311714164264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/6404228311714164264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/6404228311714164264'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/it-works.html' title='it works!'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-8988735469259340161</id><published>2007-06-12T21:57:00.000-07:00</published><updated>2007-06-12T22:00:41.414-07:00</updated><title type='text'>Modifying build.xml to be import-able</title><content type='html'>My first hurdle in setting up the parallel repositories for my code and sip-communicator is the fact that the sip-communicator build.xml file does not refer to itself in a way that makes it importable.&lt;br /&gt;&lt;br /&gt;I'd go on and explain, but really the apache documentation on the &lt;a href="http://ant.apache.org/manual/CoreTasks/import.html"&gt;import &lt;/a&gt;function does a much better job. Basically I need to change the file so that input files are taken from /path/to/where/the/buildfile/is/src, but output files go to /path/to/where/the/buildfile/isrun/from/sc-bundles&lt;br /&gt;&lt;br /&gt;Basically this post was written to give me a break in the find- and replacing.&lt;br /&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-8988735469259340161?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/8988735469259340161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=8988735469259340161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/8988735469259340161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/8988735469259340161'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/modifying-buildxml-to-be-import-able.html' title='Modifying build.xml to be import-able'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-6416564466622461104</id><published>2007-06-12T20:49:00.000-07:00</published><updated>2007-06-12T20:54:58.635-07:00</updated><title type='text'>just realized that the blog is quite outdated</title><content type='html'>all that business I was talking about before, forget it.&lt;br /&gt;&lt;br /&gt;Here is the new new strategy for getting my code to work alongside sip-communicator:&lt;br /&gt;&lt;br /&gt;-have both projects stored under /home/ryan/sip, side by side. My code is in /home/ryan/sip/sc-avmailbox and the sip-communicator sources are in /home/ryan/sip/sip-communicator.&lt;br /&gt;&lt;br /&gt;-have the build.xml in sc-avmailbox &lt;a href="http://ant.apache.org/manual/CoreTasks/import.html"&gt;import&lt;/a&gt; the build.xml in sip-communicator, redefining targets as necessary to build the files that I've added to sip-comm&lt;br /&gt;&lt;br /&gt;-using some ant trickery, make sure that for any files in sip-comm that I modified, my version is built instead of the sip-comm version.&lt;br /&gt;&lt;br /&gt;After a conversation with emil, I think that I'm ready to get all the little details in this strategy ironed out. Hopefully after I do so I'll be able to make a template that other people in a similar situation (having to develop an addon while staying current with main) can follow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-6416564466622461104?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/6416564466622461104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=6416564466622461104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/6416564466622461104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/6416564466622461104'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/just-realized-that-blog-is-quite.html' title='just realized that the blog is quite outdated'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-7474928227443841413</id><published>2007-06-04T22:04:00.000-07:00</published><updated>2007-06-04T22:07:51.187-07:00</updated><title type='text'>late breaking news</title><content type='html'>svn is a working, building, complete copy of sip-communicator.&lt;br /&gt;&lt;br /&gt;project website looks like it should.&lt;br /&gt;&lt;br /&gt;I feel so fresh, so clean.&lt;br /&gt;&lt;br /&gt;Anyway, back to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-7474928227443841413?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/7474928227443841413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=7474928227443841413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/7474928227443841413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/7474928227443841413'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/late-breaking-news.html' title='late breaking news'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-3122563440571520743</id><published>2007-06-04T21:58:00.000-07:00</published><updated>2007-06-04T22:04:34.887-07:00</updated><title type='text'>a little progress on both fronts</title><content type='html'>on rebooting the repository:&lt;br /&gt;&lt;br /&gt;Wow, was that a mess. But once I figured out that doing a "cp -R *" on a working copy retains a bunch of '.svn' files that mess up my attempts at cleaning out the repository and starting over. Duh. Ah well, after a bit of wasted time I think I'm waiting through the one great file transfer that will give me a real repository. Let's hope.&lt;br /&gt;&lt;br /&gt;I also figured out that the project's website is copied in the www folder, so the website is currently blank. Should be able to fix that by the end of the night.&lt;br /&gt;&lt;br /&gt;On the code:&lt;br /&gt;I fixed all the compiler/design level problems (I think), but I get a &lt;a href="http://mia.ece.uic.edu/%7Epapers/MediaBot/jmfspecs/javax/media/NoDataSourceException.html"&gt;NoDataSourceException&lt;/a&gt; when I try to set up a sendstream on the outgoing message file. More on that as I get to the bottom of it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-3122563440571520743?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/3122563440571520743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=3122563440571520743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3122563440571520743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3122563440571520743'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/little-progress-on-both-fronts.html' title='a little progress on both fronts'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-7068519096827920926</id><published>2007-06-02T14:15:00.001-07:00</published><updated>2007-06-02T14:18:16.454-07:00</updated><title type='text'>fork this</title><content type='html'>I'm trying to see if my modifications to the MediaService class/interface to handle incoming calls worked, and I've got all sorts of build errors in different parts of the project. My original intent in setting up a build environment was to have an update-able copy of SIP-Communicator alongside any copies of files I'd need to modify in a separate folder connected to my svn repository.&lt;br /&gt;&lt;br /&gt;That was a bad idea.&lt;br /&gt;&lt;br /&gt;Later tonight I am going to make a checkout of sip-communicator, move the necessary files over to my project folder, and do a reboot of my svn repository. I'll worry about merging back into mainline at a later date. Better than worrying about it every time I want to do a build.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-7068519096827920926?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/7068519096827920926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=7068519096827920926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/7068519096827920926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/7068519096827920926'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/06/fork-this.html' title='fork this'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-4716964718804911348</id><published>2007-05-30T11:58:00.000-07:00</published><updated>2007-05-30T12:00:38.280-07:00</updated><title type='text'>while you were out</title><content type='html'>I've been involved in a few different things that have taken me away from hacking for a few days, but I'm back for at least a little more code today.&lt;br /&gt;&lt;br /&gt;Thankfully, Emil wrote a very helpful &lt;a href="https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&amp;amp;msgNo=1507"&gt;post&lt;/a&gt; that has clarified the direction I am taking to send out an outgoing message.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-4716964718804911348?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/4716964718804911348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=4716964718804911348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/4716964718804911348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/4716964718804911348'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/05/while-you-were-out.html' title='while you were out'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-2680939643562860403</id><published>2007-05-20T02:41:00.000-07:00</published><updated>2007-05-20T02:55:09.308-07:00</updated><title type='text'>Education, but not much in the way of results</title><content type='html'>Well, I think I've got a fairly decent graph about how Sip Communicator handles setting up an RTP stream for incoming calls.&lt;br /&gt;&lt;br /&gt;Problem is, I can't touch any of it from my code.&lt;br /&gt;&lt;br /&gt;So implementing CallListener means that the Mailbox bundle can receive CallEvents when a new call comes in. Right now it does that, and properly waits around for the call to go unanswered.&lt;br /&gt;&lt;br /&gt;My plan after that was to expose the RTPManager associated with that call, have it create a new SendStream using a DataSource I set up from the outgoing message file, and then essentially make SIP Communicator think that I had pressed the "answer call button." After all the SIP handshaking, CallManager would start up my SendStream for me and I'd be rocking. Easy Peesy, right?&lt;br /&gt;&lt;br /&gt;not so much. It turns out that the method of CallSipImpl that exposes the CallSession object is not part of the Call interface, meaning I can't get to it from a package import. Same story with CallManager's AnswerCall method - it's not in an interface for a bundle so I can't get to it.&lt;br /&gt;&lt;br /&gt;This is somewhat irritating, for a few reasons&lt;br /&gt;&lt;br /&gt;-Since my experience with SIP Communicator and OSGI is quite limited, I was fooled by the fact that both of said methods have "public" scope.&lt;br /&gt;-This means that neither of these problems show up at compile-time... all I get is a "NoClassDefFound." The compiler knows where these classes are via a simple import, but the runtime classloader can apparently only see the bundles that are listed in the application's manifest, and so trying to cast down to CallSipImpl fails miserably.&lt;br /&gt;-All of this meant that I wasted a load of time trying to figure out what the problem was.&lt;br /&gt;&lt;br /&gt;Ah well, que sedilla sedilla.&lt;br /&gt;&lt;br /&gt;Anyway, I see the road ahead of me going in one of three directions&lt;br /&gt;&lt;br /&gt;-I'm missing a really obvious way to set up a SendStream and I'll be kicking myself once I figure it out&lt;br /&gt;-I need to handle all the SIP Handshaking as well as setting up a new RTP Manager all in the mailbox, which seems like way too much reinventing the wheel&lt;br /&gt;-I need to change my whole design plan and instead focus on modifying the classes that already handle incoming calls. I don't even want to think about that one right now.&lt;br /&gt;&lt;br /&gt;Anyway, day wasn't a total loss as at least I feel like I know what's going on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-2680939643562860403?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/2680939643562860403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=2680939643562860403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/2680939643562860403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/2680939643562860403'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/05/education-but-not-much-in-way-of.html' title='Education, but not much in the way of results'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-2057378912898930129</id><published>2007-05-19T23:03:00.000-07:00</published><updated>2007-05-19T23:06:10.875-07:00</updated><title type='text'>deeper into the muck</title><content type='html'>so it turns out that the process of "connect the call" is substantially more complicated than I had first imagined.  However, I am slowly learning.&lt;br /&gt;&lt;br /&gt;Thanks to a great collection of &lt;a href="http://www.tech-invite.com/Ti-sip-CF3665.html#ref38"&gt;charts&lt;/a&gt; I think I understand the handshaking that normally works in connecting a call via SIP.&lt;br /&gt;&lt;br /&gt;What I am trying to figure out is where along the line SIP-Communicator connects the actual RTP Stream, and how I can emulate that function in the mailbox service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-2057378912898930129?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/2057378912898930129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=2057378912898930129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/2057378912898930129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/2057378912898930129'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/05/deeper-into-muck.html' title='deeper into the muck'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-8521883080334070477</id><published>2007-05-19T16:57:00.000-07:00</published><updated>2007-05-19T16:58:43.582-07:00</updated><title type='text'>It worked</title><content type='html'>I can now answer the phone even while the MailboxService is waiting to answer the phone.&lt;br /&gt;&lt;br /&gt;And it appears that java threads die as I had imagined.&lt;br /&gt;&lt;br /&gt;So all is well. Let's see if I can play back an audio file by the end of the night.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-8521883080334070477?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/8521883080334070477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=8521883080334070477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/8521883080334070477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/8521883080334070477'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/05/it-worked.html' title='It worked'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-6986325979648528558</id><published>2007-05-19T16:13:00.000-07:00</published><updated>2007-05-19T16:34:38.731-07:00</updated><title type='text'>Threads in Sip Communicator</title><content type='html'>Today I am investigating how threading is handled by SIP Communicator.&lt;br /&gt;&lt;br /&gt;So far it appears that the standard way of handling some action that must run concurrently is to&lt;br /&gt;&lt;br /&gt;1) create a nested class following the naming template "DoSomething" (example: LaunchBrowser within  BrowserLauncherImpl.java). Have that class extend Thread (or implement Runnable) and contain what needs to be done in the run() method&lt;br /&gt;2) When the time comes, invoke the necessary code with the new operator.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am going to try and get this system working for waiting for incoming calls.&lt;br /&gt;&lt;br /&gt;Right now my big question is whether a thread will die a proper death once it meets the end of the run() method. Intuitively, that would seem to make sense, but I'm going to try and confirm it in the docs before I code it.&lt;br /&gt;&lt;br /&gt;I just got here, I'm going to try not to mess up the place by leaving threads all over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-6986325979648528558?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/6986325979648528558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=6986325979648528558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/6986325979648528558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/6986325979648528558'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/05/threads-in-sip-communicator.html' title='Threads in Sip Communicator'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-9207370828006364657</id><published>2007-05-15T12:54:00.000-07:00</published><updated>2007-05-15T13:02:54.533-07:00</updated><title type='text'>I built something</title><content type='html'>After far too much frustration and procrastination, I've got the following done:&lt;br /&gt;&lt;br /&gt;-the mailbox service is built and deployed along with SIP-Communicator. Tricky, but the online tutorials proved very helpful&lt;br /&gt;&lt;br /&gt;-the mailbox service now listens for an incoming call. I had it wait 10 seconds and then print out to the console, so the first milestone is complete. Sort of. Right now, when the mailbox service is informed about an incoming call, it loops until either the call is picked up or 10 seconds have elapsed. the problem with this is that the flow of execution is trapped within that method, so you can't actually pick up the call ;)&lt;br /&gt;&lt;br /&gt;Problems to solve for next time - how can I wait for an incoming call while allowing the rest of the application to continue normally. &lt;br /&gt;&lt;br /&gt;Next Milestone: connect the call and play a file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-9207370828006364657?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/9207370828006364657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=9207370828006364657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/9207370828006364657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/9207370828006364657'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/05/i-built-something.html' title='I built something'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-3938404171408733061</id><published>2007-05-09T18:06:00.000-07:00</published><updated>2007-05-09T18:07:45.170-07:00</updated><title type='text'>This is london calling</title><content type='html'>The SIP Communicator devs got me set up with two test accounts on an asterisk server, so now I can make test calls. &lt;br /&gt;&lt;br /&gt;Goal for tomorrow is to get some code listening for call events and integrated into the build.xml&lt;br /&gt;&lt;br /&gt;Wish me luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-3938404171408733061?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/3938404171408733061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=3938404171408733061' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3938404171408733061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3938404171408733061'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/05/this-is-london-calling.html' title='This is london calling'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-1808873635105837525</id><published>2007-05-08T20:55:00.000-07:00</published><updated>2007-05-08T20:58:25.924-07:00</updated><title type='text'>test call numbers</title><content type='html'>Just found a page of &lt;a href="http://www.voip-info.org/wiki/view/Phone+Numbers"&gt;SIP test numbers&lt;/a&gt; that will probably turn out to be pretty useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-1808873635105837525?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/1808873635105837525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=1808873635105837525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/1808873635105837525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/1808873635105837525'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/05/test-call-numbers.html' title='test call numbers'/><author><name>Ryan Ricard</name><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-3631974605130814998.post-3116932017940917586</id><published>2007-05-08T18:22:00.000-07:00</published><updated>2007-05-08T18:33:33.613-07:00</updated><title type='text'>Setting up a test environment</title><content type='html'>So today my goal was to set up a test call so that I can better observe how SIP communicator handles incoming calls. This turned out to be a little more challenging than I had hoped.&lt;br /&gt;&lt;br /&gt;One of the big reasons that I've used Skype in the past instead of an SIP client is that I don't have a public IP address due to the fact that I am behind my campus NAT. So I need to find a way to set up SIP communicator to make a call either over a LAN or over the local machine. Since this is not the normal operation of SIP communicator, there's no obvious way to set this up. I asked for guidance on the dev mailing list, which also served as a decent excuse to introduce myself. &lt;br /&gt;&lt;br /&gt;Let's hope that I can figure this nonsense out tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3631974605130814998-3116932017940917586?l=sc-avmailbox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sc-avmailbox.blogspot.com/feeds/3116932017940917586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3631974605130814998&amp;postID=3116932017940917586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3116932017940917586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3631974605130814998/posts/default/3116932017940917586'/><link rel='alternate' type='text/html' href='http://sc-avmailbox.blogspot.com/2007/05/setting-up-test-environment.html' title='Setting up a test environment'/><author><name>Ryan Ricard</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
