Dec 22

Here’s a simple solution for the traveler who needs to ensure he/she has access to important docs while on the road. If you’re traveleing outside the US for any decent length of time it’s advisable to keep a copy of your passport in a separate place from your original in the event that you lose your wallet. So I’m standing in front of the fax/copier combo-machine trying to make a copy of my passport in preparation for a trip to Cancun tomorrow. I realize there’s no way I can run my passport through the fax machine to make a copy and decide that rather than making a trip to Kinko’s, I’ll scan it on the flatbed and print it out. Then I think "duhhh… if I’m gonna scan it why not just post a digital copy on my server and password-protect that directory?" Then the more I think about it, I realize "why not just scan every critical document I have and store them remotely?" Seriously, how many unforseen occasions could arise in which you need a copy of your health insurance card, or your driver’s license or whatever… and then I finally realize I might as well not even mess with my server/ftp/iis and instead email each jpg to my gmail account. I scanned and emailed each one separatley tagging the subject lines with "vitaldoc: passport" and "vitaldoc: birth certificate." With 2.5GB of free storage and near-perfect uptime, there’s really no reason not to store these critical docs in a gmail acct (assuming you trust the gmail security and are careful about how and where you access your account). And with the prevalence of internet cafes in most foreign cities, finding web access and a printer is a trivial task. If you have a secure USB jumpdrive you could store them there as well.

On that note, as far as the issue of security when accessing your email account from a public terminal- how have people handled this? I’ve just made a point of typing a bunch of random characters in notepad and then cutting/pasting my password from that instead of typing it in verbatim. I guess it’s possible that keyloggers have the potential to record cut/paste operations as well to reverse engineer the password but it seems like one of those scenarios (like using a CLUB on your vehicle) where an attacker probably has easier targets and would pass over this more-difficult-to-reverse-engineer password in favor of snagging just the plaintext passwords.

A completely unrelated tangent- Skype came through large for us again. My friend Benny and I are headed down to Cancun (actually Playa del Carmen) for the holidays for a 2wk adventure. After booking the plane tix we discovered that ALL THE HOTELS down there were sold out on every travel site we tried. Apparently they were hit pretty hard by hurricane Wilma and a bunch of the rooms are actually being used by construction workers. Fortunately we googled around and found this web site where you can sub the citycode in the URL and find local phone numbers of hotels in Mexico. I fired up Skype and we used some of my remaining skypeout minutes to bypass the travelsites and make international calls to the hotel managers directly. After about eight failed attempts we found one that had a vacancy which did not appear online and the owner was completely cool to us. Knowing Spanish, knowing about Skype and figuring out the pattern for the new areacodes in Mexico were the key pieces that facilitated this lucky break. I’ll be without email and phone for a few days. Happy Holidays everyone and Feliz Ano Nuevo.

sean

© 2005 Lights Out Production – All Rights Reserved Worldwide

Dec 18

This debate has been occurring for awhile now fueled by psychology research that seemingly supports the idea that games cause aggressive behavior in those who play them. Although I have zero allegiance to any companies producing violent games, I do feel compelled to chime in and point out a few thinigs in their defense. This whole scenario feels like a modern day rehashing of the same arguments surrounding music censorship put forth by the PMRC over a decade ago.

While there have been compelling studies conducted that show playing violent video games has a positive correlation with aggressive behavior, we all need to remember that causation cannot be assumed from correlation. Kids with violent personalities may just gravitate to the violent games. Just like the faulty conclusions drawn by Tipper Gore, et al in the PMRC days that listening to Judas Priest and Iron Maiden "rotted the brains" of the youngsters and drove them to commiting violent acts like killing their parents- this same leap of causality with games cannot be made upon corrleational studies alone.

I find it hugely ironic that for all the flak that game makers like Rockstar Games are now receiving for selling games like GTA:San Andreas that supposedly instill violent behavior in young people, the US Army is somehow exempt from the same criticism. They are arguably the single biggest contributor to this effect giving away the free first person shooter game America’s Army but I guess it’s okay as long as the violence they encourage is directed to our enemies and not manifested within our own country (?!?). From a pure business perspective, releasing this game for free is an ingenious move on their part- "get ’em while they’re young." It’s essentially the best possible recruitment and training tool they could hope for if the goal is to raise the next generation of soldiers, get them excited about the Army and have a comprehensive training course early on to teach genuine military tactics. It seems ironic though that police are now making a fuss saying that these games are producing more criminal activity. If it can be shown to have any significant effect at all (which it has not), isn’t this what the Army intended? If you stir up a hornet’s nest and get the reaction you sought (only in the wrong place), can you really be mad for getting stung?

