Archive for the ‘Uncategorized’ Category

New links

Wednesday, September 21st, 2005

Hi - you seem to be new here. If you like what you see, please give back by subscribing to my RSS feed!

You can check me out on Twitter, Facebook, or FriendFeed to see what I'm up to. Thanks for visiting!

I’ve added two more links to the left so you can see some of my favorite links and stories. I’d rather post them there than here since so I can share them better. “My Recent Favorites” is my recent del.icio.us links - anything I want to remember for later I post there. “What I Digg” is recent articles linked on Digg.com that I have dug. Also note the Katrina Relief link to the Red Cross in the upper-right. I am a huge supporter (and occasional volunteer) for the Red Cross.

New PSP Browser Violates MPL?

Thursday, July 28th, 2005

My friend John Giotta seems to have noticed that the newly released (yesterday) PSP browser is reporting it is Mozilla-based. If so, where is the source-code they based it on? The Mozilla Public License states that modified versions of the Mozilla code base must be posted for others to see the changes. This browser is unlike any Mozilla browsers I have seen.

Photo Gallery

Saturday, July 23rd, 2005

The Photos section is now up and working! I also tweaked a few things to make it look prettier. I’ll be posting regular photos as I get them.

CraigsList is in Richmond!

Wednesday, July 6th, 2005

I found out from my friend Tripp today that CraigsList is now in Richmond! Go to http://richmond.craigslist.com for more info. I am told it has really gotten active over the last couple months and it looks like that’s true. I just submitted a post about knowrichmond.com and Stay N’ Alive Computer Productions to the site. We’ll see what fruit it brings. Tell your friends to make this an even bigger community!

Thoughts on Jeens

Sunday, July 3rd, 2005

A blog has so many components to it that fit in perfectly with Catalyst. Catalyst’s MVC-based framework makes maintainability simple and encourages contribution from the community. The model components can be created to force the blog to read from either flat file, from a database, or even from a web service such as SOAP. The view components would allow a developer to pick his poison in templating libraries. One could choose either Template Toolkit or HTML::Mason to render a page ready for browsing on the ‘net. The controller would present multiple ways of gluing all the pieces together.

Catalysts support of plugins would promote creation of plugins that would work with Jeens. One could create tools to render an image gallery or photo blog differently. One could implement better ways of using AJAX to accept user input and modification of those areas allowed for editing. The possibilities are endless.

I mentioned AJAX - I think AJAX is the future of website presentation. It reduces load on a server, is open for the public to view and see how things were done, and because of that encourages contribution. I intend Catalyst to rely on AJAX as much as possible. I really like the tool-man libraries that allow easy drag and drop, as well as double-clicking to edit an area on a web page. I envision the wiki components of Jeens to work this way. When one writes a blog entry they should be able to designate whether that entry is editable by others or not, and if so, all one has to do to edit is double click on the area, edit, and then click outside the area to submit the changes back to the server. It would probably work similar when a user is authenticated and wants to edit/add his or her own blog entries.

So far I’ve written Jeens to utilize MySQL for user management and permissions. I think I am going to move away from this and switch to more of a portable solution such as SQLite for both user management and wiki management. This will keep people from having to have a huge database server on their system just to get Jeens to work. Also, it will keep the MySQL/PostGres wars to a minimum. ;-) The great thing about it all is with the MVC framework someone can write a MySQL/Postgres component if they so desire and submit their own code to CPAN for use with Jeens.

RSS Lives!

Wednesday, June 29th, 2005

A lot of activity today! I have gotten rss working with HTML::Mason by converting the included template.rss into a format Mason can read. Then all that needs to be done is in autohandler, do something like this:

<%args>
$rss => ”
</%args>

% if (!$rss) {
# print default autohandler html
% }
% else {
% $r->content_type(”application/rdf+xml”);
<& rss.mas &>
%
% }

Then call any of your Mason components that use that autohandlers and add
?rss=1 to the uri. For instance, http://www.jessestay.com/index.html?rss=1

