Warning: Cannot modify header information - headers already sent by (output started at /home1/thelemur/public_html/blog_subdomain/wp-content/plugins/wp-cache/wp-cache-phase2.php:98) in /home1/thelemur/public_html/blog_subdomain/wp-includes/feed-rss2.php on line 8
blog.thelemur.com http://blog.thelemur.com Home of all things lemur Fri, 25 Jun 2010 05:45:34 +0000 http://wordpress.org/?v=2.8.6 en hourly 1 Voter Registration Fraud http://blog.thelemur.com/politics/voter-registration-fraud http://blog.thelemur.com/politics/voter-registration-fraud#comments Fri, 04 Jun 2010 03:11:23 +0000 lemur http://blog.thelemur.com/?p=176 Fraudulent voter registrations from ACORN hit the air waves during the 2008 presidential election. The level of coverage made me start thinking about why voter registration fraud was portrayed as a serious threat.

Voter Registration vs Census

Census records are gathered every 10 years and used to:

  • Redistrict states (a.k.a. Gerrymandering)
  • Issue funds and subsidies to counties and states
  • Build appropriate transportation infrastructure
  • Ensure there are enough schools and hospitals
  • …and more¹

Voter registration records are gathered/updated constantly and used by the local and state government to:

  • Verify that a citizen’s personal identification matches a valid voter record
  • Confirm that a citizen lives inside the district in which they are attempting to vote
  • Prevent citizens from voting multiple times
  • Calculate voter statistics and trends

Voter Registration vs Votes

Elections are won by the politician with the most votes. Election results, state funding, schools, roads, prisons, etc. are not affected by voter registration data.

Faking Votes

Let’s say a citizen registers in multiple local districts in a single House of Representatives district. It is assumed that polling station workers will recognize the citizen on return visits. The citizen has one fake ID per local district. The citizen drives to each polling station and casts a vote for a party. At the end of the day there are 10 extra votes for a political party.

The number of “Kiss me I Voted” stickers on the citizen’s jacket might be a dead giveaway. Even if the citizen is savvy enough to remove them after each vote – I still don’t believe in organized registration/ voter/ driving rings. It is way too cumbersome.

The only way in which voter registration fraud could actually affect an election is if the voting stations had a collusion with ACORN to submit votes on behalf of bogus registrants. If this was true, there would be thousands of poll station workers in on the secret. I find it hard to believe this many people would remain silent after all this time.

ACORN has never been charged with stuffing ballots or altering legitimate ballots.

Faking Signatures

rottenacorn.com² has a list of charges brought against the organization. Falsified ballot initiative signatures appear to be the most severe infraction (in my opinion). These ballot initiatives were asking for an increase in the minimum wage to be added to the ballot.

When a ballot initiative receives the minimum number of required signatures, the initiative is added to the ballot for the next election. Ultimately, the voters are responsible for passing or blocking the proposed legislation.

Conclusion

It appears that ACORN stepped over a legal line while attempting to help lower income individuals and families. In my opinion, they have only helped get the ball rolling on certain issues.

References

  1. http://pasdc.hbg.psu.edu/pasdc/census_connection/decennial/data/howused.html
  2. http://www.rottenacorn.com/activityMap.html
  3. http://www.zcommunications.org/taking-action-on-minimum-wage-by-david-swanson
  4. http://www.sundriesshack.com/2008/10/10/why-acorns-voter-registration-fraud-is-important/
]]>
http://blog.thelemur.com/politics/voter-registration-fraud/feed 0
MODx Module Development Tips http://blog.thelemur.com/development-procedures/modx-module-development-tips http://blog.thelemur.com/development-procedures/modx-module-development-tips#comments Mon, 03 May 2010 04:53:11 +0000 lemur http://blog.thelemur.com/?p=158 This is an ongoing list of best procedures and tips for MODx module development. Modules are used in the MODx manager to help site administrators control custom functionality.

Pasting PHP Code into the Manager

Pasting PHP code into the Module Manager or Snippet Editor can be extremely frustrating. Copy/paste your code into a file under /assets/modules/{module-name}/{module-name}.module.php or assets/snippets/{snippet-name}/{snippet-name}.snippet.php.

For modules, delete all PHP source in the Module Manager editor and paste:

<?php
 
require_once($modx->config['base_path'] . "assets/modules/{module-name}/{module-name}.module.php");
 