I have to say I don’t play violent games. I played Myst and Riven awhile back and I had an Xbox a few years ago that was later stolen – the only game I ever played on it was Tony Hawk Pro Skater. Having now read the actual study that is the centerpiece of the argument against violent games and from a methodology standpoint it seems flawed. Polling 227 college students for aggressive behaviors and showing that their frequency of violent video game play correlates positively with irritability and retaliatory tendencies… okay, so what? It’s expected that you would find a positive correlation in this scenario, in the same way you’d probably discover a positive correlation with personality characteristics like introversion and creativity. For anyone not familiar with this flaw in correlational studies, the classic example in Psychology textbooks is that of a study conducted that found a positive correlation between crime and number of churches in a city. The researcher presents incontrovertible evidence to show that the more churches in a town, the more crime that exists. Obviously, making the causal leap that somehow the crime can be attributed to the churches is absurd. It’s not until we learn the critical driving factor is simply "city size" that we see how ridiculous the prior inference is. The non-correlational studies conducted in the lab setting have their own flaws (drawing the conclusions they did from studies measuring participants’ horn-blasting behavior after violent games seems like a leap in itself- it may have relevance for roadrage scenarios but extrapolating conclusions about general domestic violence and crime seems like an impossible stretch to me).

Having said all this – I can say that I remember in playing Tony Hawk for an extended period one day, and remember walking around outside afterwards and looking at every ledge or bench on the street thinking "I could grind that…" Games are more and more realistic now and their interactive, fast-paced nature definitely elicits stronger physiological responses than just passively watching a violent movie. More research needs to be conducted in this arena, but to claim that "violent games are the root of society’s aggression problems" is just silly. Kids with violent tendencies are undoubtedly drawn to violent games. And articles like this one that try to pin tragedies like Columbine on the Doom video game are just sensasionalistic crap.

© 2005 Lights Out Production – All Rights Reserved Worldwide

Dec 12

The top news headline today on Wired is The Firefox Hacks You Must Have. While they have good suggestions, there are a bunch of essentials that are conspicuously absent. Rather than write up descriptions of each, I’ve screenshotted my extension manager and linked each one directly to its download file. enjoy. If there’s more essentials that are missing, please post below. *Note- you’ll have to authorize installation from this site only once.

© 2005 Lights Out Production – All Rights Reserved Worldwide

Dec 02

If you use Gmail and are on LinkedIn, here’s a neat trick you can use to “excavate” your gmail correspondence for LinkedIn connections. LinkedIn already has an Outlook toolbar that will scour your sent folder in Outlook to do this (which is great if you use outlook as your email client but unfortunately there has been no equivalent for Gmailers that only use the web interface). Well now there is.

You may not be aware that Gmail automatically records the name and email address of anyone to whom you send a message in your contacts. There’s now a feature that allows you to export these contacts in an Outlook CSV file which you can then upload to your LinkedIn account. It will then show you who of those contacts is already on LinkedIn and allow you to invite those people to your network. Here’s the exact steps to make it work:

  1. In Gmail, click the “Contacts” folder on the left. Then click “Export” on the upper right. Choose the Outlook CSV option.
  2. Now go to your LinkedIn account and click on the “My Contacts” tab. Choose the “Other Contacts” sub tab and then click on “upload contacts” in the upper right.
  3. Follow the instructions to verify the contacts are correct. Now when looking at your contacts you should see something like this:
  4. Follow that link and you should see a list of all your contacts that are currently on LinkedIn. Now you just invite them to join your network.

Depending on how you use your LinkedIn account, you may want to be more or less stringent with who you invite. I treat mine fairly sacredly and only connect with the people that I personally know well enough where I would feel comfortable vouching for their capabilities.

This method boosted my contacts ten-fold and I discovered a bunch of people that I deal with daily who are already on LinkedIn. HTH

-sean

© 2005 Lights Out Production – All Rights Reserved Worldwide

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

preload preload preload