16 Ağustos 2016 Salı

Daily Update 20

I haven't coded any big features in the last few days, mostly done small edits in the code preparing for the final submission and a couple of bug-fixes relating to the GUI. With the graphical user interface complete, I think pretty much all features I proposed in the original plan are completed. Of course, there are a lot of things that could be further developed and ideas that could be implemented in the future, but I don't want to implement anything too new in the last week of GSoC.

Since there aren't any serious programming tasks left, I'll spend the last week editing my code and also writing about GIFScript. Maybe I'll post some more examples and also some excerpts from the tool's features to demonstrate its capabilities. I'll also communicate with my mentor to make sure everything's alright with the submission.

8 Ağustos 2016 Pazartesi

Daily Update 19

Today I made some tweaks on the GUI, relating to error reporting and some convenience features, like line numbering. Syntax highlighting is now performed asynchronously, presumably making the interface more responsive, though GIFScript files are usually short. I started working on parenthesis matching, which might be a useful addition. Also made some minor tweaks related to the module loader. I'm happy with the basic editor, and the overall project seems to be slowly wrapping up.

I tried to push my recent code to GitHub towards the end of the day, but unfortunately Eclipse refused to submit. I'll check on the fix later, I think it might be related to a recent OS upgrade.

1 Ağustos 2016 Pazartesi

Daily Update 18

I haven't posted any updates lately, but I kept working on the GUI implementation as planned. The interface is quite straightforward, but a few unique features exist to help describing GIFs. One point I spent time on was creating a syntax-highlighted editor, which I used RichTextFX, a JavaFX based implementation of a flexible styled editor. Following the documentation and examples, it was easy to get decent results for JavaScript, but I might spend more time for code constructs specific to GIFScript.

Another problematic point was providing quick previews of the GIFs generated from the scripts. The current command line tool only reports the product once the whole frame rendering and compression steps are complete, a lengthy process as I mentioned earlier. I came up with a possible solution using Java runtime class loaders from my earlier work, but I'll have to work on it this week to actually get it working with multithreading.

I also worked a bit on some security features, to forbid any script run by the program from writing to files, since a normal script should only need read permissions.

I'm slightly behind my schedule since I was supposed to complete the GUI last week. But I don't think it will be problematic since the workload of the last weeks is much less.

18 Temmuz 2016 Pazartesi

Daily Update 17

Today I went through some JavaFX resources to refamiliarize myself with it. I'll be working on creating the interface for easing the scripting process this week, so I also did some planning on which features to implement. I didn't code any GUI today, I have things to complete left from last week. I worked on the GIF "streaming" feature I mentioned last time. I also made some small changes to the command line tool to make its usage more standard.

13 Temmuz 2016 Çarşamba

Daily Update 16

Lately, I've been compiling a few modules of my own for producing more complex GIFs. I have my modules for animating 2D plane geometry and chess moves more or less complete. I'm also working on a way to preview animations without spending time on encoding.

Next week, I'll be working on a basic IDE-style GUI for GIFScript, with editing and preview support. In preparation for that, I'm working on a detail I couldn't anticipate while I was writing my proposal. The problem is that it still takes time to fully encode a GIF, long enough to make it cumbersome to "re-run" a script each time the user wants to test a small visual change. To solve this issue, I've decided to implement a preview mode in the core tool, which only produces frames in sequence without encoding them into compressed GIFs, which would allow fast previewing from the GUI.

8 Temmuz 2016 Cuma

Daily Update 15

The last few days being "bayram" in my country, I missed blogging.

I worked on minor improvements and bug fixes this week. Implemented a lot of small details which should make GIFScript more self-consistent and easier to learn. Lately I've discovered that continuously transforming a subtracted area resulted in ugly looking glitches, possibly due to floating point errors combined with low resolution rasterization. I haven't come up with a perfect solution yet, but some small changes improved the glitchy behaviour.

Since I don't have much programming load this week, I'm also spending time on the to-be-published documentation. The guide isn't ready as many things can change, but just trying to write down the details inspired a lot of improvements in GIFScript to smoothen its usage.

4 Temmuz 2016 Pazartesi

Daily Update 14

This week is allocated for refactoring and bug fixes, so I won't be working on any new features in particular. Today I spent time on some parts of the code which seemed unnecessarily complicated and did some refactoring. I decided to divide some of my larger classes into more meaningful subunits. As always, I also did some testing. In particular, I attempted to make a module out of a opensource DSP library I found online, which could produce nice animations in the context of DSP.