?>

For snippets, delete all PHP source in the Create/edit Snippet textarea and paste:

<?php
 
require_once($modx->config['base_path'] . "assets/snippets/{snippet-name}/{snippet-name}.snippet.php");
 
?>
  • If your snippet fails to display after require-ing the helper file. Try using echo to output the snippet’s response.
  • This method allows you to continue using your preferred PHP editor while developing modules and takes two steps out of the testing procedure.

Helper Files

Most of the modules I develop have overlapping functionality. I like to move generic/overlapping functions into an external file and include them in my modules and snippets. This practice helps keep my main module and snippet code tidy. If you prefer an object-oriented approach, you can use classes instead of procedural functions.

As an example, my module ‘user_manager.module.php’ includes a ‘user_manager.inc.php’. This inc.php file is included in the admin area module and front-end snippet.

Database Access

The following code snippet will give you a quick overview of how to access the database from a MODx module:

function getUserTotalPoints($web_user_id)
{
	global $modx;
 
	$web_user_id = $modx->db->escape($web_user_id);
 
	$tp = $modx->db->config['table_prefix'];
 
	$fields = 'SUM(tbl_points.points) AS total';
	$from = $tp . 'web_user_competency_points AS tbl_points';
	$where = 'tbl_points.web_user_id=' . $web_user_id;
 
	$result = $modx->db->getRow($modx->db->select($fields, $from, $where));
 
	return intval($result['total']);
}
  • $modx is the document parser.
  • $modx->db is the database connection to the primary MODx database.
  • $tp is the table prefix for the database (default is ‘modx_’).
  • The example above assumes there will only be one row returned. Since the query will never return more than one row, we can use getRow() on a select() in a single line.
  • If your result set will return more than one row, use:
    while($row = $modx->db->getRow($result))

Refer to http://wiki.modxcms.com/index.php/API:DBAPI for more information.

Module Sections

A single module may have more than one section or state. I use an ‘opcode’ to keep track of the current module state. For more information visit: http://svn.modxcms.com/docs/display/MODx096/Writing+the+module+code

]]>
http://blog.thelemur.com/development-procedures/modx-module-development-tips/feed 0
Tort Reform Part 1 http://blog.thelemur.com/politics/tort-reform-part-1 http://blog.thelemur.com/politics/tort-reform-part-1#comments Wed, 07 Apr 2010 00:51:35 +0000 lemur http://blog.thelemur.com/?p=91 Tort reform became an increasingly popular topic during the health reform debate. Tort reform is the legislative process of reducing outrageous payouts in civil lawsuits. This article is the first in a series and examines how tort reform works.

How Tort Reform Works

Tort reform only affects civil lawsuits. A civil lawsuit is where a victim “brings a case for money damages against the offender or a third party for causing physical or emotional injuries.” ¹

The logic of Tort Reform follows this (or a similar) pattern:

Malpractice Insurance Companies

  1. The government sets limits for the amount of money rewarded in valid civil lawsuits. The government also creates litmus tests to prevent frivolous lawsuits coming into fruition.
  2. The number of frivolous lawsuits decline. The amount of money paid out declines as well.
  3. Malpractice insurance companies retain more capital and can reduce premiums for doctors and hospitals.

Doctors and Hospitals

  1. Doctors are able to perform better services because they’re treating patients based on symptoms instead of running unnecessary tests to “cover their ass.”
  2. Doctors and hospitals pay less for malpractice insurance because their premiums are lower (see above).
  3. Clinics and hospitals can charge less for goods and services.

In short: when the malpractice insurance companies are happy, doctors and hospitals are happy.

Patients

  1. Patients will not be subjected to unnecessary medical procedures just because the doctor is afraid of losing their license.
  2. Health insurance companies can reimburse less for office visits and treatments (see above).
  3. Patient premiums go down.

In short: when doctors and hospitals are happy, patients are happy.

Conclusion

The success marker chains start with the most powerful entity (insurance companies) and ends with the least powerful (consumers). This is known as “Trickle-Down Economics.” The idea is that by helping private companies increase revenue, their wealth will “trickle down” to consumers.

According to the most recent CBO estimate tort reform could reduce the federal deficit by $54 billion over the next 10 years. The current health reform bill does not apply a particular tort reform strategy. Instead, it offers grants to states who wish to experiment with different approaches to tort reform.

