[18:00:14] What is this? [18:00:18] Hello [18:00:34] We're about to start the support session about Lua & Scribunto. [18:00:47] This will be publicly logged and the log posted on wiki [18:00:56] ====Starting public loggin now==== [18:01:32] anomie: around? [18:01:33] * greg-g waves [18:01:39] guillom- Ready and waiting [18:01:52] ok; I'll go around the channels and spam just a bit [18:01:55] Should we ask questions ? [18:02:14] Hi everyone, and welcome to the Scribunto & Lua office hours session. [18:02:34] I don't really have anything to say, so if you have questions, ask away. [18:03:16] Darkdadaah: yes! Ask away :) [18:04:28] Did folks here already read http://blog.wikimedia.org/2013/03/14/what-lua-scripting-means-wikimedia-open-source/ and https://blog.wikimedia.org/2013/03/11/lua-templates-faster-more-flexible-pages/ ? I'm curious whether those were useful [18:05:19] anomie is an engineer of the Wikimedia Foundation who's worked on Lua and the Scribunto extension. He'll be around for the next hour or so to answer questions about how to use Lua in templates [18:05:20] No, thanks for the links [18:05:32] sumanah-conf: I did read it, but I was already convinced. [18:05:36] :-) [18:05:59] Let's say I have a module used in a lot of pages (millions of pages !). How would changing the module impact the wiki ? Especially Job queue wise ? [18:06:20] * aude waves [18:06:36] It would impact the job queue in the same way that editing a template used in millions of pages would: the pages would be invalidated and added to the job queue to be reparsed. [18:06:39] MikaelLindmark: also you might like to look at https://commons.wikimedia.org/wiki/File:WMF_Tech_Talk_2013-02-28_slides_-_Scribunto_presentation.pdf Brad Jorsch’s short presentation for a basic example of how to convert a wikitext template into a Lua module. [18:07:53] Which means that it's always a good idea to test your changes before making an edit to the million-use module ;) [18:07:54] when will we have translations for the namespaces fixed? [18:08:08] CasperN- What do you mean? [18:08:23] yurik: NYU :) [18:08:25] on the swedish wikipedia we have english names now [18:08:29] anomie: On Wiktionaries we are tempted to use a huge table for language codes (-> used in all pages), but if every time we use a language the whole wiki needs reparsing, we may need a better idea. [18:08:37] ori-l: yep :) [18:08:47] anomie: is there a good way to test changed modules other than making a copy of the template and editing that? [18:08:54] brion: TemplateSandbox? [18:08:57] I added a translation to a list somewhere, but that was some time ago now [18:09:08] https://www.mediawiki.org/wiki/Special:TemplateSandbox [18:09:11] CasperN- Someone should make a Gerrit change adding the translation, along the lines of what was done in https://gerrit.wikimedia.org/r/#/c/55252/ [18:09:14] http://meta.wikimedia.org/wiki/Lua_deployments/Localization_of_Module [18:09:16] To preview and test a converted template, try Special:TemplateSandbox on your wiki. With it, you can preview a page using sandboxed versions of templates and modules, allowing for easy testing before you make the new template live. [18:09:20] * yurik hid his IP [18:09:20] sumanah-conf: oh nice, that's new to me :) [18:09:37] Darkdadaah- It depends on how often that huge table is going to change, really. [18:10:01] I guess so. [18:10:23] brion- Yes, TemplateSandbox. https://www.mediawiki.org/wiki/Help:Extension:TemplateSandbox is the user help page (anyone, feel free to improve it!) [18:10:24] brion: that's one of the entry points into TemplateSandbox, btw. The other way is the new text entry at the bottom of a template editing page. [18:10:38] I strongly encourage everyone here to read https://blog.wikimedia.org/2013/03/11/lua-templates-faster-more-flexible-pages/ - it has a bunch of useful links to tools like TemplateSandbox, etc. [18:10:43] awesome [18:11:23] About sandbox: is it possible to use Templatesandbox when editing a module ? [18:11:34] * anomie thinks someone who actually knows about translation issues needs to be pointed at https://meta.wikimedia.org/wiki/Lua_deployments/Localization_of_Module, to make sure it's all good for merging [18:11:51] Darkdadaah: yup [18:12:10] anomie: mind pinging Niklas or Siebrand? [18:12:14] I think almost anything is better to replace the current template "code". Is there a plan to replace the large "common" templates? I'm thinking Template:Coord is a good example of taking huge amount of power. [18:12:20] Darkdadaah- Yes. At the bottom of the module page in edit mode, you should see a box labeled "Preview page with this template". Enter the page using the module that you want to check, and use "Show preview" [18:12:39] MikaelLindmark: I think Coord got converted already [18:12:42] sumanah-conf- I'll try to remember for after the session. [18:12:53] https://en.wikipedia.org/wiki/Module:Coordinates [18:13:05] Hi! [18:13:08] Just a question: [18:13:10] Is there a lua equivalent to the int: magic word that is used in Commons? https://meta.wikimedia.org/wiki/Help:Magic_words#Template_modifiers [18:13:12] I have not found an equivalent feature in mw.language [18:13:27] MikaelLindmark- It's mostly up to the community to upgrade their templates. I know on enwiki that many of the string templates have already been converted, and the various citation templates are in progress now. [18:14:06] MikaelLindmark: I think there's no central plan across all WM wikis [18:14:18] anomie: Would it be possible to set a default preview page associated with a module ? [18:14:32] Tpt_- Not at this time. I'll have to look at how {{int:}} manages to work without breaking the parser cache and see about adding it. Feel free to file a feature request bug in bugzilla if you're worried I'll forget. [18:14:53] anomie: I'm active on Swedish WP, so I'll start somewhere there. Learning while doing [18:15:11] So that we don't have to search for a test page and copy-paste it in the box every time. [18:15:12] Darkdadaah- For TemplateSandbox? It would be possible to add that feature to the code, but I'm not really sure how useful it would really be. [18:15:57] Thank you MikaelLindmark :) If you use pywikipedia, try https://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/parserfunctioncount.py parsercountfunction.py by Bináris, which helps you find wikitext templates that currently parse slowly and thus would be worth converting to Lua. Try fulfilling open requests for conversion on English Wikipedia, possibly using Anomie’s Greasemonkey script to help you see th [18:16:01] Darkdadaah- Unless it was a dedicated "test cases" page of some sort, it's not terribly likely that one page would be more useful than others [18:16:04] https://en.wikipedia.org/wiki/User:Anomie/PP-report-Greasemonkey-script [18:16:09] anomie: Thanks. An other question: is a library to manipulate dates (to/from ISO + getYear...) is planned? It will be useful for a lot of templates. [18:16:50] Tpt_- Manipulate them in what way? There's already the formatDate method of mw.language objects to format them. [18:16:50] sorry, I mis-copied-and-pasted there [18:17:03] anomie: Then it may be a good idea for contributors to give a test page in the code or the doc when writing the module. [18:17:10] MikaelLindmark: I meant to say, not "help out en.wp" but to suggest that you could port existing modules from en.wp to your wiki [18:17:11] sumanah-conf: I'll have a look! :) [18:17:18] https://en.wikipedia.org/wiki/Special:WhatLinksHere/Template:Lua_talk [18:17:31] those have already been converted to Lua and perhaps could be reused elsewhere [18:18:09] sumanah-conf: Is it possible to share modules between projects ? [18:18:45] For now, it would be great if there were a social custom of copying your local wiki’s Lua modules to Commons, to make it easier to share them with others. But I don’t think there will be a central code repository within the next few months, unless someone steps up to make one [18:18:45] Darkdadaah- That's something that's planned, along with sharing gadgets and possibly templates, but it's not formally on the roadmap for implementation. [18:19:05] sumanah-conf- Probably not Commons. If anywhere, I guess mediawiki.org. [18:19:17] Ok, thanks. [18:19:23] I've heard Commons doesn't want to become the "central repository" for anything besides images. [18:19:34] Ah, okay [18:19:36] Well, media in general. [18:19:48] I figured you meant that :) [18:21:25] anomie: Manipulate date-time using an object that allows to parse date from ISO and get/set its components as integer (year, month)... [18:21:27] by example: [18:21:29] local date = mw.date.newFromIso( '1924-10-02') [18:21:31] date.year = 1923 [18:21:32] date:toIso() --1923-10-02 [18:21:35] mw.language.formatDate(pattern, date) [18:22:13] btw I was wondering whether anyone had questions about the differences between our Lua & standard Lua https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Differences_from_standard_Lua [18:22:24] anomie, how does the software track which module is used in which page? [18:22:40] more specifically, is it dangerous to use conditional requires? [18:23:27] Tpt_- Lua has the os.time function, which will convert a table-of-date-info to a number, and the os.date function which will convert the number to the table-of-date-info or to other formats. Perhaps I should make the formatDate function be able to take the table-formatted date too. [18:23:29] sumanah-conf: I'm new to Lua so I just used the Mediawiki reference manual. [18:23:57] I think a lot of people are the same. [18:24:02] tgr- In the same way that template usage is tracked, by storing the information in the templatelinks table in the database. [18:24:25] tgr- As for conditional requires, it should be basically the same as conditional template transclusion. [18:24:38] sumanah-conf: Please, enlighten us (about the WP Lua vs standard Lua) [18:24:42] Darkdadaah: did you find the video https://www.youtube.com/watch?v=PrhzAtC8fCc useful? (I think qgil is working on moving it to Commons) That's the presentation several days ago in which people from the WMF and the Lua community gave an intro to Lua and explained how to use it on Wikimedia projects. [18:25:19] Darkdadaah- Have you found the reference manual useful? I tried to strike a good balance, not to make it overly complex while still being comprehensive. [18:25:30] MikaelLindmark: go ahead and check out https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Differences_from_standard_Lua , but basically, for security and a few other reasons, we've disallowed a few functions and packages [18:25:48] anomie: Yes, it has everything I need in one place. I like it. [18:25:52] :D [18:26:14] anomie: These methods does exactly what I want.. Thanks. :-) [18:26:22] sumanah-conf: I did now watch it... yet. [18:27:02] i really liked the reference manual, it does a much better job of introducing Lua than any Lua tutorial i found online [18:27:05] *not [18:27:45] By the way, when can we expect to have methods like split? [18:27:54] tgr- I can't claim all the credit for it, though. Most of the parts regarding standard Lua are adapted from http://www.lua.org/manual/5.1/index.html [18:28:11] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#mw.text.split ? [18:28:14] Darkdadaah- It depends on how long it takes someone to finally review the changeset. [18:29:11] And then up to about 3.5 weeks after that, depending on when exactly the change gets merged. See https://www.mediawiki.org/wiki/MediaWiki_1.21/Roadmap and https://www.mediawiki.org/wiki/MediaWiki_1.22/Roadmap for the release schedule. [18:29:12] I'll just wait then. I don't like writing workarounds. [18:30:07] anomie: Ok, thanks. [18:30:23] anomie: so, we're waiting for Victor or Tim, basically? [18:31:31] sumanah-conf- Others could review it too, e.g. Chad or Aaron. I think all of them are fairly busy with other stuff and haven't had time to look at it. [18:32:48] office hour? [18:32:58] Raylton: yes, Lua [18:33:04] sumanah-conf: Thanks for all the page links, very resourceful :-) [18:33:05] Raylton- Yes. Welcome to the Scribunto & Lua office hour session. [18:33:13] Another suggestion: when I preview a page with a module, the text box resets at the start, so I always have to scroll down. Is there a way to save the position of the view in the text box? [18:33:20] so pretty [18:33:31] We're just over halfway through the alloted time, although I don't know that anyone else has the channel scheduled after us. [18:33:32] i made a script [18:33:59] Darkdadaah- That would be a feature request for the CodeEditor extension. [18:34:12] Where can I do that? [18:34:22] Darkdadaah- https://bugzilla.wikimedia.org/ [18:34:27] btw Raylton it sounds like some people hadn't seen https://blog.wikimedia.org/2013/03/11/lua-templates-faster-more-flexible-pages/ which has a bunch of useful links for people interested in hacking on or with Lua [18:34:50] Darkdadaah- If you need someone to talk you through filing the request, I'll try after the office hours. [18:34:50] Darkdadaah: http://blog.wikimedia.org/2013/03/18/how-to-create-a-good-first-bug-report/ helps you see how to file that [18:35:28] :-) Thanks. [18:35:49] there is an equivalent to php array_search on the lua? [18:36:11] i search, but not find [18:36:17] Hmm I do not think anyway has said before yet can you tell me which version of Lua you are using 5.1 or 5,2? thanks [18:36:25] Raylton- No, but it should be easy to write one. Just iterate over the array with pairs() and return the key when the value matches. [18:36:28] -anyway +anyone [18:36:36] upvalue- Lua 5.1 [18:37:10] thanks anomie , any particular reason to use 5.1 over 5.2? [18:37:24] upvalue- At one point we were looking at using LuaJIT (which is also based on 5.1), but it turned out that plain Lua was plenty fast so we haven't really followed up on that. [18:38:10] anomie, yes ... I did, but I thought maybe there was a simpler way [18:38:20] About debugging: Is there a way to know where in the code the "recursiveClone" (for example) happens? [18:38:30] upvalue- Partially because of LuaJIT being based on 5.1, and partially I think because Lua 5.2 was just released when Scribunto development was started. [18:38:41] Yeah JIT supports quiet a bit of 5.2 but will not fully support it in the near future. Makes sense [18:38:54] by the way, everyone here can help (even if they aren't Lua programmers or template makers) by spreading the word about reference material http://www.mediawiki.org/wiki/Lua_scripting#Open_tasks [18:39:04] Raylton- Lua tends to be a bit minimal, if a feature is simple enough to just write it will often not bother to include it standard. [18:39:53] anomie: I guess it would be nice to explicitly mention our version of Lua in http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual [18:40:01] or in [[Lua scripting]] [18:41:08] sumanah-conf- I suppose it's implicit in "Some parts are derived from the Lua 5.1 reference manual" at the top. And it's mentioned at https://www.mediawiki.org/wiki/Extension:Scribunto. [18:41:08] anomie, fine [18:41:16] Raylton: this is one reason a friend said "I really wish I could use Lua .... with the Python standard libraries" :) python is "batteries included" and Lua's not [18:42:24] sumanah-conf- That reminds me of a joke about Emacs, that perhaps could apply to python too: "It includes everything, including two different kitchen sinks!" [18:42:24] btw, what happened with include()? it stopped working? [18:42:58] Raylton- include()? [18:43:00] sumanah-conf, really! [18:43:20] sumanah-conf: if your friend wants the batteries then just go get them :) [18:43:53] * sumanah-conf avoids getting into a Lua vs. Python library completeness discussion :) [18:44:07] sorry anomie require() [18:44:20] i mean require() [18:44:25] upvalue: have you been converting any wiki templates? have you had any triumphs or frustrations to share? [18:45:04] Raylton- require() should work fine. But note that each required module is loaded in its own sandboxed environment, so it can't export globals as is often done in Lua 5.1. Instead you have to use the Lua 5.2 model of returning a table containing everything you want to export. [18:45:22] at some point in the future it'd be cool to write up a case study -- people who converted templates and improved their performance or legibility massively across various wikis [18:45:39] sumanah-conf: It maybe a better question to ask when the last time I edited a wiki page was :) I have just been following the usage of Lua by wikimedia [18:46:15] * sumanah-conf makes encouraging noises [18:46:19] join us, upvalue [18:46:36] when last I checked (which was a while ago), require didnt work in the debugging console [18:46:44] we have stroopwafels [18:46:59] worked fine when the script was invoked, though [18:48:05] anomie, ok, i understand [18:48:44] By the way, I can't use the debugging console: mw.log() doesn't seem to work. I am doing something wrong ? [18:49:08] People who enjoy knowing what Wikimedia's doing on the tech side might enjoy our blog posts http://blog.wikimedia.org/c/technology/ , following @MediaWiki, coming to our meetup in SF http://www.meetup.com/Wikipedia-Engineering-Meetup/ , & joining https://lists.wikimedia.org/mailman/listinfo/wikitech-ambassadors [18:49:13] Darkdadaah, true [18:49:17] tgr- Seems to work fine to me [18:49:58] I can't use it on fr.wiktionary (didn't try elsewhere). [18:50:07] Darkdadaah- mw.log() in the console seems to work fine. I haven't tested it lately from inside a module, is that what you're doing? [18:50:25] anomie: yes, with preview. [18:51:05] Darkdadaah- Ah. Yeah, the log from during the page parse doesn't seem to end up anywhere visible. I should probably fix that, somehow. [18:52:47] I'm not sure how useful the console would be, I do fine without it now. [18:53:17] anomie, can give an example of mw.log () that works? [18:54:06] Raylton- Open the edit page for any module, find the "Debug console" near the bottom, and enter 'mw.log( "test" )' [18:54:15] sumanah-conf: I watched the talk last week and thanks for the twitter handle I will follow that for more info. [18:54:49] anomie: are there any plans to include some sort of unit test framework? [18:55:21] tgr- It's been mentioned, but I haven't had time to look into it yet [18:56:06] upvalue: cool! If you like videos, https://meta.wikimedia.org/wiki/File:Monthly_Metrics_Meeting_May_3,_2012.ogv Patrick Reilly spoke about the Lua scripting work in a presentation on 3 May 2012 (scroll to about 22:00 or 27:00 to see it) . And there's Tim Starling's tutorial video from May 2012 https://www.mediawiki.org/wiki/Lua_scripting/Tutorial https://commons.wikimedia.org/wiki/File:Berlin_Hackathon_2012_-_Lua_int [18:56:09] tgr- Enwiki has put something of the sort together on their own, BTW. https://en.wikipedia.org/wiki/Wikipedia:Lua_unit_testing [18:56:17] it would help interoperability between wikis because there seem to be quite a few frameworks around, would be nice to standardize on one [18:56:18] anomie, from a variable [18:56:43] I think there a Unit thingy of fr.wiki too. [18:56:49] there is* [18:57:20] anomie: Writing in the console works, but not when it is written in the code. [18:57:44] Raylton- From a variable? Just assign the variable, and then pass it to mw.log(). Note that the stringification of tables is not extremely useful, though; if you're wanting to inspect the deep structure of a table you might want to use a function like the one in https://en.wikipedia.org/wiki/Module:User:Anomie/deepToString [18:59:04] Darkdadaah- Works for me, when the function is run from the console. As I mentioned, log data from a page parse doesn't seem to end up anywhere. [18:59:57] anomie, its like php_dump,right? [19:00:12] Raylton- The function I linked to? Yes. [19:00:23] Although it doesn't indicate the data types, just the values. [19:00:48] Ah, ok. [19:00:57] Note: The office hours were supposed to be only an hour long, but anomie has offered to stay longer and continue to answer questions. [19:00:59] fine [19:02:41] anomie,how do I use it? [19:02:45] Thank you very much :) [19:02:52] Darkdadaah- You're welcome (: [19:02:59] I'm not sure [19:03:29] Raylton- Just call it. If you require that module something like p = require('Module:User:Anomie/deepToString'), you'd just call it as p.deepToString( variable ) [19:04:06] (It's not designed to be usable from #invoke, since you already know whatever string you'd be passing in.) [19:04:33] fiiiine [19:05:51] I did not know that [19:06:52] Arg, middle-click never works :/ [19:07:03] Another bug to file. [19:07:15] Darkdadaah- Another CodeEditor thing? [19:07:37] Yes. The linux middle-click copy doesn't work. [19:08:21] In the console also... [19:09:44] Ok, I can use the console now, thanks anomie. [19:09:51] Darkdadaah- You're welcome [19:10:01] anomie, couldn't recursive print be the default behavior for = on the console? [19:10:51] tgr- It's possible, yes. But right now the console is designed to mimic the behavior of the command-line Lua interpreter [19:12:41] anomie, so... I could then create a file called "Module: Common functions" and put cool functions like dump? [19:12:58] Raylton- You could do such a thing, yes. [19:14:54] anomie: Is there a way to know exactly where in the code the "recursiveClone" (for example) happens when loading a heavy page? [19:14:56] Sounds like a good idea to me, although perhaps we should try to encourage people to do that in a way that doesn't lead to terrible fragmentation across wikis [19:15:14] if possible [19:15:27] Darkdadaah- It happens for the #invoke, and for any require. [19:15:52] It could also happen if you call mw.clone() [19:16:07] And mw.loadData() ? [19:16:41] Darkdadaah- It will be used the first time mw.loadData is called for a module, but not for subsequent calls. [19:17:01] another question, there is a special reason for that syntax coloring is not applied in the css or js? [19:17:37] Raylton- I don't understand your question. [19:17:41] I'd like to have the syntax color and editor for js/css too, haha :-) [19:18:01] Is the question "why is CodeEditor not used for .js and .css pages?"? [19:18:13] yep [19:18:17] sorry [19:18:34] bad english [19:18:37] Mainly because it hasn't been fully tested and deployed yet. I think it's planned to be, eventually, but I have no idea when. [19:19:37] I guess we can't have too many templates in a page in the end, even with Lua. [19:19:59] anomie: I guess that's a question for Greg? [19:20:02] greg-g: ^ [19:20:12] anomie, ok. thanks [19:20:15] (re deploying CodeEditor) [19:20:56] Darkdadaah- All the old template limits are still there, although Lua can reduce the use of some of those limits. Especially where things like the max include depth was a problem. [19:21:24] when you say "reduce the use of some of those limits" you mean we won't hit them as often? [19:22:26] sumanah-conf- Yes. Since, for example, we won't be passing huge data values around to dozens of subtemplates, the "Template argument size" limit won't get used up so often. [19:23:27] And since we don't have to use lots of subtemplates to simulate loops, we're less likely to hit the "Highest expansion depth". [19:24:03] I have to go - lightning talks time here at the conference - but thanks for coming everyone and thanks to anomie for answering questions [19:24:35] please spread the word about http://blog.wikimedia.org/2013/03/18/how-to-create-a-good-first-bug-report/ on your wiki :-) it'll make andre__ happier ;-) [19:24:38] bye all [19:24:59] +1 [19:25:13] anyone know where I can see the utf8 module in the 'ustring' directory? I tried https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/core.git;a=tree but it is slower than Mr Slow McSlow and ustring is hiding :( [19:25:43] I already witnessed the improvement of Lua in a template-ridden page. We have a page so huge that it can't be loaded anymore. But with Lua templates, the page can load with 7 seconds of Lua computing... [19:25:59] upvalue- https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/extensions/Scribunto.git;a=tree;f=engines/LuaCommon/lualib/ustring;h=733ab5599d5558f183efa275fc82b1d6151023ca;hb=HEAD [19:26:15] ty [19:26:36] Darkdadaah- Awesome! Unless the Lua CPU limit is set to 7 seconds instead of 10. [19:27:03] Darkdadaah, me too [19:27:28] That is still way too much, but I'm already thinking of a way to merge all templates in one. [19:27:57] The latest test, for the same page, could be created in less than 0.5 seconds. [19:30:20] Darkdadaah, I managed to reduce many bytes with lua [19:31:14] Lua is great... [19:32:35] Well, if no one has any more questions, I'm going to take off. [19:32:45] I don't have any more questions, thank you. [19:32:59] Darkdadaah, see without lua https://pt.wikibooks.org/w/index.php?title=Predefini%C3%A7%C3%A3o:Lista_de_cap%C3%ADtulos/Anterior&action=edit , http://pt.wikibooks.org/w/index.php?title=Predefini%C3%A7%C3%A3o:Lista_de_cap%C3%ADtulos/Posterior&action=edit [19:33:37] Darkdadaah and with lua:https://pt.wikibooks.org/wiki/Module:Nav [19:33:41] Thanks for coming, everyone! [19:34:11] Raylton: How much faster is it? [19:34:48] without lua? [19:34:52] ==== Ending public logging now ==== [19:34:57] Thank you all :) [19:35:04] thanks [19:35:07] Thanks! [19:35:14] Thanks [19:35:24] Raylton: why global functions? [19:36:05] Raylton: without Lua vs with Lua [19:36:48] upvalue, sorry i don't understand [19:38:39] Darkdadaah, moonless is good because it gets to be quadratic time [19:39:01] Raylton: Lua uses global by default lexical scoping, 'core', 'getChapterFromLine' and 'getListOfChaptersFromText' are global functions and therfore require global lookups. Also things like 'title' is that meant to be global? [19:39:08] sorry, moonless = without lua [19:39:30] Ah 'kay. [19:40:09] I have to go, bye everyone. [19:41:18] upvalue, because it was in another file [19:42:52] Raylton: what about 'list','page' and r_position in p.nav? pocessList? there seems to be many many globals. are you new to Lua? [19:43:43] upvalue, yes,of course [19:44:35] I appreciate if you help me to improve [19:44:39] Raylton: I see. You need to be careful about polluting _G, basically use local unless you have a reason not to [19:44:47] http://lua-users.org/wiki/ScopeTutorial [19:46:15] It also costs to call Globals using Lua 5.1 and is much faster to call a local or upvalue [19:47:52] upvalue, ok... i'll try it [19:47:59] take a minute [19:51:54] Before I go I may as well pimp the twitter account. For news, announcements etc about Lua, follow @LuaLang [20:07:18] lua