Nov 30

Big thanks to Rob Loy for the opportunity to present to his class tonight at Scottsdale Community College on the Mambo content management system. Mambo is an opensource CMS that rides ontop of PHP and MySQL and runs cross-platform. As promised, here is the powerpoint from tonight’s talk. There were some great questions asked tonight, some to which I could not give a solid answer. I’ll try and clarifiy some things below but if you have any questions regarding the framework itself or any of the other stuff we discussed tonight, feel free to use the comments section here as a forum.

To the gentleman that asked about which to choose going forward- Mambo or the new re-branded Joomla after further reading I would say it’s a safe bet that either will be supported but that I really like what I see on the Joomla Roadmap. They claim it’s not a true development fork but rather a simple re-branding of an existing product which is true, but they’re diverging codebases from this point and that’s the definition of a development fork so, call it whatever you want. I would say Mambo has a much larger base of existing sites but it looks like the inertia of the development community is behind Joomla and all the features of the latest Mambo release should be compatible so you don’t lose anything in terms of components and template designs. I would probably start a new project on Joomla rather than Mambo at this point.

Regarding the question about the recent security exploit I mentioned, apparently the official patch took a few days before it was posted but manual fixes to the code were immediately available in the forums the same day the problem was discovered (just meant you had to edit the PHP code by hand). Someone had asked about how to stay notified of security announcements and that link is here.

Lastly, to the woman with the animal shelter site and the question about how to turn off certain navigational elements on an index of content items- I know it can be done because I’ve done it on my sites but I’m not seeing the option at the moment. I’ll post a comment when I find it- it’s buried somewhere in one of the tabbed menus on like a section or category- i don’t remember which.

Anyhow, great questions tonight and it really was a pleasure getting to speak with the students in Rob’s class. Don’t hesitate to ask questions if you have them- Mambo’s developer community is perhaps one of its strongest assets.

-sean

© 2005 Lights Out Production – All Rights Reserved Worldwide

Nov 23

First off, his name is pronounced “Coh-burn” so let’s just get that out of the way now ;-) I finished Agile Software Development tonight and wanted to give a book report here while it’s still fresh to edify some of the points that resonated with me. This will probably be a lengthy post but it’s ripe with good concepts for anyone who manages a team of developers.