Food for Thought

The positive budget implications of tort reform are tangible and blocking any Tort Reform laws is short-sighted. At the same time, where do we draw the line? Is it right for the government to tell you how much you’ve suffered? Why do individuals feel entitled to money they did not earn?

References

]]>
http://blog.thelemur.com/politics/tort-reform-part-1/feed 0
Congress at your Fingertips http://blog.thelemur.com/politics/congress-at-your-fingertips http://blog.thelemur.com/politics/congress-at-your-fingertips#comments Wed, 07 Apr 2010 00:38:42 +0000 lemur http://blog.thelemur.com/?p=131 I believe it is the responsibility of every American to familiarize themselves with major legislative actions of Congress. Unfortunately, the process of fact-checking, cross-referencing, and researching can be time consuming. I find most news outlets unsatisfactory, as most of them are pushing an agenda or are completely full of shit. Instead, I prefer reading the actual legislation. The process is a lot simpler (and much less boring) than you might think.

The Library of Congress has a website for accessing proposed and passed legislation at: http://thomas.loc.gov/. Searches can be conducted with text criteria or bill numbers. Advanced searches allow visitors to break searches down by: session of congress, date ranges, congressman, and so on.

Every bill in Congress is available through the website above. More importantly, every bill has an Excerpt page which explains the bill’s provisions in plain English.

Example Search

Let’s try to find the Patient Protection and Affordable Care Act:

  1. Visit http://thomas.loc.gov/.
  2. Select the search by ‘Bill number’ radio toggle.
  3. Enter “hr3590″ in the search field and click Search.

The bill’s summary page will appear next. The summary page provides quick access to:

  1. List of everyone involved in writing the bill.
  2. The entire bill text in HTML or PDF form.
  3. Any Congressional Budget Office estimates requested.
  4. And so on…

Click the ‘All Information (excerpt text)’ link to view the Layman’s explanation of the bill. This particular bill is a bit heavy (full text is ~900 pages, excerpt is ~60 pages).

]]>
http://blog.thelemur.com/politics/congress-at-your-fingertips/feed 0
Hospital Care for Illegal Immigrants http://blog.thelemur.com/health-reform/hospital-care-for-illegal-immigrants http://blog.thelemur.com/health-reform/hospital-care-for-illegal-immigrants#comments Wed, 31 Mar 2010 20:25:56 +0000 lemur http://blog.thelemur.com/?p=106 President Obama gave his first State of the Union Address in 2010. Rep. Joe Wilson (R) shouted “You lie!” after Obama said government funds would not subsidize illegal immigrants. I’d like to walk through some scenarios that occurred before the new health reform legislation was passed.

History

President Ronald Reagan signed the Consolidated Omnibus Budget Reconciliation Act of 1985. One of the provisions was the Emergency Medical Treatment and Active Labor Act. The EMTALA requires hospitals to treat life threatening conditions regardless of citizenship, legal status, or ability to pay.

Example Scenario

This scenario applies to illegal immigrants, lower income individuals, and anyone uninsured:

  1. A patient enters a hospital with a life threatening condition.
  2. The hospital is required by law to accept the patient and provide life saving care.
  3. The hospital attempts to collect payment through the patient’s insurance.
  4. If the patient does not have insurance, the hospital attempts to collect payment from the patient directly.
  5. If the patient cannot pay directly and does not have insurance, the hospital writes the treatment expenses off as a charitable donation.

The Aftermath

The patient is forced into bankruptcy if: they cannot pay out of pocket, they have no insurance, or their insurance company refuses to pay. Approximately 62% of personal bankruptcies in America are caused by medical-related expenses. The study in the previous link has some caveats, which are explained here.

Charitable donations decrease the hospital’s profit margins over time. The hospital will eventually raise its prices for goods and services to stay profitable. The comptroller of Texas estimated the treatment of illegal immigrants cost $1.3 billion in 2006.

When hospital prices increase, health insurance companies are forced to reimburse more money for the same services. When a health insurance company sees an increase in treatment payouts, it raises premiums for consumers.

Health insurance premiums increase regardless of consumer diet, exercise, smoking habits, and timely payments.

Reality Check

If you have health insurance you are already paying for illegal immigrants, the poor, and uninsured to receive emergency care – but you must jump through five hoops. Under the new health reform legislation, it takes fewer hoops.

