Friday, November 30, 2007

PHP framework - task ID 3.1, 3.2 and 3.3 completed


Got the list of Content and supporting functionality completed. When thinking about look/feel - well basically it's what Drupal (selected cms) provides via a selected theme.......anyway, the site is starting to take form http://masystems.org

Sunday, November 25, 2007

CMS - next big step?


Content Management Systems (CMS's) have been around for some time, however solid, stable, common CMS packages are just coming to maturity. It provides another layer to the bare CPU and allows for non-Web people to create sophisticated web sites.....blah blah blah...same old spin - which is interesting in itself. Just as the OS moved people away from the chip/assembly code and a graphical interface with a standard set of office (word processing, spreadsheet, etc.) moved people away from the OS....a CMS is another layer in the system - but an interesting one. It allows for application of content instead of just creation and distribution (office products). A person can now develop a website, with Web 2.0 functionality, eCommerce and easy content update without the need of in depth IT knowledge. IT people can now focus on developing modules and add-ons to CMS's, extending their power and range...something that is in desperate need (Yes - Ms/Mr IT, back to the workhouse for you). From recent reviews, I see 3 mature CMS's: Drupal, Joomla and SharePoint (I'm not a Microsoft fan...but it is a GOOD product).

In working with SharePoint - a neat implementation comes to mind...creating multiple sub-sites, one being the target deliverables the other a site for the project team to use and collaborate with. So, not only is the CMS the delivery, it assists with the delivery..........duh......talk about ensuring high levels of communication and engaging project members. Training on the product as you use it to create the project....add another site for testing, etc.....all within the same CMS environment.....not only is the CMS another layer, it's the main interaction layer - once removed from the OS...the OS takes a back seat and becomes less significant.

PHP framework - task ID 1.3 and 1.4 completed

Task 1.3 - Select an IDE - this was an easy one, I had a copy of NuSphere PhpEd - a very good, easy to use IDE. I tried NVU prior and think it's VERY good for an open source (older) tool. There's also ZEND.....which I found to be on par with NuSphere PhpEd. End of the day, one wasn't significantly better then another and since I had a valid NuSphere PhpEd....it's the one.

