{"id":353,"date":"2011-06-05T16:25:34","date_gmt":"2011-06-05T08:25:34","guid":{"rendered":"http:\/\/gergely.imreh.net\/blog\/?p=353"},"modified":"2015-11-04T15:42:47","modified_gmt":"2015-11-04T07:42:47","slug":"language-of-the-month-lua","status":"publish","type":"post","link":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/","title":{"rendered":"Language of the Month: Lua"},"content":{"rendered":"<p>New month, new language. So far in this series:<\/p>\n<ul>\n<li>May: <a title=\"Language of the Month: Scala\" href=\"http:\/\/gergely.imreh.net\/blog\/2011\/05\/language-of-the-month-scala\/\" target=\"_blank\">Scala<\/a><\/li>\n<li>June: Lua<\/li>\n<\/ul>\n<p>I think I do want to amend the original rules set up for this Language of the Month series. At first I though I can write a new project in any language I learn. That is probably too ambitious. So new rules:\u00a0<em>every month write a new project in the given language OR contribute to an open-source project in that language.<\/em> This should take away most of the stress and add some social aspect as well. :)<\/p>\n<h2>Lua<\/h2>\n<p>I&#8217;m intrigued by this language because of it&#8217;s\u00a0niche: scripting language within other software. How one sets out to do something like this? What are the requirements for the language, in terms of design, syntax and so on?<\/p>\n<figure id=\"attachment_352\" aria-describedby=\"caption-attachment-352\" style=\"width: 256px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2011\/06\/lua.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-352\" title=\"lua\" src=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2011\/06\/lua.gif\" alt=\"Lua programming language logo\" width=\"256\" height=\"255\" \/><\/a><figcaption id=\"caption-attachment-352\" class=\"wp-caption-text\">See, the moon!<\/figcaption><\/figure>\n<h3>First impressions<\/h3>\n<p>So far I was trying out some code\u00a0snippets and example scripts. First thing to notice was that Lua is pretty darn quick to start. And pretty quick to run as well, though I haven&#8217;t used it for very heavy computation yet. E.g. the &#8220;get_all_factors&#8221; code at the <a title=\"Lua Crash Course\" href=\"http:\/\/luatut.com\/crash_course.html\" target=\"_blank\">Lua Crash Course<\/a> (using a larger example number, 1029384756) is timed at ~7ms, wheres the same version on Python (the language that I probably know best and compare other\u00a0languages\u00a0to) runs ~10x slower. The snappiness of a scripting language is a surprisingly happy feeling. :)<\/p>\n<p><a title=\"Lua on Wikipedia: Tables\" href=\"http:\/\/en.wikipedia.org\/wiki\/Lua_(programming_language)#Tables\" target=\"_blank\">Tables<\/a> look very interesting, how the same thing can implement several data structures at once (it&#8217;s like Python&#8217;s dict, list and kinda-struct at the same time).<\/p>\n<p>Quite intriguing that the Lua Virtual Machine is stack based, probably that&#8217;s the reason the language is so embeddable. A while back I was <a title=\"Language choice for small memory footprint\" href=\"http:\/\/stackoverflow.com\/questions\/5004882\/language-choice-for-small-memory-footprint\" target=\"_blank\">looking for<\/a> a language with small resource (especially memory) requirements. I had a few suggestions (Dalvik, Forth) that were interesting, but maybe Lua is the one?<\/p>\n<p>The &#8220;local&#8221; keyword (and the reasons for having it) seems to be a possible source of many harder to debug scenarios. Got to keep this in mind, again not being in Pythonland anymore.<\/p>\n<p>Interesting how the &#8220;function&#8221; can be defined inline, so looks like there&#8217;s essentially no need for a special &#8220;lambda&#8221; keyword, at the expense of tying a few characters more&#8230;<\/p>\n<p>The interpreter is quite well done (with it&#8217;s intelligent\u00a0indentation\u00a0probably even better then ipython, though would love to see more colours ^^)<\/p>\n<p>As an exercise, here&#8217;s a version of <a title=\"FizzBuzz definition\" href=\"http:\/\/www.codinghorror.com\/blog\/2007\/02\/why-cant-programmers-program.html\" target=\"_blank\">FizzBuzz<\/a>:<\/p>\n<pre lang=\"lua\">function fizzbuzz(num)\r\n   --[[--\r\n   The usual FizzBuzz from Jeff Atwood\r\n   Doing it a bit roundabout to try some Lua language features\r\n   --]]--\r\n   local answer = \"\"\r\n\r\n   if (num % 5) == 0 then\r\n      answer = \"Fizz\"\r\n   end\r\n   if (num % 3) == 0 then\r\n      answer = answer .. \"Buzz\"\r\n   end\r\n\r\n   if answer ~= \"\" then\r\n      print(answer)\r\n   else\r\n      print(num)\r\n   end\r\nend\r\n\r\n-- Run the thing\r\nfor num=1,100,1 do\r\n   fizzbuzz(num)\r\nend<\/pre>\n<h2>Links<\/h2>\n<p>This section will be updated gradually as I find more information.<\/p>\n<p>(<strong>Edit:<\/strong>\u00a0added the\u00a0<a title=\"Language of the Month: Lua, part 2\" href=\"http:\/\/gergely.imreh.net\/blog\/2011\/07\/language-of-the-month-lua-part-2\/\">second part of this experiment<\/a>.)<\/p>\n<h3>Install<\/h3>\n<ul>\n<li><a title=\"Lua website\" href=\"http:\/\/www.lua.org\/\" target=\"_blank\">Lua<\/a><\/li>\n<li><a title=\"LuaJIT website\" href=\"http:\/\/luajit.org\/\" target=\"_blank\">LuaJIT<\/a><\/li>\n<li><a title=\"Lua Live Demo site\" href=\"http:\/\/www.lua.org\/demo.html\" target=\"_blank\">Lua Live Demo<\/a><\/li>\n<\/ul>\n<h3>Tutorials<\/h3>\n<ul>\n<li><a title=\"Lua Tutorial\" href=\"http:\/\/luatut.com\/\" target=\"_blank\">A crash course on Lua<\/a>, very short but poignant<\/li>\n<li><a title=\"Lua Users Wiki - tutorial directory\" href=\"http:\/\/lua-users.org\/wiki\/TutorialDirectory\" target=\"_blank\">Tutorial directory<\/a> on Lua Users Wiki<\/li>\n<li><a title=\"Lua for Beginners site\" href=\"http:\/\/lua.gts-stolberg.de\/en\/index.php\" target=\"_blank\">Lua for Beginners<\/a><\/li>\n<li><a title=\"Lua on Wikipedia\" href=\"http:\/\/en.wikipedia.org\/wiki\/Lua_(programming_language)\" target=\"_blank\">Lua on Wikipedia<\/a>, a quick overview<\/li>\n<\/ul>\n<h3>Books<\/h3>\n<ul>\n<li><a title=\"Beginning Lua Programming book website\" href=\"http:\/\/www.wrox.com\/WileyCDA\/WroxTitle\/Beginning-Lua-Programming.productCd-0470069171.html\" target=\"_blank\">Beginning Lua Programming<\/a><\/li>\n<li><a title=\"Programming in Lua book site\" href=\"http:\/\/www.lua.org\/pil\/\" target=\"_blank\">Programming in Lua<\/a><\/li>\n<\/ul>\n<h3>Articles and info<\/h3>\n<ul>\n<li><a title=\"Google search for Lua on Hacker News\" href=\"http:\/\/www.google.com\/search?q=Lua+site%3Anews.ycombinator.net\" target=\"_blank\">Lua mentions on Hacker News<\/a> (search results)<\/li>\n<li><a title=\"Slideshare: search for Lua\" href=\"http:\/\/www.slideshare.net\/search\/slideshow?searchfrom=header&amp;q=lua\" target=\"_blank\">Presentations on Slideshare<\/a> (search results)<\/li>\n<li><a title=\"Youtube: WoW scripting with Lua\" href=\"http:\/\/www.youtube.com\/watch?v=4_l-_r6hnvk\" target=\"_blank\">World of Warcraft AI scripting with Lua<\/a> (video)<\/li>\n<\/ul>\n<h3>Source of code<\/h3>\n<ul>\n<li><a title=\"Search for Lua on Github\" href=\"https:\/\/github.com\/languages\/Lua\" target=\"_blank\">Lua code on Github<\/a><\/li>\n<li><a title=\"Google Code Search for Lua\" href=\"http:\/\/www.google.com\/codesearch?q=lang:lua\" target=\"_blank\">Lua search on Google Code Search<\/a>,\u00a0add a keyword, e.g. &#8220;function&#8221; to actually see something<\/li>\n<\/ul>\n<h3>Projects using Lua<\/h3>\n<ul>\n<li><a title=\"Luatex homepage\" href=\"http:\/\/www.luatex.org\/\" target=\"_blank\">LuaTex<\/a>, a scripting enabled version of pdfTex<\/li>\n<li><a title=\"LuaForge, a collection of projects\" href=\"http:\/\/luaforge.net\/\" target=\"_blank\">LuaForge<\/a>, collection of projects<\/li>\n<li><a title=\"Lua on Wikipedia: Applications\" href=\"http:\/\/en.wikipedia.org\/wiki\/Lua_%28programming_language%29#Applications\" target=\"_blank\">Lua: Applications<\/a> (on the Wikipedia page)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>New month, new language. So far in this series: May: Scala June: Lua I think I do want to amend the original rules set up for this Language of the Month series. At first I though I can write a new project in any language I learn. That is probably too ambitious. So new rules:\u00a0every [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[44,49],"class_list":["post-353","post","type-post","status-publish","format-standard","hentry","category-prog","tag-lotm","tag-lua"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Language of the Month: Lua - ClickedyClick<\/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:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Language of the Month: Lua - ClickedyClick\" \/>\n<meta property=\"og:description\" content=\"New month, new language. So far in this series: May: Scala June: Lua I think I do want to amend the original rules set up for this Language of the Month series. At first I though I can write a new project in any language I learn. That is probably too ambitious. So new rules:\u00a0every [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/\" \/>\n<meta property=\"og:site_name\" content=\"ClickedyClick\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/gergely.imreh\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/gergely.imreh\" \/>\n<meta property=\"article:published_time\" content=\"2011-06-05T08:25:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-11-04T07:42:47+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2011\/06\/lua.gif\" \/>\n<meta name=\"author\" content=\"Gergely Imreh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@imrehg\" \/>\n<meta name=\"twitter:site\" content=\"@imrehg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gergely Imreh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/\"},\"author\":{\"name\":\"Gergely Imreh\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"headline\":\"Language of the Month: Lua\",\"datePublished\":\"2011-06-05T08:25:34+00:00\",\"dateModified\":\"2015-11-04T07:42:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/\"},\"wordCount\":541,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"image\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/06\\\/lua.gif\",\"keywords\":[\"lotm\",\"lua\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/\",\"name\":\"Language of the Month: Lua - ClickedyClick\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/06\\\/lua.gif\",\"datePublished\":\"2011-06-05T08:25:34+00:00\",\"dateModified\":\"2015-11-04T07:42:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/#primaryimage\",\"url\":\"http:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/06\\\/lua.gif\",\"contentUrl\":\"http:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/06\\\/lua.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2011\\\/06\\\/language-of-the-month-lua\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Language of the Month: Lua\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/\",\"name\":\"ClickedyClick\",\"description\":\"Life in real, complex and digital.\",\"publisher\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\",\"name\":\"Gergely Imreh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"caption\":\"Gergely Imreh\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\"},\"description\":\"Physicist, hacker. Enjoys avant-guarde literature probably a bit too much. Open source advocate and contributor, both for software and hardware. Follow these posts on the Fediverse by @gergely@gergely.imreh.net\",\"sameAs\":[\"https:\\\/\\\/gergely.imreh.net\\\/\",\"https:\\\/\\\/www.facebook.com\\\/gergely.imreh\",\"https:\\\/\\\/www.instagram.com\\\/imrehg\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/gergelyimreh\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GergelyImreh\"],\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/author\\\/gergely\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Language of the Month: Lua - ClickedyClick","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:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/","og_locale":"en_GB","og_type":"article","og_title":"Language of the Month: Lua - ClickedyClick","og_description":"New month, new language. So far in this series: May: Scala June: Lua I think I do want to amend the original rules set up for this Language of the Month series. At first I though I can write a new project in any language I learn. That is probably too ambitious. So new rules:\u00a0every [&hellip;]","og_url":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/","og_site_name":"ClickedyClick","article_publisher":"https:\/\/www.facebook.com\/gergely.imreh","article_author":"https:\/\/www.facebook.com\/gergely.imreh","article_published_time":"2011-06-05T08:25:34+00:00","article_modified_time":"2015-11-04T07:42:47+00:00","og_image":[{"url":"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2011\/06\/lua.gif","type":"","width":"","height":""}],"author":"Gergely Imreh","twitter_card":"summary_large_image","twitter_creator":"@imrehg","twitter_site":"@imrehg","twitter_misc":{"Written by":"Gergely Imreh","Estimated reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/#article","isPartOf":{"@id":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/"},"author":{"name":"Gergely Imreh","@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"headline":"Language of the Month: Lua","datePublished":"2011-06-05T08:25:34+00:00","dateModified":"2015-11-04T07:42:47+00:00","mainEntityOfPage":{"@id":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/"},"wordCount":541,"commentCount":0,"publisher":{"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"image":{"@id":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/#primaryimage"},"thumbnailUrl":"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2011\/06\/lua.gif","keywords":["lotm","lua"],"articleSection":["Programming"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/","url":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/","name":"Language of the Month: Lua - ClickedyClick","isPartOf":{"@id":"https:\/\/gergely.imreh.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/#primaryimage"},"image":{"@id":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/#primaryimage"},"thumbnailUrl":"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2011\/06\/lua.gif","datePublished":"2011-06-05T08:25:34+00:00","dateModified":"2015-11-04T07:42:47+00:00","breadcrumb":{"@id":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/#primaryimage","url":"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2011\/06\/lua.gif","contentUrl":"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2011\/06\/lua.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/gergely.imreh.net\/blog\/2011\/06\/language-of-the-month-lua\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gergely.imreh.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Language of the Month: Lua"}]},{"@type":"WebSite","@id":"https:\/\/gergely.imreh.net\/blog\/#website","url":"https:\/\/gergely.imreh.net\/blog\/","name":"ClickedyClick","description":"Life in real, complex and digital.","publisher":{"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gergely.imreh.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0","name":"Gergely Imreh","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","caption":"Gergely Imreh"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g"},"description":"Physicist, hacker. Enjoys avant-guarde literature probably a bit too much. Open source advocate and contributor, both for software and hardware. Follow these posts on the Fediverse by @gergely@gergely.imreh.net","sameAs":["https:\/\/gergely.imreh.net\/","https:\/\/www.facebook.com\/gergely.imreh","https:\/\/www.instagram.com\/imrehg\/","https:\/\/www.linkedin.com\/in\/gergelyimreh\/","https:\/\/www.youtube.com\/@GergelyImreh"],"url":"https:\/\/gergely.imreh.net\/blog\/author\/gergely\/"}]}},"_links":{"self":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/comments?post=353"}],"version-history":[{"count":12,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/353\/revisions"}],"predecessor-version":[{"id":2127,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/353\/revisions\/2127"}],"wp:attachment":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/media?parent=353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/categories?post=353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/tags?post=353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}