The term “AGILE” refers to a style of development that was coined by a committee of seventeen software architects in 2001 at a summit in which they drew up a document they named The Agile Manifesto. It proposed a value system that encouraged certain activities over others in the pursuit of creating flexible, well-constructed software. While Cockburn’s book is relevant to anyone involved in the software development process (engineer, QA person, manager), it probably makes more sense to be digested by a team lead and disseminated to the other developers. With so much reading to keep up with on various techniques, methodologies and languages, a programmer in a team would be better served by devoting her “extracurricular cycles” to material with more tangible, immediate rewards and receiving this type of abstract, work-style advice second-hand via a senior developer. If you’re a lone-wolf developer you may not find this book useful at all but if you deal with other developers in any capacity (internal or external to your organization), it contains some valuable lessons. In short, it gives a holistic, high-level overview of the qualities of methodologies and environments that are used by successful teams. And this is the strongest feature of the book: the fact it is entirely rooted in real experiences. It makes ample use of non-fiction anecdotes to make concepts more memorable and it draws heavily upon hundreds of interviews with real teams that deliver real software under real deadlines. The theories conveyed in technical books can sometimes be refined to the point of “PhD purity and correctness” yet be impractical in application. Cockburn instead offers “blunt, field-tested tools” that are actually getting things done everyday on the front lines of software development. Here are the main takeaways I extracted from this book:

  1. Agile Manifesto – as short and simple as this document is (read it – 15secs), it has a profound message- basically, when push comes to shove, delivering good software under deadline is the ultimate goal, good communication amongst a team trumps process and documentation every time, and the only thing consistent across all projects is change and therefore your development style had better be the flexible reed and not the brittle stick when it comes time to deal with change. This manifesto sets the tone for the entire book, the chapters are filled mostly concrete practices that support the Agile manifesto.

    My Takeaway My Takeaway – Prior to buying this book I had heard Alistair
    speak on ITconversations.com . He struck me as being very practical-minded and not high & mighty on theory (which I liked). Having worked informally under both styles of development, I agree with the main values of Agile for being adaptive and goal-focused rather than process-oriented. Agile encompasses a bunch of formal styles like XP, SCRUM, DSDM and others – the tenets are very similar in all though. I especially related to a story about a team that was given strict requirements and micro-managed on the process and documentation required and they ended up ignoring orders and doing it the way they knew it needed to be done in order to get it delivered on time. As so often is the case for developers, you juggle what the client “tells you they want” vs. what you know they truly need and when pressed to favor one over the other, you have to diplomatically choose the latter and make it look like you choose the former.

  2. “Microtouch Intervention”: big results from small changes in each member – This is not rocket science but enacting a very small change in each person of a large team can yield massive results with very little effort. It’s the idea that if the project as a whole is like a giant boulder that each team member is trying to move in a certain direction (towards project completion), the vector of force for each person is always somewhat misaligned from the desired direction such that people end up inadvertently wasting some amount of energy pulling against each other. Any steps that can be taken to conserve this energy by: a) communicating the intended direction more clearly b) revealing to each participant their actual vector of pull or c) producing a more compelling reason for people to pull towards the goal, will ultimately yield major gains.
    My Takeaway My Takeaway – This positive effect of this concept is obviously amplified in larger teams. Conversely, the larger the team, the easier it is to dodge responsibility and the more inertia that a stationary group will have. I’m a big proponent of this idea of “paint the vision clearly and then get out of people’s way.” I’ve always thought that energy expended cultivating the enthusiasm and passion of a group is a good buy (ie. if you can get the “WHY” part firmly planted in people’s hearts and minds, the “WHO WHAT WHERE WHEN HOW” questions will find a way to answer themselves). Cockburn validates this notion with a wonderful story from Dee Hock of Visa (second section from the end) and how this type of laissez faire leadership and simple microtouch intervention established a virtuous circle amongst his team and enabled them to successfully deliver a complex system under an ambitious sixty-day deadline. Just read this sentence- “Leaders spontaneously emerged and reemerged, none in control, but all in order. Ingenuity exploded. Individuality and diversity flourished. People astonished themselves at what they could accomplish and were amazed at the suppressed talents that emerged in others.” That’s the flavor of a team operating at peak performance driven by intrinsic motivations from within and that’s what you want to engender.
  3. “Erg-seconds” – the energy/time required to transfer important info
    The idea of “erg-seconds” is an analogy Cockburn makes between the transmission of critical information in a project environment and fluid mechanics, or the dispersion of gasses and liquids in a container. In a workplace at any given time there are “convection currents” of info that are venting info like geysers amongst the team members. Anything you can do to narrow the distance this information must travel to reach the necessary recipients pays off exponentially in progress, morale, fewer errors, etc. Mole-meters/sec is the metric used in the realm of fluid mechanics, but that unit does not directly translate over since distance traveled is not the key factor whereas “time necessary to achieve clear communication” is. The optimal situation is to have the people that require the most back-and-forth communication sitting in the same room so they can tap each other for help and overhear and interject when they have valuable advice to contribute. Overkill of this setup creates what Cockburn calls “Drafty cubes” or too much interference with irrelevant info bombarding the programmer. Like anything it’s a balance that must be optimized. Moving further down the continuum of proximity, adding cubes, walls, floors, buildings or even separate geographical locations into the mix gradually introduces more and more friction that adds “erg-seconds” to each interaction in a project and (like we determined in #2) gets amplified in larger teams.
    My Takeaway My Takeaway – This is a very valuable way of thinking about the flow of info on a project. Being a solo consultant, I encounter situations where project delays get compounded by unnecessary “erg-seconds” on interactions not within my development team (of one), but when there are multiple entities involved as clients, and especially when there are tiered teams in each entity. I generally mitigate this problem by occasionally working onsite to reap the benefit of some of the “osmosis” and “convection currents” Cockburn mentions. There is admittedly no substitute for face-to-face interaction- body language, tone of voice, gestures, proximity cues and interjective feedback are lost or hindered when communication occurs via any other method. Neglecting the value of being there to absorb the situation from time to time is a mistake. I have explored the idea of off shoring discrete portions of my projects lately but this concept warns that this geographic dispersion of team members might magnify the “erg-seconds” effect on even simple tasks to the point where it defeats the utility of off shoring I will have to re-analyze the tradeoffs with an eye towards how this effect could be nullified.
  4. “Teeing up work” to the bottleneck player
    If we think of software development as an ongoing game of interactive cooperation and communication as Cockburn wishes, then the principle he espouses “#7 Efficiency is expendable in non bottleneck activities” should take care of itself. It’s the concept that if you have say five cooks and one delivery person in your pizza joint, the driver is the bottleneck and your cooks had better “tee up” those pizzas by double-checking that the orders are correct, printing and verifying the directions, perhaps calling when the directions are unclear and making sure the boxes are pristinely stacked in their warming sleeves on the counter for the driver when he/she shows up.
    My Takeaway My Takeaway – Again, I don’t encounter this problem as much since I am solo- every time as the sole developer, I’ll be the bottleneck. The idea that occurs to me though is that I need to utilize the workers in the client’s company better if they can be at my disposal. In even the “best-packaged” project there is probably some added level of prep-work and optimization that can be done to “tee up” the materials for execution. Decentralizing these efforts and pushing as much of this type of activity to the client’s side definitely bides me more time to allocate to activities for which I truly am the bottleneck, plus it has a by-product of #3 and getting some convection currents working to my advantage.
  5. The right amount of documentation: light but sufficient
    So there are two goals in this ongoing game of invention and communication- 1) execute well on the current iteration 2) set yourself up for success on the next “game.” If you’re like most developers, documentation is always an afterthought and it’s something you only do when it’s mandated by a manager. Documentation (in the world of Agile) takes on a completely different meaning – there is no strict format for what constitutes appropriate documentation. It’s simply “whatever is necessary to communicate the essence of the theory or project to those that follow.” That may sound too foofy to some but it’s important because (consistent w/ the Manifesto) it’s not constraining implementation to a particular convention or process but rather focusing on the goal of communicating the important aspects. Cockburn talks about methods like “progress radiators” and videotaped whiteboard sessions as simpler ways of preserving and conveying this understanding. The traditional view of documentation is one of a detailed functional spec that precedes the project and captures every requirement and then some system for documenting the code afterwards to again capture every detail of execution so that it can be understood by programmer’s that follow. According to Cockburn’s advice, a picture is a thousand words and a video is worth a kajillion.
    My Takeaway My Takeaway – I found this to be extremely insightful and especially relevant to what I’m proposing to do with Grid7. Too often developers receive a mandate from management to perform documentation in some nit-picky format that distracts them from valuable time they could spend just making things better. A simple picture of a whiteboard to accompany a paragraph of instructions can go miles towards bridging the knowledge gap and that’s exactly what we used to do at a place I worked called Interactive Sites. I’m all about the idea of videotaped whiteboard sessions though and I have already made it a habit of using my iPod along with my Griffin iTalk to audiotape meetings so that I can refer back to them and bring someone new up to speed by giving them an MP3 of a previous conversation rather than regurgitating it. I plan to hold monthly status meetings via Skype on the Grid7 stuff and you bet we will be videotaping them and archiving them for future developers that enter the project.
  6. A “Shared Metaphor” as a common anchor point for developers
    The idea is that when working with complex systems and many developers, if you can develop a “shared metaphor” or a more tangible scenario that parallels the problem domain, people will be able to draw upon these parallels to make decisions and therefore remain more cohesive in their approach than if they lacked the shared metaphor. This contribution was from Kent Beck, one of the originators of the Extreme Programming methodology. I cannot comment on the efficacy of this tactic amongst a dev team having never used it myself, but it certainly sounds like it has merit. I think anything you can do to align the vision of team members to some landmark will have value, especially when the project involves highly abstract concepts.
    My Takeaway My Takeaway – “Having everyone on the same page” is important and there is absolutely value to using metaphors to assist in scenarios when the concepts are abstract. In fact, just last week in my meeting with Value Options and Arizona Behavioral Health regarding the construction of the extranet they will use to collaborate on housing homeless folks, I was able to frame the abstract idea of our anonymous wait list in terms of the red ticket dispenser you see at the post office that dispenses numbered tickets anonymously. We were able to collectively work from that image much easier than talking in abstractions and it helped not only in communicating but we were actually able to discover additional ways of simplifying how the wait list works by drawing on parallels of how the ticket dispenser functions.
  7. Tradition vs. Transcendence as the foundation of good design
    In other words, “how much do you balance making the interface for your word processing program look like a typewriter in order to make sense for old school folks vs. making it the cleanest-possible, sensible interface for getting the job done at the risk of alienating people who are less savvy?” This is the age-old question of design (and not just in computer apps). There is some optimal balance that exists in a newly-designed apparatus that meshes tradition with transcending innovation to push the state of the art forward and test the boundaries of what’s possible today.
    My Takeaway My Takeaway -With graphical interfaces especially I know big companies like Microsoft spend millions of dollars in research to find that balance. We had Russ Ruggia, a Developer Evangelist for MS come and talk to our CFUG awhile back and he mentioned that MS had spent something like $7bn in psychology research in developing the forthcoming interface for Windows Longhorn/Vista).
  8. Criticality and Team size determine methodology weight
    Any project can be evaluated on a 2D graph that shows team size on the X-axis and system criticality on the Y-axis (system criticality refers to the severity of loss in the event of a bug, lowest being an inconvenience and highest being loss of life). Cockburn breaks down the graph into quadrants and explains why projects that stray further from the origin of this graph require heavier methodologies. Even small projects at NASA demand a heavier-weight methodology than the typical web 2.0 app due to criticality. Likewise, even a large non-critical project with many team members like say, the latest Ubuntu Linux distribution, requires a heaver methodology due to the organization required to manage that many team members.
    My Takeaway My Takeaway – Again, the right tools for the right time. It’s not enough to pick one methodology and stick with it in all situations. The skilled developer will recognize that each tool and methodology has validity in different circumstances and will understand the factors at work and when it makes sense to choose one over the other. I’ve never worked on any of the “L stage” critical projects like medical devices where lives are at stake. I have worked on “Discretionary Monies” and “Essential Monies” projects however while running integration with some of the major credit card processors at Apriva. I can certainly testify to the fact that credit card companies have strict methodologies in place for how things happen, to the point where it can become crushingly burdensome on development. Given the position on the criticality axis of Cockburn’s suggested chart, this decision makes sense however.