Task 1.4 - Objectives: (somewhat defined in the initiation doc: http://docs.google.com/Doc?docid=dc8s9cht_2ddw964&hl=en)
  • Stay employable by staying in touch with current web technologies (upgrade my knowledge)
  • Understand NEW web site creation approaches
  • Better grasp of PHP - especially OO
  • Understand strengths/weaknesses of various frameworks
  • Understand CMS's

Wednesday, November 21, 2007

Ed Yourdon's Web 2.0 presentation

I really dislike PowerPoint and presentation types of things.....but Ed Yourdon has put to much info into this one to ignore:
http://docs.google.com/TeamPresent?fs=true&docid=dd2trp3s_0tj8txc&pli=1

Hope you have time - lots of info and links.

Tuesday, November 20, 2007

PHP framework - task ID 1.25 completed




Okay - so I did a lot of research into which CMS would work best with CakePHP and of the top two candidates, Drupal and Joomla, I've selected Drupal. I've actually worked a bit with both prior and even through I found Joomla easier to work with, Drupal seems to have better overall support and has a module for CakePHP (Drake). Joomla's CakePHP module, Jake, is available, but the seems to be less overall support, usage and updates for it......another one of those decisions. Here's an updated lessons learned: http://spreadsheets.google.com/pub?key=puDAkq4iYr86K6H-OlMlAAw and project plan: http://spreadsheets.google.com/pub?key=puDAkq4iYr846G03FVMT7bg
for those interested.

Monday, November 19, 2007

PHP framework - task ID 1.25 delivery - silly me


Part of the functionality I wanted for the MASystems.org web site was a CMS (content management system) - that would allow easy updates to plan content, etc. I forgot to include in the requirements, base plan and decision process of selecting the php framework. When I realized it, I had to determine if there was a CMS that worked with the framework (Cakephp) and how it would work. Luckily, there are smarter people out there then me and there are CMS's associated with the various frameworks (Seagull has it built in). After realizing my mistake, I updated the plan, lessons learned and will need to create another doc for the CMS selection process. I also decided that I wanted to install the CMS sooner then later in order to have a site where I can clearly document my progress, notes, etc.

Sunday, November 18, 2007

PHP framework - task ID 1.2 delivery

PHP framework - task ID 1.2 delivery

approach and learnings
It seems that there are a handful of standard php frameworks, but for the most part each php web site/application 'appears' to develop their own (either from scratch or using an open source framework and building from that). The php frameworks available range from base templates/common code to full fledged systems based on common development theories and practices, such as:
MCV - http://en.wikipedia.org/wiki/Model_View_Controller
scaffolding - http://en.wikipedia.org/wiki/Scaffold_%28programming%29
URL mapping - mapping specific pages to a directory
security - build in security modules
etc.

Here are some usefull links regarding php frameworks:

All the frameworks appear to be open source, some ask for donations and one (Zend) is tied to a commercial IDE.

Most of the php framework comparison work was already done here:http://www.phpit.net/article/ten-different-php-frameworks/
In addition to the comparison and reviews, I would add:
  • recent'cy - how recent has the project been updated - some open source projects go stale - no updates and the people supporting move on to another open source project
  • use by others - the proof is in the pudding (as someone said once) - check the sites developed with the frameworks and see if they are in line with what is needed
  • documentation/examples - make sure it's there and is useful
  • forums - check how recent they have been used and who from the framework team is supporting them (is it a team of one?)
  • directly tied to a IDE - even though it would be nice to have a built-in or easy to integrate IDE....I'd prefer not to have the framework tied to a commercial IDE (Zend), since I don't want to pay for anything (free is good)

Selection
After reviewing the various articles I could find regarding frameworks, how other large applications approached this choice (seems most selected to build their own - possibly based on an existing one), reviewing the web sites developed by the frame works, etc. - I narrowed the selection to 2:
CakePHP - seems to be more widely used (even IBM is using it)
SeaGull - the admin support is very CMS like....

When it comes down to it, it's a base perception call. I'm sure out of the top 5 (add Symphony, ZEND and Prado) - all would work well...what moved me to Seagull and CakePHP were their sites, the sites developed by the products and the reviews. Right now I'm perceiving CakePHP to be the best for me.

Saturday, November 17, 2007

MASystems Project - tasks 1.1 delivery

PHP OO - task ID 1.1 delivery
(link to doc: http://docs.google.com/Doc?id=dc8s9cht_7c5c7n8)

approach and learnings
I started by searching the web for php object oriented (oo) articles, tutorials, etc. and found some good ones at phpfreaks.com. Years ago I developed in C and C++, so I had some familiarity with oo. I've also used activex controls and other 'like' coding practices when developing in VB. Below are some links to tutorials and books I've read. Interesting aspects of php oo:
  • you can access non-instantiated classes and use them as a repository of variables, constants and general functions
  • _call within a object allows you to capture method calls that do not exist and utilize the method name and passed arguments to call a valid method (logic to control logic? useful for revising classes and supporting prior versions used??)
  • inheritance is supported as well as all oo paradigms are supported (as far as I know)
Overall, I think at this point I have a good understanding of php oo and have a series of reference links and books for use during development.

links
http://us3.php.net/zend-engine-2.php
http://www.phpfreaks.com/tutorial_cat/19/Object-Oriented-Programming.php


books
PHP in Action: Objects, Design, Agility
Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly))
Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series)
Anti-Patterns and Patterns in Software Configuration Management

Friday, November 16, 2007

Beautiful Code - must read

Here's a must read book - I just finished the first chapter (very short) and I'm hooked. The book is a series of 'articles' by top programmers on how they approached specific coding problems and solved in an beautiful manner. If you're a hardcore programmer and really appreciate good/simple/eloquent solutions - this 'seems' to be the book for you.

Wednesday, November 14, 2007

MASystems Project - Step 5 - The initial plan




Putting the MASystem.org plan together....















Here's a link to the MASystems.org plan: http://spreadsheets.google.com/pub?key=puDAkq4iYr846G03FVMT7bg

The attributes were based on the prior article on 'Back to Basics - Project Tasks': http://itprojectguide.blogspot.com/2007/09/back-to-basics-project-tasks-part-1.html

And the initial tasks list for this project:
http://itprojectguide.blogspot.com/2007/11/blog-post.html

