<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8765194820120863594</id><updated>2011-11-27T15:28:39.404-08:00</updated><category term='operations'/><category term='pc-lint'/><category term='xkcd'/><category term='stupid'/><category term='generation-y'/><title type='text'>dividebyzero</title><subtitle type='html'>when software (developers) let us down...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kengellkurmudgeon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kengellkurmudgeon.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kengell</name><uri>http://www.blogger.com/profile/07204329050098535840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_IIcXH9BJk5w/SAwNTLqpnDI/AAAAAAAAAwY/3EKe3cEvCUY/S220/kde%40uc.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8765194820120863594.post-4329438858367312400</id><published>2010-03-28T14:48:00.000-07:00</published><updated>2010-03-28T14:48:29.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stupid'/><title type='text'>Safer String Implementation</title><content type='html'>I had to laugh, cry and scratch my head when I came across this 'safer' string implementation!&lt;br /&gt;&lt;br /&gt;Would so called 'senior programmers' please stop rewriting string classes!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;struct safe_string&lt;br /&gt;{&lt;br /&gt;    safe_string(const std::string &amp; str = std::string())&lt;br /&gt;        : str_ (str.c_str())&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    safe_string(const safe_string &amp; copy)&lt;br /&gt;        : str_(copy.str_.c_str())&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    safe_string &amp; operator = (const safe_string &amp; copy)&lt;br /&gt;    {&lt;br /&gt;        str_ = copy.str_.c_str();&lt;br /&gt;        return *this;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    std::string           str_;&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765194820120863594-4329438858367312400?l=kengellkurmudgeon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kengellkurmudgeon.blogspot.com/feeds/4329438858367312400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8765194820120863594&amp;postID=4329438858367312400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/4329438858367312400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/4329438858367312400'/><link rel='alternate' type='text/html' href='http://kengellkurmudgeon.blogspot.com/2010/03/safer-string-implementation.html' title='Safer String Implementation'/><author><name>kengell</name><uri>http://www.blogger.com/profile/07204329050098535840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_IIcXH9BJk5w/SAwNTLqpnDI/AAAAAAAAAwY/3EKe3cEvCUY/S220/kde%40uc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8765194820120863594.post-654294396087349633</id><published>2010-03-18T00:47:00.000-07:00</published><updated>2010-03-28T14:50:02.840-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pc-lint'/><category scheme='http://www.blogger.com/atom/ns#' term='stupid'/><title type='text'>Recovery System - failure</title><content type='html'>Many years ago I was working with a team of developers trying to determine why their recovery system was not properly reading the recovery data files.  We discovered that the so called recovery system &lt;b&gt;was&lt;/b&gt; reading the recovery file correctly on startup, however the code snippet below was identified by &lt;a href="http://gimpel.com/"&gt;PC-Lint&lt;/a&gt; as being the most likely candidate for our recovery problems, but this code never wrote any warnings to the syslog.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;// functionality removed for clarity&lt;br /&gt;// this 'logic' will always fail to write 'iSize' bytes of data&lt;br /&gt;// why?&lt;br /&gt;void write_data(void* pData, size_t iSize)&lt;br /&gt;{&lt;br /&gt;    int fd = 0;&lt;br /&gt;    // &lt;br /&gt;    // open file for writing and set 'fd'&lt;br /&gt;    //&lt;br /&gt;    size_t dwOffset = 0;&lt;br /&gt;    if( (_lseek(fd, static_cast&lt;long&gt;(dwOffset), SEEK_SET) &amp;lt; 0) ||&lt;br /&gt;        (_write(fd, pData, static_cast&lt;unsigned int=""&gt;(iSize) &amp;lt; 0) ) )&lt;br /&gt;    {&lt;br /&gt;        // we get here if _lseek returns an error (e.g. -1)&lt;br /&gt;        // or if we fail to write 'iSize' bytes of 'pData' to a file&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/unsigned&gt;&lt;/long&gt;&lt;/pre&gt;&lt;br /&gt;When we ran &lt;a href="http://gimpel.com/"&gt;PC-Lint&lt;/a&gt; on the above source code we found the following warnings:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Warning 685: Relational operator '&amp;lt;' always evaluates to 'false'&lt;br /&gt;Warning 568: non-negative quantity is never less than zero&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Why don't more developers and/or software companies use &lt;a href="http://gimpel.com/"&gt;PC-Lint&lt;/a&gt;?  It should be standard practice to remove warning and errors from source code before building, testing and releasing, yet it has been our experience that few companies use static analysis before running unit tests and before releasing builds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765194820120863594-654294396087349633?l=kengellkurmudgeon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kengellkurmudgeon.blogspot.com/feeds/654294396087349633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8765194820120863594&amp;postID=654294396087349633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/654294396087349633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/654294396087349633'/><link rel='alternate' type='text/html' href='http://kengellkurmudgeon.blogspot.com/2010/03/recovery-system-failure.html' title='Recovery System - failure'/><author><name>kengell</name><uri>http://www.blogger.com/profile/07204329050098535840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_IIcXH9BJk5w/SAwNTLqpnDI/AAAAAAAAAwY/3EKe3cEvCUY/S220/kde%40uc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8765194820120863594.post-4460472772040038000</id><published>2010-03-05T13:24:00.000-08:00</published><updated>2010-03-28T14:48:48.314-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stupid'/><title type='text'>when exporting C++ (template) objects is *not* a good idea</title><content type='html'>Most of the time, compilers are your enemies because they will do almost anything they can to compile your warm steaming pile of code into a binary image.  Clearly the author of this code was having troubles and thought it best to warn others of his insanity.  Apparently the correct solution of  &lt;b&gt;never export C++ objects out of a DLL&lt;/b&gt; was not an option?&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;// We disable this warning (4251) for the entire project because&lt;br /&gt;// our code is exporting objects that contain stl templates.&lt;br /&gt;// It seems to be the general idea on the internet to simply disable this warning&lt;br /&gt;// since it is hard to eliminate it.&lt;br /&gt;&lt;br /&gt;#pragma warning( disable : 4251)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765194820120863594-4460472772040038000?l=kengellkurmudgeon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kengellkurmudgeon.blogspot.com/feeds/4460472772040038000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8765194820120863594&amp;postID=4460472772040038000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/4460472772040038000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/4460472772040038000'/><link rel='alternate' type='text/html' href='http://kengellkurmudgeon.blogspot.com/2010/03/when-exporting-c-template-objects-is.html' title='when exporting C++ (template) objects is *not* a good idea'/><author><name>kengell</name><uri>http://www.blogger.com/profile/07204329050098535840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_IIcXH9BJk5w/SAwNTLqpnDI/AAAAAAAAAwY/3EKe3cEvCUY/S220/kde%40uc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8765194820120863594.post-1929518762235925784</id><published>2009-03-05T13:30:00.000-08:00</published><updated>2010-03-05T13:31:47.962-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xkcd'/><title type='text'>induced current</title><content type='html'>http://www.xkcd.com/509&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765194820120863594-1929518762235925784?l=kengellkurmudgeon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kengellkurmudgeon.blogspot.com/feeds/1929518762235925784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8765194820120863594&amp;postID=1929518762235925784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/1929518762235925784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/1929518762235925784'/><link rel='alternate' type='text/html' href='http://kengellkurmudgeon.blogspot.com/2010/03/induced-current.html' title='induced current'/><author><name>kengell</name><uri>http://www.blogger.com/profile/07204329050098535840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_IIcXH9BJk5w/SAwNTLqpnDI/AAAAAAAAAwY/3EKe3cEvCUY/S220/kde%40uc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8765194820120863594.post-6261583049996201421</id><published>2008-12-08T20:05:00.000-08:00</published><updated>2010-03-05T13:29:22.789-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='generation-y'/><title type='text'>The next big network threat - Generation Y</title><content type='html'>&lt;span class="Apple-style-span"  style=" ;font-family:'Times New Roman';"&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;A recent &lt;a href="http://www.informationweek.com/news/security/vulnerabilities/showArticle.jhtml?articleID=212100952"&gt;Information Week article&lt;/a&gt; describes why those individuals who can't remember the Bee Gees are the next network threat to enter the corporate world.  That's right it's the Gen Y employees who pose the newest and greatest risk to network security.  Here are the top reasons Gen Y pose a security risk.&lt;/div&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;&lt;span class="Apple-style-span"  style=" ;font-family:geneva;"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Since Nov. 5, three separate studies -- from Accenture, Intel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;, and ISACA, a major IT users group -- have indicted the youngest generation of employees as one of the enterprise's newest and most serious security risks. People under the age of 28 -- sometimes called Generation Y and sometimes called Millenials, depending on how you define the category -- are engaging in online behavior that could expose their organizations to data leakage and information theft, the studies say.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:geneva;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;In a study published Nov. 13, Intel and the research firm of Penn Schoen &amp;amp; Berland Associates offered similar conclusions.  About half of the respondents regard Generation Y as a serious security concern, according to the study.&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:geneva;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;Younger employees' propensity to download non-sanctioned applications and social media tools was one of the chief reasons cited for IT professionals' concern. Risks posed by social networking sites such as Facebook and MySpace were the most frequently mentioned, according to the study.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;blockquote&gt;This survey clearly shows that younger employees are more likely to engage in online activities at work that put a business' IT infrastructure at risk," said Kent Anderson, a member of ISACA's Security Management Committee. "The fact that [they] are planning to spend the equivalent of more than half a work day doing holiday shopping from their work computer, combined with their lack of concern for how secure their computer is, points to an urgent need for employee education.&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765194820120863594-6261583049996201421?l=kengellkurmudgeon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kengellkurmudgeon.blogspot.com/feeds/6261583049996201421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8765194820120863594&amp;postID=6261583049996201421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/6261583049996201421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/6261583049996201421'/><link rel='alternate' type='text/html' href='http://kengellkurmudgeon.blogspot.com/2008/12/next-big-network-threat-generation-y.html' title='The next big network threat - Generation Y'/><author><name>kengell</name><uri>http://www.blogger.com/profile/07204329050098535840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_IIcXH9BJk5w/SAwNTLqpnDI/AAAAAAAAAwY/3EKe3cEvCUY/S220/kde%40uc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8765194820120863594.post-6171533938512223163</id><published>2008-12-05T08:42:00.000-08:00</published><updated>2008-12-07T07:52:42.325-08:00</updated><title type='text'>Who is the worst programmer on the team?</title><content type='html'>&lt;div&gt;&lt;a href="http://advice.cio.com/user/esther-schindler"&gt;Ester Shindler&lt;/a&gt; asked a question on LinkedIn the other day and summarized in an &lt;a href="http://advice.cio.com/esther_schindler/whos_the_worst_programmer_on_your_team_how_can_you_tell?page=0%2C1&amp;amp;source=nlt_cioinsider"&gt;article&lt;/a&gt; for &lt;a href="http://www.cio.com/"&gt;CIO Magazine&lt;/a&gt;.  She asked, &lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;"Who's the worst programmer on your team? How can you tell?"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We all can point a finger at the one person in our group who should be let go, we all know which code generating wildebeest should be eaten by the pack of lions nipping at our binary heals.  But what metrics are we using?  Here's the list from a recent CIO article:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Don't care about the quality of work&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cost the team in time and frustration&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Have a poor sense of timeliness&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Don't offer nor ask for help&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They ask the wrong questions&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;/dev/kde&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765194820120863594-6171533938512223163?l=kengellkurmudgeon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kengellkurmudgeon.blogspot.com/feeds/6171533938512223163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8765194820120863594&amp;postID=6171533938512223163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/6171533938512223163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/6171533938512223163'/><link rel='alternate' type='text/html' href='http://kengellkurmudgeon.blogspot.com/2008/12/who-is-worst-programmer-on-team.html' title='Who is the worst programmer on the team?'/><author><name>kengell</name><uri>http://www.blogger.com/profile/07204329050098535840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_IIcXH9BJk5w/SAwNTLqpnDI/AAAAAAAAAwY/3EKe3cEvCUY/S220/kde%40uc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8765194820120863594.post-2514322029072299931</id><published>2008-12-04T05:10:00.000-08:00</published><updated>2008-12-07T07:16:54.990-08:00</updated><title type='text'>Looking into the software mirror</title><content type='html'>Fred Brooks observed &lt;span style="font-style: italic;"&gt;that "&lt;/span&gt;&lt;em style="font-style: italic;"&gt;software tends to&lt;/em&gt;&lt;span style="font-style: italic;"&gt; resemble the organization that built it"&lt;/span&gt;.  I think we can take this one step further, &lt;span class="Apple-style-span" style="font-style: italic; "&gt;"software tends to resemble the individual that built it."&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have had the pleasure of working for a number of companies and refactored countless lines of code (usually C, C++ and FORTRAN) and as a friend likes to say &lt;span class="Apple-style-span" style="font-style: italic;"&gt;"I've written an awful lot of code and a lot of awful code"&lt;/span&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The vast majority of the code I've inherited leads me to believe that many programmers lack a fundamental understanding of software development; lack an understanding of the basics of the language in which they are programming; lack the knowledge to write constructors, destructors and in general lack an understanding of resource management.  I am truly shocked to see how many programmer lack the basics of "is-a" and "has-a"; lack debugging skills; lack an even basic understanding of how to write a function interface and pay no attention at all to return values.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've also come to understand that managers I've worked for rely on me to fix many of the corporate shortcomings with a mantra of &lt;span class="Apple-style-span" style="font-style: italic; "&gt;"if it doesn't work" give it to that curmudgeon in the cubical down the hall because he can fix it".&lt;/span&gt;  I am the first to admit I am not a code guru, I am not a &lt;a href="http://www.research.att.com/~bs/"&gt;Bjarne&lt;/a&gt;, nor a &lt;a href="http://en.wikipedia.org/wiki/Linus_Torvalds"&gt;Linus&lt;/a&gt;.  I come to the office each day with a blue collar, lunch box mentality to create profitable software.  I'm not out to save the world, nor create a software masterpiece.  I realize that at the end of the day, at the end of the build process, our software will be running in a data center manned by intelligent men and women who, mostly have two year tech degrees and have hundreds of servers to monitor, upgrade and respond to outages.  So I create software that starts and stops w/o errors and runs with triple digit uptimes.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Is the sad state of programming because universities are failing, or because those who attended universities are failing to put in the time and effort to (re)learn?  So what is the current state of programming?  In light of the multi-core revolution taking place, I fear for the future of the craft.  If single-threaded programming confuse programmers, what will multi-core techniques do to our work environment?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;/dev/kde&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765194820120863594-2514322029072299931?l=kengellkurmudgeon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kengellkurmudgeon.blogspot.com/feeds/2514322029072299931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8765194820120863594&amp;postID=2514322029072299931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/2514322029072299931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/2514322029072299931'/><link rel='alternate' type='text/html' href='http://kengellkurmudgeon.blogspot.com/2008/12/looking-into-software-mirror.html' title='Looking into the software mirror'/><author><name>kengell</name><uri>http://www.blogger.com/profile/07204329050098535840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_IIcXH9BJk5w/SAwNTLqpnDI/AAAAAAAAAwY/3EKe3cEvCUY/S220/kde%40uc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8765194820120863594.post-7197828237728480234</id><published>2008-12-03T05:41:00.000-08:00</published><updated>2008-12-07T07:23:00.997-08:00</updated><title type='text'>Programmers Anonymous</title><content type='html'>&lt;div&gt;Some of those that I work with should sit at a session of &lt;span class="Apple-style-span" style="font-style: italic;"&gt;Programmers Anonymous&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt; We admitted we were powerless over bugs - that our software has become unmanageable. &lt;/li&gt;&lt;li&gt; Came to believe that a power greater than ourselves (Scrum Master) could restore us to sanity. &lt;/li&gt;&lt;li&gt; Made a decision to turn our compiler and our debugger over to the care of Bill Gates as we understood &lt;em&gt;Him&lt;/em&gt;. &lt;/li&gt;&lt;li&gt; Made a searching and fearless code review of our software. &lt;/li&gt;&lt;li&gt; Admitted to the Scrum Master, to ourselves, and to another programmers the exact nature of our bugs. &lt;/li&gt;&lt;li&gt; We're entirely ready to have Regression Tests remove all these software defects. &lt;/li&gt;&lt;li&gt; Humbly asked PC-Lint to illuminate our shortcomings. &lt;/li&gt;&lt;li&gt; Made a list of all software projects we had harmed, and became willing to make amends to them all. &lt;/li&gt;&lt;li&gt; Made direct amends to &lt;em&gt;users&lt;/em&gt; wherever possible, except when to do so would injure them or others. &lt;/li&gt;&lt;li&gt; Continued to take personal inventory and when we were wrong, promptly admitted it. &lt;/li&gt;&lt;li&gt; Sought through PC-Lint, Bounds Checker and Purify to improve our software. &lt;/li&gt;&lt;li&gt; Having had an awakening as the result of these steps, we tried to carry this message to programmers and to practice these principles in all our software development. &lt;/li&gt;&lt;/ol&gt;&lt;div&gt;/dev/kde&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765194820120863594-7197828237728480234?l=kengellkurmudgeon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kengellkurmudgeon.blogspot.com/feeds/7197828237728480234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8765194820120863594&amp;postID=7197828237728480234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/7197828237728480234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/7197828237728480234'/><link rel='alternate' type='text/html' href='http://kengellkurmudgeon.blogspot.com/2008/12/programmers-anonymous.html' title='Programmers Anonymous'/><author><name>kengell</name><uri>http://www.blogger.com/profile/07204329050098535840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_IIcXH9BJk5w/SAwNTLqpnDI/AAAAAAAAAwY/3EKe3cEvCUY/S220/kde%40uc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8765194820120863594.post-614592509580706345</id><published>2008-12-02T06:25:00.000-08:00</published><updated>2010-03-05T13:29:41.121-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='operations'/><title type='text'>Email from the NOC</title><content type='html'>Sometimes, I get an email really worth saving.  No I mean *really* worth holding onto and rereading from time to time to remind you that your coworkers are intelligent funny people, not just those annoyances you hope to avoid in your *next* job.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's a snippet from an email I received years ago from the NOC (network operations center) that I love to reread periodically. (&lt;small&gt;&lt;i&gt;I have removed product and specifics for readability sake and to avoid those pesky legal issues...&lt;/i&gt;&lt;/small&gt;)&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;No one is ever going to look at the [server] source code to fix problems ever again in this cycle of the universe.  We will have to go through a Big Crunch and a Big Bang and billions of years before some creature will evolve to build [the server application], and then troubleshoot its code.*&lt;br /&gt;&lt;br /&gt;Thus, the user's shot for long-term happiness will involve [new product] deployment.  We cannot increase the user's short-term happiness.&lt;br /&gt;&lt;br /&gt;-&lt;i&gt;A Nonymous&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;* Or, if you prefer the Everett-Wheeler-Graham model, the user is going to have to travel to the parallel universe where software development is alive [on said product], because in this eigenstate, it is dead, it has ceased to be, it has rung down the curtain and joined the choir invisible.&lt;/i&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765194820120863594-614592509580706345?l=kengellkurmudgeon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kengellkurmudgeon.blogspot.com/feeds/614592509580706345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8765194820120863594&amp;postID=614592509580706345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/614592509580706345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8765194820120863594/posts/default/614592509580706345'/><link rel='alternate' type='text/html' href='http://kengellkurmudgeon.blogspot.com/2008/12/email-from-noc.html' title='Email from the NOC'/><author><name>kengell</name><uri>http://www.blogger.com/profile/07204329050098535840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_IIcXH9BJk5w/SAwNTLqpnDI/AAAAAAAAAwY/3EKe3cEvCUY/S220/kde%40uc.jpg'/></author><thr:total>0</thr:total></entry></feed>