You can get the Mason module by clicking rss.tar.gz. I’ll add in atom support when I get some time later. You can try it out by adding my rss to your rss reader by clicking on the link to the right!

KnowRichmond.com

Wednesday, June 29th, 2005

For all Richmonders (VA) please check out http://www.knowrichmond.com. I’m looking for ideas and need all the help I can get to get content for the site. I’ll post the best ideas online once I have enough content.

Catalyst

Wednesday, June 29th, 2005

I’ve decided I’m going to begin porting Jeens over to Catalyst, based on Simon Cozen’s Maypole module. Perl is going to need to move to more of an MVC framework for it to stay up with the competition so I may as well help it out.

I in some ways want to leave where Simon Cozens left off with Feuilleton (good luck to him in his religious studies btw - been there and it is quite an experience that all should try!). The goal here is to produce a very plugable application that others can easily add to and modify.

I read somewhere today that the fastest way to get contributors to an open source project is to make the project in small components, allowing others to have their own small “projects” that contribute to the larger project. One example included was Blosxom and it’s plugins.

My thought on Jeens is that it will be more than just a blog, wiki, and photoalbum seperated. By combining elements of all three one should be able to create a “super blog”. So, using wiki elements one might be able to add a link into their blog entry that goes to a pure wiki page, or perhaps just certain components of a page can be a wiki, the rest static or a blog. Or you could have a photoblog, blog, and wiki all in one! Each component must be scalable to add further components and encourage public contributions.

Bryar in Mason

Tuesday, January 11th, 2005

Well, here it is. I’ve had several requests on how I got Bryar working in Mason. I basically just did it with a Mason component, calling the Bryar libraries. I am including in this tarred and gzipped file the Bryar Mason component and also the calendar component that comes with Simon Cozen’s original Template Toolkit distribution of Bryar. If you see anything I can do better with this please let me know.

To install, just change the datadir in blogList.mas (don’t use the one in
there - it won’t work, trust me), and call the component as an include into
your Mason component.

bryarMason.tgz

Consequences of Building vs. Buying Software: The Open Source Answer

Tuesday, December 7th, 2004

Below is a research essay, written Dec., 2004 as part of my Undergrad in CIS. It is a must-read for any Project Manager or Software Engineer out there:

To build, or not to build? That is the question. (Friedman, Halder) This topic, brought up often by many Managers and Executives throughout the ages is probably one of the most asked questions in the software technology world that has yet to be answered fully. Purchasing COTS (Commercial, Off-The-Shelf) systems tends to be risky - the idea of bringing a “black box system” into a corporation can limit scalability and cost money in needing to buy future upgrades and components. However, The Standish Group estimates that only 30 percent of development projects themselves are deemed successful. 20 percent are deemed complete failures, and the rest are usually late and/or over-budget (make that 150 percent over-budget). (Strande) This has generally been accepted by the industry as being more expensive in long-term development and maintenance costs than purchasing a COTS system would be. However, with the risks associated with the purchasing of software that have been mentioned, could there be a better solution?

To figure this out, one must evaluate each process and understand what affect it has on the project lifecycle. Do the statistics support the logic? To understand whether building is better than buying or vice-versa, quality requirements management must take place. With bad requirements, developers are prone to fail in a build situation, and it is near impossible to pick a vendor that will meet the project’s needs long-term if a product is to be bought.

So, assuming good requirements have been established at the start, let’s examine the costs of requirements management in a build vs. buy situation. Even in a well-managed project, the requirements for the software system always change. It is near impossible to predict all problems that will creep up in any project. (Sommerville, 139) So further requirements must be established.

Developing software requirements focuses attention on software capabilities, business objectives and other business systems. As the requirements definition is developed, a better understanding of users’ needs is achieved. This feeds information back to the user which causes the requirements to be changed… It may take several years to specify and develop a large system. Over that time, the system’s environment and the business objectives will almost certainly change. The requirements must therefore evolve to reflect this. (Sommerville, 140)

