[ANN] Julia Data Science Book and Books.jl

@rikh , @lazarusA and I are happy to announce that our book Julia Data Science is now available on Amazon.com.

We ve created this book to make it easier for our collegues and friends to pick up Julia. Especially for people new to Julia, it can be difficult to figure out what package to use and how the packages work together. Therefore, we focussed on Julia basics, DataFrames.jl , CSV.jl , XLSX.jl and Makie.jl because these are the main data manipulation and visualization packages that can solve many problems.

To make it easier to create the book, weā€™ve used Books.jl. This package solves multiple problems that @rikh experienced with similar packages. Specifically:

  1. The package can generate HTML and PDF from your text and code. Code is evaluated for you and outputs are embedded (like Jupyter, Rmarkdown, Weave.jl or Franklin.jl ).
  2. The package fully supports code written inside your own package. So, it can grab code definitions from your own package and display them inside the book. Creating a package for your book makes it easy to combine your book with other tools such as CompatHelper and Test .
  3. The package fully supports Revise.jl . All code changes are tracked and change your output immediately.
  4. The package is aimed at being used in CI. If you set fail on error to true and have missing cross-references, code which throws an error or invalid PDF syntax, then CI will fail. This ensures that if CI passes then you can be quite sure that your book looks good.

Thanks to all the people who provided feedback and sometimes even PRs to the book and Books package.

70 Likes

Thank you @rikh for your additional awesome contribution, Books.jl, a must see package.

8 Likes

Purchased. :pray:t2:

3 Likes

Thank you. This is a well written introduction to working with Julia for data science. Iā€™ve been keeping so many bookmarks to forum posts, to blog posts by Bogumił Kamiński, to package documentation, etcā€¦ However, for those beginning with Julia this can be overwhelming. This resource (and others like it) will help introduce new users to this fantastic language.

2 Likes

itā€™s a great book. Can I leave a suggestion for the next edition? I would add on this page Data Visualization with Makie.jl - Julia Data Science a quick sentence on how to actually view a plot produced with Makie. I wasted a good 30 minutes before i saw here Basic Tutorial that Iā€™d best do this in VScode.

4 Likes

Thank you. Good feedback and itā€™s online: https://github.com/JuliaDataScience/JuliaDataScience/pull/200.

Weā€˜ve discussed how quick we should be updating the physical book. Updating the version on Amazon takes about 10 minutes which will be printed a few hours later. The counterargument is that it wouldnā€™t be good for readers in a class who all have a slightly different version. So I think itā€™s a difficult choice and thoughts are welcome

2 Likes

Great - in fact I was looking for the repo but couldnā€™t find it. Good itā€™s in your list. I would do as you suggest ie update the physical book only every couple of months (say) but have a man up to date version online?

2 Likes

My copyā€™s going to be out of date before Iā€™ve even finished reading itā€¦ :joy:

Still, Iā€™ve got a first edition. :+1:t2:

3 Likes

Yes, noted. Another reason to not update it so quickly :slightly_smiling_face:

1 Like

We will be updating if frequently in the online version at juliadatascience.io. But the paperback editions will have a different lifetime cycle. We would launch a 2nd edition if we have extra content to put or if DataFrames.jl, Julia or Makie.jl have been updated/broken the API so that we NEED to do a 2nd edition.

Today I started, with the help of some students here in Brazil, translating the book to Portuguese. It will be the same as the English version (free and opensourced online, with a paperback on Amazon.com.br). We are looking for volunteers to translate it to Spanish (we would aknowledge him/her/they as the translator inside the HTML and PDF).

6 Likes

Books.jl v2 was released in the past weekend. Version 2 closes multiple long-standing issues. Most noteworthy:

  • Syntax highlighting is disabled for output blocks in both HTML and PDF. This makes the books and websites look much cleaner.
  • The output is printed via ProgressMeter.jl instead of a dump to the console. This avoids a lot of scrolling when generating the book.
  • It is now much easier to decide to run only one code block. Useful, for example, if a code block fails.
  • There is now a helper function entr_gen which can be used to track your book for changes. With this, you can point the function to a part of your book and start writing code and text. Each time that you save the file, Books.jl will evaluate the file and update the live-served webpages.
  • All code is now always evaluated in Main. There used to be an option to pass another module to gen to evaluate the code in, but this turned out to be complex and less useful.
  • Yggdrasil is now used for Tectonic so Tectonic will automatically update with Yggdrasil and supports ARM via their build system (pandoc-crossref doesnā€™t yet unfortunately)
  • docx is removed because, well, itā€™s docx
  • install_dependencies is avoided by passing JuliaMono directly into the TeX file. This avoids the need for a globally installed JuliaMono
  • The conversion of plotting objects to images is now managed via multiple dispatch instead of Requires.jl. The drawback is that it takes a bit more logic on the book author side, but given that a book is a long-term project, it is hopefully not too bad. The benefit is that it provides authors with more flexibility.
15 Likes

Does Books.jl support LaTeX and equation numbering?

Yep, see https://huijzer.xyz/Books.jl/demo.

2 Likes

I seem to remember that this project had been put into ā€œmaintenance modeā€. But I canā€™t see that message any moreā€¦ :thinking: But Iā€™m very glad to see so much ā€œmaintenanceā€ :joy:

4 Likes

Books is back??? HOORAYY!!! :tada: :tada: :tada: I loved the project and glad to see it resurrected!

3 Likes

Haha :joy: Thanks both!

1 Like