References

]]>
http://blog.thelemur.com/health-reform/hospital-care-for-illegal-immigrants/feed 0
Taxonomy-Based Risk Identification http://blog.thelemur.com/processes/taxonomy-based-risk-identification http://blog.thelemur.com/processes/taxonomy-based-risk-identification#comments Sat, 15 Nov 2008 08:01:05 +0000 lemur http://blog.thelemur.com/?p=50 Identifying risks associated with software development is vital for project success. In most cases, developers are aware of risks throughout development but potential problems are not communicated in a way that reflects uncertainty in project health.

Taxonomy-based risk identification is a loosely structured method for quantifying risks during the planning phase(s) of software development.

Process

A project manager interviews developers using a questionnaire to identify risks in different project areas. These areas are referred to as “classes”.

Advantages for Adopting this Method

  • Risks are identified earlier in the project
  • Formal procedures exist for risk identification which helps reduce the ad-hoc nature of typical risk identification in software projects

Dangers of Adopting this Method

  • Inexperienced or untrained developers will not be able to identify risks properly
  • Uptraining may take time away from critical project activities
  • Inexperienced teams usually lack defined risk management procedures

References

http://www.sei.cmu.edu/pub/documents/93.reports/pdf/tr06.93.pdf

This PDF contains the TBRI abstract and the following topics:

  • Background and motivation for introducing a taxonomy-based approach
  • Results of studies which were used to refine TBRI
  • Sample approaches for introducing TBRI into your company and project routines
  • Sample interview questionnaires
]]>
http://blog.thelemur.com/processes/taxonomy-based-risk-identification/feed 0
Unit Testing Web Services http://blog.thelemur.com/development-procedures/unit-testing-web-services http://blog.thelemur.com/development-procedures/unit-testing-web-services#comments Fri, 08 Aug 2008 06:55:13 +0000 lemur http://blog.thelemur.com/?p=49 Web Services allow web-based applications to communicate without operating system and programming language dependencies. Because Web Services are high-level, it is often difficult to diagnose problems when things go wrong. A programmer may have to inspect every layer between application code and WSDL contents before diagnosing a bug. Luckily, there are open source tools available to help test Web Services. InfoWorld has written a review of three open source Web Services unit testing frameworks here.

]]>
http://blog.thelemur.com/development-procedures/unit-testing-web-services/feed 0
Using Wikis for Project Management http://blog.thelemur.com/processes/using-wikis-for-project-management http://blog.thelemur.com/processes/using-wikis-for-project-management#comments Wed, 06 Aug 2008 20:36:06 +0000 lemur http://blog.thelemur.com/?p=45 Among the extravagant web-based project management solutions on the web (Basecamp, @task, Wrike, VeoProject, Clarizen, FogBugz, …more) lies an overlooked gem called “Wiki.” A Wiki is a website designed for collaboration. Wikis allow multiple authors to create, remove, and modify content. The inherent collaborative nature of Wikis makes it a perfect addition to the project manager’s arsenal. Wikis cannot replace software written specifically for PPM, but Wikis can assist organizations during development. This article reviews the following:

  • Some of the relevant features and uses of Wikis for PPM
  • Some overuses of Wikis
  • Possible risks associated with using Wikis
  • A list of articles that prompted me to try Wikis for PPM

Wiki Features

  • Wikis are built for collaboration.
  • Wikis implement unobtrusive document versioning methods.
  • Category and page structure is flexible but can be standardized for specific needs.
  • Wiki content is stored as plain text. This makes it easy to duplicate and format in a text editor if necessary.
  • Plugins and extensions allow further customizations to suit your organization’s needs.
  • Relatively easy to maintain. (Most of the Wikis I tried had simple install scripts)

Recommended Uses of Wikis

  • Meeting and phone conversation notes
  • Requirements gathering
  • Planning project design
  • Risk analysis notes
  • Writing user stories
  • Lightweight asset management (documentation, comps, UML diagrams)

Overuses of Wikis

It’s probably best to use a separate tool for the following project tasks:

  • Bug tracking
  • Time tracking
  • Code versioning
  • Code documentation

Choosing the Right Wiki

If you have not already selected a Wiki package, I recommend reviewing these links:

After you have selected and installed the Wiki of your choosing, it is time to move on to structuring and securing content.

