Week 3 of GSoC is done! 😎🤠

The last two weeks were packed with lots of learning, programming, and of course debugging (including what is possibly the most embarassing programming mistake of my life 😅1).

I am also happy to announce that I will be attending JuliaCon 2018! This will take place during Aug. 7–11, 2018 at University College London. For a student like me, this shall be a great opportunity for learning from the best minds, seeing what else is possible with Julia, and networking. Also, it would be great to visit London 😉.

The following is a short progress report of the past two weeks’ work.

Finished

  • documentation of function signatures from Plots.jl.
  • documentation of the argiment conversion functions in argument_conversion.jl.
  • further extension of the help functions, help, help_arguments, and help_attributes to be more detailed and robust, and to handle more input types.
  • extension of the help functions to print to a specified io stream (if unspecified -> STDOUT). This is useful to redirect the output to a file, for example (see later).
    • external help function prints as Markdown-parsed text
    • internal _help function prints plaintext
  • implement find_indices and example_database functions which accept input_tags as the input and has optional keyword arguments author and title to further filter the results.
    • find_indices searches the example database for examples matching the input tags, and returns the indices.
    • example_database returns the entries associated with the input tags and prints the source to the REPL by overloading Base.show on the CellEntry type.
  • rewrite docstrings for plotting atomics functions
  • automatically generate an overview Docs page of all plotting atomics functions in Makie.jl including their function signatures and attributes
  • automatically generate an Docs page (examples gallery) of all examples sorted and cross-referenced by tag, including example code and generated plots (plots currently not working—see TODOs section).
    • implement an internal _print_source function that prints the source code of the plot example, including specifying the code flavor in a fenced block (e.g. “```julia”)
  • pushed commits related to the above, fb0f166, 9d2218e, e01b10d, 6c47286, a453cf7, 1fd65fa, 9d5e7e9, 223e5b6, 888479d, 31f482a, 57d8505, 62159ef, and 5cf47ad. For more commits, please see the aw/documentation branch.
  • one merged pull request for refactoring (PR #89)
  • met with mentor five times in total (including yesterday).

TODOs

Some of next week’s TODOs are:

  • go through the plot examples in the examples database and test them; fix the non-functioning ones
  • automatically generate a detailed Docs page of all plotting atomics functions, including plot examples and the source code for the plots
    • the source code embedding is working, but plotting is not working yet due to non-functioning backend. This should hopefully be resolved soon.
  • using Documenter.jl’s Selectors.matcher and Selectors.runner to match and select specific plot examples from the examples database (for example by matching the specific example’s title).

Difficulties encountered

  • misunderstandings due to incorrect assumptions during debugging – this has taught me to not rely on my own assumptions, and to improve my debugging skills!
  • the backend for the plotting hasn’t been fully implemented yet, as a result I cannot do the plot export + embed in the documentation pages yet. But hopefully this will be available soon!

I would like to express my gratitude to Simon Danisch for guiding me through he past two weeks, and for helping me debug my code ^^

So, that’s it for today’s post! Onwards to the next weeks!




GSoC logo Image source: Google Summer of Code, CC BY-NC-ND 3.0

  1. This will never see the light of day. And I will probably never hear the end of this from Simon😆.