{"id":2528,"date":"2017-09-10T16:53:54","date_gmt":"2017-09-10T21:53:54","guid":{"rendered":"http:\/\/www.logikalsolutions.com\/wordpress\/?p=2528"},"modified":"2021-02-13T14:42:35","modified_gmt":"2021-02-13T20:42:35","slug":"how-far-weve-come-pt-13","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/","title":{"rendered":"How Far We&#8217;ve Come &#8211; Pt. 13"},"content":{"rendered":"<p>Before we jump straight into the code, we need to talk a bit about the design of this application. When I first started coding up a new version using Qt and SQLite I originally started with the old design.<\/p>\n<pre>sqlite&gt; select strftime( '%Y%m%d', draw_dt) as 'drawing date', no_1, no_2, no_3, no_4, no_5, no_6 from drawings order by draw_dt asc limit 15;\ndrawing date    no_1    no_2    no_3    no_4    no_5    no_6\n19990102        9       12      18      32      34      47\n19990106        3       9       11      17      18      41\n19990109        2       17      19      36      38      45\n19990113        4       14      24      28      31      38\n19990116        11      25      31      35      42      45\n19990120        15      20      28      30      36      43\n19990123        11      12      20      28      42      45\n19990127        3       25      26      31      45      47\n19990130        3       24      25      37      44      48\n19990203        2       7       22      37      39      40\n19990206        4       6       10      20      42      46\n19990210        2       10      18      28      33      35\n19990213        1       7       19      29      30      39\n19990217        18      21      30      42      45      46\n19990220        1       15      19      30      32      38\n\n<\/pre>\n<h2>Early Days<\/h2>\n<p>This had been the way I set it up from the earliest days of coding it under DOS with C and a roll-your-own file system. It was always hard coded for six drawing numbers in each drawing as well as a hard coded drawing number range. I was only writing it for myself and the lottery was brand new. Nobody envisioned the addition of larger range and special numbers.<\/p>\n<p>Those early programs would chew through the entire file creating a stats structure in memory for each possible drawing number. That was important then because I needed to know the zeros. The lottery was new enough that not every number had been drawn. Roll overs were typically caused by some first time for a zero, or so I believed.<\/p>\n<h2>XBASE Migration<\/h2>\n<p>Once I started playing around with indexed file systems we called databases, like various XBASE libraries, I started creating a STATS file\/table\/database which would be repopulated via a menu option, then I could run any of the reports I had written against it. This worked for me because I wasn&#8217;t a regular lottery player. I could have several drawings to enter or a new CSV to import. (Of course the state lottery didn&#8217;t start having a CSV file until they got \u00a0a Web site, now they don&#8217;t offer the download option.)<\/p>\n<p>Storage wise this was the most efficient and, don&#8217;t forget, 40MEG hard drives were several hundred dollars and you could only have 2 in your computer before you had to get some klunky add-in card. Later we got SCSI and could have 6 larger drives. Eventually those SCSI drives got up to a whopping 1Gig but they came at a hefty price tag.<\/p>\n<p>Please examine these two different directory listings. The first is storing the import data the old way and the second is my new way.<\/p>\n<p>\u00a0<\/p>\n<pre>roland@roland-HP-Compaq-8100-Elite-SFF-PC:~\/sqlite_data$ ls -al      \ntotal 184\ndrwxrwxr-x   2 roland roland   4096 Sep  5 20:53 .\ndrwxr-xr-x 100 roland roland  20480 Sep  5 20:19 ..\n-rw-r--r--   1 roland roland 158720 Sep  5 20:53 lottoDB.sqlite\n\nroland@roland-HP-Compaq-8100-Elite-SFF-PC:~\/sqlite_data$ ls -al\ntotal 620\ndrwxrwxr-x   2 roland roland   4096 Sep  6 10:13 .\ndrwxr-xr-x 100 roland roland  20480 Sep  5 21:23 ..\n-rw-r--r--   1 roland roland 605184 Sep  6 10:13 lottoDB.sqlite\n<\/pre>\n<h2>What is the new way you ask?<\/h2>\n<pre>sqlite&gt; .head on\nsqlite&gt; .separator \\t\nsqlite&gt; select strftime( '%Y%m%d', draw_dt) as 'drawing date', draw_no from drawings order by draw_dt asc limit 20;\ndrawing date    draw_no\n19990102        9\n19990102        12\n19990102        18\n19990102        32\n19990102        34\n19990102        47\n19990106        3\n19990106        9\n19990106        11\n19990106        17\n19990106        18\n19990106        41\n19990109        2\n19990109        17\n19990109        19\n19990109        36\n19990109        38\n19990109        45\n19990113        4\n19990113        14\n<\/pre>\n<p>In an era before we wasted processor time and disk storage on Facebook, Youtube and cat videos, we would _never_ consider repeating a date field (or storing the century) but those days are behind us.<\/p>\n<p>Pro:<\/p>\n<p>The database does not care if there is 1 number in each drawing or N.<\/p>\n<p>Con:<\/p>\n<p>Unless you have an external configuration file, you have no way to identify zeros.<\/p>\n<p>The con, in this case, isn&#8217;t so bad because I pulled down data back to 1999.<\/p>\n<h2>DRAW_STATS table<\/h2>\n<p>Later on, in my OpenVMS Application Developer book I got around to using RDB and creating a DRAW_STATS table.<\/p>\n<p>DECLARE DUE_DRAW_CURSOR READ ONLY CURSOR FOR<br \/>SELECT ELM_NO, HIT_COUNT, SINCE_LAST, PCT_HITS, AVE_BTWN<br \/>FROM DRAW_STATS<br \/>WHERE SINCE_LAST &gt; AVE_BTWN<br \/>ORDER BY SINCE_LAST DESC<\/p>\n<p><br \/>It was still generated via a menu option, but, it met all of my reporting needs. Early PC versions also had LONGEST_SEQ (most drawings in a row the number came up), LONGEST_BTWN (most number of drawings between two hits) and SEQ_COUNT (number of times a drawing number came up in sequence.) While all of this information was interesting, I left it out of our application. I&#8217;m merely telling you about this now because you may wish to add such calculations for your own amusement. There used to be a handful of numbers which would come up 2-N times in a row whenever they finally came up then would have long gaps of not coming up. Hey, I am a geek. I found such things interesting. Nope, not once did I ever win a massive jackpot, but I did hit smaller payouts and then kind of quite playing once I started dating regularly and was wasting money on other pursuits with a hopefully higher payoff.<\/p>\n<p>Eventually I coded export utilities and other things our application will lack. Mostly I did this because I was experimenting with some new tool and I chose this application to be my self paced tutorial. I could compare the output of the two and see if I had made some mistake.<\/p>\n\n\n<p><a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-12\/\">&lt;Previous-part<\/a>    <a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-14\/\">Next-part><\/a><\/p>\n\n\n\n<p>Related Posts:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.theminimumyouneedtoknow.com\/qt_book.html\">QT Database book<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.theminimumyouneedtoknow.com\/agile_book.html\">AGILE book<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qdebug-output\/\">Where Did My QDebug Output Go?<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/moc-parse-error-at-std\/\">MOC Parse Error at &#8220;std&#8221;<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/kde-neon-distcc-and-qt\/\">KDE Neon &#8211; Distcc and Qt<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/copperspice-and-diamond\/\">CopperSpice Experiments<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qtcreator-no-qmlscene-installed\/\">QtCreator &#8211; No qmlScene installed<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/uncategorized\/so-you-cant-get-your-qt-models-to-work-with-qml\/\">So You Can&#8217;t Get Your Models to Work with QML?<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Before we jump straight into the code, we need to talk a bit about the design of this application. When I first started coding up a new version using Qt and SQLite I originally started with the old design. sqlite&gt; select strftime( &#8216;%Y%m%d&#8217;, draw_dt) as &#8216;drawing date&#8217;, no_1, no_2, no_3, no_4, no_5, no_6 from drawings order by draw_dt asc limit 15; drawing date no_1 no_2 no_3 no_4 no_5 no_6 19990102 9 12 18 32 34 &hellip; <a title=\"How Far We&#8217;ve Come &#8211; Pt. 13\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/\"><span class=\"screen-reader-text\">How Far We&#8217;ve Come &#8211; Pt. 13<\/span>Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,1113],"tags":[9,159,1494],"class_list":["post-2528","post","type-post","status-publish","format-standard","hentry","category-information-technology","category-raspberry-pi","tag-openvms","tag-qt","tag-sqlite","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How Far We&#039;ve Come - Pt. 13 &#8211; Logikal Blog<\/title>\n<meta name=\"description\" content=\"Original implementation of the lottery tracker used just C and an XBASE library under MS DOS. Been goto demo application ever since.\" \/>\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\/how-far-weve-come-pt-13\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Far We&#039;ve Come - Pt. 13 &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"Original implementation of the lottery tracker used just C and an XBASE library under MS DOS. Been goto demo application ever since.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-10T21:53:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-02-13T20:42:35+00:00\" \/>\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\\\/how-far-weve-come-pt-13\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/how-far-weve-come-pt-13\\\/\"},\"author\":{\"name\":\"seasoned_geek\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"headline\":\"How Far We&#8217;ve Come &#8211; Pt. 13\",\"datePublished\":\"2017-09-10T21:53:54+00:00\",\"dateModified\":\"2021-02-13T20:42:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/how-far-weve-come-pt-13\\\/\"},\"wordCount\":764,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"keywords\":[\"OpenVMS\",\"Qt\",\"SQLite\"],\"articleSection\":[\"Information Technology\",\"Raspberry Pi\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/how-far-weve-come-pt-13\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/how-far-weve-come-pt-13\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/how-far-weve-come-pt-13\\\/\",\"name\":\"How Far We've Come - Pt. 13 &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"datePublished\":\"2017-09-10T21:53:54+00:00\",\"dateModified\":\"2021-02-13T20:42:35+00:00\",\"description\":\"Original implementation of the lottery tracker used just C and an XBASE library under MS DOS. Been goto demo application ever since.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/how-far-weve-come-pt-13\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/how-far-weve-come-pt-13\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/how-far-weve-come-pt-13\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How Far We&#8217;ve Come &#8211; Pt. 13\"}]},{\"@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":"How Far We've Come - Pt. 13 &#8211; Logikal Blog","description":"Original implementation of the lottery tracker used just C and an XBASE library under MS DOS. Been goto demo application ever since.","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\/how-far-weve-come-pt-13\/","og_locale":"en_US","og_type":"article","og_title":"How Far We've Come - Pt. 13 &#8211; Logikal Blog","og_description":"Original implementation of the lottery tracker used just C and an XBASE library under MS DOS. Been goto demo application ever since.","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/","og_site_name":"Logikal Blog","article_published_time":"2017-09-10T21:53:54+00:00","article_modified_time":"2021-02-13T20:42:35+00:00","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\/how-far-weve-come-pt-13\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/"},"author":{"name":"seasoned_geek","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"headline":"How Far We&#8217;ve Come &#8211; Pt. 13","datePublished":"2017-09-10T21:53:54+00:00","dateModified":"2021-02-13T20:42:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/"},"wordCount":764,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"keywords":["OpenVMS","Qt","SQLite"],"articleSection":["Information Technology","Raspberry Pi"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/","name":"How Far We've Come - Pt. 13 &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"datePublished":"2017-09-10T21:53:54+00:00","dateModified":"2021-02-13T20:42:35+00:00","description":"Original implementation of the lottery tracker used just C and an XBASE library under MS DOS. Been goto demo application ever since.","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/how-far-weve-come-pt-13\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"How Far We&#8217;ve Come &#8211; Pt. 13"}]},{"@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\/2528","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=2528"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/2528\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=2528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=2528"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=2528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}