<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;C0cMRno7eCp7ImA9WhRUFEU.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596</id><updated>2012-01-25T00:44:47.400-08:00</updated><category term="education" /><category term="mysql" /><category term="php" /><category term="security" /><category term="programming" /><category term="perl" /><category term="games" /><category term="conference" /><category term="antipattern" /><category term="awk" /><category term="sql" /><category term="interviewing" /><category term="python" /><category term="trees" /><category term="software" /><category term="consulting" /><category term="rails" /><category term="licensing" /><category term="mac" /><category term="history" /><category term="performance" /><category term="framework" /><category term="testing" /><category term="architecture" /><category term="writing" /><category term="best-practices" /><category term="management" /><category term="database" /><title>Keeping it Simple</title><subtitle type="html">Being mindful of best practices in software development fundamentals can be more effective than adopting every latest technology.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/KeepingItSimple" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="keepingitsimple" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CEcERn0zfCp7ImA9WxFSE0o.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-7436523521047219713</id><published>2010-04-15T15:30:00.000-07:00</published><updated>2010-04-15T15:53:27.384-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-15T15:53:27.384-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="best-practices" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="writing" /><title>Don't Put the Cart Before the Horse</title><summary type="html">April 2nd I made this undiplomatic statement (funny how Twitter practically encourages being provocative):#ZF 2.0 is a  great example of second-system syndrome.Matthew Weier O'Phinney and I have a good working relationship.  I think his work on the Zend Framework project has been amazing, both from a technology perspective and a marketing perspective.  So when Matthew asked me to clarify my Tweet&lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/EI9SBHm4N-0" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/7436523521047219713/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=7436523521047219713" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/7436523521047219713?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/7436523521047219713?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2010/04/dont-put-cart-before-horse.html" title="Don't Put the Cart Before the Horse" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>9</thr:total></entry><entry gd:etag="W/&quot;D0AGSXw6fCp7ImA9WxFSE00.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-5789622079684442620</id><published>2010-04-14T21:10:00.000-07:00</published><updated>2010-04-14T21:28:48.214-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-14T21:28:48.214-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><title>Sql Injection Slides Posted</title><summary type="html">I gave a presentation today at the MySQL Conference &amp;amp; Expo 2010, titled SQL Injection Myths and Fallacies.  Thanks to everyone who came to my talk!  I appreciate your interest in learning to develop more secure applications.  SQL Injection is a serious threat to web applications, and it's only going to get worse.  It's incumbent on you as software developers to learn how to write secure code!My &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/B5387OYCNjY" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/5789622079684442620/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=5789622079684442620" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/5789622079684442620?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/5789622079684442620?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2010/04/sql-injection-slides-posted.html" title="Sql Injection Slides Posted" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DE8GQHYzeyp7ImA9WxFTEUs.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-536035039960162119</id><published>2010-04-01T15:49:00.000-07:00</published><updated>2010-04-01T17:07:01.883-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-01T17:07:01.883-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="awk" /><category scheme="http://www.blogger.com/atom/ns#" term="best-practices" /><category scheme="http://www.blogger.com/atom/ns#" term="framework" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><title>Announcing Awk on Rails</title><summary type="html">Awk on Rails is a new kind of web application development framework, with a distinction that no other framework has: Awk on Rails is fully POSIX compliant.Awk on Rails brings the best practices of modern web application development to the ALAS stack (Apache, Linux, Awk, Shell).  This stack is entirely new to the field of web development, yet already brings decades of maturity.Installation is a &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/IwS79QUc9Uc" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/536035039960162119/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=536035039960162119" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/536035039960162119?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/536035039960162119?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2010/04/announcing-awk-on-rails.html" title="Announcing Awk on Rails" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_DXzgtgyWmaw/S7UjU8_ry0I/AAAAAAAAAB0/X7l61ATEgig/s72-c/AwkOnRailsLogo320x414.png" height="72" width="72" /><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;DEIAQX0ycCp7ImA9WxBaFEs.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-6402470695723624702</id><published>2010-03-24T13:55:00.000-07:00</published><updated>2010-03-24T14:35:40.398-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-24T14:35:40.398-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="trees" /><title>Rendering Trees with Closure Tables</title><summary type="html">I got a comment from a reader about the Naive Trees section of my presentation SQL Antipatterns Strike Back.  I've given this presentation at the MySQL Conference &amp;amp; Expo in the past.I'd also like to mention that I've developed these ideas into a new book, SQL Antipatterns: Avoiding the Pitfalls of Database Programming.  The book is now available in Beta and for pre-order from Pragmatic &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/Hiik-JxVPIw" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/6402470695723624702/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=6402470695723624702" title="22 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/6402470695723624702?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/6402470695723624702?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2010/03/rendering-trees-with-closure-tables.html" title="Rendering Trees with Closure Tables" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>22</thr:total></entry><entry gd:etag="W/&quot;CU4BRHc_fip7ImA9WxBVGEU.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-8641048771113082710</id><published>2010-02-18T14:12:00.000-08:00</published><updated>2010-02-22T16:12:35.946-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-22T16:12:35.946-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="antipattern" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><title>Speaking on SQL Injection at MySQL Conference</title><summary type="html">I'm speaking this year at the MySQL Conference &amp;amp; Expo 2010 in Santa Clara.  Be sure to get your early registration discount by Feb 22!  If you miss that deadline, get 25% off with this discount code: mys10fspI'm presenting a talk on SQL Injection Myths and Fallacies.  This may seem like a topic that's been done to death, but it's important for all developers to understand it.  This reminds me of &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/nrQmtBODhXY" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/8641048771113082710/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=8641048771113082710" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/8641048771113082710?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/8641048771113082710?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2010/02/speaking-on-sql-injection-at-mysql.html" title="Speaking on SQL Injection at MySQL Conference" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;CUUBRXs7fSp7ImA9WxNTGUs.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-4443435283843513355</id><published>2009-08-22T10:30:00.000-07:00</published><updated>2009-08-22T10:47:34.505-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-22T10:47:34.505-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><title>What is QEP?</title><summary type="html">In the context of database programming, QEP is an acronym for Query Execution Plan. The database server analyzes every SQL query and plans how to use indexes and order tables to produce the result in the most efficient way.You can get a report of the QEP for a SELECT query using the EXPLAIN command in MySQL.  This is an important tool to analyze your SQL queries and detect &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/zg0VRZIIZQY" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/4443435283843513355/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=4443435283843513355" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/4443435283843513355?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/4443435283843513355?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/08/what-is-qep.html" title="What is QEP?" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;D0cAR3s5eCp7ImA9WxJWE0o.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-3755847802745012526</id><published>2009-06-18T18:09:00.001-07:00</published><updated>2009-06-18T18:30:46.520-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-18T18:30:46.520-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="licensing" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Free Software vs. Gratis Software</title><summary type="html">A lot of folks are unclear on the subtleties of free software and open source.  Mike Hogan writes a blog article"Is Hybrid Licensing of OSS Hypocrisy?" to try to shed some light on this.  With respect, I think he has missed part of it.We're talking about two orthogonal things here.  One is open-source versus closed-source, and the other is whether we charge money for software licenses or not.  As&lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/RfKx8-6gfQo" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/3755847802745012526/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=3755847802745012526" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/3755847802745012526?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/3755847802745012526?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/06/free-software-vs-gratis-software.html" title="Free Software vs. Gratis Software" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;D0UBSHYyfCp7ImA9WxJXEUg.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-6194062732231552883</id><published>2009-06-04T15:15:00.000-07:00</published><updated>2009-06-04T15:40:59.894-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-04T15:40:59.894-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><title>I'm Speaking on SQL at OSCON</title><summary type="html">Early Registration has been extended to June 23.  Save up to $250!Enter my friends-of-speaker discount code "os09fos" when you register, and save an additional 20%!  Just because you read my blog.Practical Object-Oriented Models in SQLWednesday July 22, 5:20pm.SQL is from Mars, Objects are from Venus.This talk is for software developers who know SQL but are stuck trying to implement common &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/nG7P5wwa57U" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/6194062732231552883/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=6194062732231552883" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/6194062732231552883?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/6194062732231552883?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/06/im-speaking-on-sql-at-oscon.html" title="I'm Speaking on SQL at OSCON" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ck8ERXszeyp7ImA9WxJRGUs.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-1980070121282754138</id><published>2009-05-21T15:05:00.000-07:00</published><updated>2009-05-21T19:53:24.583-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-21T19:53:24.583-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="antipattern" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><title>EAV FAIL</title><summary type="html">see more Fail BlogThis illustrates (by counter-example) an important characteristic of a normalized database:  each logical "type" of attribute belongs in a separate column.Just because three values happen to be numeric doesn't mean it makes sense to SUM() them together.  But if dissimilar attributes are stored in the same column, it's tempting to treat them as compatible in this way.This also &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/EFCRZUL8myM" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/1980070121282754138/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=1980070121282754138" title="48 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/1980070121282754138?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/1980070121282754138?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/05/eav-fail.html" title="EAV FAIL" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>48</thr:total></entry><entry gd:etag="W/&quot;DUABRns4eyp7ImA9WxJTE0U.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-2381013453985078958</id><published>2009-04-20T23:30:00.001-07:00</published><updated>2009-04-22T01:09:17.533-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-22T01:09:17.533-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><title>SQL Antipatterns Strike Back! Slides</title><summary type="html">I presented my tutorial at the MySQL Conference &amp;amp; Expo today.  I have fun preparing it and presenting it, and I got many good questions and comments from the audience.  Thanks to everyone for coming and participating!I have uploaded my slides with a Creative Common 3.0 license to my SlideShare account: http://www.slideshare.net/billkarwinFor those who did not get to see my tutorial, I'm &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/LFIDvhSwJEE" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/2381013453985078958/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=2381013453985078958" title="35 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/2381013453985078958?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/2381013453985078958?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/04/sql-antipatterns-strike-back-slides.html" title="SQL Antipatterns Strike Back! Slides" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>35</thr:total></entry><entry gd:etag="W/&quot;D0EAQ3Y5fSp7ImA9WxJTEkk.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-4654247212696106985</id><published>2009-04-20T09:25:00.000-07:00</published><updated>2009-04-20T09:40:42.825-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-20T09:40:42.825-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><title>Oracle buying Sun</title><summary type="html">Stunning news today that Oracle has offered to buy Sun Microsystems.  This is sending the MySQL community reeling, as they begin their MySQL Conference &amp;amp; Expo today.  Everyone's talking about whether this change is good for MySQL.My first thought is:  it's not over till it's over.  These deals have a way of falling through at the last minute.  Just look at Microsoft's attempts to acquire Yahoo!.&lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/Kg7uWyghgvk" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/4654247212696106985/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=4654247212696106985" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/4654247212696106985?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/4654247212696106985?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/04/oracle-buying-sun.html" title="Oracle buying Sun" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;CU4ESX45eSp7ImA9WxVaEU8.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-4651518558769242449</id><published>2009-04-07T08:44:00.001-07:00</published><updated>2009-04-07T10:05:08.021-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-07T10:05:08.021-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><title>I hate IBM System i</title><summary type="html">In his blog, Vadim reports that a new storage pluggable engine for MySQL has appeared in the source tree, to support IBM DB2 for i as a back-end.This reminds me that I hate the IBM System i platform (aka IBM Power Systems, aka iSeries, aka AS/400).Don't get me wrong -- I'm sure it's terrific technology.  I'm sure IBM supports many businesses with it and they're happy (although I do wonder why &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/ZF3hWyMjPDg" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/4651518558769242449/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=4651518558769242449" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/4651518558769242449?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/4651518558769242449?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/04/i-hate-ibm-system-i.html" title="I hate IBM System i" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>6</thr:total></entry><entry gd:etag="W/&quot;A0AAQHc5eip7ImA9WxVbE0g.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-661041374544023646</id><published>2009-03-29T13:37:00.000-07:00</published><updated>2009-03-29T13:49:01.922-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-29T13:49:01.922-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="education" /><category scheme="http://www.blogger.com/atom/ns#" term="writing" /><title>Virtually Speaking</title><summary type="html">The word virtually is overused.  In many cases using the word virtually simply means not.  For example:I have finished virtually all of my homework.This new surgical procedure is virtually pain-free.In Modern American Usage, Bryan A. Garner counts virtually as a weasel-word.  Weasel-words are so named because of the habit of weasels to attack birds' nests, and eat their eggs by sucking the meat &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/fKjfDmuWdJk" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/661041374544023646/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=661041374544023646" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/661041374544023646?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/661041374544023646?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/03/virtually-speaking.html" title="Virtually Speaking" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0ENSX44eyp7ImA9WxVbEEw.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-1115749220385997954</id><published>2009-03-25T15:13:00.000-07:00</published><updated>2009-03-25T15:21:38.033-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-25T15:21:38.033-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><title>Hello EclipseCon 2009</title><summary type="html">No, I am not attending EclipseCon -- but my smiling face apparently was on Tuesday.  StackOverflow founder and CodingHorror blogger Jeff Atwood emailed me to let me know he displayed my StackOverflow user profile page during his keynote at EclipseCon.I don't know what the context was in which he showed my profile.  Maybe he just needed an example of an SQL geek who has too much time on his &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/yjSU3RD_MVU" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/1115749220385997954/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=1115749220385997954" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/1115749220385997954?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/1115749220385997954?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/03/hello-eclipsecon-2009.html" title="Hello EclipseCon 2009" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;C0MERHw4eSp7ImA9WxVUFU0.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-424759190878035870</id><published>2009-03-19T15:12:00.000-07:00</published><updated>2009-03-19T15:23:25.231-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-19T15:23:25.231-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="perl" /><title>Parrot Web Framework?</title><summary type="html">Wondering if the following idea could be feasible:Architect a web framework that emphasizes Inversion of Control.Implement core web framework in Parrot (now that this dynamic language platform has released its 1.0).Voila!  A web framework that supports any language implemented for Parrot platform. Developers write plugins in any language: Python, Ruby, PHP, Perl6, Lua, C, or any other language &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/TThuWGJbxko" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/424759190878035870/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=424759190878035870" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/424759190878035870?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/424759190878035870?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/03/parrot-web-framework.html" title="Parrot Web Framework?" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DUYHQ3w4eyp7ImA9WxVVGEw.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-2550569143827916207</id><published>2009-03-11T17:15:00.000-07:00</published><updated>2009-03-11T17:18:52.233-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-11T17:18:52.233-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><title>How do the Proxy, Decorator, Adaptor, and Bridge Patterns differ?</title><summary type="html">A user recently asked:I was looking at the Proxy Pattern, and to me it seems an awful lot like the Decorator, Adaptor, and Bridge Patterns. Am I misunderstanding something? What's the difference? Why would I use the proxy pattern veses the others? How have you used them in the past in real world projects?Proxy, Decorator, Adapter, and Bridge are all variations on "wrapping" a class.  But their &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/7GJ5EvrgKh4" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/2550569143827916207/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=2550569143827916207" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/2550569143827916207?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/2550569143827916207?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/03/how-do-proxy-decorator-adaptor-and.html" title="How do the Proxy, Decorator, Adaptor, and Bridge Patterns differ?" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DE4MQno8eCp7ImA9WxVVF08.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-7139615832530149681</id><published>2009-03-10T16:08:00.000-07:00</published><updated>2009-03-10T16:16:23.470-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-10T16:16:23.470-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="licensing" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Can I Use Example Code from Internet Q&amp;A Sites?</title><summary type="html">A user recently asked:  Scenario:A developer is working on a project and encounters a problem. They ask a question on the internet somewhere (ie stackoverflow.com) Someone answers their question and provides a nice code snippet that just about does what they want.Where does one legally stand if the developer includes the code verbatim in their project's code?  I know I've done this before...and &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/zeWH4d_-sqM" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/7139615832530149681/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=7139615832530149681" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/7139615832530149681?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/7139615832530149681?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/03/can-i-use-example-code-from-internet-q.html" title="Can I Use Example Code from Internet Q&amp;A Sites?" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0cESH47fSp7ImA9WxVVF0w.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-8953709827627476975</id><published>2009-03-10T11:06:00.000-07:00</published><updated>2009-03-10T11:50:09.005-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-10T11:50:09.005-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="performance" /><category scheme="http://www.blogger.com/atom/ns#" term="best-practices" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><title>Quantity Over Quality</title><summary type="html">Alex Netkachov recently reported a list of micro-optimizations for PHP.  Several other bloggers (Sebastian, Maggie, Pádraic) responded with appropriate messages, reminding people that proper application design usually counts more than micro-optimizations.They are all correct.When I was an intern, I emailed a C compiler developer, to ask a question that had occurred to me regarding optimization:  &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/mtT0INDS8HA" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/8953709827627476975/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=8953709827627476975" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/8953709827627476975?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/8953709827627476975?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/03/quantity-over-quality.html" title="Quantity Over Quality" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Dk4HRXc7eyp7ImA9WxVVE0w.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-6564150471934205661</id><published>2009-03-05T20:43:00.000-08:00</published><updated>2009-03-05T20:48:54.903-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-05T20:48:54.903-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="best-practices" /><category scheme="http://www.blogger.com/atom/ns#" term="interviewing" /><title>Accepting a job that failed The Joel Test</title><summary type="html">A user recently asked:I'm about to accept a job offer for a company that has failed The Joel Test with flying colors.Now, my question is how do I improve the conditions there. I am positive that within a few months I will be able to make a difference.  But where do I start? And how?Don't view yourself as the "new sheriff in town" who's here to clean it all up in one year. The habits they have &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/za6mIWPc8xs" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/6564150471934205661/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=6564150471934205661" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/6564150471934205661?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/6564150471934205661?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/03/accepting-job-that-failed-joel-test.html" title="Accepting a job that failed The Joel Test" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUYMR3k-cCp7ImA9WxVWFk0.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-2872249077682312847</id><published>2009-02-25T14:54:00.001-08:00</published><updated>2009-02-25T15:06:26.758-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-25T15:06:26.758-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="best-practices" /><category scheme="http://www.blogger.com/atom/ns#" term="testing" /><title>Unit Test Coverage</title><summary type="html">S.Lott writes in his blog about unit test code-coverage:  how much is enough?Effective tests should account not only for code paths, but also input values and other application state or external environment that may affect the behavior.For example, it may be easy to get 100% code coverage from tests for a function like the following:divide(x, y) { return x/y; }But unless you test for &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/E1tid0I4B1g" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/2872249077682312847/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=2872249077682312847" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/2872249077682312847?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/2872249077682312847?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/02/unit-test-coverage.html" title="Unit Test Coverage" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;AkUCRXwzeyp7ImA9WxVQGU4.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-1490589773094291125</id><published>2009-02-06T08:29:00.000-08:00</published><updated>2009-02-06T08:37:44.283-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-06T08:37:44.283-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="consulting" /><title>How Do You Reward Good Clients?</title><summary type="html">A user recently asked:I find when I get a 'good client' things go so much smoother on a project (there even seems to be less bugs - weird?). I have a habit of rewarding good behavior from anyone (even if its just a simple thank you).I am interested to know what sort of things you guys do, and even how you feel about good client behavior.It would be nice if "good clients" were simply "normal &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/VvHecP29wPc" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/1490589773094291125/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=1490589773094291125" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/1490589773094291125?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/1490589773094291125?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/02/how-do-you-reward-good-clients.html" title="How Do You Reward Good Clients?" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEMER3c5cSp7ImA9WxVRFUs.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-1689975165676420407</id><published>2009-01-21T10:20:00.000-08:00</published><updated>2009-01-21T10:26:46.929-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-21T10:26:46.929-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="perl" /><title>Splitting a String in Perl</title><summary type="html">A user recently asked:How do I take a string in Perl and split it up into an array with entries two characters long each?Ultimately I want to turn something like this  F53CBBA476  into and array containing  F5 3C BB A4 76This was my answer:@array = ( $string =~ m/../g );The pattern-matching operator behaves in a special way in a list context in Perl.  It processes the operation iteratively, &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/ouEp3ndyg24" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/1689975165676420407/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=1689975165676420407" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/1689975165676420407?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/1689975165676420407?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/01/splitting-string-in-perl.html" title="Splitting a String in Perl" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;C08GQX49eSp7ImA9WxVRFUs.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-2696193728896320356</id><published>2009-01-21T10:12:00.000-08:00</published><updated>2009-01-21T10:17:00.061-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-21T10:17:00.061-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="best-practices" /><category scheme="http://www.blogger.com/atom/ns#" term="database" /><title>Understanding Unfamiliar Databases</title><summary type="html">A user recently asked:                 What kind of approaches and techniques can you employ to become familiar with an existing database if you are tasked with supporting and/or modifying it? How can you easily and effectively ramp up your knowledge of a database you have never seen before?Here was my reply:The first thing I do is create an Entity-Relationship Diagram (ERD). Sometimes you can &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/2n42Y48ndw8" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/2696193728896320356/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=2696193728896320356" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/2696193728896320356?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/2696193728896320356?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/01/understanding-unfamiliar-databases.html" title="Understanding Unfamiliar Databases" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUMER384fip7ImA9WxNSEUg.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-3786068787875973073</id><published>2009-01-21T09:35:00.000-08:00</published><updated>2009-08-24T15:36:46.136-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-24T15:36:46.136-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="database" /><title>Why Should You Use an ORM?</title><summary type="html">A user recently asked for good arguments in favor of using  Object/Relational Mapping technology:                 If you were to motivate [sic] the "pro's" of why you would use an ORM to management/client, what would the reasons be?  Try and keep one reason per answer so that we can see what gets voted up as the best reasons.I offered four answers.  The first three got the most votes, but my last&lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/dydn8Mwb2Xo" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/3786068787875973073/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=3786068787875973073" title="28 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/3786068787875973073?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/3786068787875973073?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/01/why-should-you-use-orm.html" title="Why Should You Use an ORM?" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>28</thr:total></entry><entry gd:etag="W/&quot;CEUHRnY7eSp7ImA9WxVRFEU.&quot;"><id>tag:blogger.com,1999:blog-5445766604096569596.post-8570223271750137885</id><published>2009-01-20T12:05:00.001-08:00</published><updated>2009-01-20T12:10:37.801-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-20T12:10:37.801-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="licensing" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Is This Legal?</title><summary type="html">A user recently asked a question about GPL compatibility with his company's commercial software offerings:                 I work for a software / design firm and I recently found out that our "in house" CMS is actually [based on software] licensed under the GPL Ver 2. I would like to know if it is ethical / legal to be selling this to clients. Don't act on any legal advice you read on a forum &lt;img src="http://feeds.feedburner.com/~r/KeepingItSimple/~4/QLihORKDpM8" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://karwin.blogspot.com/feeds/8570223271750137885/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5445766604096569596&amp;postID=8570223271750137885" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/8570223271750137885?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5445766604096569596/posts/default/8570223271750137885?v=2" /><link rel="alternate" type="text/html" href="http://karwin.blogspot.com/2009/01/is-this-legal.html" title="Is This Legal?" /><author><name>Bill Karwin</name><uri>http://www.blogger.com/profile/13004667086865377598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_DXzgtgyWmaw/STSPRsbwJjI/AAAAAAAAABU/ALzX7lBTlaY/S220/BK2.jpg" /></author><thr:total>1</thr:total></entry></feed>

