<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.thinkulum.net/w/index.php?action=history&amp;feed=atom&amp;title=Software_Development%2FSources</id>
	<title>Software Development/Sources - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.thinkulum.net/w/index.php?action=history&amp;feed=atom&amp;title=Software_Development%2FSources"/>
	<link rel="alternate" type="text/html" href="https://www.thinkulum.net/w/index.php?title=Software_Development/Sources&amp;action=history"/>
	<updated>2026-11-01T07:02:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://www.thinkulum.net/w/index.php?title=Software_Development/Sources&amp;diff=442&amp;oldid=prev</id>
		<title>Andy Culbertson: Merged the Privacy section into Security.</title>
		<link rel="alternate" type="text/html" href="https://www.thinkulum.net/w/index.php?title=Software_Development/Sources&amp;diff=442&amp;oldid=prev"/>
		<updated>2019-05-07T14:08:21Z</updated>

		<summary type="html">&lt;p&gt;Merged the Privacy section into Security.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:08, 7 May 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l55&quot;&gt;Line 55:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 55:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Raymond, Eric S. &amp;#039;&amp;#039;The Art of UNIX Programming: With Contributions from Thirteen UNIX Pioneers, Including Its Inventor, Ken Thompson&amp;#039;&amp;#039;. Nachdr. Addison-Wesley Professional Computing Series. Boston: Addison-Wesley, 2008.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Raymond, Eric S. &amp;#039;&amp;#039;The Art of UNIX Programming: With Contributions from Thirteen UNIX Pioneers, Including Its Inventor, Ken Thompson&amp;#039;&amp;#039;. Nachdr. Addison-Wesley Professional Computing Series. Boston: Addison-Wesley, 2008.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Privacy ===&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Bowman, Courtney, Ari Gesher, John K. Grant, Daniel Slate, and Elissa Lerner. &#039;&#039;The Architecture of Privacy: On Engineering Technologies That Can Deliver Trustworthy Safeguards&#039;&#039;. First edition. Sebastopol, CA: O’Reilly Media, 2015.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Project management ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Project management ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l79&quot;&gt;Line 79:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 75:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Security ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Security ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Bowman, Courtney, Ari Gesher, John K. Grant, Daniel Slate, and Elissa Lerner. &#039;&#039;The Architecture of Privacy: On Engineering Technologies That Can Deliver Trustworthy Safeguards&#039;&#039;. First edition. Sebastopol, CA: O’Reilly Media, 2015.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Howard, Michael, David LeBlanc, and John Viega. &amp;#039;&amp;#039;24 Deadly Sins of Software Security: Programming Flaws and How to Fix Them&amp;#039;&amp;#039;. New York: McGraw-Hill, 2010.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Howard, Michael, David LeBlanc, and John Viega. &amp;#039;&amp;#039;24 Deadly Sins of Software Security: Programming Flaws and How to Fix Them&amp;#039;&amp;#039;. New York: McGraw-Hill, 2010.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Andy Culbertson</name></author>
	</entry>
	<entry>
		<id>https://www.thinkulum.net/w/index.php?title=Software_Development/Sources&amp;diff=404&amp;oldid=prev</id>
		<title>Andy Culbertson: Added the article.</title>
		<link rel="alternate" type="text/html" href="https://www.thinkulum.net/w/index.php?title=Software_Development/Sources&amp;diff=404&amp;oldid=prev"/>
		<updated>2019-02-23T22:45:26Z</updated>

		<summary type="html">&lt;p&gt;Added the article.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== Code examples ==&lt;br /&gt;
