<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wikidot="http://www.wikidot.com/rss-namespace">

	<channel>
		<title>Kojo-Dev (new posts)</title>
		<link>http://kogics.wikidot.com/forum/c-110283/kojo-dev</link>
		<description>Posts in the forum category &quot;Kojo-Dev&quot; - Discuss Ideas/Issues related to understanding, extending, and/or fixing issues with the Kojo Environment. This involves working with the Kojo (Scala/Netbeans-Platform based) source code.</description>
				<copyright></copyright>
		<lastBuildDate>Wed, 15 Apr 2026 13:22:53 +0000</lastBuildDate>
		
					<item>
				<guid>http://kogics.wikidot.com/forum/t-985853#post-4399683</guid>
				<title>advantages over python/kivy?: Re: advantages over python/kivy?</title>
				<link>http://kogics.wikidot.com/forum/t-985853/advantages-over-python-kivy#post-4399683</link>
				<description></description>
				<pubDate>Wed, 16 Oct 2019 06:34:14 +0000</pubDate>
				<wikidot:authorName>Bjorn Regnell</wikidot:authorName>				<wikidot:authorUserId>1972470</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I have been teaching programming to beginners for many years using Scala both with kids of various ages and with beginner adults at university level. I have also also seen Python in action in teaching to some extent and here are some issues with Python that forms my rationale for choosing Scala over Python:</p> <ul> <li>Dynamic typing means less help in finding bugs; risk of lower ambition</li> <li>No ''typing dialog'' with a compiler means less conceptual learning</li> <li>Non-explicit types in function defs is less efficient when learning abstract thinking</li> <li>Indentation syntax with silent begin-end can make nested blocks obscure to beginners</li> <li>No explicit variable declaration can lead to very hard bugs also for non-beginners</li> <li>Refactoring is more risky, hence discouraging -&gt; bad for step-wise problem solving</li> <li>Not excellent at object orientation</li> <li>Not excellent at functional programming</li> </ul> <p>I have no systematic empiricism behind the above hypotheses but I have some anecdotal evidence that suggest that the above list might be important to address when considering Python.</p> <p>//Bjorn</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-985853#post-4399612</guid>
				<title>advantages over python/kivy?: Re: advantages over python/kivy?</title>
				<link>http://kogics.wikidot.com/forum/t-985853/advantages-over-python-kivy#post-4399612</link>
				<description></description>
				<pubDate>Wed, 16 Oct 2019 04:55:40 +0000</pubDate>
				<wikidot:authorName>irvinborder</wikidot:authorName>				<wikidot:authorUserId>5732751</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I am not a <a href="http://net-informations.com/python/default.htm">Python</a> person, but from what I have learnt from experimenting with both the GUI frameworks, Kivy seems to be a better one. Tkinter is quite old and based on Tcl/Tk, which itself is ancient. Newer UI frameworks need to be versatile, theme oriented and easily customizable. Also, more importantly they should support development for the mobile platforms as well, which I believe, Kivy does.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-3672410#post-3598224</guid>
				<title>geogebra with kojo: Thanks to Lalit</title>
				<link>http://kogics.wikidot.com/forum/t-3672410/geogebra-with-kojo#post-3598224</link>
				<description></description>
				<pubDate>Wed, 20 Sep 2017 17:21:57 +0000</pubDate>
				<wikidot:authorName>lotol</wikidot:authorName>				<wikidot:authorUserId>3351042</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>You need to reply for the previous post.</p> <p>I am impressed by your project. I would wish Kojo to be used in every school.</p> <p>Thanks to Lalit.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-3672410#post-3598104</guid>
				<title>geogebra with kojo: </title>
				<link>http://kogics.wikidot.com/forum/t-3672410/geogebra-with-kojo#post-3598104</link>
				<description></description>
				<pubDate>Wed, 20 Sep 2017 14:34:24 +0000</pubDate>
				<wikidot:authorName>weonkyoung yu</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Thank you for your prompt reply.</p> <p>I have another question.</p> <p>I am a math teacher in senior high school. In Kojo, Would it be possible to script number theory, mathematical modeling and so on?</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-3672410#post-3598063</guid>
				<title>geogebra with kojo: Re: geogebra with kojo</title>
				<link>http://kogics.wikidot.com/forum/t-3672410/geogebra-with-kojo#post-3598063</link>
				<description></description>
				<pubDate>Wed, 20 Sep 2017 13:36:13 +0000</pubDate>
				<wikidot:authorName>lalitp</wikidot:authorName>				<wikidot:authorUserId>66813</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Yes, you can programatically control geogebra from Kojo via scala scripts. The bridge is the Mw object in Kojo.</p> <p>For example, try this script:</p> <blockquote> <p>Mw.clear()<br /> Mw.hideAlgebraView()<br /> Mw.showAxes()<br /> Mw.variable(&quot;m&quot;, 1, -5, 5, 0.1, 50, 50)<br /> Mw.variable(&quot;c&quot;, 0, -2, 2, 0.1, 50, 80)<br /> Mw.evaluate(&quot;y = m x + c&quot;)</p> </blockquote> <p>To see more examples, look (in the script editor) at the scripts for <em>Help -&gt; Kojo Overview</em> and <em>Samples -&gt; Math Learning Modules -&gt; Solving Linear Equations</em> (run these scripts, and then search for Mw. in the script editor)</p> <p>Code completion on the Mw object (type Mw. and then Ctrl+Space) will show you what's available for geogebra interaction.</p> <p>Or you can look at the Mathworld class (of which the above Mw is an instance) to see what's inside in more detail:<br /> <a href="https://github.com/litan/kojo/blob/master/src/main/scala/net/kogics/kojo/mathworld/MathWorld.scala">https://github.com/litan/kojo/blob/master/src/main/scala/net/kogics/kojo/mathworld/MathWorld.scala</a></p> <p>Hope that helps. Feel free to ask more questions.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-3672410#post-3598031</guid>
				<title>geogebra with kojo: geogebra with kojo</title>
				<link>http://kogics.wikidot.com/forum/t-3672410/geogebra-with-kojo#post-3598031</link>
				<description></description>
				<pubDate>Wed, 20 Sep 2017 12:21:58 +0000</pubDate>
				<wikidot:authorName>weonkyoung Yu</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>In gegogebra, constructions and computations can be done using input filed command, ggbscript and javascript.<br /> Can I do the same thing with kojo script</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-1038955#post-2130741</guid>
				<title>animation with images: </title>
				<link>http://kogics.wikidot.com/forum/t-1038955/animation-with-images#post-2130741</link>
				<description></description>
				<pubDate>Mon, 13 Oct 2014 15:09:04 +0000</pubDate>
				<wikidot:authorName>lalitp</wikidot:authorName>				<wikidot:authorUserId>66813</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>The general strategy for doing Picture based animation is:</p> <ul> <li>clear the screen.</li> <li>create your pictures.</li> <li>draw your pictures (a picture can only be drawn once).</li> <li>animate some of your pictures in an animation loop. This involves: <ul> <li>transforming drawn pictures.</li> <li>erasing drawn pictures and creating/drawing new ones.</li> <li>wiping all pictures and creating/drawing new ones.</li> </ul> </li> </ul> <p>Here's some code showing this in action:</p> <div class="code"> <pre><code>// you dont need to use Staging with Pictures cleari() val im = PicShape.image(Costume.car) val line = PicShape.hline(100) // val background = ... draw(im, line) // draw(background) val ang = 1 var totalAngle: Int = _ var angLabel: Picture = _ onAnimationStart { // initialize vars here totalAngle = ang angLabel = trans(120, 0) -&gt; PicShape.text(totalAngle, 15) draw(angLabel) } animate { im.rotate(ang) line.rotate(ang) angLabel.erase() totalAngle += ang angLabel = trans(120, 0) -&gt; PicShape.text(totalAngle, 15) draw(angLabel) // let the background be }</code></pre></div> <p>Hope that points you in the right direction. Feel free to ask questions about any further problems you run into (and feel free to post your canon animation code to get further help. You can email me the image files at pant dot lalit at gmail dot com).</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-1038955#post-2130558</guid>
				<title>animation with images: </title>
				<link>http://kogics.wikidot.com/forum/t-1038955/animation-with-images#post-2130558</link>
				<description></description>
				<pubDate>Mon, 13 Oct 2014 10:06:00 +0000</pubDate>
				<wikidot:authorName>lexand</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>uups</p> <p>thanks ;)</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-1038955#post-2130557</guid>
				<title>animation with images: animation with images</title>
				<link>http://kogics.wikidot.com/forum/t-1038955/animation-with-images#post-2130557</link>
				<description></description>
				<pubDate>Mon, 13 Oct 2014 10:04:11 +0000</pubDate>
				<wikidot:authorName>lexand</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Salutations</p> <p>we need some help&#8230;</p> <p>We want in teaching purposes write small games with two cannons. The main problem now is how to do correct animation with loaded images ?<br /> We want that children draw two cannons and background. Than we scan this pictures, extract background and canons and put in into Kojo scene.<br /> So the problems:<br /> 1. every drawn image overlaps the image we want to draw at runtime (example below)<br /> 2. we have original canon image that is paralel to X axis, and we want to rotate it in absoulte manner like &quot;rot(13) -&gt; im&quot;, but not in reference manner like in example below.<br /> 3. how correctly we should draw the scene (possibly using picture stack)<br /> - draw background<br /> - above background should place two cannons<br /> - than print wind/gravity/velocity/other data</p> <div class="code"> <pre><code>import Staging._ import Staging.{animate, wipe} cleari val im = PicShape.image(&quot;/home/alex/circle.png&quot;) // small picture about 60x60 pixels val ang=1; animate{ wipe im.rotate(ang).realDraw() line(0,0,200,200) }</code></pre></div> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-1032676#post-2120514</guid>
				<title>can I use Kojo like an sbt console?: Re: can I use Kojo like an sbt console?</title>
				<link>http://kogics.wikidot.com/forum/t-1032676/can-i-use-kojo-like-an-sbt-console#post-2120514</link>
				<description></description>
				<pubDate>Sun, 28 Sep 2014 17:59:58 +0000</pubDate>
				<wikidot:authorName>lalitp</wikidot:authorName>				<wikidot:authorUserId>66813</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>This might take a little work the first time around, but should be very doable. The basic idea would be to:</p> <ul> <li>go into an exercise directory, and start up Kojo with a shell script that sets KOJO_CLASSPATH to the appropriate jars before launching Kojo (or copy/link the required jars inside the ~/.kojo/lite/libk folder, but that would be global, not project specific).</li> <li>use the //#include feature in the script editor to pull in exercise code.</li> </ul> <p>I hope that points you in the right direction. Feel free to ask questions about any problems that you encounter while trying this.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-1032676#post-2120345</guid>
				<title>can I use Kojo like an sbt console?: can I use Kojo like an sbt console?</title>
				<link>http://kogics.wikidot.com/forum/t-1032676/can-i-use-kojo-like-an-sbt-console#post-2120345</link>
				<description></description>
				<pubDate>Sun, 28 Sep 2014 14:14:11 +0000</pubDate>
				<wikidot:authorName>anthony</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>I have just started working through the new Coursera course on Scala, and thought it would be fun and bring Kojo some publicity to show how Kojo can be used as a nice IDE etc. for adults and kids alike. The course exercises are in the form of sbt project templates. Can they be 'imported' into Kojo in a similar way as to how you would import into eclipse, for example?</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-985853#post-2090502</guid>
				<title>advantages over python/kivy?: </title>
				<link>http://kogics.wikidot.com/forum/t-985853/advantages-over-python-kivy#post-2090502</link>
				<description></description>
				<pubDate>Sun, 17 Aug 2014 02:14:09 +0000</pubDate>
				<wikidot:authorName>lalitp</wikidot:authorName>				<wikidot:authorUserId>66813</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>You are welcome, Ash. And thanks.</p> <p>Do let us know what environment you finally choose for your teaching needs!</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-985853#post-2090345</guid>
				<title>advantages over python/kivy?: </title>
				<link>http://kogics.wikidot.com/forum/t-985853/advantages-over-python-kivy#post-2090345</link>
				<description></description>
				<pubDate>Sat, 16 Aug 2014 18:54:37 +0000</pubDate>
				<wikidot:authorName>Ash</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Yes it does, thank you for that detailed feedback and all the best :)</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-985853#post-2090327</guid>
				<title>advantages over python/kivy?: </title>
				<link>http://kogics.wikidot.com/forum/t-985853/advantages-over-python-kivy#post-2090327</link>
				<description></description>
				<pubDate>Sat, 16 Aug 2014 18:21:57 +0000</pubDate>
				<wikidot:authorName>lalitp</wikidot:authorName>				<wikidot:authorUserId>66813</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Hi Ash,</p> <p>You're right, the answer to why Scala doesn't quite shine through on that page (although it's hidden in there ;)). In any case let me jot down some points here:</p> <p>Scala<br /> - Is very easy to get going with<br /> - Has great support for imperitive programming<br /> - Has great support for functional programming<br /> - Has great support for object oriented programming<br /> - Has great support for concurrent and parallel programming<br /> - Has a deep set of in-built data structures and algorithms<br /> - Has access to everything written in Java<br /> - Runs on a fast/robust VM</p> <p>All of this makes it easy for kids to get going with programming, and provides them a very well thought out path for exploring (over many years) many different facets of programming.</p> <p>I'm way more familiar with the Java ecosystem than with the world of Python, so an easy to use and powerful language on the JVM (i.e. Scala) was kinda the natural way for me to go. If I had to do it again, I would make the same choice. Why? Because in the end, the thing that matters (much more than the technology that you use) is what you do with that technology. The only thing you need to be careful about is that your choice of technology should not place aritificial restrictions on whatever you are trying to accomplish. With Scala/JVM, I'm very confident that I'll be well supported (by my technology choice) across a very deep/wide range of potential uses.</p> <p>Hope that helps&#8230;</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-985853#post-2090213</guid>
				<title>advantages over python/kivy?: </title>
				<link>http://kogics.wikidot.com/forum/t-985853/advantages-over-python-kivy#post-2090213</link>
				<description></description>
				<pubDate>Sat, 16 Aug 2014 13:48:29 +0000</pubDate>
				<wikidot:authorName>Ash</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Hi Lalit, thank you for your prompt response. I went to the link and indeed it does throw light on why Kojo, but my question is not why Kojo. My question is why Scala. I am sorry I may have mis-communicated before and I hope my query is clearer now.</p> <p>The only relevant text I found on the link you gave, in terms of a possible response to my query, was this: &quot;The programming language used within Kojo (Scala) commands some of the highest salaries in the software engineering profession around the world. So all the work that kids put into Kojo has very practical benefits, in addition to all the rich learning benefits.&quot; The kids i have to teach are at a age where they dont really care about salaries or profession (meaning they are too young for that). May I please know if there is any other reason for your choice of Scala? I am especially interested in knowing advantages vis-a-vis some similar tool that could be Python+Kivy based.</p> <p>In other words if Kojo were to be redeveloped from scratch would you still choose Scala or would you rather use Python and Kivy. I am aware that in software development often the choices have been made for some historical reasons and we get stuck with them, because at that time it seemed like a good idea given what else was available back then. Therefore I am not criticising your choice of Scala, but merely trying to evaluate for myself whether it would make sense to start from scratch. I am not wedded to Scala or Python or any other language for that matter. However, I heard from random people that the new developments with kivy tilt the balance in favour of Python and because I dont know either, I am checking with (Scala experts like) you whether it would be worth anybody's while putting in 3-4 months reinventing the wheel. Do you feel the new Kojo look alike built on Python/Kivy be a mere cosmetic facelift? This is what I am trying to get at. Hopefully you can give me an opinion with some technical justification (such as what features of Scala were really helpful, but are absent or awkward in Python/Kivy while developing this kind of amazing tool that you have created).</p> <p>Thanks, and yes once again, congrats on doing a great job helping children, and enhancing the reputation of Indian software developers :) Cheers!</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-985853#post-2089403</guid>
				<title>advantages over python/kivy?: Re: advantages over python/kivy?</title>
				<link>http://kogics.wikidot.com/forum/t-985853/advantages-over-python-kivy#post-2089403</link>
				<description></description>
				<pubDate>Fri, 15 Aug 2014 13:17:29 +0000</pubDate>
				<wikidot:authorName>lalitp</wikidot:authorName>				<wikidot:authorUserId>66813</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>The tools that you mention are all excellent in their own ways. So you really need to do your own evaluation to figure out what works best for you, given what you are trying to achieve.</p> <p>As far as the question <em>why Kojo (using Scala/JVM)?</em> is concerned, here's something I wrote up last year:<br /> <a href="http://wiki.kogics.net/kojo-faq">http://wiki.kogics.net/kojo-faq</a></p> <p>Feel free to ask more questions if that link does not quite answer your questions about Kojo.</p> <p>(I need to go and revise that page based on all the water that has flown under the bridge over the past sixteen months, but the current content in there is a fair reflection of the ideas behind Kojo).</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-985853#post-2089281</guid>
				<title>advantages over python/kivy?: advantages over python/kivy?</title>
				<link>http://kogics.wikidot.com/forum/t-985853/advantages-over-python-kivy#post-2089281</link>
				<description></description>
				<pubDate>Fri, 15 Aug 2014 08:10:28 +0000</pubDate>
				<wikidot:authorName>Ash</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Hello! First of all heartfelt congratulations! I am intrigued by your choice of language Scala for developing Kojo, even though your profile clarifies your familiarity with Python. I am new to this field of teaching computing to kids, and have been evaluating various alternatives. It will be nice if you could clarify the tradeoff in using Kojo vs Scratch (MIT), Snap (UC Berkeley), Looking Glass (WUSTL), Greenfoot (Kent, UK) and any other similar tool you care to distinguish Kojo with, all at one place My (perhaps erroneous) understanding is that pure visual programming aids have limited features you wanted to expand on, whereas more flexible tools were Java based and are difficult for kids to pick up. If so, why not develop something similar based on Python which is already being used worldwide for teaching coding to kids, in conjunction with flexible (e.g cross platform) &amp; relatively easy (for graphics, gaming) Kivy package? Is that choice is just for historical reasons (kivy is new)?</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-856986#post-2030090</guid>
				<title>Localization: Re: Localization</title>
				<link>http://kogics.wikidot.com/forum/t-856986/localization#post-2030090</link>
				<description></description>
				<pubDate>Sun, 11 May 2014 13:16:46 +0000</pubDate>
				<wikidot:authorName>lalitp</wikidot:authorName>				<wikidot:authorUserId>66813</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>These parts currently come from stuff outside Kojo &#8212; the Java runtime (JOptionPane) in the Yes/No case and RSyntaxText area in the Undo/Folding case. For example, you will see Yes/No localized in Swedish, and Undo/Folding localized in Polish.</p> <p>This is fixable with some work, of course, but the extra effort required to do this has not yet been put in.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-856986#post-2030089</guid>
				<title>Localization: Re: Localization</title>
				<link>http://kogics.wikidot.com/forum/t-856986/localization#post-2030089</link>
				<description></description>
				<pubDate>Sun, 11 May 2014 13:09:52 +0000</pubDate>
				<wikidot:authorName>lalitp</wikidot:authorName>				<wikidot:authorUserId>66813</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>The current thinking has been to translate a subset of the Kojo API &#8212; to get kids going with Kojo in their native language. Translators have created their own documentation around their translated API (e.g Swedish &#8212; <a href="http://cs.lth.se/english/contact/regnell-bjoern/laer-dig-programmera/">http://cs.lth.se/english/contact/regnell-bjoern/laer-dig-programmera/</a>). Beyond a certain level, kids transition to using the default English API.</p> <p>Translating stuff in the resources/samples directory (as I understand your idea) would require the prior translation of a much larger chunk of the Kojo API. Translators have not felt the need to attempt this yet.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://kogics.wikidot.com/forum/t-856986#post-2030048</guid>
				<title>Localization: Re: Localization</title>
				<link>http://kogics.wikidot.com/forum/t-856986/localization#post-2030048</link>
				<description></description>
				<pubDate>Sun, 11 May 2014 11:29:55 +0000</pubDate>
				<wikidot:authorName>Eric Zoerner</wikidot:authorName>				<wikidot:authorUserId>1878148</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>There seems to be some parts of the UI that don't get localized. One example is the &quot;Yes&quot; and &quot;No&quot; options in the dialog where you confirm whether to discard changes in the editor before closing. Another example is &quot;Undo&quot; and the &quot;Folding&quot; options in the editor popup menu.</p> 
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>