I chose MediaWiki because of its simple installation process and configuration through LocalSettings.php. A friend of mine brought up a good point – most people will be familiar with MediaWiki because Wikipedia uses it; everyone has visited Wikipedia.org.

Wiki Categories

Determine what topics you would like to store in the Wiki and how it will be organized before adding content. This planning will prevent dead links and reworking the Wiki’s structure. Refer to MediaWiki’s category help page for more information and recommendations.

Wiki ACLs

By default, wikis are not built to enforce strict access to pages, categories, and media. Custom extensions can provide Access Control List (ACL) behavior. I would adopt an ACL extension only after considering the sensitivity of your Wiki content. This list contains potential MediaWiki vulnerabilities for adopting 3rd party ACL extensions but may also apply to your wiki software. If you use a MediaWiki alternative, see if it has a built-in ACL or documentation regarding the risks of using ACL plugins.

I recommend installing a new Wiki for each client and protecting the directory with an .htaccess file in favor of using a 3rd party ACL.

Wikis and Version Control

Storing Wiki contents outside of development repositories creates a divergence between project plans and project code since Wikis have their own version control mechanism. This divergence does not introduce risk if the latest project plan is always relevant regardless of the code’s stability. I would recommend keeping Wiki content and code separate because duplicate version controls on a project asset is dangerous.

References

  • Kelly, William. “Building a project Web site the easy way.” TechRepublic – A Resource for IT Professionals. 12 Mar 2003. Tech Republic. 6 Aug 2008 <link>.
  • Macomber, Hal. “Proposal for a P-Log Specification.” Reforming Project Management. 2003. 6 Aug 2008 <link>.
  • Adamy, Miro. “Project management using Wiki.” Miro’s World. 05 Mar 2007. 5 Aug 2008 <link>.
  • Child, Tim. “Wiki as project management tool..” blog.timc3.com. 19 Nov 2006. 6 Aug 2008 <link>.
  • Hohman, Jamie. “Wiki Customization to Resolve Management Issues in Distributed Software Projects.” Software Technology Support Center. Aug 2008. STSC. 6 Aug 2008 <link>.
]]>
http://blog.thelemur.com/processes/using-wikis-for-project-management/feed 6
Using ASUnit with ActionScript 2.0 http://blog.thelemur.com/development-procedures/using-asunit http://blog.thelemur.com/development-procedures/using-asunit#comments Fri, 18 Jul 2008 04:45:17 +0000 lemur http://blog.thelemur.com/?p=12 ASUnit is a framework that allows ActionScript developers to create, build, and run test suites. This post demonstrates how to use the ASUnit Extension with AS2.0 and avoids the topic of why a programmer should use test driven development.

Installation

  1. Close any Macromedia or Adobe applications
  2. Download and install the appropriate Extension Manager for your version of Flash and OS from:
    http://www.adobe.com/exchange/em_download/
  3. Download and install the ASUnit Extension from:
    http://sourceforge.net/project/showfiles.php?group_id=108947&package_id=208529
  4. Open Flash

Verifying the Installation

In Flash, go to the Commands menu and verify the “Create Class” command is available. If the “Create Class” command is not present verify the ASUnit extension is installed and enabled in the Extension Manager. You shouldn’t need to restart your machine.

Getting Started

  1. Create a new AS2.0 FLA in an empty directory.
  2. Save the FLA to an empty directory. ASUnit will need to create files relative to the FLAs path.
  3. Insert the following code on Layer 1, Frame 1
    import AllTests;
    var at:AllTests = new AllTests();
  4. Go to the Commands menu, Create Class menu item
    Create Class
  5. Enter a qualified Class Name
  6. Uncheck “Add to Library as MovieClip.”
  7. Click OK
  8. Go to the Commands menu and select the Build Test Suites command:
    Built Tests

Potential Problems

  • If you don’t enter a namespace when creating a new class ASUnit will output the following error:
    Create Class Error

    This is easy to fix; just enter “com.Example” in the Class Name text box (highlighted in blue above). All classes must use namespaces.

  • If testing the movie does not present you with test case results, go to the Window Menu, Other Panels sub-menu, AsUnit Ui item to show the ASUnit panel.

Recommended Procedures

  1. Setup your project so unit testing is performed outside the development area. I usually setup a directory called “unit_testing” and store my tests there. All development is done in the “development.” folder. The testing FLA Publish Settings must include the “development” folder in its search path list; this is usually entered as a relative URL.
    Folder structure
  2. The “Create Class” command creates two files, a className.as and a classNameTest.as. Delete the className.as