&lt;br /&gt;
Here are projects that show up in lists of high quality code, so I&amp;#039;ll examine some of them and include any relevant discoveries in the project. All the projects I&amp;#039;m listing for now are in Python.&lt;br /&gt;
&lt;br /&gt;
* [https://launchpad.net/bzr Bazaar]&lt;br /&gt;
* [https://github.com/boto/boto3 boto3]&lt;br /&gt;
* [https://github.com/django/django Django]&lt;br /&gt;
* [https://github.com/pallets/flask Flask]&lt;br /&gt;
* [https://github.com/gevent/gevent gevent]&lt;br /&gt;
* [https://www.mercurial-scm.org/downloads Mercurial]&lt;br /&gt;
* [https://github.com/nltk/nltk NLTK]&lt;br /&gt;
* [https://github.com/Pylons/pyramid Pyramid]&lt;br /&gt;
* [https://github.com/reddit/reddit reddit]&lt;br /&gt;
* [https://github.com/kennethreitz/requests Requests]&lt;br /&gt;
* [https://github.com/zzzeek/sqlalchemy SQLAlchemy]&lt;br /&gt;
* [https://github.com/kennethreitz/tablib Tablib]&lt;br /&gt;
* [https://github.com/tornadoweb/tornado Tornado]&lt;br /&gt;
* [http://trac.edgewall.org/browser/trunk/trac trac]&lt;br /&gt;
* [https://github.com/twisted/twisted Twisted]&lt;br /&gt;
* [https://github.com/rg3/youtube-dl youtube-dl]&lt;br /&gt;
&lt;br /&gt;
In addition to these, I keep a mental list of software with features I might want to emulate, even if I don&amp;#039;t plan to study their code very thoroughly:&lt;br /&gt;
&lt;br /&gt;
* [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code Firefox] - automatic updating; possibly its add-on architecture, if it ever settles down&lt;br /&gt;
* [https://wordpress.org/download/source/ WordPress] - plugin hooks&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
&lt;br /&gt;
Buschmann, Frank, ed. &amp;#039;&amp;#039;Pattern-Oriented Software Architecture: A System of Patterns&amp;#039;&amp;#039;. Chichester ; New York: Wiley, 1996.&lt;br /&gt;
&lt;br /&gt;
Fowler, Martin. &amp;#039;&amp;#039;Patterns of Enterprise Application Architecture&amp;#039;&amp;#039;. The Addison-Wesley Signature Series. Boston: Addison-Wesley, 2003.&lt;br /&gt;
&lt;br /&gt;
Martin, Robert C. &amp;#039;&amp;#039;Clean Architecture: A Craftsman’s Guide to Software Structure and Design&amp;#039;&amp;#039;. Boston: Prentice Hall, 2018.&lt;br /&gt;
&lt;br /&gt;
=== Continuous delivery ===&lt;br /&gt;
&lt;br /&gt;
Humble, Jez, and David Farley. &amp;#039;&amp;#039;Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation&amp;#039;&amp;#039;. Upper Saddle River, NJ: Addison-Wesley, 2010.&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
&lt;br /&gt;
Agans, David J. &amp;#039;&amp;#039;Debugging: The Nine Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems&amp;#039;&amp;#039;. New York: Amacom, 2002.&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
Evans, Eric. &amp;#039;&amp;#039;Domain-Driven Design: Tackling Complexity in the Heart of Software&amp;#039;&amp;#039;. Boston: Addison-Wesley, 2004.&lt;br /&gt;
&lt;br /&gt;
Gamma, Erich, ed. &amp;#039;&amp;#039;Design Patterns: Elements of Reusable Object-Oriented Software&amp;#039;&amp;#039;. Addison-Wesley Professional Computing Series. Reading, Mass: Addison-Wesley, 1995.&lt;br /&gt;
&lt;br /&gt;
Martin, Robert C., ed. &amp;#039;&amp;#039;Clean Code: A Handbook of Agile Software Craftsmanship&amp;#039;&amp;#039;. Upper Saddle River, NJ: Prentice Hall, 2009.&lt;br /&gt;
&lt;br /&gt;
McConnell, Steve. &amp;#039;&amp;#039;Code Complete&amp;#039;&amp;#039;. 2nd ed. Redmond, Wash: Microsoft Press, 2004.&lt;br /&gt;
&lt;br /&gt;
Raymond, Eric S. &amp;#039;&amp;#039;The Art of UNIX Programming: With Contributions from Thirteen UNIX Pioneers, Including Its Inventor, Ken Thompson&amp;#039;&amp;#039;. Nachdr. Addison-Wesley Professional Computing Series. Boston: Addison-Wesley, 2008.&lt;br /&gt;
&lt;br /&gt;
=== Privacy ===&lt;br /&gt;
&lt;br /&gt;
Bowman, Courtney, Ari Gesher, John K. Grant, Daniel Slate, and Elissa Lerner. &amp;#039;&amp;#039;The Architecture of Privacy: On Engineering Technologies That Can Deliver Trustworthy Safeguards&amp;#039;&amp;#039;. First edition. Sebastopol, CA: O’Reilly Media, 2015.&lt;br /&gt;
&lt;br /&gt;
=== Project management ===&lt;br /&gt;
&lt;br /&gt;
Fogel, Karl. &amp;#039;&amp;#039;Producing Open Source Software: How to Run a Successful Free Software Project&amp;#039;&amp;#039;. Version 2.3106., 2018. https://producingoss.com/.&lt;br /&gt;
&lt;br /&gt;
McConnell, Steve. &amp;#039;&amp;#039;Rapid Development: Taming Wild Software Schedules&amp;#039;&amp;#039;. Redmond, Wash: Microsoft Press, 1996.&lt;br /&gt;
&lt;br /&gt;
Stellman, Andrew, and Jennifer Greene. &amp;#039;&amp;#039;Learning Agile&amp;#039;&amp;#039;. First edition. Beijing: O’Reilly, 2014.&lt;br /&gt;
&lt;br /&gt;
=== Refactoring ===&lt;br /&gt;
&lt;br /&gt;
Fowler, Martin, and Kent Beck. &amp;#039;&amp;#039;Refactoring: Improving the Design of Existing Code&amp;#039;&amp;#039;. The Addison-Wesley Object Technology Series. Reading, MA: Addison-Wesley, 1999.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
McDonald, Kent J. &amp;#039;&amp;#039;Beyond Requirements: Analysis with an Agile Mindset&amp;#039;&amp;#039;. New York: Addison-Wesley, 2016.&lt;br /&gt;
&lt;br /&gt;
Patton, Jeff. &amp;#039;&amp;#039;User Story Mapping: Discover the Whole Story, Build the Right Product&amp;#039;&amp;#039;. First edition. Beijing ; Sebastopol, CA: O’Reilly, 2014.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Howard, Michael, David LeBlanc, and John Viega. &amp;#039;&amp;#039;24 Deadly Sins of Software Security: Programming Flaws and How to Fix Them&amp;#039;&amp;#039;. New York: McGraw-Hill, 2010.&lt;br /&gt;
&lt;br /&gt;
=== Stability ===&lt;br /&gt;
&lt;br /&gt;
Nygard, Michael T. &amp;#039;&amp;#039;Release It! Design and Deploy Production-Ready Software&amp;#039;&amp;#039;. Second edition. The Pragmatic Programmers. Raleigh, North Carolina: The Pragmatic Bookshelf, 2018.&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
Beck, Kent. &amp;#039;&amp;#039;Test-Driven Development: By Example&amp;#039;&amp;#039;. The Addison-Wesley Signature Series. Boston: Addison-Wesley, 2003.&lt;br /&gt;
&lt;br /&gt;
Feathers, Michael C., and Robert C. Martin. &amp;#039;&amp;#039;Working Effectively with Legacy Code&amp;#039;&amp;#039;. Robert C. Martin Series. Upper Saddle River, NJ: Prentice Hall Professional Technical Reference, 2005.&lt;br /&gt;
&lt;br /&gt;
Freeman, Steve, and Nat Pryce. &amp;#039;&amp;#039;Growing Object-Oriented Software, Guided by Tests&amp;#039;&amp;#039;. The Addison-Wesley Signature Series. Upper Saddle River, NJ: Addison Wesley, 2010.&lt;br /&gt;
&lt;br /&gt;
Meszaros, Gerard, and Martin Fowler. &amp;#039;&amp;#039;XUnit Test Patterns: Refactoring Test Code&amp;#039;&amp;#039;. Upper Saddle River, New Jersey: Addison-Wesley, 2007.&lt;br /&gt;
&lt;br /&gt;
=== User interface ===&lt;br /&gt;
&lt;br /&gt;
Cooper, Alan. &amp;#039;&amp;#039;About Face: The Essentials of Interaction Design&amp;#039;&amp;#039;. 4th edition. Indianapolis, IN: John Wiley and Sons, 2014.&lt;br /&gt;
&lt;br /&gt;
Rosenfeld, Louis, Peter Morville, and Jorge Arango. &amp;#039;&amp;#039;Information Architecture: For the Web and Beyond&amp;#039;&amp;#039;. Fourth edition. Sebastopol, CA: O’Reilly Media, Inc, 2015.&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Essays]]&lt;br /&gt;
[[Category:Developing]]&lt;/div&gt;</summary>
		<author><name>Andy Culbertson</name></author>
	</entry>
</feed>