<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>the news &#187; Daily Dose</title>
	<atom:link href="http://www.d-man.org/news/category/dailydose/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.d-man.org/news</link>
	<description>for  all things D</description>
	<lastBuildDate>Fri, 28 Oct 2011 04:35:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>My Experience Visiting Occupy SF</title>
		<link>http://www.d-man.org/news/2011/10/28/146/</link>
		<comments>http://www.d-man.org/news/2011/10/28/146/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 04:29:00 +0000</pubDate>
		<dc:creator>Darren</dc:creator>
				<category><![CDATA[Daily Dose]]></category>

		<guid isPermaLink="false">http://www.d-man.org/news/?p=146</guid>
		<description><![CDATA[I have been looking for a good excuse to bring this blog back to life &#8211; something that really moved me. Tonight, I found it. a Desire to Understand After the news and images I&#8217;ve been seeing from around the world about Occupy SF, I decided to stop by and check it out. I mean, [...]]]></description>
			<content:encoded><![CDATA[<p>I have been looking for a good excuse to bring this blog back to life &#8211; something that really moved me. Tonight, I found it.</p>
<p><strong>a Desire to Understand</strong></p>
<p>After the news and images I&#8217;ve been seeing from around the world about Occupy SF, I decided to stop by and check it out. I mean, I don&#8217;t really believe most of what I see on TV, but this thing seems to be getting an awful lot of attention &#8211; so why not? I like learning from other people and was curious what this was really all about.</p>
<p>I honestly was a bit nervous to attend the event &#8211; I fully expected angry police, crazy homeless people, a dirty tent-filled city and loud noise. I was completely off base (no thanks to you KTVU!)</p>
<p>This was one of the most peaceful, well organized events I could have ever imagined considering it was a &#8220;general gathering.&#8221; When I arrived at Occupy SF there was a welcome/info table which had flyers for all sorts of causes &#8211; all of them were generally geared towards supporting low and middle-income people. Not-for-profit banks, a taxicab collective help program, resources for those who needed low-cost loans. There were flyers on why people were there &#8211; signs and graphs showing the disparity between low, middle, high and REALLY high income households.</p>
<p>The crowd itself was also something to be noted. There were definitely the cliche &#8220;dirty hippies&#8221; but the large majority of people appeared to look like folks who you and I probably go to work with. Normal, reasonably dressed, well spoken, passionate folks. Not what I expected at all.</p>
<p><strong>the Purpose</strong></p>
<p>I arrived during what was called General Assembly &#8211; a period where a list of things people wanted to talk about is reviewed and people are allowed to speak in order to ask questions, propose ideas and vote on topics. It was extremely orderly and well run and ALL of the issues revolved around completely reasonable topics ranging from how to keep order in the park, how to not disturb the neighbors, a reminder about the &#8220;7:45am dog poo cleanup committee&#8221;, and more important topics like what kinds of taxation strategies should be formally proposed and how they should be backed by those who were representing themselves as part of this movement.</p>
<p>But the biggest thing I got out of the whole thing was information. Frankly, there was more INFORMATION at this protest then anger, hatred, noise, dirt, etc. And there were more reasonable proposals on &#8220;how do we solve X, Y and Z&#8221; then our own government could ever come up with in the span of one hour.</p>
<p>Granted, solving the &#8220;too much dog poop on the ground&#8221; problem is a lot quicker to resolve then solving healthcare.</p>
<p>But I think I started to understand what this movement was all about. It&#8217;s not about civil disobedience. It&#8217;s not about corporate greed. It&#8217;s about solving the problem where too few people are wielding too much power in this country, and the power is based on money.</p>
<p><strong>People on the Outskirts</strong></p>
<p>What was really interesting was how those around the protested acted. Police were really friendly. I stopped to talk with one officer. She was joking about how much of a party this all was &#8211; that people were clean, friendly and orderly. She seemed to be enjoying their presence, and she was interacting with the protesters in a positive manner, too. I asked if it was always like this every night. She responded &#8220;pretty much.&#8221;</p>
<p>The protesters themselves had to find ways to fill their time outside of just protesting. They had activities to keep them entertained when not having heated talks about taxes &#8211; guitar playing, comic books, card games, etc.</p>
<p>Everything was unbelievably peaceful.</p>
<p><strong>Retrospective</strong></p>
<p>As I look on the events of this week, I wonder to myself what exactly made Oakland so different and how it went so horribly wrong. And I think (still deciding on this) that I applaud the efforts of those at Occupy SF who are at least questioning whether our current taxation and economic system is really broken and what reasonable things might help bring it back into check.</p>
<p>This movement is something I will at least go back and visit again, possibly daily, so that I can learn more. We&#8217;ll see what happens.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-man.org/news/2011/10/28/146/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ClueCon &#8211; Best Engineering Telephony Event of 2010</title>
		<link>http://www.d-man.org/news/2010/08/10/137/</link>
		<comments>http://www.d-man.org/news/2010/08/10/137/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 19:40:55 +0000</pubDate>
		<dc:creator>Darren</dc:creator>
				<category><![CDATA[Daily Dose]]></category>

		<guid isPermaLink="false">http://www.d-man.org/news/?p=137</guid>
		<description><![CDATA[This past week, we announced our new project &#8211; the 2600hz Project &#8211; at the annual ClueCon Telephony Developers Conference in Chicago, IL. This event continues to be the number one event that I look forward to year after year. Let me explain why this conference is so special to me. First off, the FreeSWITCH [...]]]></description>
			<content:encoded><![CDATA[<p>This past week, we announced our new project &#8211; the <a href="http://www.2600hz.org">2600hz Project</a> &#8211; at the annual <a href="http://www.cluecon.com">ClueCon Telephony Developers Conference</a> in Chicago, IL. This event continues to be the number one event that I look forward to year after year.</p>
<p>Let me explain why this conference is so special to me. First off, the <a href="http://www.freeswitch.org">FreeSWITCH</a> team goes to great lengths to line up speakers who know telephony inside and out. These folks don&#8217;t just talk about trends related to PBXes and such. They discuss &#8211; in tremendous detail &#8211; things that most companies would consider company secrets. Likely topics include building a hosted cloud-based phone system that scales to millions of nodes, or how to tweak parameters in FreeSWITCH to improve performance on Amazon EC2. I am not sure how long this trend will continue, but for now, the idea that I can sit in front of a company&#8217;s top CTOs and developers and have them explain deep technical information about the inner workings of their product &#8211; that&#8217;s pretty amazing and incredibly helpful. At the end of the day, it feels like everyone is just trying to build cool new VoIP tools &#8211; and once they get going they&#8217;re excited to share it with the world.</p>
<p>Second, the crowd who participates in this conference is unique. They are mostly developers. There are no vendor tracks. There are no sales tracks. It&#8217;s all engineers, and they are all really passionate about what they do. Most of them are also a lot of fun. This conference really has a feel of community. It is not unusual for people to know at least ten or twenty others at the conference (mostly thanks to the insanely active FreeSWITCH IRC channel). At most conferences, I find the after-party events a bit awkward and stale. Most people don&#8217;t stay very long. At the FreeSWITCH after-party event (put on by iCall both last year and this year), people hung out, chatted and really engaged with other folks.  I look forward to the after-party events as much as the talks, although by Thursday I&#8217;m admittedly pretty exhausted and don&#8217;t have much of a voice left.</p>
<p>Finally, the last thing I love about ClueCon is the networking. Many people who attend ClueCon are actively seeking partners, jobs or other engagements. The ideas being presented are regularly fresh and creative, so it makes sense that conversations about partnering and building long-term relationships happen at ClueCon. And with companies continuing to send their top-level folks to the conference, you actually get to talk to the people who really make executive level decisions. This avoids extra rounds of introductions and scheduling of conference calls and such that I often find you must go through with other firms who send non-CTO level staff to their events.</p>
<p>There are some concerns I have about the ability for ClueCon to remain this open. This year, the conference saw a lot more paid sponsorships &#8211; I hope this is not the precursor to a tradeshow or exhibit hall being introduced. There are plenty of other events to fill that gap. In addition, I noticed several companies who flew in staff just for a day or so to do their talk and then depart. This is a bit different then the &#8220;community&#8221; feel that comes with folks who fly out and stay for the week. Finally, the conference is simply getting more popular &#8211; without good strategies around ice breakers and possibly more personalized events I think people will slowly become more reluctant to share ideas.</p>
<p>All in all, the conference remains the top-notch event I continue to look forward to every year. I don&#8217;t expect this to change anytime soon and I&#8217;ll continue to attend, watch and listen as time goes on.</p>
<p>Special thanks to Michael Collins and Brian West for doing such a wonderful job getting this year&#8217;s ClueCon organized. It was, as usual, better then last year&#8217;s. And an extra special thanks to Meraki. They provided wireless Internet stations throughout the conference floor. This is the first computer-related conference I&#8217;ve ever been to where the Internet actually worked reliably. Awesome.</p>
<p>See you next year.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-man.org/news/2010/08/10/137/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I Love Git (or Git vs. Subversion)</title>
		<link>http://www.d-man.org/news/2010/07/26/131/</link>
		<comments>http://www.d-man.org/news/2010/07/26/131/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 23:55:21 +0000</pubDate>
		<dc:creator>Darren</dc:creator>
				<category><![CDATA[Daily Dose]]></category>
		<category><![CDATA[Tech Stuff]]></category>

		<guid isPermaLink="false">http://www.d-man.org/news/?p=131</guid>
		<description><![CDATA[I have used Git before but only in small trials. Due to the ancient servers I was previously interacting with, I was unable to upgrade from SVN to Git. However, some recent changes have finally allowed for this. I will never go back. First off, I must say that there is not one thing I [...]]]></description>
			<content:encoded><![CDATA[<p>I have used <a href="http://git-scm.com/">Git</a> before but only in small trials. Due to the ancient servers I was previously interacting with, I was unable to upgrade from <a href="http://subversion.tigris.org/">SVN</a> to Git. However, some recent changes have finally allowed for this.</p>
<p>I will never go back.</p>
<p>First off, I must say that there is not one thing I could do in SVN that I can&#8217;t do in Git. And to be fair, there are very few things that Git can do that SVN can not. Every branch, commit, tag and other feature in SVN seems to be available in Git and vice versa. But Git provides some secret sauce on top that has changed my life forever.</p>
<p><strong>Branching as a Way of Life</strong></p>
<p>Branches, tags and managing those particular intricacies of release management used to be cumbersome. Everyone had their own way of doing it. Helper scripts were available for SVN (like svnmerge) that would track your commits and work and help make friendly merges across branches. But they all were a bit cryptic and hackish &#8211; usually requiring separate downloading of some script and some secret command lines and such. Generally, it was a pain. And it was slow and, sometimes, insecure.</p>
<p>Git makes branching incredibly simple. INCREDIBLY simple.</p>
<p>If you want to create a branch, you make sure you are checked out in whatever you are branching, and then you just type:</p>
<p>git checkout -b new-branch-name</p>
<p>All done. To keep life organized, you can make up your own fun branch name with versions. We use modulename/1.x to designate a module/feature and a version. Easy.</p>
<p>Switching branches is just as easy. Same command as above, but without the -b. Sweet. Git will automatically switch to the other branch, assuming you haven&#8217;t changed any files in the current branch. If you have, it will politely list which files and ask you to fix the problem &#8211; with lots of verbose instructions. Yum.</p>
<p>But here&#8217;s what&#8217;s really nuts&#8230; Because this is so easy, I actually find myself using git&#8217;s branch feature more regularly. Like, every 30 minutes or so. Working on open-source projects makes you a bit ADD &#8211; people are chatting all day with suggestions, features, bugs and some are quick to implement, but you have to be able to hop around &#8211; quickly. I would never dream of tracking things like I am using SVN. It would take hours.</p>
<p><strong>Committing Locally</strong></p>
<p>Committing locally has changed my life as well. We used to commit a lot of broken code to the repository. We&#8217;d do this because, mid-stream down an idea, we sometimes thought &#8220;gee, we should do this differently.&#8221; But in case the &#8220;differently&#8221; way didn&#8217;t work, we wanted a way to &#8220;go back&#8221;. Or sometimes we&#8217;d want to share what we&#8217;d done so far with a teammate. This was hard to do when it was constantly coupled with merging and branching. We could be doing this 20 times a day, being that our contributors and programmers are spread across the US. Nobody can &#8220;run over to my screen&#8221; to look through things. And since we use IDEs to program in, screen sharing wasn&#8217;t an option.</p>
<p>Git&#8217;s ability to allow you to commit locally or off a private shared repo before pushing to a public repository has, again, been so unbelievably easy, you sort-of have to be brain dead not to get it. And it&#8217;s, again, changed our workflow. We regularly commit our work now &#8211; tracking each individual change &#8211; and we revert more often, which saves us time when we make mistakes. Before we&#8217;d just have &#8220;code we deleted.&#8221; Now it&#8217;s all tracked.</p>
<p><strong>Infrastructure Be Gone!</strong></p>
<p>In addition, setting up SVN with more strict access controls and to use Apache with any sort of security required usually required loading mod_subversion and some other funky stuff in Apache. Annoying. Git, however, uses SSH. There are WAY MORE tools for SSH key management and it&#8217;s inherently secure without any loaded modules on the server. We&#8217;re using <a href="http://github.com/sitaramc/gitolite">gitolite</a> so we can go even further, but even that isn&#8217;t required. Stupidly simple AGAIN.</p>
<p>Oh, and all this branching stuff &#8211; WAY fast on Git. Local commits and creations of branches is near instant, even on a large project. Only when we&#8217;re ready to be &#8220;finished&#8221; and have to pull or push changesets to the server do we see any delays.</p>
<p><strong>Not All Roses</strong></p>
<p>Subversion is still the defacto in many places &#8211; and it shows. Our IDE doesn&#8217;t support Git yet. Many features Git has aren&#8217;t exposed in our hosting provider&#8217;s interface (assembla) such as submodules. And we do find some features (such as submodules) complex.</p>
<p>We&#8217;re still learning.</p>
<p>That said, I&#8217;ll never look back. Git is an amazing upgrade to an already amazing version control world we live in. Three cheers.</p>
<p>Read More On Git:</p>
<p><a href="http://www.developer.com/open/article.php/3886146/10-Git-Tips-and-Tricks-for-Beginners.htm">Ten Git Tips &amp; Tricks for Beginners</a></p>
<p><a href="http://progit.org/book/ch4-8.html">Gitolite</a> (from Pro Git)</p>
<p><a href="http://help.github.com/managing-clients/">Managing Multiple Git Clients</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-man.org/news/2010/07/26/131/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where&#8217;s Darren been?</title>
		<link>http://www.d-man.org/news/2010/06/16/127/</link>
		<comments>http://www.d-man.org/news/2010/06/16/127/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 16:34:52 +0000</pubDate>
		<dc:creator>Darren</dc:creator>
				<category><![CDATA[Daily Dose]]></category>

		<guid isPermaLink="false">http://www.d-man.org/news/?p=127</guid>
		<description><![CDATA[Darren has quit his job at bandwidth.com to pursue new opportunities. And so, this blog will come alive again. After starting at Bandwidth.com I pretty much posted once here and otherwise abandoned it, mostly to avoid conflict of interest and in the hopes of making the FreePBX.org and bandwidth.com blogs my home. As I&#8217;m not [...]]]></description>
			<content:encoded><![CDATA[<p>Darren has quit his job at bandwidth.com to pursue new opportunities. And so, this blog will come alive again.</p>
<p>After starting at Bandwidth.com I pretty much posted once here and otherwise abandoned it, mostly to avoid conflict of interest and in the hopes of making the FreePBX.org and bandwidth.com blogs my home. As I&#8217;m not with bandwidth.com anymore this will return to being my home.</p>
<p>So we&#8217;ll start this blog back up. More posts coming shortly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-man.org/news/2010/06/16/127/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeSWITCH gets a free GUI (and a paid PBX platform)</title>
		<link>http://www.d-man.org/news/2009/08/05/123/</link>
		<comments>http://www.d-man.org/news/2009/08/05/123/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 20:07:09 +0000</pubDate>
		<dc:creator>Darren</dc:creator>
				<category><![CDATA[Daily Dose]]></category>
		<category><![CDATA[FreeSWITCH]]></category>
		<category><![CDATA[TCAPI]]></category>
		<category><![CDATA[Tech Stuff]]></category>

		<guid isPermaLink="false">http://www.d-man.org/news/?p=123</guid>
		<description><![CDATA[FreePBX FreeSWITCH GUI Update: The FreeSWITCH GUI project that temporarily became the FreePBX v3 project is now actively maintained as the 2600hz Project. What happened to TCAPI and the FreeSWITH GUI project? I&#8217;m pleased to announce the general availability of the developers release of FreePBX v3.0. I designed the code, along with the help and [...]]]></description>
			<content:encoded><![CDATA[<h2><a title="FreeSWITCH GUI FreePBX" href="http://www.2600hz.org/">FreePBX FreeSWITCH GUI</a></h2>
<p><strong>Update: </strong>The FreeSWITCH GUI project that temporarily became the FreePBX v3 project is now actively maintained as the <a href="http://www.2600hz.org">2600hz Project</a>.</p>
<p>What happened to TCAPI and the FreeSWITH GUI project?</p>
<p>I&#8217;m pleased to announce the general availability of the developers release of FreePBX v3.0. I designed the code, along with the help and feedback of the folks at bandwidth.com, from the ground up - starting with my TCAPI project which has now merged with FreePBX. This work is the result of years of experience with telephony systems. Specifically, the last two years have included tireless development and effort coding late into the night and through the weekend to produce a flexible, modular PBX system that was open-source.</p>
<p>Finally, that PBX software gets to see the day of light. Thanks to backing from bandwidth.com and the FreePBX project, you can now see the documentation and code I&#8217;ve been working on at <a href="http://www.freepbx.org/v3">http://www.freepbx.org/v3</a> .</p>
<p>I also strongly recommend you checkout <a href="http://www.voicebus.net" target="_blank">voicebus.net</a> &#8211; a hosted service that is beginning to offer free sandbox development installations for learning and utilizing the new FreePBX v3.0. <a href="http://www.voicebus.net" target="_blank">VoiceBus.net</a> is run by one of the core supporters and developers of the FreePBX v3 open source community, Michael Phillips. The site also offers hosted virtualized instances of FreePBX that work great and cost almost nothing.</p>
<p>Speaking of core developers, we would be nowhere without the help of Karl Anderson. Karl is a more recent addition to the team but he&#8217;s committed so much code he might as well have been here since day 1. Karl is part of the <a href="http://www.gocentrix.com" target="_blank">GoCentrix.com</a> team, and there&#8217;s no doubt in my mind that FreePBX v3.0 will make it into the service offering of Karl&#8217;s company thanks to his efforts. If you need hosted VoIP with a premise-based service contract, check out <a href="http://www.gocentrix.com" target="_blank">GoCentrix.com</a> Kudos to Karl for his awesome work.</p>
<p>So what&#8217;s in FreePBX v3.0? Here&#8217;s just a short list:</p>
<ul>
<li>A solid MVC framework design</li>
<li>CRUD for device management, number management, IVR management, voicemail, user management, etc.</li>
<li>Central number database, to avoid conflicting dialplans</li>
<li>Pluggable, modular architecture - tailor the product to do what you want</li>
<li>Tie-ins to the FreeSWITCH architecture, including the ability to monitor sofia registrations and turn on/off message waiting lights via web-based voicemail</li>
<li>Internationalization support</li>
<li>jQuery/AJAX based grid and navigation systems</li>
<li>Completely skinnable CSS &amp; layout system &#8211; put your brand or vendor logo on the pages, or redo it completely!</li>
<li>Automated installer</li>
<li>Module management system via the web</li>
<li>Advanced hook and event system in both the database driver and the rendering system</li>
<li>Ability to send SMS text messages from the UI</li>
<li>Ability to make phone calls from the UI</li>
<li>Play voicemails via the web</li>
<li>XML/Curl support as well as static config file generation</li>
<li>The start of an Asterisk driver</li>
</ul>
<p>For those of you who were interested in TCAPI, I hope you will join me in the move to the FreePBX name and a newer codebase. The concepts of TCAPI (and ironically of the original AMP) are being revived and refined in the new FreePBX v3. Feel free to join us on irc.freenode.net in #freepbx-dev to tag along for the ride.</p>
<p>I&#8217;ll be demoing the new FreePBX v3.0 today at ClueCon (in just a few minutes actually). I&#8217;ll post the video as well, once it&#8217;s ready. In addition, it&#8217;s worth noting that the FreeSWITCH team just announced their first corporate sponsorship and paid product. So now you have the option of a fully supported PBX system made by the developers of the core FreeSWITCH project.</p>
<p>And let the games begin&#8230;!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-man.org/news/2009/08/05/123/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby modules are awesome</title>
		<link>http://www.d-man.org/news/2009/01/12/104/</link>
		<comments>http://www.d-man.org/news/2009/01/12/104/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 05:00:13 +0000</pubDate>
		<dc:creator>Darren</dc:creator>
				<category><![CDATA[Daily Dose]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Tech Stuff]]></category>

		<guid isPermaLink="false">http://www.d-man.org/news/?p=104</guid>
		<description><![CDATA[If you read my previous blog, well. I told you this was a roller coaster! I&#8217;m starting to feel manic. Ruby, on the other hand, is pretty solid, well documented, and cool. After fighting with stupid gems all day, I decided to just let people include their own with a simple wrapper. So I started [...]]]></description>
			<content:encoded><![CDATA[<p>If you read my previous blog, well. I told you this was a roller coaster! I&#8217;m starting to feel manic.</p>
<p>Ruby, on the other hand, is pretty solid, well documented, and cool.</p>
<p>After fighting with stupid gems all day, I decided to just let people include their own with a simple wrapper. So I started playing with modules.</p>
<p>Modules really rock. They are so freakin simple it&#8217;s unbelievable. Modules are sort of like namespaces but you can build upon already loaded ones. Basically, what this means to me is that I can have a base/core module that loads all the files in some module directory, and then figures out dynamically what&#8217;s been loaded.</p>
<p>Here&#8217;s a practical example (from the previous blog).</p>
<p>Let&#8217;s say we want to be able to let a system administrator installing our software decide where users authenticate from. The avilable options *we* thought of were Active Directory, Local Database and Linux PAM. But the reality is not everyone will need all of these options, but someone might need two of them (like local DB and active directory &#8211; such that when A.D. is down you can still get into your machine). How do we do this?</p>
<p>First, the individual modules would look something like this:</p>
<pre>
module MyAuthFramework
  module AuthViaLDAP
    def Login
    # Do login validation here, possibly through a gem
    end
  end
end
</pre>
<p>You&#8217;d save that to a folder somewhere, along with maybe another module, like this:</p>
<pre>
module MyAuthFramework
  module AuthViaPAM
    def Login
    # Do login validation here, possibly through a gem
    end
  end
end
</pre>
<p>Note that the two modules share the same method name and base module, but the module namespace in the middle is different. Loading both the above files from the same Ruby script effectively mixes them together, creating this:</p>
<pre>
module MyAuthFramework
  module AuthViaPAM
    def Login
    # Do login validation here, possibly through a gem
    end
  end

  module AuthViaLDAP
    def Login
    # Do login validation here, possibly through a gem
    end
  end
end
</pre>
<p>Now, in a base file somewhere, we can use a nifty constants method built into modules to accurately see what&#8217;s loaded and cycle through each class, calling it&#8217;s login function with some credentials we received. Whoever returns a success could be declared the winner!</p>
<pre>
module MyAuthFramework
  def Login
    MyAuthFramework.constants.each do |modulename|   # Cycle through all modules
      mod = Object.const_get(modulename)                    # Instantiate the module
      mod.Login()    # Call the method in each module
  end
end
</pre>
<p>This routine will effectively call the Login() methods in both the included modules, LDAP and PAM.</p>
<p>cool, huh?</p>
<p>Check out the <a href="http://corelib.rubyonrails.org/classes/Module.html">docs</a> for more goodness.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-man.org/news/2009/01/12/104/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Ruby on Rails frustrates me&#8230;</title>
		<link>http://www.d-man.org/news/2009/01/11/101/</link>
		<comments>http://www.d-man.org/news/2009/01/11/101/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 23:00:17 +0000</pubDate>
		<dc:creator>Darren</dc:creator>
				<category><![CDATA[Daily Dose]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Tech Stuff]]></category>

		<guid isPermaLink="false">http://www.d-man.org/news/?p=101</guid>
		<description><![CDATA[So I am now in week 4 of trying to switch to Ruby on Rails from CakePHP. It is truly a roller coaster ride. On the upside, I have been very, very impressed with the true object-oriented nature of Ruby. Really, I can&#8217;t say enough here. The fact that you can override and extend pretty [...]]]></description>
			<content:encoded><![CDATA[<p>So I am now in week 4 of trying to switch to Ruby on Rails from CakePHP. It is truly a roller coaster ride.</p>
<p>On the upside, I have been very, very impressed with the true object-oriented nature of Ruby. Really, I can&#8217;t say enough here. The fact that you can override and extend pretty much anything in the language to your liking is just awesome. Everything is an object &#8211; just like Java or Javascript &#8211; but without the annoyances of an overwhelming required number of definitions or memory concerns. You can even overload symbols and other operators. The built-in introspection and modularity is just slick.</p>
<p>On the downside, I am continuing to have trouble taking advantage of this &#8220;goodness&#8221; so many speak of with Rails. I don&#8217;t think it&#8217;s because of lack of trying. I think it&#8217;s due to lack of good documentation.</p>
<p>As a practical example, let&#8217;s say I want to do something as simple as create a login generator that can integrate with LDAP as well as a local database. This is a practical scenario I&#8217;ve run into in the PHP world &#8211; I want to have Windows users use the same login/password on an intranet site as they do for their Windows credentials. But I also want a fallback mechanism so I can login when LDAP is broken, or when I need to create a special account for, say, a contractor who only needs temporary access and should not be allowed onto the Active Directory network. In PHP, you simply go to www.php.net/ldap for the LDAP pieces, or maybe do a search for a PECL library that handles LDAP for you. Then you cobble together a quick model, view and controller using CakePHP&#8217;s scaffolding and get the login and logout stuff done. Or you extend the CakePHP authentication modules that are well documented right within the CakePHP manual. Probably about two hours of work.</p>
<p>Now let&#8217;s apply this to Rails. Not knowing where to start, and not having a search box on the RubyonRails API page (there isn&#8217;t one &#8211; how silly), I try some Google-fu to find the equivalent in rails. The first relevant hit is a page that seemed like a match &#8211; <a href="Authentication in Rails">http://wiki.rubyonrails.org/rails/pages/Authentication</a> . An authentication wiki page on Rails own site. Seems legit.</p>
<p>But then I load the page and the first thing I am greeted with is:</p>
<p>&#8220;This article is part of the confusing world of Authentication in Rails. Feel free to help: AuthenticationNeedsHelp.&#8221;</p>
<p>ehh</p>
<p>Then I start examining the list of available plug-ins, gems and solutions to authentication that people have listed. Almost all of them are labeled either deprecated, incomplete or &#8220;good for beginning Ruby on Rails user.&#8221; Fine, I think, maybe one will work and I just have to find which one. So I start clicking into each page.</p>
<p>LoginGenerator seems relevant.</p>
<p>But scrolling through that page, the text and comments suggest that it no longer works for versions past 2.0.2.  But don&#8217;t worry &#8211; it links to ANOTHER site that swears to be the real solution I am looking for! That&#8217;s here &#8211; <a href="Acts As Authenticated">http://wiki.rubyonrails.com/rails/pages/Acts_as_authenticated</a> .</p>
<p>Woohoo! This page starts by proclaiming &#8220;Yay! (read why)&#8221; and then explains that THIS is the right place for an authentication system generator. As if the page already knew that all those OTHER pages one might stumble upon prior were total crap. But before I get too excited, I click on the link which states that &#8220;&#8230;you really want to see the official <a href="http://wiki.github.com/gundestrup/acts_as_authenticated">Acts As Authenticated Github</a>.&#8221;  So I bite &#8211; I click the link, and am whisked away to the project page, which states right at the top:</p>
<p>&#8220;Please note that acts_as_authenticated, is no longer developed/maintained&#8221;</p>
<p>WTF?!?!</p>
<p>So we go back to the drawing board &#8211; all the way back to the Wiki page we started with &#8211; and look for more. Restful_authentication seems to be the top item, so maybe I should have started there. Again, I click it, and the first comment mentions that some material links to the wrong source. ugh. It then lists four locations to get information. I start with the first one &#8211; the official plug-in homepage. It says it&#8217;s for rails 1.2. But I&#8217;m on Rails 2.2.2. [Sigh] Do I try it? Or go back to the drawing board?</p>
<p>Maybe I am missing something, but one strong part of PHP was the manual and the comments &#8211; the manual matched the methods and classes that were actually available almost 98% of the time, and were never incomplete in terms of broken. Does such a resource exist for Rails where I can go to a webpage to find plug-ins and they reliably work and are available? This has to be my #1 frustration with Rails at this point.</p>
<p>If you have comments, please add them. I&#8217;d love to hear solutions to how to better manage rails plug-ins, gems and other &#8220;goodies&#8221; that seem to just be scattered everywhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-man.org/news/2009/01/11/101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Phish ReUnion : Who didn&#8217;t see this coming?</title>
		<link>http://www.d-man.org/news/2008/10/01/89/</link>
		<comments>http://www.d-man.org/news/2008/10/01/89/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 15:29:05 +0000</pubDate>
		<dc:creator>Darren</dc:creator>
				<category><![CDATA[Daily Dose]]></category>

		<guid isPermaLink="false">http://www.d-man.org/news/?p=89</guid>
		<description><![CDATA[From phish.com: &#8220;Phish returns to the stage for three concerts at the Hampton Coliseum in Hampton, Virginia on March 6, 7 and 8, 2009. A limited number of tickets are available directly through Phish Tickets&#8217; online ticketing system at http://phish.portals.musictoday.com/ . The ticketing request period is currently underway and will end on Wednesday, October 8th [...]]]></description>
			<content:encoded><![CDATA[<p>From phish.com:</p>
<p>&#8220;Phish returns to the stage for three concerts at the Hampton Coliseum in Hampton, Virginia on March 6, 7 and 8, 2009.</p>
<p>A limited number of tickets are available directly through Phish Tickets&#8217; online ticketing system at <a href="http://phish.portals.musictoday.com/">http://phish.portals.musictoday.com/</a> . The ticketing request period is currently underway and will end on Wednesday, October 8th at 11:59AM EST.</p>
<p>Tickets go on sale to the public on Saturday, October 18th at 10 AM EST and may be purchased online at http://ticketmaster.com or by phone at 757.671.8100, 757.872.8100 or 804.262.8100. Tickets will not be available at the venue box office and there is a two-ticket limit per show.</p>
<p>The band intends to announce additional touring in 2009 early next year.&#8221;</p>
<p>And a note to others searching for arrangements to the show:<br />
- All hotels within 5 miles of Hampton Coliseum are already booked up<br />
- Get your flights now <img src='http://www.d-man.org/news/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-man.org/news/2008/10/01/89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TCAPI @ AstriCon</title>
		<link>http://www.d-man.org/news/2008/09/23/87/</link>
		<comments>http://www.d-man.org/news/2008/09/23/87/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 16:38:52 +0000</pubDate>
		<dc:creator>Darren</dc:creator>
				<category><![CDATA[Daily Dose]]></category>

		<guid isPermaLink="false">http://www.d-man.org/news/?p=87</guid>
		<description><![CDATA[I&#8217;ll be at AstriCon starting today, Tuesday, September 23rd thru Thursday, September 25th. If you&#8217;re interested in the first open-source FreeSWITCH GUI based on TCAPI, or interested in how TCAPI might work with Asterisk, or just want to say hi, look for me @ AstriCon!]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be at AstriCon starting today, Tuesday, September 23rd thru Thursday, September 25th.</p>
<p>If you&#8217;re interested in the first open-source FreeSWITCH GUI based on TCAPI, or interested in how TCAPI might work with Asterisk, or just want to say hi, look for me @ AstriCon! <img src='http://www.d-man.org/news/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-man.org/news/2008/09/23/87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TCAPI Project now out there somewhere&#8230;</title>
		<link>http://www.d-man.org/news/2008/09/07/84/</link>
		<comments>http://www.d-man.org/news/2008/09/07/84/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 20:18:53 +0000</pubDate>
		<dc:creator>Darren</dc:creator>
				<category><![CDATA[Daily Dose]]></category>
		<category><![CDATA[FreeSWITCH]]></category>
		<category><![CDATA[TCAPI]]></category>
		<category><![CDATA[Tech Stuff]]></category>

		<guid isPermaLink="false">http://www.d-man.org/news/?p=84</guid>
		<description><![CDATA[Those developers who joined the introductory WebEx today can now access the code that was released. It&#8217;s not much, but it&#8217;s a good start. Hopefully some folks will commit some stuff to it. For those who didn&#8217;t join today you can still get involved. Please drop me an email if you want to develop some [...]]]></description>
			<content:encoded><![CDATA[<p>Those developers who joined the introductory WebEx today can now access the code that was released. It&#8217;s not much, but it&#8217;s a good start. Hopefully some folks will commit some stuff to it.</p>
<p>For those who didn&#8217;t join today you can still get involved. Please drop me an email if you want to develop some code for what is currently a FreeSWITCH-based GUI front-end for a PBX (and whatever other functions you might desire).</p>
<p>You can reach me <a href="mailto:fs@d-man.org">here</a>.</p>
<p>Also, I&#8217;m curious to start getting feature requests. What makes up a good FreeSWITCH UI? What functions do you want to see? Let me know your thoughts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-man.org/news/2008/09/07/84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