Well that was a lot of rambling but I hope this condensed version of Agile Software Development is useful. It was a decent read and not as dense as it may sound. I recommend checking out Cockburn’s talk on ITconversations.com at the link above if you have interest in this stuff. It’s definitely given me some ideas for how to approach things in the forthcoming developer co-op.

sean

© 2005 Lights Out Production – All Rights Reserved Worldwide
© 2005 Lights Out Production – All Rights Reserved Worldwide

Nov 16

Well file this one under the Rant category (with a capital "R") – if you’re not in the mood for a solid Wed-morning rant session, definitely skip this post… People that know me are aware that I have been engaged in a battle against the City of Scottsdale and Arizona American Water Company along with a handful of other people from my neighborhood for the past year. This all started about this time last year when we were told they would be building a massive arsenic treatment facility in my backyard and constructing these enormous football-field-sized tanks that would eclipse the view our neighborhood has of Camelback mountain. I’m not going to re-hash the details of all the deception that was involved on their part in the process of pushing this project through, how it was a profit-motivated venture for a private company slid through under the guise of a public safety concern, nor will I explain the major failure on the part of our City Council to stand up for the neighborhood (my neighborhood actually created an entire web site to do just that). After exhausting all the possible avenues in the government appeal process, we were eventually driven to filing a lawsuit against the City of Scottsdale and AAWC to try and obtain a preliminary injunction to stop this madness. On a shoestring budget against a multi-billion-dollar international utility conglomerate, we managed to hold our own in court and present a compelling case (big ups to Jim Palecek of the firm Hunter & Palecek), however, in an absolute mockery of justice, the judge (having sided with us throughout the six-day trial) flipped 180deg against us in the ruling and turned down our motion.