I Want To Create Tests For Existing Code

If you’ve decided to add unit testing to your arsenal mid-project try the following:

  1. Add a directory in your project to hold the unit tests
  2. Create a new AS2.0 FLA in the new directory
  3. Go to the File menu, Publish Settings item, Settings… button
  4. Add your project’s class path to the Classpath list and close
  5. Add the code snippet above

Troubleshooting

If you run into class conflicts check to see if Flash’s global class paths are conflicting with the local Flash paths. To do this in CS3, go to the Edit menu, Preferences item, ActionScript category, ActionScript 2.0 Settings button. In reference to the example above, if your global class paths contain “./classes/” and your testing FLA class paths contain “../flash/classes/” Flash will happily notify you of a conflict.

Resources

]]>
http://blog.thelemur.com/development-procedures/using-asunit/feed 0
Friday Wrapup Meetings http://blog.thelemur.com/processes/friday-wrapup-meetings http://blog.thelemur.com/processes/friday-wrapup-meetings#comments Sat, 12 Jul 2008 21:21:19 +0000 lemur http://blog.thelemur.com/?p=25 Every Friday, developers and managers should meet briefly to discuss the successes of the previous week. A Friday Wrapup Meeting should include all team members regardless of their status, position, or present work-load. The meeting’s mood should be kept upbeat and the discussion should be used to highlight company successes and developer contributions over the past week. This article contains recommendations for conducting these meetings.

Stay Positive

As a general rule of thumb you should avoid negative discussion topics. I should mention this has little to do with sugar coating a slacking developer or ignoring potential problems. Conflicts should be identified and resolved but Friday Meetings are not a suitable environment for this process.

The Friday Wrapup Meeting is conducted at the end of the day on Friday, which gives developers about five minutes after the meeting before they head home for the weekend. If a developer receives schedule pressure for delivering a product, they must wait until Monday to resolve the problem. Negative feedback during Friday Meetings is counter-productive because there is no way for the developer to immediately resolve conflicts without losing time in their personal life. Developers should be encouraged to enjoy their weekend, not stress over work.

Recommended Discussion Items

  • New tools, software packages, and development suites that were reviewed or added to the company’s tool arsenal
  • Creative or innovative solutions to problems encountered during the week
  • Company-related successes such as new projects, clients, or employees
  • Improvements to development procedures
  • How an employee’s work improved or benefited the company

Discussion Items to Avoid

  • Updates on project estimates
  • Reminding developers about upcoming deadlines
  • Problems encountered during the week that still pose a threat to project health
  • Company-related pitfalls
  • Nagging developers to finish work; public humiliation is rarely effective

The Project Manager’s Role

The project manager’s role during Friday Wrapup Meetings is to analyze and transcribe individual developer motivations. Listening to the things that excite your developers reveals potential motivation techniques.

Examples of Interpreting Motivations

  1. A non-JavaScript programmer creates a JavaScript widget: take screenshots of the widget in action and give the programmer a print-out of the widget to put on the wall.
  2. A programmer develops a framework or complex system: have the developer create a class diagram of the framework and frame it above the programmer’s desk.
  3. A designer creates an amazing website design: have the designer piece together a montage of the wireframes, sketches, conceptual pieces, and the final product. Have the designer post this on a wall for everyone to see.

Public Displays of Success

From my examples above you can see I’m leaning towards displaying things developers have worked on in the past. Displaying income earned over the past month or a screenshot of an entire website is a good start but it doesn’t highlight individual contributions. Remember that managers and developers have fundamentally different motivations. Managers are traditionally focused on success while developers are more focused on learning and personal growth.

Side-Effects

Side-effects may include but are not limited to:

  • A company atmosphere that encourages personal growth and exploration
  • Developers are reassured their managers are interested in what they have to say
  • Developers are more motivated because they feel appreciated
  • Increased team cohesion, which is provided by team members listening to others

References

McConnell, Steve. Rapid Development: Taming Wild Software Schedules. Redmond, WA: Microsoft Press, 1996.

McConnell, Steve. Professional Software Development. Boston, MA: Addison Wesley, 2004.

]]>
http://blog.thelemur.com/processes/friday-wrapup-meetings/feed 0