<?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-20489788</id><updated>2011-04-21T19:23:19.475-04:00</updated><category term='deployment'/><category term='plone'/><category term='mozilla'/><category term='tuneup'/><category term='xul'/><category term='psps2008'/><title type='text'>almightyfoo</title><subtitle type='html'>Everyone needs a little more memory so I'm going to dump mine here.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20489788.post-4718925117720247603</id><published>2008-11-14T14:19:00.001-05:00</published><updated>2008-11-14T14:19:52.135-05:00</updated><title type='text'></title><content type='html'>getting down to business on my plone PLIP to fix the INavigationRoot issues&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-4718925117720247603?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/4718925117720247603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=4718925117720247603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/4718925117720247603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/4718925117720247603'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2008/11/getting-down-to-business-on-my-plone.html' title=''/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-752457783294863007</id><published>2008-10-19T20:59:00.003-04:00</published><updated>2008-10-19T21:05:54.828-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuneup'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>"Menu du Jour" for 6th Plone Tune-Up - Oct. 24, 2008</title><content type='html'>You all enjoyed the lightening talk, now is the time to act my friends!&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;6TH PLONE TUNE-UP&lt;br /&gt;Friday, Oct. 24th, 2008&lt;br /&gt;7am-6pm (US ET)/ 13h-Midnight (GMT +1)&lt;br /&gt;At #plone-tuneup on irc.freenode.net&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;This week, the Plone Tune-Up Team is pleased to announce an appetizing list of tickets that comes with a good amount of "newbie" and "greenbelt" issues. One "blackbelt" ticket has also been included for those who like it hot.&lt;br /&gt;&lt;br /&gt;Here's the menu for this coming Friday, Oct. 24th:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/6960"&gt;#6960    Collection criteria XMLHttpRequest calls are broken&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/6991"&gt;#6991    Full review list | Select: All | selection is improper...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/7248"&gt;#7248    auth_cookie_length doesn't take affect in Plone 3.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/7559"&gt;#7559    Cannot add form validators because of button name&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/7580"&gt;#7580    validators don't work on reference fields&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/7581"&gt;#7581    FileField.getIndexable() returns 'None' if empty&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/7707"&gt;#7707    Specific permissions created for iterate not being implemented...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/7949"&gt;#7949    Headings containing '@' display as URL in table of contents (ie7)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/8228"&gt;#8228    ATReferenceBrowserWidget batch may not work with IE6 and IE7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/8371"&gt;#8371    Search on @@sharing caused UnicodeDecodeError when full name...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/8417"&gt;#8417    My Folder link missing from personal toolbar (workaround included)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/8425"&gt;#8425    Error when must_change_password set to true&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/8435"&gt;#8435    nuplone.css: "ul.portletNavigationTree" should be "dl.portletNavi...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/8438"&gt;#8438    member.css: syntax error&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://dev.plone.org/plone/ticket/8614"&gt;#8614    event_view.pt: Category name containing an ampersand not found...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get the full list of ingredients at: &lt;a href="http://tinyurl.com/6g77wh"&gt;http://tinyurl.com/6g77wh&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you have any question, please feel free to contact &lt;a href="mailto:gabrielle@sixfeetup.com"&gt;gabrielle@sixfeetup.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;ABOUT PLONE TUNE-UPS:&lt;br /&gt;Plone Tune-Ups are regular online events that aim at addressing tickets in the Plone issue tracker and advancing Plone in general. It is a great opportunity for all to work together and discuss development tricks with influential Plonistas.&lt;br /&gt;&lt;br /&gt;We look forward to seeing you all on irc this coming Friday!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-752457783294863007?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/752457783294863007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=752457783294863007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/752457783294863007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/752457783294863007'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2008/10/menu-du-jour-for-6th-plone-tune-up-oct.html' title='&quot;Menu du Jour&quot; for 6th Plone Tune-Up - Oct. 24, 2008'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-9191537007077265818</id><published>2008-10-15T23:07:00.002-04:00</published><updated>2008-10-15T23:26:16.193-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Coming to terms with the 1000 horsepower Plone CMS</title><content type='html'>&lt;div class="wikipage searchable"&gt;Sometimes I have to admit I don't put myself in the shoes of the folks that are new to Plone. Today I was helping someone get started and got a full dose of what approaching Plone from the outside looks like. For the traditional LAMP stack developer, moving to the Plone stack is like upgrading from a Honda Civic to a Bugatti Veyron. Once you make that leap you have 10 radiators under the hood versus just one in the Civic. Not only that, you are getting nearly 1000 horsepower to deal with too. Try keeping that on the road.  &lt;p&gt;The typical LAMP developer has few moving parts, but just to get started with Plone there is a huge stack to wade through. Once you get past just the software stack alone, you still have the application server, potentially a cluster, load balancers, reverse HTTP accelerators, SSIs and rewrite rules to wade through if you are going to do the deployment on a large scale. Luckily there are some new tools out there to help simplify that like buildout and setuptools. Unfortunately there isn't enough good documentation about all the options available. &lt;/p&gt; &lt;p&gt;So what on the outset may look like a kludgy way to set things up, really is an enterprise solution which has nearly endless complexity. How do we bring new developers into the fold when getting started requires you to learn ZPT, DTML, ZCML, Python, Archetypes, Zope's Component Architecture and then all the technologies to deploy it. The upside is that you have the equivalent of that 1000 horsepower available to you for managing content and delivering it on a large scale. Once you get to that scale, Plone is very comfortable solving problems, then the LAMP stack probably starts to look very daunting as well. We just start addressing these issues earlier in the process. Luckily you don't need to pay the Veyron price tag to do it. &lt;/p&gt; &lt;p&gt;In an effort to help with the mystical deployment art of a Plone server, Six Feet Up is presenting the &lt;a href="http://www.sixfeetup.com/dw08"&gt;Plone Deployment Workshop&lt;/a&gt;. We will be tackling many of these tough questions during the two days of the workshop on November 20th and 21st here in Indianapolis. We are keeping it inexpensive so we can help reach more folks and the early bird is ending this week so get out there and sign up! &lt;/p&gt; &lt;p&gt;More information about the conference along with the full schedule of presentations, speakers bios, and social events is available online at: &lt;a class="ext-link" href="http://www.sixfeetup.com/dw08"&gt;&lt;span class="icon"&gt;http://www.sixfeetup.com/dw08&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;                          &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-9191537007077265818?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/9191537007077265818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=9191537007077265818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/9191537007077265818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/9191537007077265818'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2008/10/coming-to-terms-with-1000-horsepower.html' title='Coming to terms with the 1000 horsepower Plone CMS'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-7895160326510239330</id><published>2008-07-31T16:36:00.002-04:00</published><updated>2008-07-31T16:45:04.777-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xul'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>XULRunner --install-app command line options</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;&lt;span style="font-family: trebuchet ms;"&gt;Sometimes command line options are a bit hard to "get".  They are even worse when the help is vague.  I just ran into this and couldn't find anyplace online that described how this command actually worked.  I'm posting this here just as a quick ref for me and anyone else how has wondered about the --install-app flag of the xulrunner-bin.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Here is the help that comes with the XULRunner:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;chimera-lite% /Library/Frameworks/XUL.framework/xulrunner-bin&lt;br /&gt;Mozilla XULRunner 1.9&lt;br /&gt;&lt;br /&gt;Usage: xulrunner [OPTIONS]&lt;br /&gt;       xulrunner APP-FILE [APP-OPTIONS...]&lt;br /&gt;&lt;br /&gt;OPTIONS&lt;br /&gt;      --app                  specify APP-FILE (optional)&lt;br /&gt;  -h, --help                 show this message&lt;br /&gt;  -v, --version              show version&lt;br /&gt;  --gre-version              print the GRE version string on stdout&lt;br /&gt;  --register-global          register this GRE in the machine registry&lt;br /&gt;  --register-user            register this GRE in the user registry&lt;br /&gt;  --unregister-global        unregister this GRE formerly registered with&lt;br /&gt;                             --register-global&lt;br /&gt;  --unregister-user          unregister this GRE formely registered with&lt;br /&gt;                             --register-user&lt;br /&gt;  --find-gre &lt;version&gt;       Find a GRE with version &lt;version&gt; and print&lt;br /&gt;                             the path on stdout&lt;br /&gt;  --install-app &lt;application&gt; [&lt;destination&gt; [&lt;directoryname&gt;]]&lt;br /&gt;                             Install a XUL application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;If you just run it like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/Library/Frameworks/XUL.framework/xulrunner-bin --install-app .&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;It is going to drop your app in a folder in /Applications with an id of "Vendor" as specified in your application.ini.  What do you do if you want it to create your app in another place or even create the installed app with a difference name other than the "Name" configured in application.ini.&lt;br /&gt;&lt;br /&gt;Here is an example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;chimera-lite% /Library/Frameworks/XUL.framework/xulrunner-bin --install-app . ../../xul foo.app&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;This will create the program as foo.app in a folder 2 levels up called xul.  There you have it, it is as easy as that.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-7895160326510239330?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/7895160326510239330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=7895160326510239330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/7895160326510239330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/7895160326510239330'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2008/07/xulrunner-install-app-command-line.html' title='XULRunner --install-app command line options'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-7292970555901875979</id><published>2008-03-07T17:12:00.003-05:00</published><updated>2008-03-07T17:24:03.808-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xul'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>How to locally change a remote RDF datasource loaded from a HTTP URL</title><content type='html'>So I've struggled with this problem a while back and forgot completely about it and struggled again with it.  You can't do anything with a nsIRDFRemoteDataSource loaded via HTTP.  It is printed as plain as day on this &lt;a href="http://www.xulplanet.com/tutorials/mozsdk/rdfsrcdetails.php"&gt;page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; RDF/XML datasources may be loaded from any type of URL. Currently, only those loaded from file URLs (URLs that begin with 'file:') may be modified with the RDF modification APIs. One possible workaround for modifying remote RDF sources is to load the RDF and then add the data into a separate &lt;span class="aval"&gt;in-memory-datasource&lt;/span&gt;.&lt;/blockquote&gt;But of course it doesn't give an example of doing this workaround.&lt;br /&gt;&lt;br /&gt;Here is what I came up with based on some snippets I found on the web and put them together to basically take the data source and serialize it to a string and the parse it into an in-memory-datasource.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function getInMemoryDataSource(url) {&lt;br /&gt;  var outputStream = {&lt;br /&gt;    data: "",&lt;br /&gt;    close : function(){},&lt;br /&gt;    flush : function(){},&lt;br /&gt;    write : function (buffer,count){&lt;br /&gt;      this.data += buffer;&lt;br /&gt;      return count;&lt;br /&gt;    },&lt;br /&gt;    writeFrom : function (stream,count){},&lt;br /&gt;    isNonBlocking: false&lt;br /&gt;  };&lt;br /&gt;  var mem = '@mozilla.org/rdf/datasource;1?name=in-memory-datasource';&lt;br /&gt;  var datasource = Components.classes[mem].createInstance(Components.interfaces.nsIRDFDataSource);&lt;br /&gt;  var ds = LOCAL_RDF.GetDataSourceBlocking(url);&lt;br /&gt;  ds.QueryInterface(Components.interfaces.nsIRDFXMLSource);&lt;br /&gt;  ds.Serialize(outputStream);&lt;br /&gt;  // Used to create a URI below&lt;br /&gt;  var ios = Components.classes["@mozilla.org/network/io-service;1"].&lt;br /&gt;        getService(Components.interfaces.nsIIOService);&lt;br /&gt;  var xmlParser = '@mozilla.org/rdf/xml-parser;1';&lt;br /&gt;  var parser = Components.classes[xmlParser].&lt;br /&gt;           createInstance(Components.interfaces.nsIRDFXMLParser);&lt;br /&gt;  var uri = ios.newURI(url, null, null);&lt;br /&gt;  // Entire RDF File stored in a string&lt;br /&gt;  parser.parseString(datasource,uri,outputStream.data);&lt;br /&gt;  return datasource;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;This will take in the URL you wanted to load and give you back a nsIRDFDataSource that you can now manipulate.  If it is attached to a XUL template it will now update the template as it notices changes in the datasource like it should.&lt;br /&gt;&lt;br /&gt;It really shouldn't be this hard, but when it works it is nice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-7292970555901875979?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/7292970555901875979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=7292970555901875979' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/7292970555901875979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/7292970555901875979'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2008/03/how-to-locally-change-remote-rdf.html' title='How to locally change a remote RDF datasource loaded from a HTTP URL'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-7190598627044815557</id><published>2008-02-15T16:09:00.001-05:00</published><updated>2008-02-15T16:11:06.070-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xul'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Using HTML CSS Selectors in XUL</title><content type='html'>When messing with XUL and you are using an alternate namespace for your elements, you need to define that name space in your CSS or nothing will happen.  For example when using &lt;span style="font-family: courier new;"&gt;html:a&lt;/span&gt; in your XUL make sure your style sheet has this at the top:  &lt;span style="font-family: courier new;"&gt;@namespace html url("http://www.w3.org/1999/xhtml")&lt;/span&gt;;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-7190598627044815557?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/7190598627044815557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=7190598627044815557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/7190598627044815557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/7190598627044815557'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2008/02/using-html-css-selectors-in-xul.html' title='Using HTML CSS Selectors in XUL'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-2439064624309845821</id><published>2008-02-13T05:57:00.002-05:00</published><updated>2008-02-14T07:18:51.724-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='psps2008'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Plone Planning Summit 2008 Wrapup</title><content type='html'>The Plone Community is an outstanding one and an amazing entity to be a part of.  As many people know the Plone Strategic Planning Summit was this last weekend at the Googleplex.  It was an amazing event, but you may not have heard much from the participants while we were there.  This was because that from the time I landed until the time I took off on Monday morning, I was surrounded by Plone folks for every waking minute except for the 2 hours I got to go see my friends new baby in Redwood City.&lt;br /&gt;&lt;br /&gt;Almost by design, the room we were holding the summit in had no tables, no chairs and almost no outlets.  This meant we were able to very effectively disconnect from our laptops for 3 full days of putting it all out on this thing people call "paper".  Then in the evenings we would gather in various establishments, hotel rooms or by the pool and get down to enjoying just being present with the rest of the participants.&lt;br /&gt;&lt;br /&gt;Jon Stahl did an amazing job of keeping us 100% engaged for nearly 12 hours the first day, 8 hours the second and for a good 6 hours on the last day.  I can't image that is an easy job to do and required a tremendous amount of planning.  This has been huge.  We were able to harness the thoughts and insight of each person who was there. Due to the amount of discussion leading up to the event, even the people not present were represented through their blog postings, email posts or lists sent with the attendees.  There wasn't much left out in my opinion.&lt;br /&gt;&lt;br /&gt;The first two days were spent completely framing the state of things and what people thought about moving forward.  We carefully made no "decisions" during these days or spoke of any implementation details.  That really helped keeping the group from bogging down on the small stuff.  Instead, the ideas were flowing easily between the participants and made their way effortlessly to the hundreds of flip chart pages that were stuck to the wall over the course of the weekend.&lt;br /&gt;&lt;br /&gt;The last day was about actually doing something.  Through the process of extracting and distilling down the massive scrawling on the wall, we turned these ideas into concrete tasks that we can put a single person in charge of.  Then, we did just that.  Each task got a champion and off we went to get things done.&lt;br /&gt;&lt;br /&gt;The old adage is true with this group.  When we work, we work hard, but when we play, we play hard too.  For all of the intense work we put in, we also had a great time playing together until 3:00 AM most evenings.  I look forward to the next gathering, so the rest of you had better get in training so you can keep up!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-2439064624309845821?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/2439064624309845821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=2439064624309845821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/2439064624309845821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/2439064624309845821'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2008/02/plone-planning-summit-2008-wrapup.html' title='Plone Planning Summit 2008 Wrapup'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-8003712105909574025</id><published>2007-07-26T10:38:00.001-04:00</published><updated>2007-07-26T11:50:22.416-04:00</updated><title type='text'>Western Digital Offering Up Green Hard Drives</title><content type='html'>The green movement is really catching on and now in a way I can really appreciate!  We have a lot of hard drives in our operation and if we could cut the energy usage 4-5 watts per drive we'd save some serious $$.&lt;br /&gt;&lt;br /&gt;Western Digital appears to have the answer to our needs now.  They are introducing &lt;a href="http://www.wdc.com/en/company/greenpower.asp"&gt;GreenPower Hard Drives&lt;/a&gt;.  I hope that Dell start offering these in their green server line and we can start putting some of these into production soon.&lt;br /&gt;&lt;br /&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align:right;font-size:10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/environment" rel="tag"&gt;environment&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/hardware" rel="tag"&gt;hardware&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-8003712105909574025?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/8003712105909574025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=8003712105909574025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/8003712105909574025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/8003712105909574025'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2007/07/western-digital-offering-up-green-hard.html' title='Western Digital Offering Up Green Hard Drives'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-113761903103984474</id><published>2006-01-18T16:04:00.001-05:00</published><updated>2008-02-13T06:01:57.078-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Simple Zope Clustering with Squid and Pound</title><content type='html'>Finally got a simple Squid/Pound/Zope setup running.  There are so many howtos out there on how this is supposed to be setup, but each seem to be missing one part or adds in some extra complexities that aren't really needed.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pound is super simple to setup&lt;/li&gt;&lt;li&gt;ZEO is a little more difficult&lt;/li&gt;&lt;li&gt;Squid is the most complex&lt;/li&gt;&lt;/ol&gt;In this setup no redirector script is needed for squid since we can handle the mappings in the VirtualHostMonster mappings tab.  We have to run pound and squid on the same port, but different interfaces so the url rewriting does the right thing.  VirtualHostMonster itself won't rewrite the ports without some kind of rewriting done beforehand.  This is ok since we can just bind Pound to the loopback interface and the squid to the external interface.&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/7409/688/1600/ZopeSquidPoundArch.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7409/688/320/ZopeSquidPoundArch.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:15;"&gt;&lt;strong&gt;For reference I took the stock stock squid settings did the following:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;changed :&lt;br /&gt;http_access deny all&lt;br /&gt;to:&lt;br /&gt;http_access allow all&lt;br /&gt;&lt;br /&gt;added:&lt;br /&gt;http_port [external_ip]:80&lt;br /&gt;httpd_accel_host 127.0.0.1&lt;br /&gt;httpd_accel_port 80&lt;br /&gt;httpd_accel_single_host on&lt;br /&gt;httpd_accel_with_proxy on&lt;br /&gt;httpd_accel_uses_host_header on&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:15;"&gt;&lt;strong&gt;Pound's config is simple also:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ListenHTTP 127.0.0.1,80&lt;br /&gt;User zope&lt;br /&gt;Group zope&lt;br /&gt;LogLevel 1&lt;br /&gt;UrlGroup ".*"&lt;br /&gt;BackEnd 127.0.0.1,51003,1&lt;br /&gt;BackEnd 127.0.0.1,51004,1&lt;br /&gt;EndGroup&lt;br /&gt;&lt;br /&gt;All that is left is to configure 2 ZEO Clients and a ZEO Storage Server to answer the requests.  In one of the ZEO Clients go into the root VirtualHostMonster and on the mappings tab add one entry per domain name and site you want to serve.&lt;br /&gt;&lt;br /&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align: right; font-size: 10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/deployment" rel="tag"&gt;deployment&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/python" rel="tag"&gt;python&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/zope" rel="tag"&gt;zope&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-113761903103984474?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/113761903103984474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=113761903103984474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113761903103984474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113761903103984474'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2006/01/simple-zope-clustering-with-squid-and.html' title='Simple Zope Clustering with Squid and Pound'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-113648058544051977</id><published>2006-01-05T12:03:00.000-05:00</published><updated>2007-07-26T11:51:43.862-04:00</updated><title type='text'>Multiple BroadVoice lines again, guess I didn't learn it all the other
night</title><content type='html'>&lt;p class="mobile-post"&gt;So I found today that calls coming into our asterisk from BroadVoice &lt;br /&gt;were only being picked up by the last BroadVoice peer that I had &lt;br /&gt;listed in my sip.conf.  So I tried a few things here and there and &lt;br /&gt;ended up making another entry in sip.conf for all incoming BroadVoice &lt;br /&gt;calls to use and then direct them to a special [from-broadvoice] &lt;br /&gt;context in extensions.  From there I direct calls to the correct &lt;br /&gt;contexts.&lt;/p&gt;&lt;p class="mobile-post"&gt;So the basic setup I have is like this:&lt;/p&gt;&lt;p class="mobile-post"&gt;1 peer for each BV account with their credentials so they each make &lt;br /&gt;outgoing calls on their own BV account&lt;br /&gt;1 register for each BV account with their credentials so incoming &lt;br /&gt;calls come to our asterisk server&lt;br /&gt;1 general BV peer for incoming BV calls with a context in extensions &lt;br /&gt;to direct calls correctly&lt;/p&gt;&lt;p class="mobile-post"&gt;Seems to work so far.  If anyone knows of a better way leave a &lt;br /&gt;comment and I'll update the voip-info.org page once this has road &lt;br /&gt;tested for a bit.&lt;/p&gt;&lt;br /&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align:right;font-size:10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/voip" rel="tag"&gt;voip&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-113648058544051977?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/113648058544051977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=113648058544051977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113648058544051977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113648058544051977'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2006/01/multiple-broadvoice-lines-again-guess.html' title='Multiple BroadVoice lines again, guess I didn&amp;#39;t learn it all the other&#xA;night'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-113634613793125646</id><published>2006-01-03T22:38:00.000-05:00</published><updated>2007-07-26T11:51:52.977-04:00</updated><title type='text'>Setting up multiple BroadVoice accounts, or I learned a lot last night,
Part 4</title><content type='html'>So now the office building is growing and we have multiple tenants who I have gotten to signup for a &lt;a href="http://www.broadvoice.com"&gt;BroadVoice&lt;/a&gt; account.  Now the challenge of setting them all up in one &lt;a href="http://www.asterisk.org/"&gt;Asterisk&lt;/a&gt; server.  I have been running one line on there for the last couple month very easily by following a combination of the instructions on the &lt;a href="http://www.broadvoice.com/"&gt;BroadVoice&lt;/a&gt; website and some instructions I have found on &lt;a href="http://www.voip-info.org/"&gt;voip-info.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The problem with these instructions are that they only describe setting up one line and the configurations are a bit cryptic.  To help any others out there here are my example instructions for multiple sip registrations using BraodVoice and Asterisk.&lt;br /&gt;&lt;br /&gt;You will need a register line for each BroadVoice line:&lt;br /&gt;&lt;br /&gt;register =&amp;gt; 5555551234@sip.broadvoice.com:mysecret:5555551234@line1-broadvoice/5555551234&lt;br /&gt;register =&amp;gt; 5555551235@sip.broadvoice.com:mysecret:5555551235@line2-broadvoice/5555551235&lt;br /&gt;&lt;br /&gt;Then you need an entry for each peer:&lt;br /&gt;&lt;br /&gt;[line1-broadvoice]&lt;br /&gt;authname=5555551234&lt;br /&gt;canreinvite=no&lt;br /&gt;context=line1&lt;br /&gt;dtmf=inband&lt;br /&gt;dtmfmode=inband&lt;br /&gt;fromdomain=sip.broadvoice.com&lt;br /&gt;fromuser=5555551234&lt;br /&gt;host=sip.broadvoice.com&lt;br /&gt;insecure=very&lt;br /&gt;qualify=yes&lt;br /&gt;secret=mysecret&lt;br /&gt;type=peer&lt;br /&gt;user=phone&lt;br /&gt;username=5555551234&lt;br /&gt;&lt;br /&gt;[line2-broadvoice]&lt;br /&gt;authname=5555551235&lt;br /&gt;canreinvite=no&lt;br /&gt;context=line2&lt;br /&gt;dtmf=inband&lt;br /&gt;dtmfmode=inband&lt;br /&gt;fromdomain=sip.broadvoice.com&lt;br /&gt;fromuser=5555551235&lt;br /&gt;host=sip.broadvoice.com&lt;br /&gt;insecure=very&lt;br /&gt;qualify=yes&lt;br /&gt;secret=mysecret&lt;br /&gt;type=peer&lt;br /&gt;user=phone&lt;br /&gt;username=5555551235&lt;br /&gt;&lt;br /&gt;Once you have that setup you can now need to setup the contexts in extensions.conf:&lt;br /&gt;&lt;br /&gt;[line1]&lt;br /&gt;include =&amp;gt; line1out&lt;br /&gt;exten =&amp;gt; 5555551234,1,Macro(stdexten,${EXTEN},SIP/${EXTEN})&lt;br /&gt;&lt;br /&gt;[line1out]&lt;br /&gt;exten =&amp;gt; _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}}@line1-broadvoice,30)&lt;br /&gt;exten =&amp;gt; _1NXXNXXXXXX,2,Congestion()&lt;br /&gt;exten =&amp;gt; _1NXXNXXXXXX,102,Busy()&lt;br /&gt;exten =&amp;gt; _011.,1,Dial(SIP/${EXTEN}@line1-broadvoice,30)&lt;br /&gt;exten =&amp;gt; _011.,2,Congestion()&lt;br /&gt;exten =&amp;gt; _011.,102,Busy()&lt;br /&gt;&lt;br /&gt;[line2]&lt;br /&gt;include =&amp;gt; line2out&lt;br /&gt;exten =&amp;gt; 5555551235,1,Macro(stdexten,${EXTEN},SIP/${EXTEN})&lt;br /&gt;&lt;br /&gt;[line2out]&lt;br /&gt;exten =&amp;gt; _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}}@line1-broadvoice,30)&lt;br /&gt;exten =&amp;gt; _1NXXNXXXXXX,2,Congestion()&lt;br /&gt;exten =&amp;gt; _1NXXNXXXXXX,102,Busy()&lt;br /&gt;exten =&amp;gt; _011.,1,Dial(SIP/${EXTEN}@line1-broadvoice,30)&lt;br /&gt;exten =&amp;gt; _011.,2,Congestion()&lt;br /&gt;exten =&amp;gt; _011.,102,Busy()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These are greatly simplified, but they should help anyone else wanting to use multiple lines and wasn't sure of the syntax.  These are all working on an Asterisk 1.2.1 system running on my favorite OS &lt;a href="http://www.freebsd.org/"&gt;FreeBSD&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align:right;font-size:10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/voip" rel="tag"&gt;voip&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-113634613793125646?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/113634613793125646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=113634613793125646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113634613793125646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113634613793125646'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2006/01/setting-up-multiple-broadvoice_03.html' title='Setting up multiple BroadVoice accounts, or I learned a lot last night,&#xA;Part 4'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-113631579722779307</id><published>2006-01-03T14:08:00.000-05:00</published><updated>2007-07-26T11:52:17.886-04:00</updated><title type='text'>Vonage doesn't react well to round robin NAT, or I learned a lot last
night, part 3</title><content type='html'>So now we have our nice shiney network up and running.  I go to test the phones that are hooked up to our asterisk box and I can't call out on any of our external lines.  This is for another posting, but we basically have to have our Vonage Cisco ATA-186's plugged into our network and then the RJ-11 from those go into a Digium TDM400 card with 4 FXO ports on it.  Crazy hack, but vonage won't let you connect directly to thier service.&lt;br /&gt;&lt;br /&gt;Hope that this isn't a problem with the network internally I take a regular phone down and conenct it directly to the vonage box and I get the same problem.   At least that is one relief.  Now I get on the phone with Vonage tech support (using our BroadVoice account) and spend over an hour and they can't figure it out.  The boxes connect and register.  You can dial and it rings.  They can call in and they ring, but when you pick up there is no audio.  So after the call dropped for the second time I found something interesting in my NAT tables.  Connections were being given different external IP addresses for each connection.&lt;br /&gt;&lt;br /&gt;Here is something I did not know and only happened upon it by accident.  Setting up round-robin NAT is super easy with PF.   I had put all of our external IP addresses on the one exteral interface and PF just started using them all as a pool.  Instantly scalable, but not very SIP happy.  More later on why BroadVoice was working and vonage was not.&lt;br /&gt;&lt;br /&gt;So using PF we can keep this new found functionality, but we can tell the devices to be sticky.  So once they go out on one interface stay there.  That should look like this now:&lt;br /&gt;&lt;br /&gt;nat on $ext_if from $sfu_net to any -&amp;gt; $ext_if round-robin sticky-address&lt;br /&gt;&lt;br /&gt;Flushed the NAT table and rebooted the ATAs and viola I had calls working again!  The reason BroadVoice was working was the fact we are using bi-directional NAT for the boxes in our DMZ so it was using a dedicated IP on the external interface for all of its traffic.  For the record that is done like this:&lt;br /&gt;&lt;br /&gt;binat on $ext_if from $asterisk_int to any -&amp;gt; $asterisk_ext&lt;br /&gt;&lt;br /&gt;So we now have VoIP working again internally and externally.&lt;br /&gt;&lt;br /&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align:right;font-size:10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/networking" rel="tag"&gt;networking&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/voip" rel="tag"&gt;voip&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-113631579722779307?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/113631579722779307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=113631579722779307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113631579722779307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113631579722779307'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2006/01/vonage-doesnt-react-well-to-round.html' title='Vonage doesn&amp;#39;t react well to round robin NAT, or I learned a lot last&#xA;night, part 3'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-113631526744857287</id><published>2006-01-03T13:54:00.000-05:00</published><updated>2007-07-26T11:52:28.908-04:00</updated><title type='text'>FreeBSD is an amazing OS, or I learned a lot last night, Part 2</title><content type='html'>One thing I have learned for sure is something I always thought was true.  &lt;a href="http://www.freebsd.org/"&gt;FreeBSD&lt;/a&gt; is an amazing operating system.  It is clean, lean and powerful.  We just turned an old Dell Precision 410 into a network router/firewall with 4 NICs and many many vlans.  That part was easy except for the cheap NICs I have been using.&lt;br /&gt;&lt;br /&gt;The onboard NIC had to be disabled because it was conflicting with the PCI ones.  I had purchased 2 identical Linksys cards at Fry's only to get back to the server room to find they are completely different cards.  One was a v2 and the other was a v5.1.  The v5.1 works great, but the v2 was timing out under any network load.&lt;br /&gt;&lt;br /&gt;So out it came and in went another NIC I had rescued from an old machine.   Bingo!  except that the driver wasn't compiled into the kernel.  FreeBSD to the rescue.  I just kldload'd the driver up and then added it to loader.conf like so:&lt;br /&gt;&lt;br /&gt;if_sis_load="YES"&lt;br /&gt;&lt;br /&gt;and we are back on the road again.  After a little testing all is well and the cards are all playing happily along.  One thing I would change about this would be to get a good brand name server grade multi-port NIC.  The box has one already and it works flawlessly.  Next time I won't even start this without one.&lt;br /&gt;&lt;br /&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align:right;font-size:10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/networking" rel="tag"&gt;networking&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/voip" rel="tag"&gt;voip&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-113631526744857287?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/113631526744857287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=113631526744857287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113631526744857287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113631526744857287'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2006/01/freebsd-is-amazing-os-or-i-learned-lot.html' title='FreeBSD is an amazing OS, or I learned a lot last night, Part 2'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20489788.post-113631443695808059</id><published>2006-01-03T13:51:00.000-05:00</published><updated>2007-07-26T11:52:37.488-04:00</updated><title type='text'>I learned a lot last night, part 1</title><content type='html'>We have been reconfiguring the office networks here at the Six Feet Up HQ.  We now have other tenants in the building so I wanted to partition them into seperate vlans.  This is not a task for the weak at heart or those with out professional training  :-)&lt;br /&gt;&lt;br /&gt;To try to capture some of my wrong turns and put some tips out there for others to take advantage of I wanted to start blogging them here.  There will be many more parts to come as this was a long process.&lt;br /&gt;&lt;br /&gt;&lt;!-- technorati tags start --&gt;&lt;p style="text-align:right;font-size:10px;"&gt;Technorati Tags: &lt;a href="http://www.technorati.com/tag/networking" rel="tag"&gt;networking&lt;/a&gt;, &lt;a href="http://www.technorati.com/tag/voip" rel="tag"&gt;voip&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20489788-113631443695808059?l=almightyfoo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://almightyfoo.blogspot.com/feeds/113631443695808059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20489788&amp;postID=113631443695808059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113631443695808059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20489788/posts/default/113631443695808059'/><link rel='alternate' type='text/html' href='http://almightyfoo.blogspot.com/2006/01/i-learned-lot-last-night-part-1.html' title='I learned a lot last night, part 1'/><author><name>Calvin</name><uri>http://www.blogger.com/profile/07233407772416356493</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://launchpadlibrarian.net/7405987/Cal%20192%20X%20192.jpg'/></author><thr:total>0</thr:total></entry></feed>