Last night was our last ditch effort to stop this project by presenting the new evidence that came to light during the discovery phase in the litigation that clearly showed the water company had misled neighbors and City Council to obtain the permit for their facility. The end result of last night was that we were completely blown off- it was an absolute charadeof-a-hearing.. After sitting 3.5hrs through some of the most mundane beauracratic BS, listening to complaints about the nuissance of the whine from those motorized scooters, we finally were able to present our case. You wanna talk about nuissance How about a 28′ wall of steel that spans a football field in length and blocks out the sun in a historical preserve! Well we might as well have been presented to a brick wall. Half the Council members got up and went to the bathroom, one guy (Littlefield) seemed to be reading his mail and perhaps playing solitare under his desk (I kid you not, he ducked down and emerged like a minute later, maybe he took a power-nap, I dunno but I’m bummed I’m paying his salary). With the exception of one guy for whom I have the utmost respect (Ron McCullagh), we have possibly the most dense lineup of idiots running our City. At this point I can confidently say I would be more comfortable randomly selecting a handful of lobotomized monkeys to staff the Council – at least the decisions that emerged wouldn’t be marred by "protect-your-ass" political self-serving motivations.

It’s one thing to see ignorance in action but what happened tonight was a pure, sinister squelching of a legitimate cause by a group of concerned property owners that have collectively spent thousands of hours and dollars fighting this issue over the last year. While the Council members may have evaded responsibility in this instance and dodged the massive shame they deserve for their handling of the matter- I will just say "you may be able to foil the legal and governmental processes, trash justice and democracy and evade accountability for your actions/inactions, but the one thing you cannot outrun is karma." Just look at the online petition we have, read the comments and tell me how ninety homeowners can be this pissed off if you really had followed due process like you claim!! Now think back to a time when you failed to stand up to a bully on the playground when you wished you would have- well we have no regrets here: we looked this bully that is AAWC square in the eyes and made our stand. I read the response from the president of AAWC, and I used his for the only thing it was good for and responded back personally with a letter of my own. Imagine what it’s like to donate hundreds of hours of your free time to a cause you know is just only to have it ultimately trampled by the very people whose sole job it is to protect your interests- the elected idiots that realize they screwed this up and are now tryinig to minimize how bad they look publicly by sweeping things under the rug and smiling the whole time smug with the knowledge that they are safe. Well I got two words- Google PR6 yatches – though I hate to taint this space with a rant like this, this story needs to be told. Anyways, I’m done now. I would just like to give a final "tip ‘o the middle finger" to a few of the spineless bad guys that managed to get away unscathed from this whole situation. In no particular order, they are:

