So I did say that my last post (nearly a year ago btw) would be my last. However, over time I’ve actually missed doing these posts. I don’t really use social media much and the newsletter is helpful but doesn’t always allow me to get everything across. So here is my first update in nearly a year, and a lot has happened.
I want to let you know about a few HUGE updates I am really delighted with that I have put out over the last few weeks and the one I am putting out this week. I have been working on these for some time so I hope you like these.
Quick List of Updates
If you don’t want to read the additional detail, here is a list of most of the important updates.
- Biggest update! Now support several new libraries including – TKinter support, MatPlotLib and Numpy. This joins the pyGame library added earlier in the year. More on this below!
- Upgraded assignment management, easy to arrange and order and you can now mark assignments as assessments. This highlights them for now but is the first step in building out a better system for assessments overall.
- You can easily view projects in an assignment and open solutions and the project in the editor directly from the class assignment screen.
- Added all of the Time2Code projects and assignments. I’ll be working through these to tidy them up over time.
- Added diff to the tests and cleaned the testing containers up to give students better way to see test outcomes and make mistakes clearer to see. They can now switch between diff and raw view to help find errors.
- Can also now get clearer test results from includes and regex tests making it easier to spot where errors are here as well.
- Upgraded the marking screen to allow sidebars to be moved and give more space for testing and outputs or code. Should make this screen a little better to use. I plan a bigger update to this later in the year.
- Updated the look of the the gradebook to make it clearer and easier to use as well as allowed two different views (mark view and completed view – try it out!)
- In project creation and editing the test bar can now be slid out making it easier to view the tests when you are working on them.
- Added new statistics options pulling from data already available to give quick overviews of performance, students needing support and students performing well.
- New accessibility option for students giving more options for viewing the site. More to come here.
- Fixed issue where highlighting text in editor wouldn’t show the highlight in darker modes (this made my students the most happy and is singlehandedly the most popular update in my classes!)
- Some general improvements to AI and layout.
About the new modules
For those that want a little more technical detail, the site uses a special interpreter called Skulpt to convert python code into Javascript. This is how the editor works. It has the advantage of being very quick to run and runs entirely through the browser. Lots of sites use a similar technique to run Python through the browser in the way Go Code It does, especially where interactivity is important as well as security.
The disadvantage of running Python in this way is support for standard modules is patchy. This is true for any site using Skulpt to run programs.
There is no official library for tkinter, pygame, matplotlib or numpy. Some incredible people have, over the years, created minimum versions of these libraries to attempt to bring support for these into Skulpt.
tkinter especially is difficult to support as it really taps into the OS GUI and of course this doesnt exist in a browser window so all of this needs to be built through the browser itself.
This means that although these libraries are available, they usually include a subset of the features available in the full library. This is to be expected as some features are simply too difficult to support directly in this way. They can be offered in other ways, often server driven, but in this lightweight version it isn’t viable.
For this reason you will find that these libraries don’t feature all aspects of the libraries that you might expect in the full version. This is the same as you will find in any online site using the same platform. They may not say it out loud, but they are always a subset.
For Go Code It, I have used these already written libraries (credited and linked below) as the starting point to add these to the site and then extended them to add features that the original author didn’t include. For this reason you should find these libraries are more feature rich than may be found elsewhere but they are still a subset of what might be available. This is true for any site offering these libraries through their site via Skulpt.
When learning the basics, students won’t notice the difference. The libraries are pretty feature rich and flexible as they stand and your students will have fun with them. However, with Go Code It I never set out to produce a desktop replacement ide via the cloud. There are many sites out there where the focus is that and they do it very well.
The philosophy continues to be to provide tools that students and teachers need to learn and have fun, and with these new modules supported I hope this is delivering what you need.
Credits
Tkinter Module
This is the original base code for the extended version of tkinter that is used in Go Code It. Lots of heavy lifting was already done here and a few tweaks allowed this to be extended further.
Here is a copy of my updated version for anyone who wants to see how this was developed further. Grygoriy Gromko provided the original under the GNU public license but the author at the top of the init file is credited as Pete Dring, (pddring (Pete Dring). This is provided to honour the original license and author:
gocodeit.online/shared/tkinter.js
Pygame Module
Petlja/pygame4skulpt: Partial Pygame port to the Skulpt implementation of Python
Here is the original pygame code which offered an exceptional foundation for further development. There is still a lot of work to do on this library as there is with Tkinter but I added a number of functions to this library that was not included in the original which makes this quite a feature rich, if not fully complete version. Certainly great for students to use to get to grips with. I may come back later and add more if I find time.
Here is a copy of my updated version for anyone who wants to see how this was developed further. Petlja provided the original under the GNU lesser general public license. This is provided to honour the original license and author:
gocodeit.online/shared/pygame.js
MatPlotLib
ebertmi/skulpt_matplotlib: Partial matplotlib pyplot implementation for skulpt
Here is a link to the original MatPlotLib for Skulpt as provided by Michael Ebert. This is quite a minimal implementation and I have extended this library a little to support a few more graph type. This allows some basic functionality and should be enough for students to create some interesting outputs for their projects.
Numpy
ebertmi/skulpt_numpy: Partial numpy implementation for skulpt
Another great little implementation of a useful library, here is a link to the original Numpy for Skulpt provided by Michael Ebert. Really helpful as a base I have extended this a small amount but it works mostly as is for the needs of the site.
Final Comments
We couldn’t really progress without the work of some amazing people that have come before us. I hope you get a lot of utility out of the additional developed modules. However, without the work of the people above and their commitment to sharing their work I don’t think I would have been able to complete these additional modules in the few months that it actually took to complete all of this work.
So thanks to you all.
Leave a Reply