{"id":2721,"date":"2018-02-22T18:20:55","date_gmt":"2018-02-23T00:20:55","guid":{"rendered":"http:\/\/www.logikalsolutions.com\/wordpress\/?p=2721"},"modified":"2018-02-22T18:21:26","modified_gmt":"2018-02-23T00:21:26","slug":"its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/","title":{"rendered":"It&#8217;s okay to hate the 12 year old boys who write the bulk of OpenSource code"},"content":{"rendered":"<p>Even if their biological clock states they are north of 40, they never got past 12 when it comes to coding. In case you can&#8217;t see the featured image, the source file came from <a href=\"https:\/\/github.com\/karelzak\/util-linux\/blob\/7595bed1898109b34eb072093902071fcb75fea9\/misc-utils\/logger.c\">here<\/a>. And since they will _hopefully_ sweep that up, here is the first snippet.<\/p>\n<pre>\/* this creates a timestamp based on current time according to the\r\n * fine rules of RFC3164, most importantly it ensures in a portable\r\n * way that the month day is correctly written (with a SP instead\r\n * of a leading 0). The function uses a static buffer which is\r\n * overwritten on the next call (just like ctime() does).\r\n *\/\r\nstatic char const *rfc3164_current_time(void)\r\n{\r\n\tstatic char time[32];\r\n\tstruct timeval tv;\r\n\tstruct tm *tm;\r\n\tstatic char const * const monthnames[] = {\r\n\t\t\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\",\r\n\t\t\"Sep\", \"Oct\", \"Nov\", \"Dec\"\r\n\t};\r\n\r\n\tlogger_gettimeofday(&amp;tv, NULL);\r\n\ttm = localtime(&amp;tv.tv_sec);\r\n\tsnprintf(time, sizeof(time),\"%s %2d %2.2d:%2.2d:%2.2d\",\r\n\t\tmonthnames[tm-&gt;tm_mon], tm-&gt;tm_mday,\r\n\t\ttm-&gt;tm_hour, tm-&gt;tm_min, tm-&gt;tm_sec);\r\n\treturn time;\r\n}<\/pre>\n<p>The second problem is they are returning the address of a variable which is inside of the function. Those bounding {} of the function delineate the scope. The static qualifier means the function is only visible from within this source file. So, to try and defeat this, our little 12 year old stuck a static qualifier on the character array (string). ___Maybe___ in the latest and greatest C standard (which I haven&#8217;t read) the compiler is now required to BOTH save the value AND keep it externally accessible while the rest of the routine is being garbage collected away.<\/p>\n<p>You see, the definition which was\/is in most of the compilers out there, especially those which stopped updating at C99 or a bit sooner, that&#8217;s not a requirement. The &#8220;requirement&#8221; was that the variable only be initialized once and that it retain its value across multiple function calls. There was\/is nothing about it still being externally accessible.<\/p>\n<p>When you are writing OpenSource, you aren&#8217;t writing for the latest and greatest, you are writing for whatever happens to be out there.<\/p>\n<p>While we are at it, choose &#8220;time&#8221; for a variable name, especially for a string, is Uber stupid. I couldn&#8217;t believe it compiled. My gut tells me that if this code really is working on PC platforms it is working due to a bad architecture and compiler with shit garbage collection.<\/p>\n<p>Don&#8217;t worry, I&#8217;m not going to cover it all, this would be\u00a0 a 2+ million word blog post if I did that.<\/p>\n<pre>#define NILVALUE \"-\"\r\nstatic void syslog_rfc3164_header(struct logger_ctl *const ctl)\r\n{\r\n\tchar pid[30], *hostname;\r\n\r\n\t*pid = '\\0';\r\n\tif (ctl-&gt;pid)\r\n\t\tsnprintf(pid, sizeof(pid), \"[%d]\", ctl-&gt;pid);\r\n\r\n\tif ((hostname = logger_xgethostname())) {\r\n\t\tchar *dot = strchr(hostname, '.');\r\n\t\tif (dot)\r\n\t\t\t*dot = '\\0';\r\n\t} else\r\n\t\thostname = xstrdup(NILVALUE);\r\n\r\n\txasprintf(&amp;ctl-&gt;hdr, \"&lt;%d&gt;%.15s %s %.200s%s: \",\r\n\t\t ctl-&gt;pri, rfc3164_current_time(), hostname, ctl-&gt;tag, pid);\r\n\r\n\tfree(hostname);\r\n}\r\n\r\n<\/pre>\n<p>You see, I started cross compiling this because adding all of the advertised features to the existing logger for OpenVMS was going to take several days to a week. Cross compiling this _should_ have been quicker. Yes, the current C compiler<\/p>\n<p>$ cc\/ver<br \/>\nHP C V7.1-015 on OpenVMS Alpha V8.3<\/p>\n<p>Stopped around the time of the C99 standard. I won&#8217;t go so far as to say C99 is &#8220;all&#8221; there. I&#8217;ve banged into some partially implemented stuff with the networks, but haven&#8217;t dug in to see if they are part of the standard or not.<\/p>\n<p>So the above snippet nests a call to our original snippet inside of a print routine. Once this got ported to OpenVMS I could step through the first snippet and see a perfectly formatted date string. When the sprintf() got done I had a big block-o-nothin where the date should be.<\/p>\n<p>Old Timers, we know these things. Global data isn&#8217;t a bad thing, it exists because we need it. All of these little tricks trying to bob and weave around the Grim Reaper of garbage collection are just time bombs waiting to go off. So, a quick cut and paste moving that static char definition of time to global scope brought about the expected compilation error.<\/p>\n<pre>static char time[32]; \/* place to store a time return value *\/\r\n............^\r\n%CC-W-MIXLINKAGE, In this declaration, \"time\" is declared with both internal and external linkage. The previous declaration is at l\r\nine number 378 in file SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;1 (text module TIME).\r\nat line number 112 in file RADIAN_ROOT:[2018-VMS-SYSLOG]logger.c;148<\/pre>\n<p>So, changing time[32] to time_str[32] and changing the few references to it brought about the desired outcome. What &#8220;could&#8221; have been the problem?<\/p>\n<ul>\n<li>Grim Reaper garbage collection is faster on old DS-10 than modern Intel PC<\/li>\n<li>DECC puts the value in a safe place when function goes out of scope and reassigns value when function is re-entered. The original storage location, however, is garbage collected.<\/li>\n<li>Choosing &#8220;time&#8221; as a variable name, especially for a string, was an incredibly stupid thing to do and it collided with the OS level definition in a way which whacked the string value once outside of the function.<\/li>\n<li>Compiler developers, having been told for years by unemployable academics without a single line of QA&#8217;ed code in production at any for-profit company that global data is bad, came up with a tweaking of the &#8220;static&#8221; definition to avoid making global what obviously needed to be global. This was done without concern for existing compilers or code in production.<\/li>\n<\/ul>\n<p>You can probably come up with more.<\/p>\n<p>The point is, the 12 year old boys always want to play with the new toys while the production coders will keep it simple. Production coders who go to independent QA departments know better than to push the envelop. Code they write today could be ported to a Z-80 chip with a 1980s compiler. You think I&#8217;m kidding? There are production systems today still running OS\/2 Warp.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-large wp-image-2723\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/Screenshot_20180222_181305-1024x669.png\" alt=\"OS\/2 Warp job posting\" width=\"730\" height=\"477\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/Screenshot_20180222_181305-1024x669.png 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/Screenshot_20180222_181305-300x196.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/Screenshot_20180222_181305-768x502.png 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/Screenshot_20180222_181305-730x477.png 730w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/Screenshot_20180222_181305.png 1222w\" sizes=\"(max-width: 730px) 100vw, 730px\" \/><\/p>\n<p>Oh, and for the record. I knew it would take 3 days to a week to add the bulk of the features to the existing ported code. This __should__ have taken one day to port. I&#8217;m now on day 3 tracking down stuff like this. Too close to finished to quit.<\/p>\n<p>Thanks!<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Even if their biological clock states they are north of 40, they never got past 12 when it comes to coding. In case you can&#8217;t see the featured image, the source file came from here. And since they will _hopefully_ sweep that up, here is the first snippet. \/* this creates a timestamp based on current time according to the * fine rules of RFC3164, most importantly it ensures in a portable * way that &hellip; <a title=\"It&#8217;s okay to hate the 12 year old boys who write the bulk of OpenSource code\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/\"><span class=\"screen-reader-text\">It&#8217;s okay to hate the 12 year old boys who write the bulk of OpenSource code<\/span>Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":2722,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1309,3,4],"tags":[53,1586,1587,689,1143],"class_list":["post-2721","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-experience","category-information-technology","category-thank-you-sir-may-i-have-another","tag-linux","tag-logger","tag-logger-c","tag-opensource","tag-syslog","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>It&#039;s okay to hate the 12 year old boys who write the bulk of OpenSource code &#8211; Logikal Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"It&#039;s okay to hate the 12 year old boys who write the bulk of OpenSource code &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"Even if their biological clock states they are north of 40, they never got past 12 when it comes to coding. In case you can&#8217;t see the featured image, the source file came from here. And since they will _hopefully_ sweep that up, here is the first snippet. \/* this creates a timestamp based on current time according to the * fine rules of RFC3164, most importantly it ensures in a portable * way that &hellip; It&#8217;s okay to hate the 12 year old boys who write the bulk of OpenSource codeRead more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-02-23T00:20:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-02-23T00:21:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/logger-snippet-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"733\" \/>\n\t<meta property=\"og:image:height\" content=\"488\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"seasoned_geek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"seasoned_geek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/\"},\"author\":{\"name\":\"seasoned_geek\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"headline\":\"It&#8217;s okay to hate the 12 year old boys who write the bulk of OpenSource code\",\"datePublished\":\"2018-02-23T00:20:55+00:00\",\"dateModified\":\"2018-02-23T00:21:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/\"},\"wordCount\":827,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/logger-snippet-image.png\",\"keywords\":[\"Linux\",\"logger\",\"logger.c\",\"opensource\",\"syslog\"],\"articleSection\":[\"Experience\",\"Information Technology\",\"Thank You Sir May I Have Another\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/\",\"name\":\"It's okay to hate the 12 year old boys who write the bulk of OpenSource code &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/logger-snippet-image.png\",\"datePublished\":\"2018-02-23T00:20:55+00:00\",\"dateModified\":\"2018-02-23T00:21:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/logger-snippet-image.png\",\"contentUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2018\\\/02\\\/logger-snippet-image.png\",\"width\":733,\"height\":488,\"caption\":\"logger snippet image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"It&#8217;s okay to hate the 12 year old boys who write the bulk of OpenSource code\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"For people with attention spans longer than a Tweet\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"],\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/seasoned_geek\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"It's okay to hate the 12 year old boys who write the bulk of OpenSource code &#8211; Logikal Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/","og_locale":"en_US","og_type":"article","og_title":"It's okay to hate the 12 year old boys who write the bulk of OpenSource code &#8211; Logikal Blog","og_description":"Even if their biological clock states they are north of 40, they never got past 12 when it comes to coding. In case you can&#8217;t see the featured image, the source file came from here. And since they will _hopefully_ sweep that up, here is the first snippet. \/* this creates a timestamp based on current time according to the * fine rules of RFC3164, most importantly it ensures in a portable * way that &hellip; It&#8217;s okay to hate the 12 year old boys who write the bulk of OpenSource codeRead more","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/","og_site_name":"Logikal Blog","article_published_time":"2018-02-23T00:20:55+00:00","article_modified_time":"2018-02-23T00:21:26+00:00","og_image":[{"width":733,"height":488,"url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/logger-snippet-image.png","type":"image\/png"}],"author":"seasoned_geek","twitter_card":"summary_large_image","twitter_misc":{"Written by":"seasoned_geek","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/"},"author":{"name":"seasoned_geek","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"headline":"It&#8217;s okay to hate the 12 year old boys who write the bulk of OpenSource code","datePublished":"2018-02-23T00:20:55+00:00","dateModified":"2018-02-23T00:21:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/"},"wordCount":827,"commentCount":2,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/logger-snippet-image.png","keywords":["Linux","logger","logger.c","opensource","syslog"],"articleSection":["Experience","Information Technology","Thank You Sir May I Have Another"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/","name":"It's okay to hate the 12 year old boys who write the bulk of OpenSource code &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/#primaryimage"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/logger-snippet-image.png","datePublished":"2018-02-23T00:20:55+00:00","dateModified":"2018-02-23T00:21:26+00:00","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/#primaryimage","url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/logger-snippet-image.png","contentUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2018\/02\/logger-snippet-image.png","width":733,"height":488,"caption":"logger snippet image"},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/its-okay-to-hate-the-12-year-old-boys-who-write-the-bulk-of-opensource-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"It&#8217;s okay to hate the 12 year old boys who write the bulk of OpenSource code"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"For people with attention spans longer than a Tweet","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"],"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/seasoned_geek\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/2721","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=2721"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/2721\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media\/2722"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=2721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=2721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=2721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}