In the build situation, this is an advantage. If good requirements have been established and as the design process evolves, so do the requirements, a system is much less likely to fail in the future, eliminating the extra cost of developed systems over “bought” systems. Developed systems are usually more scalable to the business and allow the system to easily adapt to the business’s needs.

However, even when building such a system with good requirements, you still have the disadvantage of the time it takes to establish such requirements and design the system. It is often advantageous to have a quick turnaround in the time it takes to implement a project. This is where buying software is more advantageous and will be less costly.

Requirements management is still a need when purchasing software off the shelf, however. Without proper requirements established, good decisions cannot be made regarding what to purchase, what vendors to use, and how scalable their product will be to the needs of the corporation. This is a downside to purchasing COTS software - it may be faster to purchase such software, but it is usually only faster when improper requirements planning has been established. This will be a risk to most organizations.

So with good requirements management and planning, it is more beneficial to develop software in-house due to reduced maintenance costs, however such planning takes extra time and effort - projects cannot be implemented in a short amount of time. However, it is probably more beneficial without good requirements planning to just purchase the software off the shelf, relying on the risk that the vendor purchased from may not truly meet the company’s needs, allowing the project to be implemented swiftly. The second choice as can be seen also has its disadvantages. So the question remains, isn’t there a better solution?

One other predicament that one can run into in a buy vs. build situation is in the testing phase of the project lifecycle. Sommerville specifies two types of testing, Validation testing and Verification testing. Validation testing can be referred to with “Are we building the right product?” Verification testing can be referred to with “Are we building the product right?” (Sommerville, 420) Both of these scenarios encompass all forms of detailed testing techniques, and just by the above statements one can summarize the advantages and disadvantages of testing in a buy vs. build situation.

In a buy situation, it is very tough to approach a product with the verification testing technique. Because a finished product is presented, it is tough to approach the product, whether bought as a “black box” or with the source included, and test the individual elements because one was not available during the planning and development phase of the product that was purchased. However, with proper requirements planning it is very easy to perform validation-type testing methods on a COTS product.

In a build situation, the verification testing techniques are simple if approached right. Along the way during the design and development phases if the product is continually tested, one can determine fully if the product is being built right. However, again, the validation phase can only be determined by good requirements, and especially with a developed project this can take a lot of time to determine if the right product is being built. So what is the solution?

The solution can be found in the foundations of computer history. Back in the early days of the personal computer, IBM revolutionized the future progression of computers by making the computer affordable for the consumer to buy. Essentially, they released the consumer of expensive costs in buying computers by making the production of computers an open standard. (O’Reilly) Open standards are what free the consumer from the high costs of buying products and give the consumers many more fast options to developing their own product.

How does this relate to the build vs. buy situation when it comes to Software development projects? In the year 1980, Richard Stallman, a graduate student at the Massachusetts Institute of Technology was frustrated with the many proprietary software systems that had to be dealt with. Often he would have to sign Non-Disclosure Agreements just to use the software to get his education. He had become accustom to the open-source/shared software that was common among the computer labs of various school networks of the 1970’s, but had been overshadowed by big business. Frustrated with keeping up with the proprietary business software out there, he wrote:

    I was faced with a choice. One: join the proprietary software world, sign the nondisclosure agreements and promise not to help my fellow hackers. Two: leave the computer field altogether. Or three, look for a way that a programmer could do something for the good. I asked myself, was there a program or programs I could write, so as to make a community possible again?” (King, 1999)

Stallman went on to become one of the pioneers of a new movement called “Open-Source Software” with his GNU, or GNU’s Not UNIX as it stands for, software. GNU was meant to be software other developers could use that would be compatible with UNIX systems, that they could freely edit, distribute, and use without the worry of NDA’s or other binding software agreements. His software was thereafter used by developers and system administrators throughout the world and became the de-facto standard of UNIX system tools. (openknowledge.org)