As you can see I took the meaningful attributes - based on overall complexity, risk levels, etc. - for the most part the majority of the attributes. In addition I also added some additional tasks - every review you will find that you are modifying the list - adding more detail, uncovered work areas, etc.

Looks like an interesting project and a well-paced plan.....plan the work and work the plan.

Tuesday, November 13, 2007

MASystems Project - Step 4 - Lessons Learned

It's never to early to start recording lessons from a project - there are many side benefits to a projects, a very important one is learning from it. http://spreadsheets.google.com/pub?key=puDAkq4iYr86K6H-OlMlAAw

MASystems Project - Step 3 - initial risk assessment

Here's a link to the initial risk assessment......http://spreadsheets.google.com/pub?key=puDAkq4iYr85PEa72lExnVw

Monday, November 12, 2007

MASystems Project - Step 2 - MASystems Initial pass at creating the tasks list

(click on image for full view)

via Google Docs: http://docs.google.com/Doc?id=dc8s9cht_5d79wm4

MASystems Project - Step 1: develop the project idea

This is the first step in a new openly shared project - MASystems.Org. I will follow the standard PMBOK approach of Initiation, Planning, Execution/Control and then Close Out (even though I'm an avid Agile PM person - the base 5 steps are the same). Here's the Project Initiation:

Project: MASystems.Org - Learning how to develop a modern PHP web site.

Idea

Learn PHP5/MySQL through the development of a Martial Arts web site. The focus is on utilizing open source tools, object oriented development and leading edge development practices. The Martial Arts web site itself is of interest to me and something I have a level of knowledge about (SME), so the content and resulting web site should not get in the way of the focus point - Gaining a better understanding of modern open source web site development practices.

Value
The value is derived by my ability to maintain and advance my career as a IT Project Manager for the next (gulp) 20+ years.......

Approach
  • utilize open source development tools (don't pay for anything)
  • use OO programming approaches
  • understand how 'leading edge' developers work (frameworks, etc.)
  • Refresh myself on PHP/MySQL
  • understand how OO is implemented in the latest PHP (v5)
  • understand the various frameworks, template, etc. approaches to development
  • incorporate Agile approaches such as Test Driven Development (TDD), simplicity (KISS) and Refactoring

Assumptions/Constraints
  • Use the existing MASystems.org url/hosting (via GoDaddy) - which is currently being used to test various CMS systems (Joomla being the most recent)
  • Keep the initial delivery to defining the various martial arts systems, styles, existing martial arts web sites, and martial arts personalities (keep it simple)
  • additional phases should include ability for users to add to all aspects of the site and provide commentary
  • Use this as a learning experience, but keep the coding as minimal as possible (reason for use of a framework/template)
  • User Google Docs to document project, progress, etc.
  • Openly and honestly communicate......
    This above all: to thine own self be true,
    And it must follow, as the night the day,
    Thou canst not then be false to any man. - Shakespeare
Google Docs: http://docs.google.com/Doc?id=dc8s9cht_2ddw964

Saturday, November 10, 2007

The Economics of Information Technology: An Introduction


The Economics of Information Technology: An Introduction By Hal R. Varian, Joseph Farrell, Carl Shapiro
summary available through Google's Book Search - interesting points:
  • constant fixed costs and zero marginal costs (the first product costs the $ and each incremental delivery is near $0) - example given that a chip fabrication plant costs about $7 Billion to setup, etc. but each incremental chip only costs a few dollars.
  • every now and then a technology emerges where the components can be reconfigured to create new/various products - once standardization sets in (prior examples of standardizing gears, pulleys, electrical current (AC/DC), etc. - a 'recombination' effect.....internet boom was mostly about networking - TCP/IP........
  • the 'recombination' effect for the internet occurred much faster then prior technology revolutions - '...the internet revolution is minor compared to other technology revolutions of the past....'......maybe...or are we just at the beginning and what we have are limited amateur recombinations.....
  • open source allows for greater advancements because it provides a quick and low cost view of what works and how things are constructed (the amazing point that countless people from around the world openly work to create great systems such as Linux, PHP, etc.....the barriers of cooperative competition have disappeared).
  • 'market of one' - highly specialized products can be developed and sold to individuals at personalized pricing.....HW/SW configurations based on needs and available funding. Mass marketing is going away because we can learn what individuals want and can provide product and an acceptable cost
This along with Creative Destruction........is a lot to think about.......

Tuesday, November 6, 2007

Proud of my Country!


I've always been very proud of my Country and have always felt that we - the US - needs to hold to the highest standards. WE should not become that which we hate. Why is any form of torture even being discussed to it's legitimacy? (clip from the Wall Street Journal) The only response is that the US does not permit torture of anyone! Interesting article from Politico (not sure which way they lean, but the article is good): Roosevelt was right: Waterboarding wrong

I would apologize for putting political stuff in a PM blog...but I won't.

Back to the basics - Project Tasks part 4.0: Let the games begin

link to 3.1 http://itprojectguide.blogspot.com/2007/10/back-to-basics-project-tasks-part-31.html
Now you have a good pass at the list of tasks and details behind them. Most importantly you got to meet the team face-to-face (hopefully) during the task gathering and definition process. You should have picked up various clues, such as:
  • importance of each deliverable and the assoc. tasks
  • maturity level of all involved (not talking nose-picking here talking dedication, how they handle issues/risks, etc.)
  • what the developers consider the 'difficult' areas (you know, when you mention a task and they laugh and sweat at the same time)
  • potential other groups that need to be involved
  • past projects and issues (yes - the good ole' war stories) - history repeats itself
These cues should give you an idea of what project areas will need special 'attention', where the high-impact-potential risks are, who you need to schmooze, etc.

Once you string out the tasks, you'll most likely realize that they time-frame/costs exceed the sponsors expectations.....gee, that's a surprise. Don't worry, this always happens. After you look over your shoulder to see who else has noticed and take a deep breath, it's time to get to work. There's no 'formal' approach to right-fitting a plan, but the steps are consistent from project to project:
  1. recheck your work - chances are this won't get you much
  2. identify the tasks that are the most critical, will take the most effort and provide the most benefit to the sponsor...you'll usually end up with about 20% of the project
  3. make sure those tasks are well defined, if you have a background in the business and/or technology review them and see if the effort is in line with the task..sometimes it's a miss understanding of what is being asked...just sometimes
  4. think through some options...but keep them to yourself
  5. inform the sponsors that there are time line issues that you're working on - they'll expect that (those IT people always require more time then what is needed..........)
  6. gather the worker-bees back together and discuss the high level objectives of the project again, let them know the time line/effort (aka cost) exceeds expectations - wait for the moans - reinforce that the est. have to be real, so they don't just reduce them to get the go-ahead with the knowledge that later the time line will change.....
  7. come up with REAL options OR decide that the effort provided is the real effort to get the job done
  8. go back to the sponsor and see if they're willing to move time lines - add costs - reduce scope, etc. (PM 101)
Repeat steps 6-8 as often as needed. The most important aspect of this stage of the game is to keep the information and communication real. Don't just take a reduction in time/effort without HOW it will be done (or later you'll pay the price most PM's do). Don't take that ALL deliverables are essential - if they were then the sponsor would be willing to pay what ever it takes to get them done. Most importantly don't take your eye off those areas being contested the most...this is where the risk is the greatest.......Try to keep the sponsors away from the developers during the 'gaming' phase so they don't influence each other...keep the focus on the issues not the personalities. Once you're near the end of the gaming...get everyone together for a final pass prior to the execution phase. Have a project walk through...identify any missing tasks, keep on eye on reactions to make sure you haven't missed any critical deliverables/tasks or risk areas. Make sure to do it over lunch.....food makes people happy and gives them something to do while you're talking.

Sunday, November 4, 2007

Joomla!

Open Source does work! This is an amazing CMS tool, created via an open source community and freely available. The base system is solid and there are MANY add on features. I took the usual route of installing and hacking to get it to work (I hate reading documentation) and had little issue setting up a base system, messing it up a bit and then having it work the way I want: http://masystems.org/

Here's some links:
Joomla!
info via WikiPedia http://en.wikipedia.org/wiki/Joomla
OpenSourceMatters (base group?)

If you're developing a website I would strongly recommend using Joomla - solid, easy to setup, easy to update, etc. Dev tools are meant for functionality - CMS for website management...keep them separate an use Joomla! for your cms!