Paul Townsley, Rob Antoniak, John Berry, Joe Gross, Susan Bittersmith, Glen Hallman, Technical Solutions, Arizona American Water Company, City of Scottsdale, Mayor Mary Manross, Betty Drake, Wayne Ecton, Jim Lane, Robert Littlefield, and Kevin Osterman – you guys rock. NOT.

(and I promise to keep the quotient of rant-to-content minimal from now on ;-)

© 2005 Lights Out Production – All Rights Reserved Worldwide

Nov 14

First off, Southwest Rapid Rewards are transferable which means that if you are traveling to a city that is serviced by their airline, you should never pay more for a roundtrip ticket than the current ebay price for a rapid rewards voucher (which is generally about $300). Even though RR vouchers come imprinted with your name, according to their Terms of Service they are fully-transferable. I have actually been in the situation where I had booked a flight and was relying upon receiving an RR voucher from SWA in the mail which never came. The morning of my flight, the mailbox was still empty but I was able to run downtown to a ticket broker and snag an RR credit for $270 and then sell back my voucher when it arrived later the next week for $230 (flying essentially for $40 which was not bad considering the alternative at that point which was to purchase a same-day ticket at the counter from Phx to Dallas for $600+).

So next time you are facing absurd airfare…

  1. check and see if SW flies to your intended destination
  2. make sure your travel days do not fall on any of the blackout dates
  3. and run a search on ebay and yahoo auctions for “rapid rewards.”

If you’ve got time to play with, a better strategy is to setup a persistent ebay search using FreeBiddingTools.com and then use your favorite RSS reader to monitor the results over a few days. Don’t forget local ticket brokers will have these too so if you are in a time crunch like I was, that’s an option. Lastly, below is a quick compilation of the various travel services I use to check for plane tix. A neat trick if you use Firefox as your browser is to put them all in a bookmark folder called “Travel” and then right-click on that folder from within FF and choose “Open in Tabs.” This allows you to quickly pull up all travel sites and run your flight search against each to find price discrepancies.

© 2005 Lights Out Production – All Rights Reserved Worldwide

preload preload preload