Stallman’s GNU and concept of Open-Source software opened a new method of software distribution which resolved both the build and buy dilemmas. Such techniques have been used by organizations such as NASA, retailers such as Amazon.com, and perhaps most of the Fortune 500 Companies out there. (O’Reilly) As can be seen by its growing use, it has been proven to be a successful technique.

NASA claims that, “Fundamentally, OSS (or Open-Source Software) offers an attractive third option to the build vs. buy question. Where ‘build’ offers flexibility and ‘buy’ offers accelerated development, incorporating an open source component might offer the best of both worlds. OSS is ‘buy’ without having to spend anything and ‘build’ without having to develop anything - it’s hard to imagine a better deal.” (Norris) So now the solution can be presented in the buy vs. build dilemma. How does OSS fix the requirements management nightmare?

Previously, it was mentioned that building was expensive and risky because maintenance costs could be high due to poor requirements planning. Also, building a project from scratch can be a slow process and can’t meet time-crunching project deadlines. By adding open-source into the mix of the build scenario, maintenance costs are less because an entire community of developers throughout the world are working on the project in addition to the corporation’s own staff. Fewer developers need to be hired, and one can expect high-quality software due to the large number of developers on a particular project.

It was mentioned buying was more cost-effective, but expensive in the short-term, and not as flexible. Open Source resolves this case by being able to replace bought software. No longer does an organization have to purchase the software to get a pre-packaged solution - just as was seen in the Richard Stallman example. Not only that, but the project is now as flexible as the organization needs it to be because the source code is readily available and can be customized and adapted as the organization sees fit. Scalability is endless.

In regards to testing, verification is now easy due to the availability of source code in Open-Source projects used. Source code can easily be evaluated and tested. Not only that, but due to a large community of developers around the world working for free, chances are they all have performed their own verification process on the software available. The validation process now becomes a no-brainer. Due to the openly available software and source code, the product can easily become adapted to meet the specific needs of the company.

A paradigm in software and IT history has taken place over the last decade. No longer is there a need for the build vs. buy dilemma. There are consequences with each. With the proper planning and decision making process, an organization can figure out a way to incorporate Open Source software to reduce the risks and costs of developed projects, while keeping their software specific to the organization. There is another solution. Before making the decision to buy or build one must take into account the vast availability of Open Source software available out there.

Works Cited

A Brief History of Free/Open Source Software Movement, from http://www.openknowledge.org/writing/open-source/scb/brief-open-source-history.html

Brinker, Scott, Build, buy or borrow?, from http://www.media3pub.com/usbank/articles/buildbuyborrow.html

Friedman, Steven Morgan and Haldar, Abhara, Answering the Build vs. Buy Decision to Best Leverage Your Corporate Assets, from http://www.basex.com/web/Basex%20Online%20Store.nsf/0/81d3a0b79720e40185256c7d00510810/$FILE/BasexReport.CMSBuildvBuy.EXECSUMM.pdf

Greenbaum, Joshua, Build vs. Buy In the 21st Century, from http://www.intelligententerprise.com/030422/607feat2_3.jhtml

Lewis, Bruce, Free Software: Solving the Buy/Build Dilemma, from http://web.mit.edu/wwwdev/cgiemail/buybuild.html

Norris, Jeff, Mission-Critical Development with Open Source Software: Lessons Learned, from http://64.233.161.104/search?q=cache:Jt4GKe60T6cJ:phk.freebsd.dk/pubs/ieee.software.pdf+build+software+vs+buy+oss&hl=en&client=firefox-a

O’Reilly, Tim, Ten Myths about Open Source Software, from http://opensource.oreilly.com/news/myths_1199.html

Sommerville, Ian (2001), Software Engineering, 6th Edition. Essex, England: Pearson Education Unlimited.

Strande, Jon, How to avoid the pitfalls of the traditional outsourcing model, from http://www.darwinmag.com/read/070103/license.html